UNPKG

veendor

Version:

a tool for stroing your npm dependencies in arbitraty storage

61 lines (60 loc) 2.13 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = __importDefault(require("crypto")); const errors = __importStar(require("./errors")); const deepSortedJson = __importStar(require("./deepSortedJson")); /** * package.json-related stuff */ /** * Calculates and returns hash of deps in package.json */ function calcHash(pkgJson, lockfileContents = null, options = {}) { const resultSha1 = crypto_1.default.createHash('sha1'); let sortedDeps = deepSortedJson.transform({ dependencies: pkgJson.dependencies, devDependencies: pkgJson.devDependencies, }); if (lockfileContents) { sortedDeps = sortedDeps.concat(deepSortedJson.transform(lockfileContents)); } resultSha1.update(sortedDeps.join('\n')); const result = resultSha1.digest('hex'); if (typeof options.suffix === 'string') { return result + '-' + options.suffix; } if (typeof options.suffix === 'function') { return result + '-' + options.suffix(); } return result; } exports.calcHash = calcHash; function parsePkgJson(pkgJsonString) { return new Promise((resolve, reject) => { let pkgJson; try { pkgJson = JSON.parse(pkgJsonString); } catch (e) { return reject(e); } if (!(pkgJson.dependencies instanceof Object) && !(pkgJson.devDependencies instanceof Object)) { return reject(new EmptyPkgJsonError('No dependencies or devDependencies supplied')); } resolve(pkgJson); }); } exports.parsePkgJson = parsePkgJson; class EmptyPkgJsonError extends errors.VeendorError { } exports.EmptyPkgJsonError = EmptyPkgJsonError;