All files index.js

97.06% Statements 33/34
93.75% Branches 15/16
100% Functions 6/6
97.06% Lines 33/34
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 591x 1x   1x   1x 2x     1x 2x 2x   1x 1x       1x 4x       16x   16x 16x   16x 16x   16x 4x 2x 2x   12x 4x 2x 2x   8x 4x 2x 2x       16x   16x   3x       3x    
const { promisify } = require('util');
const { exec } = require('child_process');
 
const execPromise = promisify(exec);
 
module.exports.getOutdatedPackageData = () => {
  return execPromise('npm outdated --json --silent');
};
 
module.exports.tryToParseJson = (text) => {
  try {
    return JSON.parse(text);
  } catch (e) {
    console.error(`Could not parse input as JSON. ${e}`);
    process.exit(1);
  }
}
 
module.exports.generateDataTable = ({packageData, major, minor, patch}) => {
  return Object.keys(packageData).map((packageName) => {
    const {
      current,
      latest
    } = packageData[packageName];
 
    [currentMajor, currentMinor, currentPatch] = current.split(".");
    [latestMajor, latestMinor, latestPatch] = latest.split(".");
 
    let level = "";
    let diff = "";
 
    if (latestMajor > currentMajor) {
      if (major) {
        level = "major";
        diff = latestMajor - currentMajor;
      }
    } else if (latestMinor > currentMinor) {
      if (minor) {
        level = "minor";
        diff = latestMinor - currentMinor;
      }
    } else if (latestPatch > currentPatch) {
      if (patch) {
        level = "patch";
        diff = latestPatch - currentPatch;
      }
    }
 
    return [packageName, level, diff];
  }).filter((a) => {
    return a[1];
  }).sort((a, b) => {
    Iif (a[1] === b[1]) {
      return b[2] - a[2];
    }
 
    return (a[1] < b[1] ? -1 : 1);
  });
}