UNPKG

snyk-nodejs-lockfile-parser

Version:
33 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rewriteAliasesInNpmLockV1 = void 0; const cloneDeep = require("lodash.clonedeep"); const rewriteAliasesInNpmLockV1 = (lockfileContent) => { const jsonLockfile = JSON.parse(lockfileContent); for (const pkg in jsonLockfile.dependencies) { if (jsonLockfile.dependencies[pkg].version.startsWith('npm:')) { const aliasName = jsonLockfile.dependencies[pkg].version.substring(4, jsonLockfile.dependencies[pkg].version.lastIndexOf('@')); jsonLockfile.dependencies[aliasName] = cloneDeep(jsonLockfile.dependencies[pkg]); jsonLockfile.dependencies[aliasName].version = jsonLockfile.dependencies[pkg].version.substring(jsonLockfile.dependencies[pkg].version.lastIndexOf('@') + 1, jsonLockfile.dependencies[pkg].version.length); delete jsonLockfile.dependencies[pkg]; // Also transform possible references in transitive deps // if any deps with requires have pkg in the list and with the same aliased value, we need to replace it with aliased value, for (const topLevelPkg in jsonLockfile.dependencies) { const requires = jsonLockfile.dependencies[topLevelPkg] .requires; for (const requiredDep in requires) { if (requiredDep === pkg && requires[requiredDep] === `npm:${aliasName}@${jsonLockfile.dependencies[aliasName].version}`) { jsonLockfile.dependencies[topLevelPkg].requires[aliasName] = jsonLockfile.dependencies[aliasName].version; delete jsonLockfile.dependencies[topLevelPkg].requires[requiredDep]; } } } } } return JSON.stringify(jsonLockfile); }; exports.rewriteAliasesInNpmLockV1 = rewriteAliasesInNpmLockV1; //# sourceMappingURL=npm-lock-v1.js.map