All files install-predicates.js

100% Statements 42/42
100% Branches 8/8
100% Functions 8/8
100% Lines 38/38

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 803x   3x 14x   14x 8x   5x           14x 14x 14x 14x     3x 6x   6x 2x   1x           6x 6x 6x 6x     3x 7x   7x 3x   1x               7x 7x 7x 7x     3x 6x   6x 2x   1x               6x 6x 6x 6x     3x  
const bytes = require('bytes');
 
const sizePredicate = (threshold, source) => {
  const realThreshold = bytes(threshold.toString());
 
  const predicate = stats => {
    if (stats.size <= realThreshold) return {canInstall: true};
 
    return {
      canInstall: false,
      reason: 'size over threshold',
      details: `${bytes(stats.size)} > ${bytes(realThreshold)}`
    };
  };
  predicate.description = `size limit of ${bytes(realThreshold)}`;
  predicate.threshold = realThreshold;
  predicate.source = source;
  return predicate;
};
 
const gzipSizePredicate = (threshold, source) => {
  const realThreshold = bytes(threshold.toString());
 
  const predicate = stats => {
    if (stats.gzip <= realThreshold) return {canInstall: true};
 
    return {
      canInstall: false,
      reason: 'gzip size over threshold',
      details: `${bytes(stats.gzip)} > ${bytes(realThreshold)}`
    };
  };
  predicate.description = `gzip size limit of ${bytes(realThreshold)}`;
  predicate.threshold = realThreshold;
  predicate.source = source;
  return predicate;
};
 
const globalSizePredicate = (threshold, source) => {
  const realThreshold = bytes(threshold.toString());
 
  const predicate = (installedStats, toInstallStats) => {
    if (installedStats.size + toInstallStats.size <= realThreshold) return {canInstall: true};
 
    return {
      canInstall: false,
      reason: 'overall size after install would be over threshold',
      details: `${bytes(installedStats.size)} installed + ${bytes(toInstallStats.size)} > ${bytes(
        realThreshold
      )}`
    };
  };
  predicate.description = `overall size limit of ${bytes(realThreshold)}`;
  predicate.threshold = realThreshold;
  predicate.source = source;
  return predicate;
};
 
const globalGzipSizePredicate = (threshold, source) => {
  const realThreshold = bytes(threshold.toString());
 
  const predicate = (installedStats, toInstallStats) => {
    if (installedStats.gzip + toInstallStats.gzip <= realThreshold) return {canInstall: true};
 
    return {
      canInstall: false,
      reason: 'overall gzip size after install would be over threshold',
      details: `${bytes(installedStats.gzip)} installed + ${bytes(toInstallStats.gzip)} > ${bytes(
        realThreshold
      )}`
    };
  };
  predicate.description = `gzip size limit of ${bytes(realThreshold)}`;
  predicate.threshold = realThreshold;
  predicate.source = source;
  return predicate;
};
 
module.exports = {sizePredicate, gzipSizePredicate, globalSizePredicate, globalGzipSizePredicate};