veendor
Version:
a tool for stroing your npm dependencies in arbitraty storage
61 lines (60 loc) • 2.13 kB
JavaScript
;
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;