UNPKG

snyk-nodejs-lockfile-parser

Version:
66 lines 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PackageLockParser = void 0; const index_1 = require("./index"); const lock_parser_base_1 = require("./lock-parser-base"); const config_1 = require("../config"); const utils_1 = require("../utils"); class PackageLockParser extends lock_parser_base_1.LockParserBase { constructor() { super(index_1.LockfileType.npm, config_1.config.NPM_TREE_SIZE_LIMIT); } parseLockFile(lockFileContents) { const packageLock = (0, utils_1.parseJsonFile)(lockFileContents, 'package-lock.json'); packageLock.type = packageLock.lockfileVersion === 1 ? index_1.LockfileType.npm : index_1.LockfileType.npm7; this.type = packageLock.type; return packageLock; } async getDependencyTree(manifestFile, lockfile, includeDev = false, strictOutOfSync = true, showNpmScope) { const dependencyTree = await super.getDependencyTree(manifestFile, lockfile, includeDev, strictOutOfSync, showNpmScope); const meta = { lockfileVersion: lockfile.lockfileVersion, packageManager: 'npm', }; const depTreeWithMeta = { ...dependencyTree, meta: { ...dependencyTree.meta, ...meta }, }; return depTreeWithMeta; } getDepMap(lockfile, resolutions, showNpmScope) { const packageLock = lockfile; const depMap = {}; const flattenLockfileRec = (lockfileDeps, path) => { for (const [depName, dep] of Object.entries(lockfileDeps)) { const depNode = { labels: { scope: dep.dev ? index_1.Scope.dev : index_1.Scope.prod, ...(showNpmScope && { 'npm:scope': dep.dev ? index_1.Scope.dev : index_1.Scope.prod, }), }, name: depName, requires: [], version: dep.version, }; if (dep.requires) { depNode.requires = Object.keys(dep.requires); } const depPath = [...path, depName]; const depKey = depPath.join(this.pathDelimiter); depMap[depKey] = depNode; if (dep.dependencies) { flattenLockfileRec(dep.dependencies, depPath); } } }; flattenLockfileRec(packageLock.dependencies || {}, []); return depMap; } getDepTreeKey(dep) { return dep.name; } } exports.PackageLockParser = PackageLockParser; //# sourceMappingURL=package-lock-parser.js.map