UNPKG

snyk-nodejs-lockfile-parser

Version:
64 lines 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rewriteAliasesInYarnLockV2 = void 0; const cloneDeep = require("lodash.clonedeep"); const rewriteAliasesInYarnLockV2 = (pkgJson, lockfileNormalisedPkgs) => { var _a; const lockfileNormalisedPkgsPreprocessed = cloneDeep(lockfileNormalisedPkgs); const topLevelPkgs = JSON.parse(pkgJson).dependencies; const topLevelAliasedPkgs = Object.entries(topLevelPkgs) .filter((entry) => { return entry[1].startsWith('npm:'); }) .map((entry) => { return `${entry[0]}@${entry[1]}`; }); for (const pkg in lockfileNormalisedPkgsPreprocessed) { const pkgSplit = pkg.substring(0, pkg.lastIndexOf('@')); const resolutionSplit = (_a = lockfileNormalisedPkgsPreprocessed[pkg].resolution) === null || _a === void 0 ? void 0 : _a.split(/@npm[:%3A]/)[0]; if (!pkg.startsWith('v2@workspace') && resolutionSplit && pkgSplit != resolutionSplit && topLevelAliasedPkgs.includes(pkg)) { const newPkg = lockfileNormalisedPkgsPreprocessed[pkg]; delete lockfileNormalisedPkgsPreprocessed[pkg]; const newKey = pkg.replace(pkgSplit, resolutionSplit); lockfileNormalisedPkgsPreprocessed[newKey] = newPkg; } if (pkg.startsWith('v2@workspace')) { const newDependencies = {}; for (const key in lockfileNormalisedPkgsPreprocessed[pkg].dependencies) { const value = lockfileNormalisedPkgsPreprocessed[pkg].dependencies[key]; if (value.startsWith('npm:')) { newDependencies[value.substring(4, value.lastIndexOf('@'))] = value.substring(value.lastIndexOf('@') + 1, value.length); } else { newDependencies[key] = value; } } lockfileNormalisedPkgsPreprocessed[pkg].dependencies = newDependencies; } else if ( // Replace aliased top level deps possible references in transitive deps lockfileNormalisedPkgsPreprocessed[pkg] && lockfileNormalisedPkgsPreprocessed[pkg].dependencies) { const newDependencies = {}; for (const key in lockfileNormalisedPkgsPreprocessed[pkg].dependencies) { const value = lockfileNormalisedPkgsPreprocessed[pkg].dependencies[key]; if (value.includes('@') && topLevelAliasedPkgs.includes(`${key}@${value}`)) { newDependencies[value.substring(4, value.lastIndexOf('@'))] = value.substring(value.lastIndexOf('@') + 1, value.length); } else { newDependencies[key] = value; } } lockfileNormalisedPkgsPreprocessed[pkg].dependencies = newDependencies; } } return lockfileNormalisedPkgsPreprocessed; }; exports.rewriteAliasesInYarnLockV2 = rewriteAliasesInYarnLockV2; //# sourceMappingURL=yarn-lock-v2.js.map