snyk-nodejs-lockfile-parser 1.52.11 → 1.53.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/dep-graph-builders/index.d.ts +3 -1
- package/dist/dep-graph-builders/index.js +5 -1
- package/dist/dep-graph-builders/index.js.map +1 -1
- package/dist/dep-graph-builders/pnpm/build-dep-graph-pnpm.d.ts +4 -0
- package/dist/dep-graph-builders/pnpm/build-dep-graph-pnpm.js +71 -0
- package/dist/dep-graph-builders/pnpm/build-dep-graph-pnpm.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/index.d.ts +4 -0
- package/dist/dep-graph-builders/pnpm/index.js +20 -0
- package/dist/dep-graph-builders/pnpm/index.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/index.d.ts +4 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/index.js +26 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/index.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-parser.d.ts +28 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-parser.js +119 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-parser.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-v5.d.ts +11 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-v5.js +54 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-v5.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-v6.d.ts +12 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-v6.js +63 -0
- package/dist/dep-graph-builders/pnpm/lockfile-parser/lockfile-v6.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/types.d.ts +49 -0
- package/dist/dep-graph-builders/pnpm/types.js +3 -0
- package/dist/dep-graph-builders/pnpm/types.js.map +1 -0
- package/dist/dep-graph-builders/pnpm/utils.d.ts +6 -0
- package/dist/dep-graph-builders/pnpm/utils.js +58 -0
- package/dist/dep-graph-builders/pnpm/utils.js.map +1 -0
- package/dist/dep-graph-builders/types.d.ts +16 -0
- package/dist/dep-graph-builders/util.js +3 -3
- package/dist/dep-graph-builders/util.js.map +1 -1
- package/dist/errors/out-of-sync-error.d.ts +14 -0
- package/dist/errors/out-of-sync-error.js +8 -6
- package/dist/errors/out-of-sync-error.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/parsers/index.d.ts +3 -1
- package/dist/parsers/index.js +23 -1
- package/dist/parsers/index.js.map +1 -1
- package/dist/utils.d.ts +4 -1
- package/dist/utils.js +25 -1
- package/dist/utils.js.map +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { parseYarnLockV1Project, parseYarnLockV1WorkspaceProject, buildDepGraphYarnLockV1SimpleCyclesPruned, buildDepGraphYarnLockV1Simple, buildDepGraphYarnLockV1WorkspaceCyclesPruned, buildDepGraphYarnLockV1Workspace, extractPkgsFromYarnLockV1 } from './yarn-lock-v1';
|
|
2
2
|
import { buildDepGraphYarnLockV2Simple, parseYarnLockV2Project, extractPkgsFromYarnLockV2 } from './yarn-lock-v2';
|
|
3
3
|
import { parseNpmLockV2Project } from './npm-lock-v2';
|
|
4
|
-
|
|
4
|
+
import { parsePnpmProject } from './pnpm';
|
|
5
|
+
import { parsePkgJson } from './util';
|
|
6
|
+
export { parseNpmLockV2Project, parseYarnLockV1Project, buildDepGraphYarnLockV1Workspace, buildDepGraphYarnLockV1SimpleCyclesPruned, buildDepGraphYarnLockV1Simple, buildDepGraphYarnLockV1WorkspaceCyclesPruned, parseYarnLockV1WorkspaceProject, extractPkgsFromYarnLockV1, buildDepGraphYarnLockV2Simple, parseYarnLockV2Project, extractPkgsFromYarnLockV2, parsePnpmProject, parsePkgJson, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractPkgsFromYarnLockV2 = exports.parseYarnLockV2Project = exports.buildDepGraphYarnLockV2Simple = exports.extractPkgsFromYarnLockV1 = exports.parseYarnLockV1WorkspaceProject = exports.buildDepGraphYarnLockV1WorkspaceCyclesPruned = exports.buildDepGraphYarnLockV1Simple = exports.buildDepGraphYarnLockV1SimpleCyclesPruned = exports.buildDepGraphYarnLockV1Workspace = exports.parseYarnLockV1Project = exports.parseNpmLockV2Project = void 0;
|
|
3
|
+
exports.parsePkgJson = exports.parsePnpmProject = exports.extractPkgsFromYarnLockV2 = exports.parseYarnLockV2Project = exports.buildDepGraphYarnLockV2Simple = exports.extractPkgsFromYarnLockV1 = exports.parseYarnLockV1WorkspaceProject = exports.buildDepGraphYarnLockV1WorkspaceCyclesPruned = exports.buildDepGraphYarnLockV1Simple = exports.buildDepGraphYarnLockV1SimpleCyclesPruned = exports.buildDepGraphYarnLockV1Workspace = exports.parseYarnLockV1Project = exports.parseNpmLockV2Project = void 0;
|
|
4
4
|
const yarn_lock_v1_1 = require("./yarn-lock-v1");
|
|
5
5
|
Object.defineProperty(exports, "parseYarnLockV1Project", { enumerable: true, get: function () { return yarn_lock_v1_1.parseYarnLockV1Project; } });
|
|
6
6
|
Object.defineProperty(exports, "parseYarnLockV1WorkspaceProject", { enumerable: true, get: function () { return yarn_lock_v1_1.parseYarnLockV1WorkspaceProject; } });
|
|
@@ -15,4 +15,8 @@ Object.defineProperty(exports, "parseYarnLockV2Project", { enumerable: true, get
|
|
|
15
15
|
Object.defineProperty(exports, "extractPkgsFromYarnLockV2", { enumerable: true, get: function () { return yarn_lock_v2_1.extractPkgsFromYarnLockV2; } });
|
|
16
16
|
const npm_lock_v2_1 = require("./npm-lock-v2");
|
|
17
17
|
Object.defineProperty(exports, "parseNpmLockV2Project", { enumerable: true, get: function () { return npm_lock_v2_1.parseNpmLockV2Project; } });
|
|
18
|
+
const pnpm_1 = require("./pnpm");
|
|
19
|
+
Object.defineProperty(exports, "parsePnpmProject", { enumerable: true, get: function () { return pnpm_1.parsePnpmProject; } });
|
|
20
|
+
const util_1 = require("./util");
|
|
21
|
+
Object.defineProperty(exports, "parsePkgJson", { enumerable: true, get: function () { return util_1.parsePkgJson; } });
|
|
18
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/dep-graph-builders/index.ts"],"names":[],"mappings":";;;AAAA,iDAQwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/dep-graph-builders/index.ts"],"names":[],"mappings":";;;AAAA,iDAQwB;AAYtB,uGAnBA,qCAAsB,OAmBA;AAKtB,gHAvBA,8CAA+B,OAuBA;AAH/B,0HAnBA,wDAAyC,OAmBA;AACzC,8GAnBA,4CAA6B,OAmBA;AAC7B,6HAnBA,2DAA4C,OAmBA;AAH5C,iHAfA,+CAAgC,OAeA;AAKhC,0GAnBA,wCAAyB,OAmBA;AAjB3B,iDAIwB;AActB,8GAjBA,4CAA6B,OAiBA;AAC7B,uGAjBA,qCAAsB,OAiBA;AACtB,0GAjBA,wCAAyB,OAiBA;AAf3B,+CAAsD;AAKpD,sGALO,mCAAqB,OAKP;AAJvB,iCAA0C;AAexC,iGAfO,uBAAgB,OAeP;AAdlB,iCAAsC;AAepC,6FAfO,mBAAY,OAeP"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PnpmProjectParseOptions, PnpmWorkspaceArgs } from '../types';
|
|
2
|
+
import type { PackageJsonBase } from '../types';
|
|
3
|
+
import { PnpmLockfileParser } from './lockfile-parser/lockfile-parser';
|
|
4
|
+
export declare const buildDepGraphPnpm: (lockFileParser: PnpmLockfileParser, pkgJson: PackageJsonBase, options: PnpmProjectParseOptions, workspaceArgs?: PnpmWorkspaceArgs) => Promise<import("@snyk/dep-graph").DepGraph>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildDepGraphPnpm = void 0;
|
|
4
|
+
const dep_graph_1 = require("@snyk/dep-graph");
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const event_loop_spinner_1 = require("event-loop-spinner");
|
|
8
|
+
const buildDepGraphPnpm = async (lockFileParser, pkgJson, options, workspaceArgs) => {
|
|
9
|
+
var _a;
|
|
10
|
+
const { strictOutOfSync, includeOptionalDeps, pruneWithinTopLevelDeps } = options;
|
|
11
|
+
const depGraphBuilder = new dep_graph_1.DepGraphBuilder({ name: 'pnpm' }, { name: pkgJson.name, version: pkgJson.version });
|
|
12
|
+
const extractedPnpmPkgs = lockFileParser.extractedPackages;
|
|
13
|
+
const topLevelDeps = (0, util_1.getTopLevelDeps)(pkgJson, options);
|
|
14
|
+
const extractedTopLevelDeps = lockFileParser.extractTopLevelDependencies(options) || {};
|
|
15
|
+
for (const name of Object.keys(topLevelDeps)) {
|
|
16
|
+
topLevelDeps[name].version = extractedTopLevelDeps[name].version;
|
|
17
|
+
}
|
|
18
|
+
const rootNode = {
|
|
19
|
+
id: 'root-node',
|
|
20
|
+
name: pkgJson.name,
|
|
21
|
+
version: pkgJson.version,
|
|
22
|
+
dependencies: topLevelDeps,
|
|
23
|
+
isDev: false,
|
|
24
|
+
};
|
|
25
|
+
await dfsVisit(depGraphBuilder, rootNode, extractedPnpmPkgs, strictOutOfSync, includeOptionalDeps,
|
|
26
|
+
// we have rootWorkspaceOverrides if this is workspace pkg with overrides
|
|
27
|
+
// at root - therefore it should take precedent
|
|
28
|
+
// TODO: inspect if this is needed at all, seems like pnpm resolves everything in lockfile
|
|
29
|
+
(workspaceArgs === null || workspaceArgs === void 0 ? void 0 : workspaceArgs.rootOverrides) || ((_a = pkgJson.pnpm) === null || _a === void 0 ? void 0 : _a.overrides) || {}, pruneWithinTopLevelDeps, lockFileParser);
|
|
30
|
+
return depGraphBuilder.build();
|
|
31
|
+
};
|
|
32
|
+
exports.buildDepGraphPnpm = buildDepGraphPnpm;
|
|
33
|
+
/**
|
|
34
|
+
* Use DFS to add all nodes and edges to the depGraphBuilder and prune cyclic nodes.
|
|
35
|
+
* The visitedMap keep track of which nodes have already been discovered during traversal.
|
|
36
|
+
* - If a node doesn't exist in the map, it means it hasn't been visited.
|
|
37
|
+
* - If a node is already visited, simply connect the new node with this node.
|
|
38
|
+
*/
|
|
39
|
+
const dfsVisit = async (depGraphBuilder, node, extractedPnpmPkgs, strictOutOfSync, includeOptionalDeps, overrides, pruneWithinTopLevel, lockFileParser, visited) => {
|
|
40
|
+
for (const [name, depInfo] of Object.entries(node.dependencies || {})) {
|
|
41
|
+
if (event_loop_spinner_1.eventLoopSpinner.isStarving()) {
|
|
42
|
+
await event_loop_spinner_1.eventLoopSpinner.spin();
|
|
43
|
+
}
|
|
44
|
+
const localVisited = visited || new Set();
|
|
45
|
+
const childNode = (0, utils_1.getPnpmChildNode)(name, depInfo, extractedPnpmPkgs, strictOutOfSync, includeOptionalDeps, lockFileParser);
|
|
46
|
+
if (localVisited.has(childNode.id)) {
|
|
47
|
+
if (pruneWithinTopLevel) {
|
|
48
|
+
const prunedId = `${childNode.id}:pruned`;
|
|
49
|
+
depGraphBuilder.addPkgNode({ name: childNode.name, version: childNode.version }, prunedId, {
|
|
50
|
+
labels: Object.assign({ scope: childNode.isDev ? 'dev' : 'prod', pruned: 'true' }, (node.missingLockFileEntry && {
|
|
51
|
+
missingLockFileEntry: 'true',
|
|
52
|
+
})),
|
|
53
|
+
});
|
|
54
|
+
depGraphBuilder.connectDep(node.id, prunedId);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
depGraphBuilder.connectDep(node.id, childNode.id);
|
|
58
|
+
}
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
depGraphBuilder.addPkgNode({ name: childNode.name, version: childNode.version }, childNode.id, {
|
|
62
|
+
labels: Object.assign({ scope: childNode.isDev ? 'dev' : 'prod' }, (node.missingLockFileEntry && {
|
|
63
|
+
missingLockFileEntry: 'true',
|
|
64
|
+
})),
|
|
65
|
+
});
|
|
66
|
+
depGraphBuilder.connectDep(node.id, childNode.id);
|
|
67
|
+
localVisited.add(childNode.id);
|
|
68
|
+
await dfsVisit(depGraphBuilder, childNode, extractedPnpmPkgs, strictOutOfSync, includeOptionalDeps, overrides, pruneWithinTopLevel, lockFileParser, localVisited);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=build-dep-graph-pnpm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-dep-graph-pnpm.js","sourceRoot":"","sources":["../../../lib/dep-graph-builders/pnpm/build-dep-graph-pnpm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PnpmProjectParseOptions, PnpmWorkspaceArgs } from '../types';
|
|
2
|
+
import { DepGraph } from '@snyk/dep-graph';
|
|
3
|
+
import { NodeLockfileVersion } from '../../utils';
|
|
4
|
+
export declare const parsePnpmProject: (pkgJsonContent: string, pnpmLockContent: string, options: PnpmProjectParseOptions, lockfileVersion?: NodeLockfileVersion, workspaceArgs?: PnpmWorkspaceArgs) => Promise<DepGraph>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parsePnpmProject = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const build_dep_graph_pnpm_1 = require("./build-dep-graph-pnpm");
|
|
6
|
+
const index_1 = require("./lockfile-parser/index");
|
|
7
|
+
const parsePnpmProject = async (pkgJsonContent, pnpmLockContent, options, lockfileVersion, workspaceArgs) => {
|
|
8
|
+
const { includeDevDeps, includeOptionalDeps, strictOutOfSync, pruneWithinTopLevelDeps, } = options;
|
|
9
|
+
const pkgJson = (0, util_1.parsePkgJson)(pkgJsonContent);
|
|
10
|
+
const lockFileParser = (0, index_1.getPnpmLockfileParser)(pnpmLockContent, lockfileVersion, workspaceArgs);
|
|
11
|
+
const depgraph = await (0, build_dep_graph_pnpm_1.buildDepGraphPnpm)(lockFileParser, pkgJson, {
|
|
12
|
+
includeDevDeps,
|
|
13
|
+
strictOutOfSync,
|
|
14
|
+
includeOptionalDeps,
|
|
15
|
+
pruneWithinTopLevelDeps,
|
|
16
|
+
}, workspaceArgs);
|
|
17
|
+
return depgraph;
|
|
18
|
+
};
|
|
19
|
+
exports.parsePnpmProject = parsePnpmProject;
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/dep-graph-builders/pnpm/index.ts"],"names":[],"mappings":";;;AAAA,kCAAuC;AAMvC,iEAA2D;AAE3D,mDAAgE;AAIzD,MAAM,gBAAgB,GAAG,KAAK,EACnC,cAAsB,EACtB,eAAuB,EACvB,OAAgC,EAChC,eAAqC,EACrC,aAAiC,EACd,EAAE;IACrB,MAAM,EACJ,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAoB,IAAA,mBAAY,EAAC,cAAc,CAAC,CAAC;IAE9D,MAAM,cAAc,GAAuB,IAAA,6BAAqB,EAC9D,eAAe,EACf,eAAe,EACf,aAAa,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,wCAAiB,EACtC,cAAc,EACd,OAAO,EACP;QACE,cAAc;QACd,eAAe;QACf,mBAAmB;QACnB,uBAAuB;KACxB,EACD,aAAa,CACd,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAnCW,QAAA,gBAAgB,oBAmC3B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PnpmLockfileParser } from './lockfile-parser';
|
|
2
|
+
import { PnpmWorkspaceArgs } from '../../types';
|
|
3
|
+
import { NodeLockfileVersion } from '../../../utils';
|
|
4
|
+
export declare function getPnpmLockfileParser(pnpmLockContent: string, lockfileVersion?: NodeLockfileVersion, workspaceArgs?: PnpmWorkspaceArgs): PnpmLockfileParser;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPnpmLockfileParser = void 0;
|
|
4
|
+
const js_yaml_1 = require("js-yaml");
|
|
5
|
+
const lockfile_v6_1 = require("./lockfile-v6");
|
|
6
|
+
const lockfile_v5_1 = require("./lockfile-v5");
|
|
7
|
+
const error_catalog_nodejs_public_1 = require("@snyk/error-catalog-nodejs-public");
|
|
8
|
+
const utils_1 = require("../../../utils");
|
|
9
|
+
function getPnpmLockfileParser(pnpmLockContent, lockfileVersion, workspaceArgs) {
|
|
10
|
+
const rawPnpmLock = (0, js_yaml_1.load)(pnpmLockContent, {
|
|
11
|
+
json: true,
|
|
12
|
+
schema: js_yaml_1.FAILSAFE_SCHEMA,
|
|
13
|
+
});
|
|
14
|
+
const version = rawPnpmLock.lockfileVersion;
|
|
15
|
+
if (lockfileVersion === utils_1.NodeLockfileVersion.PnpmLockV5 ||
|
|
16
|
+
version.startsWith('5')) {
|
|
17
|
+
return new lockfile_v5_1.LockfileV5Parser(rawPnpmLock, workspaceArgs);
|
|
18
|
+
}
|
|
19
|
+
if (lockfileVersion === utils_1.NodeLockfileVersion.PnpmLockV6 ||
|
|
20
|
+
version.startsWith('6')) {
|
|
21
|
+
return new lockfile_v6_1.LockfileV6Parser(rawPnpmLock, workspaceArgs);
|
|
22
|
+
}
|
|
23
|
+
throw new error_catalog_nodejs_public_1.OpenSourceEcosystems.PnpmUnsupportedLockfileVersionError(`The pnpm-lock.yaml lockfile version ${lockfileVersion} is not supported`);
|
|
24
|
+
}
|
|
25
|
+
exports.getPnpmLockfileParser = getPnpmLockfileParser;
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/dep-graph-builders/pnpm/lockfile-parser/index.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAEhD,+CAAiD;AACjD,+CAAiD;AAEjD,mFAAyE;AACzE,0CAAqD;AAErD,SAAgB,qBAAqB,CACnC,eAAuB,EACvB,eAAqC,EACrC,aAAiC;IAEjC,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC,eAAe,EAAE;QACxC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,yBAAe;KACxB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC;IAE5C,IACE,eAAe,KAAK,2BAAmB,CAAC,UAAU;QAClD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB;QACA,OAAO,IAAI,8BAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACzD;IAED,IACE,eAAe,KAAK,2BAAmB,CAAC,UAAU;QAClD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB;QACA,OAAO,IAAI,8BAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACzD;IAED,MAAM,IAAI,kDAAoB,CAAC,mCAAmC,CAChE,uCAAuC,eAAe,mBAAmB,CAC1E,CAAC;AACJ,CAAC;AA5BD,sDA4BC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PnpmWorkspaceArgs } from '../../types';
|
|
2
|
+
import { NormalisedPnpmPkgs, ParsedDepPath, PnpmDepPath, PnpmDeps, PnpmLockPkg } from '../types';
|
|
3
|
+
export declare abstract class PnpmLockfileParser {
|
|
4
|
+
lockFileVersion: string;
|
|
5
|
+
rawPnpmLock: any;
|
|
6
|
+
packages: Record<PnpmDepPath, PnpmLockPkg>;
|
|
7
|
+
dependencies: Record<string, any>;
|
|
8
|
+
devDependencies: Record<string, any>;
|
|
9
|
+
optionalDependencies: Record<string, any>;
|
|
10
|
+
peerDependencies: Record<string, any>;
|
|
11
|
+
extractedPackages: NormalisedPnpmPkgs;
|
|
12
|
+
workspaceArgs?: PnpmWorkspaceArgs;
|
|
13
|
+
constructor(rawPnpmLock: any, workspaceArgs?: PnpmWorkspaceArgs);
|
|
14
|
+
isWorkspaceLockfile(): boolean | undefined;
|
|
15
|
+
getRoot(rawPnpmLock: any): any;
|
|
16
|
+
extractPackages(): NormalisedPnpmPkgs;
|
|
17
|
+
extractTopLevelDependencies(options: {
|
|
18
|
+
includeDevDeps: boolean;
|
|
19
|
+
includeOptionalDeps?: boolean;
|
|
20
|
+
includePeerDeps?: boolean;
|
|
21
|
+
}): PnpmDeps;
|
|
22
|
+
normalizeVersion(name: string, version: string, isDev: boolean): string;
|
|
23
|
+
resolveWorkspacesCrossReference(name: string, version: string, isDev: boolean): string;
|
|
24
|
+
abstract normalizePackagesDeps(dependencies: any, isDev: any): Record<string, string>;
|
|
25
|
+
abstract normalizeTopLevelDeps(dependencies: any, isDev: any): PnpmDeps;
|
|
26
|
+
abstract parseDepPath(depPath: string): ParsedDepPath;
|
|
27
|
+
abstract excludeTransPeerDepsVersions(fullVersionStr: string): string;
|
|
28
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PnpmLockfileParser = void 0;
|
|
4
|
+
const semver_1 = require("semver");
|
|
5
|
+
const pathUtil = require("path");
|
|
6
|
+
class PnpmLockfileParser {
|
|
7
|
+
constructor(rawPnpmLock, workspaceArgs) {
|
|
8
|
+
this.rawPnpmLock = rawPnpmLock;
|
|
9
|
+
this.lockFileVersion = rawPnpmLock.lockFileVersion;
|
|
10
|
+
this.workspaceArgs = workspaceArgs;
|
|
11
|
+
const depsRoot = this.getRoot(rawPnpmLock);
|
|
12
|
+
this.packages = rawPnpmLock.packages || {};
|
|
13
|
+
this.dependencies = depsRoot.dependencies || {};
|
|
14
|
+
this.devDependencies = depsRoot.devDependencies || {};
|
|
15
|
+
this.optionalDependencies = depsRoot.optionalDependencies || {};
|
|
16
|
+
this.peerDependencies = depsRoot.peerDependencies || {};
|
|
17
|
+
this.extractedPackages = this.extractPackages();
|
|
18
|
+
}
|
|
19
|
+
isWorkspaceLockfile() {
|
|
20
|
+
var _a;
|
|
21
|
+
return (_a = this.workspaceArgs) === null || _a === void 0 ? void 0 : _a.isWorkspacePkg;
|
|
22
|
+
}
|
|
23
|
+
getRoot(rawPnpmLock) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
let depsRoot = rawPnpmLock;
|
|
26
|
+
if ((_a = this.workspaceArgs) === null || _a === void 0 ? void 0 : _a.isWorkspacePkg) {
|
|
27
|
+
depsRoot = rawPnpmLock.importers[this.workspaceArgs.workspacePath];
|
|
28
|
+
}
|
|
29
|
+
if ((_b = this.workspaceArgs) === null || _b === void 0 ? void 0 : _b.isRoot) {
|
|
30
|
+
if (!this.workspaceArgs.workspacePath) {
|
|
31
|
+
this.workspaceArgs.workspacePath = '.';
|
|
32
|
+
}
|
|
33
|
+
depsRoot = rawPnpmLock.importers[this.workspaceArgs.workspacePath];
|
|
34
|
+
}
|
|
35
|
+
return depsRoot;
|
|
36
|
+
}
|
|
37
|
+
extractPackages() {
|
|
38
|
+
const packages = {};
|
|
39
|
+
Object.entries(this.packages).forEach(([depPath, versionData]) => {
|
|
40
|
+
// name and version are optional in version data - if they don't show up in version data, they can be deducted from the dependency path
|
|
41
|
+
let { name, version } = versionData;
|
|
42
|
+
if (!(name && version)) {
|
|
43
|
+
({ name, version } = this.parseDepPath(depPath));
|
|
44
|
+
}
|
|
45
|
+
const pkg = {
|
|
46
|
+
id: depPath,
|
|
47
|
+
name,
|
|
48
|
+
version,
|
|
49
|
+
isDev: versionData.dev == 'true',
|
|
50
|
+
dependencies: versionData.dependencies,
|
|
51
|
+
optionalDependencies: versionData.dependencies,
|
|
52
|
+
};
|
|
53
|
+
packages[`${pkg.name}@${pkg.version}`] = pkg;
|
|
54
|
+
});
|
|
55
|
+
return packages;
|
|
56
|
+
}
|
|
57
|
+
extractTopLevelDependencies(options) {
|
|
58
|
+
const prodDeps = this.normalizeTopLevelDeps(this.dependencies || {}, false);
|
|
59
|
+
const devDeps = options.includeDevDeps
|
|
60
|
+
? this.normalizeTopLevelDeps(this.devDependencies || {}, true)
|
|
61
|
+
: {};
|
|
62
|
+
const optionalDeps = options.includeOptionalDeps
|
|
63
|
+
? this.normalizeTopLevelDeps(this.optionalDependencies || {}, false)
|
|
64
|
+
: {};
|
|
65
|
+
const peerDeps = options.includePeerDeps
|
|
66
|
+
? this.normalizeTopLevelDeps(this.peerDependencies || {}, false)
|
|
67
|
+
: {};
|
|
68
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, prodDeps), devDeps), optionalDeps), peerDeps);
|
|
69
|
+
}
|
|
70
|
+
normalizeVersion(name, version, isDev) {
|
|
71
|
+
if (this.isWorkspaceLockfile()) {
|
|
72
|
+
version = this.resolveWorkspacesCrossReference(name, version, isDev);
|
|
73
|
+
}
|
|
74
|
+
if (!(0, semver_1.valid)(version)) {
|
|
75
|
+
version = this.excludeTransPeerDepsVersions(version);
|
|
76
|
+
if (!(0, semver_1.valid)(version)) {
|
|
77
|
+
// for npm and git ref packages
|
|
78
|
+
// they show up in packages with keys equal to the version in top level deps
|
|
79
|
+
// e.g. body-parser with version github.com/expressjs/body-parser/263f602e6ae34add6332c1eb4caa808893b0b711
|
|
80
|
+
if (this.packages[version]) {
|
|
81
|
+
return this.packages[version].version;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return version;
|
|
86
|
+
}
|
|
87
|
+
resolveWorkspacesCrossReference(name, version, isDev) {
|
|
88
|
+
if (!this.workspaceArgs) {
|
|
89
|
+
return version;
|
|
90
|
+
}
|
|
91
|
+
if (version.startsWith('link:')) {
|
|
92
|
+
// In workspaces example:
|
|
93
|
+
// package-b:
|
|
94
|
+
// specifier: 1.0.0
|
|
95
|
+
// version: link:../pkg-b
|
|
96
|
+
const depPath = version.split('link:')[1];
|
|
97
|
+
const resolvedPathDep = pathUtil
|
|
98
|
+
.join(this.workspaceArgs.workspacePath, depPath)
|
|
99
|
+
.replace(/\\/g, '/');
|
|
100
|
+
// cross referenced package, we add it to the extracted packages
|
|
101
|
+
version = this.workspaceArgs.projectsVersionMap[resolvedPathDep];
|
|
102
|
+
const subDeps = this.rawPnpmLock.importers[resolvedPathDep] || {
|
|
103
|
+
dependencies: {},
|
|
104
|
+
};
|
|
105
|
+
// todo: consider getting devDependencies, optionaldependencies
|
|
106
|
+
const resolvedDeps = this.normalizePackagesDeps(subDeps.dependencies, isDev);
|
|
107
|
+
this.extractedPackages[`${name}@${version}`] = {
|
|
108
|
+
name,
|
|
109
|
+
version,
|
|
110
|
+
id: `${name}@${version}`,
|
|
111
|
+
isDev,
|
|
112
|
+
dependencies: resolvedDeps,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return version;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.PnpmLockfileParser = PnpmLockfileParser;
|
|
119
|
+
//# sourceMappingURL=lockfile-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-parser.js","sourceRoot":"","sources":["../../../../lib/dep-graph-builders/pnpm/lockfile-parser/lockfile-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ParsedDepPath, PnpmDeps } from '../types';
|
|
2
|
+
import { PnpmLockfileParser } from './lockfile-parser';
|
|
3
|
+
import { PnpmWorkspaceArgs } from '../../types';
|
|
4
|
+
export declare class LockfileV5Parser extends PnpmLockfileParser {
|
|
5
|
+
specifiers: Record<string, string>;
|
|
6
|
+
constructor(rawPnpmLock: any, workspaceArgs?: PnpmWorkspaceArgs);
|
|
7
|
+
parseDepPath(depPath: string): ParsedDepPath;
|
|
8
|
+
normalizeTopLevelDeps(dependencies: Record<string, string>, isDev: boolean): PnpmDeps;
|
|
9
|
+
normalizePackagesDeps(dependencies: Record<string, string>, isDev: boolean): Record<string, string>;
|
|
10
|
+
excludeTransPeerDepsVersions(fullVersionStr: string): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LockfileV5Parser = void 0;
|
|
4
|
+
const dependency_path_1 = require("dependency-path");
|
|
5
|
+
const lockfile_parser_1 = require("./lockfile-parser");
|
|
6
|
+
class LockfileV5Parser extends lockfile_parser_1.PnpmLockfileParser {
|
|
7
|
+
constructor(rawPnpmLock, workspaceArgs) {
|
|
8
|
+
super(rawPnpmLock, workspaceArgs);
|
|
9
|
+
const depsRoot = this.getRoot(rawPnpmLock);
|
|
10
|
+
this.specifiers = depsRoot.specifiers;
|
|
11
|
+
}
|
|
12
|
+
parseDepPath(depPath) {
|
|
13
|
+
// The 'dependency-path' parsing package only works for lockfiles v5
|
|
14
|
+
const { name, version } = (0, dependency_path_1.parse)(depPath);
|
|
15
|
+
if (!version) {
|
|
16
|
+
return { name };
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
name,
|
|
20
|
+
version: this.excludeTransPeerDepsVersions(version),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
normalizeTopLevelDeps(dependencies, isDev) {
|
|
24
|
+
return Object.entries(dependencies).reduce((pnpmDeps, [name, version]) => {
|
|
25
|
+
version = this.normalizeVersion(name, version, isDev);
|
|
26
|
+
pnpmDeps[name] = {
|
|
27
|
+
name,
|
|
28
|
+
version,
|
|
29
|
+
isDev,
|
|
30
|
+
specifier: this.specifiers[name],
|
|
31
|
+
};
|
|
32
|
+
return pnpmDeps;
|
|
33
|
+
}, {});
|
|
34
|
+
}
|
|
35
|
+
normalizePackagesDeps(dependencies, isDev) {
|
|
36
|
+
return Object.entries(dependencies).reduce((pnpmDeps, [name, version]) => {
|
|
37
|
+
version = this.normalizeVersion(name, version, isDev);
|
|
38
|
+
pnpmDeps[name] = version;
|
|
39
|
+
return pnpmDeps;
|
|
40
|
+
}, {});
|
|
41
|
+
}
|
|
42
|
+
// Dependency path and versions include transitive peer dependencies separated by '_'
|
|
43
|
+
// e.g. in dependencies
|
|
44
|
+
// dependencies:
|
|
45
|
+
// acorn-jsx: 5.3.2_acorn@7.4.1
|
|
46
|
+
// OR in dependency path:
|
|
47
|
+
// '/@babel/preset-typescript/7.12.13_@babel+core@7.12.13'
|
|
48
|
+
// https://github.com/pnpm/spec/blob/master/dependency-path.md
|
|
49
|
+
excludeTransPeerDepsVersions(fullVersionStr) {
|
|
50
|
+
return fullVersionStr.split('_')[0];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.LockfileV5Parser = LockfileV5Parser;
|
|
54
|
+
//# sourceMappingURL=lockfile-v5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-v5.js","sourceRoot":"","sources":["../../../../lib/dep-graph-builders/pnpm/lockfile-parser/lockfile-v5.ts"],"names":[],"mappings":";;;AAAA,qDAAwC;AAExC,uDAAuD;AAGvD,MAAa,gBAAiB,SAAQ,oCAAkB;IAGtD,YAAmB,WAAgB,EAAE,aAAiC;QACpE,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,OAAe;QACjC,oEAAoE;QACpE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,uBAAK,EAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAE,IAAI,EAAE,CAAC;SACjB;QACD,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC;SACpD,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAC1B,YAAoC,EACpC,KAAc;QAEd,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,QAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACtC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,GAAG;gBACf,IAAI;gBACJ,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;aACjC,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAC1B,YAAoC,EACpC,KAAc;QAEd,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,QAAgC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,qFAAqF;IACrF,uBAAuB;IACvB,gBAAgB;IAChB,kCAAkC;IAClC,yBAAyB;IACzB,0DAA0D;IAC1D,8DAA8D;IACvD,4BAA4B,CAAC,cAAsB;QACxD,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;CACF;AAhED,4CAgEC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PnpmWorkspaceArgs } from '../../types';
|
|
2
|
+
import { ParsedDepPath, PnpmDeps } from '../types';
|
|
3
|
+
import { PnpmLockfileParser } from './lockfile-parser';
|
|
4
|
+
export declare class LockfileV6Parser extends PnpmLockfileParser {
|
|
5
|
+
settings: any;
|
|
6
|
+
constructor(rawPnpmLock: any, workspaceArgs?: PnpmWorkspaceArgs);
|
|
7
|
+
parseDepPath(depPath: string): ParsedDepPath;
|
|
8
|
+
normalizeTopLevelDeps(dependencies: Record<string, Record<string, string>>, isDev: boolean): PnpmDeps;
|
|
9
|
+
normalizePackagesDeps(dependencies: Record<string, Record<string, string>>, isDev: boolean): Record<string, string>;
|
|
10
|
+
excludeTransPeerDepsVersions(fullVersionStr: string): string;
|
|
11
|
+
static isAbsoluteDepenencyPath(dependencyPath: string): boolean;
|
|
12
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LockfileV6Parser = void 0;
|
|
4
|
+
const lockfile_parser_1 = require("./lockfile-parser");
|
|
5
|
+
class LockfileV6Parser extends lockfile_parser_1.PnpmLockfileParser {
|
|
6
|
+
constructor(rawPnpmLock, workspaceArgs) {
|
|
7
|
+
super(rawPnpmLock, workspaceArgs);
|
|
8
|
+
this.settings = rawPnpmLock.settings;
|
|
9
|
+
}
|
|
10
|
+
parseDepPath(depPath) {
|
|
11
|
+
// Exclude transitive peer deps from depPath
|
|
12
|
+
// e.g. '/cdktf-cli@0.20.3(ink@3.2.0)(react@17.0.2)' -> cdktf-cli@0.20.3
|
|
13
|
+
depPath = this.excludeTransPeerDepsVersions(depPath);
|
|
14
|
+
// Check if path is absolute (doesn't start with '/')
|
|
15
|
+
// If it's not absolute, omit first '/'
|
|
16
|
+
depPath = LockfileV6Parser.isAbsoluteDepenencyPath(depPath)
|
|
17
|
+
? depPath
|
|
18
|
+
: depPath.substring(1);
|
|
19
|
+
// Next, get version based on the last occurence of '@' separator
|
|
20
|
+
// e.g. @babel/code-frame@7.24.2 -> name: @babel/code-frame and version: 7.24.2
|
|
21
|
+
const sepIndex = depPath.lastIndexOf('@');
|
|
22
|
+
if (sepIndex === -1) {
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
const name = depPath.substring(0, sepIndex);
|
|
26
|
+
const version = depPath.substring(sepIndex + 1);
|
|
27
|
+
return {
|
|
28
|
+
name,
|
|
29
|
+
version,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
normalizeTopLevelDeps(dependencies, isDev) {
|
|
33
|
+
return Object.entries(dependencies).reduce((pnpmDeps, [name, depInfo]) => {
|
|
34
|
+
const version = this.normalizeVersion(name, depInfo.version, isDev);
|
|
35
|
+
pnpmDeps[name] = {
|
|
36
|
+
name,
|
|
37
|
+
version,
|
|
38
|
+
specifier: depInfo.specifier,
|
|
39
|
+
isDev,
|
|
40
|
+
};
|
|
41
|
+
return pnpmDeps;
|
|
42
|
+
}, {});
|
|
43
|
+
}
|
|
44
|
+
normalizePackagesDeps(dependencies, isDev) {
|
|
45
|
+
return Object.entries(dependencies).reduce((pnpmDeps, [name, depInfo]) => {
|
|
46
|
+
const version = this.normalizeVersion(name, depInfo.version, isDev);
|
|
47
|
+
pnpmDeps[name] = version;
|
|
48
|
+
return pnpmDeps;
|
|
49
|
+
}, {});
|
|
50
|
+
}
|
|
51
|
+
// Dependency path and versions include transitive peer dependencies encapsulated in dependencies
|
|
52
|
+
// e.g. '/cdktf-cli@0.20.3(ink@3.2.0)(react@17.0.2)' -> cdktf-cli@0.20.3
|
|
53
|
+
excludeTransPeerDepsVersions(fullVersionStr) {
|
|
54
|
+
var _a;
|
|
55
|
+
const match = fullVersionStr.match(/([^)]*)\(/);
|
|
56
|
+
return (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : fullVersionStr;
|
|
57
|
+
}
|
|
58
|
+
static isAbsoluteDepenencyPath(dependencyPath) {
|
|
59
|
+
return dependencyPath[0] !== '/';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.LockfileV6Parser = LockfileV6Parser;
|
|
63
|
+
//# sourceMappingURL=lockfile-v6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-v6.js","sourceRoot":"","sources":["../../../../lib/dep-graph-builders/pnpm/lockfile-parser/lockfile-v6.ts"],"names":[],"mappings":";;;AAEA,uDAAuD;AAEvD,MAAa,gBAAiB,SAAQ,oCAAkB;IAGtD,YAAmB,WAAgB,EAAE,aAAiC;QACpE,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACvC,CAAC;IAEM,YAAY,CAAC,OAAe;QACjC,4CAA4C;QAC5C,wEAAwE;QACxE,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAErD,qDAAqD;QACrD,uCAAuC;QACvC,OAAO,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,OAAO,CAAC;YACzD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEzB,iEAAiE;QACjE,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB,OAAO,EAAE,CAAC;SACX;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChD,OAAO;YACL,IAAI;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAC1B,YAAoD,EACpD,KAAc;QAEd,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,QAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,GAAG;gBACf,IAAI;gBACJ,OAAO;gBACP,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,KAAK;aACN,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAC1B,YAAoD,EACpD,KAAc;QAEd,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,QAAgC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,wEAAwE;IACjE,4BAA4B,CAAC,cAAsB;;QACxD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,OAAO,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,mCAAI,cAAc,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,uBAAuB,CAAC,cAAsB;QAC1D,OAAO,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IACnC,CAAC;CACF;AA5ED,4CA4EC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { PkgIdentifier } from '../types';
|
|
2
|
+
import { Dependencies } from '../util';
|
|
3
|
+
export declare type PnpmDepPath = string;
|
|
4
|
+
export declare type PnpmLockPkg = {
|
|
5
|
+
name?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
id?: string;
|
|
8
|
+
dev: boolean;
|
|
9
|
+
optional?: boolean;
|
|
10
|
+
dependencies: Record<string, string>;
|
|
11
|
+
optionalDependencies?: Record<string, string>;
|
|
12
|
+
peerDependencies?: Record<string, string>;
|
|
13
|
+
engines?: Record<string, string>;
|
|
14
|
+
os?: string;
|
|
15
|
+
cpu?: string;
|
|
16
|
+
deprecated?: boolean;
|
|
17
|
+
bundledDependencies?: Record<string, string>;
|
|
18
|
+
requiresBuild?: boolean;
|
|
19
|
+
prepare?: boolean;
|
|
20
|
+
hasBin?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare type NormalisedPnpmPkg = {
|
|
23
|
+
name: string;
|
|
24
|
+
version: string;
|
|
25
|
+
id: string;
|
|
26
|
+
isDev: boolean;
|
|
27
|
+
dependencies: Record<string, string>;
|
|
28
|
+
optionalDependencies?: Record<string, string>;
|
|
29
|
+
};
|
|
30
|
+
export declare type PnpmNode = {
|
|
31
|
+
name: string;
|
|
32
|
+
version: string;
|
|
33
|
+
id: string;
|
|
34
|
+
isDev: boolean;
|
|
35
|
+
dependencies: Dependencies;
|
|
36
|
+
optionalDependencies?: Dependencies;
|
|
37
|
+
missingLockFileEntry?: boolean;
|
|
38
|
+
};
|
|
39
|
+
export declare type NormalisedPnpmPkgs = Record<PkgIdentifier, NormalisedPnpmPkg>;
|
|
40
|
+
export declare type PnpmDeps = Record<string, {
|
|
41
|
+
name: string;
|
|
42
|
+
version: string;
|
|
43
|
+
specifier?: string;
|
|
44
|
+
isDev: boolean;
|
|
45
|
+
}>;
|
|
46
|
+
export declare type ParsedDepPath = {
|
|
47
|
+
name?: string;
|
|
48
|
+
version?: string;
|
|
49
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/dep-graph-builders/pnpm/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PnpmLockfileParser } from './lockfile-parser/lockfile-parser';
|
|
2
|
+
import { NormalisedPnpmPkgs, PnpmNode } from './types';
|
|
3
|
+
export declare const getPnpmChildNode: (name: string, depInfo: {
|
|
4
|
+
version: string;
|
|
5
|
+
isDev: boolean;
|
|
6
|
+
}, pkgs: NormalisedPnpmPkgs, strictOutOfSync: boolean, includeOptionalDeps: boolean, lockfileParser: PnpmLockfileParser) => PnpmNode;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPnpmChildNode = void 0;
|
|
4
|
+
const __1 = require("../..");
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const semver_1 = require("semver");
|
|
7
|
+
const error_catalog_nodejs_public_1 = require("@snyk/error-catalog-nodejs-public");
|
|
8
|
+
const out_of_sync_error_1 = require("../../errors/out-of-sync-error");
|
|
9
|
+
const getPnpmChildNode = (name, depInfo, pkgs, strictOutOfSync, includeOptionalDeps, lockfileParser) => {
|
|
10
|
+
const resolvedVersion = (0, semver_1.valid)(depInfo.version) || depInfo.version === undefined
|
|
11
|
+
? depInfo.version
|
|
12
|
+
: lockfileParser.excludeTransPeerDepsVersions(depInfo.version);
|
|
13
|
+
const childNodeKey = `${name}@${resolvedVersion}`;
|
|
14
|
+
if (!pkgs[childNodeKey]) {
|
|
15
|
+
if (lockfileParser.isWorkspaceLockfile()) {
|
|
16
|
+
return {
|
|
17
|
+
id: childNodeKey,
|
|
18
|
+
name: name,
|
|
19
|
+
version: resolvedVersion,
|
|
20
|
+
dependencies: {},
|
|
21
|
+
isDev: depInfo.isDev,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (strictOutOfSync && !/^file:/.test(depInfo.version)) {
|
|
25
|
+
const errMessage = `Dependency ${childNodeKey} was not found in ` +
|
|
26
|
+
`${out_of_sync_error_1.LOCK_FILE_NAME[__1.LockfileType.pnpm]}. Your package.json and ` +
|
|
27
|
+
`${out_of_sync_error_1.LOCK_FILE_NAME[__1.LockfileType.pnpm]} are probably out of sync. Please run ` +
|
|
28
|
+
`"${out_of_sync_error_1.INSTALL_COMMAND[__1.LockfileType.pnpm]}" and try again.`;
|
|
29
|
+
throw new error_catalog_nodejs_public_1.OpenSourceEcosystems.PnpmOutOfSyncError(errMessage);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return {
|
|
33
|
+
id: childNodeKey,
|
|
34
|
+
name: name,
|
|
35
|
+
version: resolvedVersion,
|
|
36
|
+
dependencies: {},
|
|
37
|
+
isDev: depInfo.isDev,
|
|
38
|
+
missingLockFileEntry: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const depData = pkgs[childNodeKey];
|
|
44
|
+
const dependencies = (0, util_1.getGraphDependencies)(depData.dependencies || {}, depInfo.isDev);
|
|
45
|
+
const optionalDependencies = includeOptionalDeps
|
|
46
|
+
? (0, util_1.getGraphDependencies)(depData.optionalDependencies || {}, depInfo.isDev)
|
|
47
|
+
: {};
|
|
48
|
+
return {
|
|
49
|
+
id: `${name}@${depData.version}`,
|
|
50
|
+
name: name,
|
|
51
|
+
version: resolvedVersion,
|
|
52
|
+
dependencies: Object.assign(Object.assign({}, dependencies), optionalDependencies),
|
|
53
|
+
isDev: depInfo.isDev,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.getPnpmChildNode = getPnpmChildNode;
|
|
58
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/dep-graph-builders/pnpm/utils.ts"],"names":[],"mappings":";;;AAAA,6BAAqC;AACrC,kCAA+C;AAG/C,mCAA+B;AAC/B,mFAAyE;AACzE,sEAGwC;AAEjC,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,OAA4C,EAC5C,IAAwB,EACxB,eAAwB,EACxB,mBAA4B,EAC5B,cAAkC,EACxB,EAAE;IACZ,MAAM,eAAe,GACnB,IAAA,cAAK,EAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QACrD,CAAC,CAAC,OAAO,CAAC,OAAO;QACjB,CAAC,CAAC,cAAc,CAAC,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,eAAe,EAAE,CAAC;IAClD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QACvB,IAAI,cAAc,CAAC,mBAAmB,EAAE,EAAE;YACxC,OAAO;gBACL,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,eAAe;gBACxB,YAAY,EAAE,EAAE;gBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC;SACH;QACD,IAAI,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtD,MAAM,UAAU,GACd,cAAc,YAAY,oBAAoB;gBAC9C,GAAG,kCAAc,CAAC,gBAAY,CAAC,IAAI,CAAC,0BAA0B;gBAC9D,GACE,kCAAc,CAAC,gBAAY,CAAC,IAAI,CAClC,wCAAwC;gBACxC,IAAI,mCAAe,CAAC,gBAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3D,MAAM,IAAI,kDAAoB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;SAC/D;aAAM;YACL,OAAO;gBACL,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,eAAe;gBACxB,YAAY,EAAE,EAAE;gBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,oBAAoB,EAAE,IAAI;aAC3B,CAAC;SACH;KACF;SAAM;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,IAAA,2BAAoB,EACvC,OAAO,CAAC,YAAY,IAAI,EAAE,EAC1B,OAAO,CAAC,KAAK,CACd,CAAC;QACF,MAAM,oBAAoB,GAAG,mBAAmB;YAC9C,CAAC,CAAC,IAAA,2BAAoB,EAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;YACzE,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,EAAE,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;YAChC,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,eAAe;YACxB,YAAY,kCAAO,YAAY,GAAK,oBAAoB,CAAE;YAC1D,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;KACH;AACH,CAAC,CAAC;AA3DW,QAAA,gBAAgB,oBA2D3B"}
|
|
@@ -7,6 +7,9 @@ export declare type PackageJsonBase = {
|
|
|
7
7
|
peerDependencies?: Record<string, string>;
|
|
8
8
|
resolutions?: Record<string, string>;
|
|
9
9
|
overrides?: Overrides;
|
|
10
|
+
pnpm?: {
|
|
11
|
+
overrides?: Overrides;
|
|
12
|
+
};
|
|
10
13
|
};
|
|
11
14
|
export declare type Overrides = string | {
|
|
12
15
|
[key: string]: Overrides;
|
|
@@ -55,3 +58,16 @@ export declare type Yarn1DepGraphBuildOptions = {
|
|
|
55
58
|
strictOutOfSync: boolean;
|
|
56
59
|
pruneWithinTopLevelDeps: boolean;
|
|
57
60
|
};
|
|
61
|
+
export declare type PnpmWorkspaceArgs = {
|
|
62
|
+
isWorkspacePkg: boolean;
|
|
63
|
+
isRoot: boolean;
|
|
64
|
+
workspacePath: string;
|
|
65
|
+
projectsVersionMap: Record<string, string>;
|
|
66
|
+
rootOverrides: Overrides;
|
|
67
|
+
};
|
|
68
|
+
export declare type PnpmProjectParseOptions = {
|
|
69
|
+
includeDevDeps: boolean;
|
|
70
|
+
includeOptionalDeps: boolean;
|
|
71
|
+
strictOutOfSync: boolean;
|
|
72
|
+
pruneWithinTopLevelDeps: boolean;
|
|
73
|
+
};
|
|
@@ -33,9 +33,9 @@ exports.getTopLevelDeps = getTopLevelDeps;
|
|
|
33
33
|
* For example, { 'mime-db': '~1.12.0' } will be converted to { 'mime-db': { version: '~1.12.0', isDev: true/false } }.
|
|
34
34
|
*/
|
|
35
35
|
const getGraphDependencies = (dependencies, isDev) => {
|
|
36
|
-
return Object.entries(dependencies).reduce((
|
|
37
|
-
|
|
38
|
-
return
|
|
36
|
+
return Object.entries(dependencies).reduce((pnpmDeps, [name, semver]) => {
|
|
37
|
+
pnpmDeps[name] = { version: semver, isDev: isDev };
|
|
38
|
+
return pnpmDeps;
|
|
39
39
|
}, {});
|
|
40
40
|
};
|
|
41
41
|
exports.getGraphDependencies = getGraphDependencies;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/dep-graph-builders/util.ts"],"names":[],"mappings":";;;AAEA,sCAAkD;AAElD,sCAA2C;AAC3C,wCAA0C;AAenC,MAAM,iBAAiB,GAAG,CAC/B,eAAgC,EAChC,IAAa,EACb,OAGC,EACgB,EAAE;IACnB,OAAO,eAAe,CAAC,UAAU,CAC/B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAC1C,IAAI,CAAC,EAAE,EACP;QACE,MAAM,8CACJ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAC/B,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAC1C,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAC9C,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CACnE;KACF,CACF,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,iBAAiB,qBAoB5B;AAEF;;;GAGG;AACI,MAAM,eAAe,GAAG,CAC7B,OAAwB,EACxB,OAIC,EACa,EAAE;IAChB,MAAM,QAAQ,GAAG,IAAA,4BAAoB,EAAC,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc;QACpC,CAAC,CAAC,IAAA,4BAAoB,EAAC,OAAO,CAAC,eAAe,IAAI,EAAE,EAAE,IAAI,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB;QAC9C,CAAC,CAAC,IAAA,4BAAoB,EAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,EAAE,KAAK,CAAC;QACjE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe;QACtC,CAAC,CAAC,IAAA,4BAAoB,EAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,EAAE,KAAK,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IAEP,mEAAY,QAAQ,GAAK,OAAO,GAAK,YAAY,GAAK,QAAQ,EAAG;AACnE,CAAC,CAAC;AAvBW,QAAA,eAAe,mBAuB1B;AAEF;;;GAGG;AACI,MAAM,oBAAoB,GAAG,CAClC,YAAoC,EACpC,KAAK,EACS,EAAE;IAChB,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/dep-graph-builders/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { LockfileType } from '../parsers';
|
|
2
|
+
export declare const LOCK_FILE_NAME: {
|
|
3
|
+
npm: string;
|
|
4
|
+
npm7: string;
|
|
5
|
+
yarn: string;
|
|
6
|
+
yarn2: string;
|
|
7
|
+
pnpm: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const INSTALL_COMMAND: {
|
|
10
|
+
npm: string;
|
|
11
|
+
npm7: string;
|
|
12
|
+
yarn: string;
|
|
13
|
+
yarn2: string;
|
|
14
|
+
pnpm: string;
|
|
15
|
+
};
|
|
2
16
|
export declare class OutOfSyncError extends Error {
|
|
3
17
|
code: number;
|
|
4
18
|
name: string;
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OutOfSyncError = void 0;
|
|
4
|
-
|
|
3
|
+
exports.OutOfSyncError = exports.INSTALL_COMMAND = exports.LOCK_FILE_NAME = void 0;
|
|
4
|
+
exports.LOCK_FILE_NAME = {
|
|
5
5
|
npm: 'package-lock.json',
|
|
6
6
|
npm7: 'package-lock.json',
|
|
7
7
|
yarn: 'yarn.lock',
|
|
8
8
|
yarn2: 'yarn.lock',
|
|
9
|
+
pnpm: 'pnpm-lock.yaml',
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
+
exports.INSTALL_COMMAND = {
|
|
11
12
|
npm: 'npm install',
|
|
12
13
|
npm7: 'npm install',
|
|
13
14
|
yarn: 'yarn install',
|
|
14
15
|
yarn2: 'yarn install',
|
|
16
|
+
pnpm: 'pnpm install',
|
|
15
17
|
};
|
|
16
18
|
class OutOfSyncError extends Error {
|
|
17
19
|
constructor(dependencyName, lockFileType) {
|
|
18
20
|
super(`Dependency ${dependencyName} was not found in ` +
|
|
19
|
-
`${LOCK_FILE_NAME[lockFileType]}. Your package.json and ` +
|
|
20
|
-
`${LOCK_FILE_NAME[lockFileType]} are probably out of sync. Please run ` +
|
|
21
|
-
`"${INSTALL_COMMAND[lockFileType]}" and try again.`);
|
|
21
|
+
`${exports.LOCK_FILE_NAME[lockFileType]}. Your package.json and ` +
|
|
22
|
+
`${exports.LOCK_FILE_NAME[lockFileType]} are probably out of sync. Please run ` +
|
|
23
|
+
`"${exports.INSTALL_COMMAND[lockFileType]}" and try again.`);
|
|
22
24
|
this.code = 422;
|
|
23
25
|
this.name = 'OutOfSyncError';
|
|
24
26
|
this.dependencyName = dependencyName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"out-of-sync-error.js","sourceRoot":"","sources":["../../lib/errors/out-of-sync-error.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"out-of-sync-error.js","sourceRoot":"","sources":["../../lib/errors/out-of-sync-error.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG;IAC5B,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,gBAAgB;CACvB,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF,MAAa,cAAe,SAAQ,KAAK;IAMvC,YAAY,cAAsB,EAAE,YAA0B;QAC5D,KAAK,CACH,cAAc,cAAc,oBAAoB;YAC9C,GAAG,sBAAc,CAAC,YAAY,CAAC,0BAA0B;YACzD,GAAG,sBAAc,CAAC,YAAY,CAAC,wCAAwC;YACvE,IAAI,uBAAe,CAAC,YAAY,CAAC,kBAAkB,CACtD,CAAC;QAXG,SAAI,GAAG,GAAG,CAAC;QACX,SAAI,GAAG,gBAAgB,CAAC;QAW7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC;CACF;AAjBD,wCAiBC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ManifestFile, PkgTree, Scope, LockfileType, getYarnWorkspaces } from './parsers';
|
|
1
|
+
import { ManifestFile, PkgTree, Scope, LockfileType, getYarnWorkspaces, getPnpmWorkspaces } from './parsers';
|
|
2
2
|
import { UnsupportedRuntimeError, InvalidUserInputError, OutOfSyncError } from './errors';
|
|
3
3
|
import { buildDepGraphFromCliOutput } from './cli-parsers';
|
|
4
|
-
export { buildDepTree, buildDepTreeFromFiles, buildDepGraphFromCliOutput, getYarnWorkspacesFromFiles, getYarnWorkspaces, PkgTree, Scope, LockfileType, UnsupportedRuntimeError, InvalidUserInputError, OutOfSyncError, ManifestFile, };
|
|
5
|
-
import { parseNpmLockV2Project, extractPkgsFromYarnLockV1, parseYarnLockV1Project, parseYarnLockV1WorkspaceProject, buildDepGraphYarnLockV1SimpleCyclesPruned, buildDepGraphYarnLockV1Simple, buildDepGraphYarnLockV1WorkspaceCyclesPruned, buildDepGraphYarnLockV1Workspace, extractPkgsFromYarnLockV2, parseYarnLockV2Project, buildDepGraphYarnLockV2Simple } from './dep-graph-builders';
|
|
4
|
+
export { buildDepTree, buildDepTreeFromFiles, buildDepGraphFromCliOutput, getYarnWorkspacesFromFiles, getYarnWorkspaces, getPnpmWorkspaces, PkgTree, Scope, LockfileType, UnsupportedRuntimeError, InvalidUserInputError, OutOfSyncError, ManifestFile, };
|
|
5
|
+
import { parseNpmLockV2Project, extractPkgsFromYarnLockV1, parseYarnLockV1Project, parseYarnLockV1WorkspaceProject, buildDepGraphYarnLockV1SimpleCyclesPruned, buildDepGraphYarnLockV1Simple, buildDepGraphYarnLockV1WorkspaceCyclesPruned, buildDepGraphYarnLockV1Workspace, extractPkgsFromYarnLockV2, parseYarnLockV2Project, buildDepGraphYarnLockV2Simple, parsePnpmProject, parsePkgJson } from './dep-graph-builders';
|
|
6
6
|
import type { PackageJsonBase, NormalisedPkgs, ProjectParseOptions, YarnLockV2ProjectParseOptions } from './dep-graph-builders/types';
|
|
7
|
-
import { getLockfileVersionFromFile, getNpmLockfileVersion, getYarnLockfileVersion, NodeLockfileVersion } from './utils';
|
|
8
|
-
export { parseNpmLockV2Project, extractPkgsFromYarnLockV1, parseYarnLockV1Project, parseYarnLockV1WorkspaceProject, buildDepGraphYarnLockV1SimpleCyclesPruned, buildDepGraphYarnLockV1Simple, buildDepGraphYarnLockV1WorkspaceCyclesPruned, buildDepGraphYarnLockV1Workspace, extractPkgsFromYarnLockV2, parseYarnLockV2Project, buildDepGraphYarnLockV2Simple, PackageJsonBase, ProjectParseOptions, YarnLockV2ProjectParseOptions, NormalisedPkgs, NormalisedPkgs as YarnLockPackages, getLockfileVersionFromFile, getNpmLockfileVersion, getYarnLockfileVersion, NodeLockfileVersion, };
|
|
7
|
+
import { getLockfileVersionFromFile, getNpmLockfileVersion, getYarnLockfileVersion, getPnpmLockfileVersion, NodeLockfileVersion } from './utils';
|
|
8
|
+
export { parseNpmLockV2Project, extractPkgsFromYarnLockV1, parseYarnLockV1Project, parseYarnLockV1WorkspaceProject, buildDepGraphYarnLockV1SimpleCyclesPruned, buildDepGraphYarnLockV1Simple, buildDepGraphYarnLockV1WorkspaceCyclesPruned, buildDepGraphYarnLockV1Workspace, extractPkgsFromYarnLockV2, parseYarnLockV2Project, buildDepGraphYarnLockV2Simple, parsePnpmProject, parsePkgJson, PackageJsonBase, ProjectParseOptions, YarnLockV2ProjectParseOptions, NormalisedPkgs, NormalisedPkgs as YarnLockPackages, getLockfileVersionFromFile, getNpmLockfileVersion, getYarnLockfileVersion, getPnpmLockfileVersion, NodeLockfileVersion, };
|
|
9
9
|
declare function buildDepTree(manifestFileContents: string, lockFileContents: string, includeDev?: boolean, lockfileType?: LockfileType, strictOutOfSync?: boolean, defaultManifestFileName?: string): Promise<PkgTree>;
|
|
10
10
|
declare function buildDepTreeFromFiles(root: string, manifestFilePath: string, lockFilePath: string, includeDev?: boolean, strictOutOfSync?: boolean): Promise<PkgTree>;
|
|
11
11
|
declare function getYarnWorkspacesFromFiles(root: any, manifestFilePath: string): string[] | false;
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getYarnLockfileType = exports.NodeLockfileVersion = exports.getYarnLockfileVersion = exports.getNpmLockfileVersion = exports.getLockfileVersionFromFile = exports.buildDepGraphYarnLockV2Simple = exports.parseYarnLockV2Project = exports.extractPkgsFromYarnLockV2 = exports.buildDepGraphYarnLockV1Workspace = exports.buildDepGraphYarnLockV1WorkspaceCyclesPruned = exports.buildDepGraphYarnLockV1Simple = exports.buildDepGraphYarnLockV1SimpleCyclesPruned = exports.parseYarnLockV1WorkspaceProject = exports.parseYarnLockV1Project = exports.extractPkgsFromYarnLockV1 = exports.parseNpmLockV2Project = exports.OutOfSyncError = exports.InvalidUserInputError = exports.UnsupportedRuntimeError = exports.LockfileType = exports.Scope = exports.getYarnWorkspaces = exports.getYarnWorkspacesFromFiles = exports.buildDepGraphFromCliOutput = exports.buildDepTreeFromFiles = exports.buildDepTree = void 0;
|
|
3
|
+
exports.getYarnLockfileType = exports.NodeLockfileVersion = exports.getPnpmLockfileVersion = exports.getYarnLockfileVersion = exports.getNpmLockfileVersion = exports.getLockfileVersionFromFile = exports.parsePkgJson = exports.parsePnpmProject = exports.buildDepGraphYarnLockV2Simple = exports.parseYarnLockV2Project = exports.extractPkgsFromYarnLockV2 = exports.buildDepGraphYarnLockV1Workspace = exports.buildDepGraphYarnLockV1WorkspaceCyclesPruned = exports.buildDepGraphYarnLockV1Simple = exports.buildDepGraphYarnLockV1SimpleCyclesPruned = exports.parseYarnLockV1WorkspaceProject = exports.parseYarnLockV1Project = exports.extractPkgsFromYarnLockV1 = exports.parseNpmLockV2Project = exports.OutOfSyncError = exports.InvalidUserInputError = exports.UnsupportedRuntimeError = exports.LockfileType = exports.Scope = exports.getPnpmWorkspaces = exports.getYarnWorkspaces = exports.getYarnWorkspacesFromFiles = exports.buildDepGraphFromCliOutput = exports.buildDepTreeFromFiles = exports.buildDepTree = void 0;
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const parsers_1 = require("./parsers");
|
|
7
7
|
Object.defineProperty(exports, "Scope", { enumerable: true, get: function () { return parsers_1.Scope; } });
|
|
8
8
|
Object.defineProperty(exports, "LockfileType", { enumerable: true, get: function () { return parsers_1.LockfileType; } });
|
|
9
9
|
Object.defineProperty(exports, "getYarnWorkspaces", { enumerable: true, get: function () { return parsers_1.getYarnWorkspaces; } });
|
|
10
|
+
Object.defineProperty(exports, "getPnpmWorkspaces", { enumerable: true, get: function () { return parsers_1.getPnpmWorkspaces; } });
|
|
10
11
|
const package_lock_parser_1 = require("./parsers/package-lock-parser");
|
|
11
12
|
const yarn_lock_parser_1 = require("./parsers/yarn-lock-parser");
|
|
12
13
|
const yarn2_lock_parser_1 = require("./parsers/yarn2-lock-parser");
|
|
@@ -30,10 +31,13 @@ Object.defineProperty(exports, "buildDepGraphYarnLockV1Workspace", { enumerable:
|
|
|
30
31
|
Object.defineProperty(exports, "extractPkgsFromYarnLockV2", { enumerable: true, get: function () { return dep_graph_builders_1.extractPkgsFromYarnLockV2; } });
|
|
31
32
|
Object.defineProperty(exports, "parseYarnLockV2Project", { enumerable: true, get: function () { return dep_graph_builders_1.parseYarnLockV2Project; } });
|
|
32
33
|
Object.defineProperty(exports, "buildDepGraphYarnLockV2Simple", { enumerable: true, get: function () { return dep_graph_builders_1.buildDepGraphYarnLockV2Simple; } });
|
|
34
|
+
Object.defineProperty(exports, "parsePnpmProject", { enumerable: true, get: function () { return dep_graph_builders_1.parsePnpmProject; } });
|
|
35
|
+
Object.defineProperty(exports, "parsePkgJson", { enumerable: true, get: function () { return dep_graph_builders_1.parsePkgJson; } });
|
|
33
36
|
const utils_1 = require("./utils");
|
|
34
37
|
Object.defineProperty(exports, "getLockfileVersionFromFile", { enumerable: true, get: function () { return utils_1.getLockfileVersionFromFile; } });
|
|
35
38
|
Object.defineProperty(exports, "getNpmLockfileVersion", { enumerable: true, get: function () { return utils_1.getNpmLockfileVersion; } });
|
|
36
39
|
Object.defineProperty(exports, "getYarnLockfileVersion", { enumerable: true, get: function () { return utils_1.getYarnLockfileVersion; } });
|
|
40
|
+
Object.defineProperty(exports, "getPnpmLockfileVersion", { enumerable: true, get: function () { return utils_1.getPnpmLockfileVersion; } });
|
|
37
41
|
Object.defineProperty(exports, "NodeLockfileVersion", { enumerable: true, get: function () { return utils_1.NodeLockfileVersion; } });
|
|
38
42
|
// **********************************
|
|
39
43
|
async function buildDepTree(manifestFileContents, lockFileContents, includeDev = false, lockfileType, strictOutOfSync = true, defaultManifestFileName = 'package.json') {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/parsers/index.d.ts
CHANGED
|
@@ -68,7 +68,8 @@ export declare enum LockfileType {
|
|
|
68
68
|
npm = "npm",
|
|
69
69
|
npm7 = "npm7",
|
|
70
70
|
yarn = "yarn",
|
|
71
|
-
yarn2 = "yarn2"
|
|
71
|
+
yarn2 = "yarn2",
|
|
72
|
+
pnpm = "pnpm"
|
|
72
73
|
}
|
|
73
74
|
export interface LockfileParser {
|
|
74
75
|
parseLockFile: (lockFileContents: string) => Lockfile;
|
|
@@ -84,4 +85,5 @@ export declare function getTopLevelDeps({ targetFile, includeDev, includePeerDep
|
|
|
84
85
|
}): Dep[];
|
|
85
86
|
export declare function createDepTreeDepFromDep(dep: Dep): DepTreeDep;
|
|
86
87
|
export declare function getYarnWorkspaces(targetFile: string): string[] | false;
|
|
88
|
+
export declare function getPnpmWorkspaces(workspacesYamlFile: string): string[];
|
|
87
89
|
export {};
|
package/dist/parsers/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getYarnWorkspaces = exports.createDepTreeDepFromDep = exports.getTopLevelDeps = exports.parseManifestFile = exports.LockfileType = exports.Scope = void 0;
|
|
3
|
+
exports.getPnpmWorkspaces = exports.getYarnWorkspaces = exports.createDepTreeDepFromDep = exports.getTopLevelDeps = exports.parseManifestFile = exports.LockfileType = exports.Scope = void 0;
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
|
+
const js_yaml_1 = require("js-yaml");
|
|
5
6
|
var Scope;
|
|
6
7
|
(function (Scope) {
|
|
7
8
|
Scope["prod"] = "prod";
|
|
@@ -13,6 +14,7 @@ var LockfileType;
|
|
|
13
14
|
LockfileType["npm7"] = "npm7";
|
|
14
15
|
LockfileType["yarn"] = "yarn";
|
|
15
16
|
LockfileType["yarn2"] = "yarn2";
|
|
17
|
+
LockfileType["pnpm"] = "pnpm";
|
|
16
18
|
})(LockfileType = exports.LockfileType || (exports.LockfileType = {}));
|
|
17
19
|
function parseManifestFile(manifestFileContents) {
|
|
18
20
|
try {
|
|
@@ -86,4 +88,24 @@ function getYarnWorkspaces(targetFile) {
|
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
exports.getYarnWorkspaces = getYarnWorkspaces;
|
|
91
|
+
function getPnpmWorkspaces(workspacesYamlFile) {
|
|
92
|
+
try {
|
|
93
|
+
const rawPnpmWorkspacesYaml = (0, js_yaml_1.load)(workspacesYamlFile, {
|
|
94
|
+
json: true,
|
|
95
|
+
schema: js_yaml_1.FAILSAFE_SCHEMA,
|
|
96
|
+
});
|
|
97
|
+
if (rawPnpmWorkspacesYaml && rawPnpmWorkspacesYaml.packages) {
|
|
98
|
+
if (Array.isArray(rawPnpmWorkspacesYaml.packages)) {
|
|
99
|
+
return rawPnpmWorkspacesYaml.packages;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// By default, all packages of all subdirectories are included.
|
|
103
|
+
// https://pnpm.io/pnpm-workspace_yaml
|
|
104
|
+
return ['*'];
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
throw new errors_1.InvalidUserInputError('package.json parsing failed with ' + `error ${e.message}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.getPnpmWorkspaces = getPnpmWorkspaces;
|
|
89
111
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/parsers/index.ts"],"names":[],"mappings":";;;AAEA,sCAAkD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/parsers/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -3,8 +3,11 @@ export declare enum NodeLockfileVersion {
|
|
|
3
3
|
NpmLockV2 = "NPM_LOCK_V2",
|
|
4
4
|
NpmLockV3 = "NPM_LOCK_V3",
|
|
5
5
|
YarnLockV1 = "YARN_LOCK_V1",
|
|
6
|
-
YarnLockV2 = "YARN_LOCK_V2"
|
|
6
|
+
YarnLockV2 = "YARN_LOCK_V2",
|
|
7
|
+
PnpmLockV5 = "PNPM_LOCK_V5",
|
|
8
|
+
PnpmLockV6 = "PNPM_LOCK_V6"
|
|
7
9
|
}
|
|
8
10
|
export declare const getLockfileVersionFromFile: (targetFile: string) => NodeLockfileVersion;
|
|
11
|
+
export declare function getPnpmLockfileVersion(lockFileContents: string): NodeLockfileVersion.PnpmLockV5 | NodeLockfileVersion.PnpmLockV6;
|
|
9
12
|
export declare function getYarnLockfileVersion(lockFileContents: string): NodeLockfileVersion.YarnLockV1 | NodeLockfileVersion.YarnLockV2;
|
|
10
13
|
export declare function getNpmLockfileVersion(lockFileContents: string): NodeLockfileVersion.NpmLockV1 | NodeLockfileVersion.NpmLockV2 | NodeLockfileVersion.NpmLockV3;
|
package/dist/utils.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getNpmLockfileVersion = exports.getYarnLockfileVersion = exports.getLockfileVersionFromFile = exports.NodeLockfileVersion = void 0;
|
|
3
|
+
exports.getNpmLockfileVersion = exports.getYarnLockfileVersion = exports.getPnpmLockfileVersion = exports.getLockfileVersionFromFile = exports.NodeLockfileVersion = void 0;
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
|
+
const js_yaml_1 = require("js-yaml");
|
|
5
6
|
const errors_1 = require("./errors");
|
|
7
|
+
const error_catalog_nodejs_public_1 = require("@snyk/error-catalog-nodejs-public");
|
|
6
8
|
var NodeLockfileVersion;
|
|
7
9
|
(function (NodeLockfileVersion) {
|
|
8
10
|
NodeLockfileVersion["NpmLockV1"] = "NPM_LOCK_V1";
|
|
@@ -10,6 +12,8 @@ var NodeLockfileVersion;
|
|
|
10
12
|
NodeLockfileVersion["NpmLockV3"] = "NPM_LOCK_V3";
|
|
11
13
|
NodeLockfileVersion["YarnLockV1"] = "YARN_LOCK_V1";
|
|
12
14
|
NodeLockfileVersion["YarnLockV2"] = "YARN_LOCK_V2";
|
|
15
|
+
NodeLockfileVersion["PnpmLockV5"] = "PNPM_LOCK_V5";
|
|
16
|
+
NodeLockfileVersion["PnpmLockV6"] = "PNPM_LOCK_V6";
|
|
13
17
|
})(NodeLockfileVersion = exports.NodeLockfileVersion || (exports.NodeLockfileVersion = {}));
|
|
14
18
|
const getLockfileVersionFromFile = (targetFile) => {
|
|
15
19
|
const lockFileContents = (0, fs_1.readFileSync)(targetFile, 'utf-8');
|
|
@@ -19,12 +23,32 @@ const getLockfileVersionFromFile = (targetFile) => {
|
|
|
19
23
|
else if (targetFile.endsWith('yarn.lock')) {
|
|
20
24
|
return getYarnLockfileVersion(lockFileContents);
|
|
21
25
|
}
|
|
26
|
+
else if (targetFile.endsWith('pnpm-lock.yaml')) {
|
|
27
|
+
return getPnpmLockfileVersion(lockFileContents);
|
|
28
|
+
}
|
|
22
29
|
else {
|
|
23
30
|
throw new errors_1.InvalidUserInputError(`Unknown lockfile ${targetFile}. ` +
|
|
24
31
|
'Please provide either package-lock.json or yarn.lock.');
|
|
25
32
|
}
|
|
26
33
|
};
|
|
27
34
|
exports.getLockfileVersionFromFile = getLockfileVersionFromFile;
|
|
35
|
+
function getPnpmLockfileVersion(lockFileContents) {
|
|
36
|
+
const rawPnpmLock = (0, js_yaml_1.load)(lockFileContents, {
|
|
37
|
+
json: true,
|
|
38
|
+
schema: js_yaml_1.FAILSAFE_SCHEMA,
|
|
39
|
+
});
|
|
40
|
+
const { lockfileVersion } = rawPnpmLock;
|
|
41
|
+
if (lockfileVersion.startsWith('5')) {
|
|
42
|
+
return NodeLockfileVersion.PnpmLockV5;
|
|
43
|
+
}
|
|
44
|
+
else if (lockfileVersion.startsWith('6')) {
|
|
45
|
+
return NodeLockfileVersion.PnpmLockV6;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw new error_catalog_nodejs_public_1.OpenSourceEcosystems.PnpmUnsupportedLockfileVersionError(`The pnpm-lock.yaml lockfile version ${lockfileVersion} is not supported`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.getPnpmLockfileVersion = getPnpmLockfileVersion;
|
|
28
52
|
function getYarnLockfileVersion(lockFileContents) {
|
|
29
53
|
if (lockFileContents.includes('__metadata')) {
|
|
30
54
|
return NodeLockfileVersion.YarnLockV2;
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,qCAAiD;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,qCAAgD;AAChD,qCAAiD;AACjD,mFAAyE;AAEzE,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;AAC7B,CAAC,EARW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAQ9B;AAEM,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EACG,EAAE;IACvB,MAAM,gBAAgB,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC5C,OAAO,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;KAChD;SAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC3C,OAAO,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;KACjD;SAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAChD,OAAO,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;KACjD;SAAM;QACL,MAAM,IAAI,8BAAqB,CAC7B,oBAAoB,UAAU,IAAI;YAChC,uDAAuD,CAC1D,CAAC;KACH;AACH,CAAC,CAAC;AAhBW,QAAA,0BAA0B,8BAgBrC;AAEF,SAAgB,sBAAsB,CACpC,gBAAwB;IAExB,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC,gBAAgB,EAAE;QACzC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,yBAAe;KACxB,CAAC,CAAC;IACH,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC;IACxC,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACnC,OAAO,mBAAmB,CAAC,UAAU,CAAC;KACvC;SAAM,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC1C,OAAO,mBAAmB,CAAC,UAAU,CAAC;KACvC;SAAM;QACL,MAAM,IAAI,kDAAoB,CAAC,mCAAmC,CAChE,uCAAuC,eAAe,mBAAmB,CAC1E,CAAC;KACH;AACH,CAAC;AAjBD,wDAiBC;AAED,SAAgB,sBAAsB,CACpC,gBAAwB;IAExB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;QAC3C,OAAO,mBAAmB,CAAC,UAAU,CAAC;KACvC;SAAM;QACL,OAAO,mBAAmB,CAAC,UAAU,CAAC;KACvC;AACH,CAAC;AARD,wDAQC;AAED,SAAgB,qBAAqB,CACnC,gBAAwB;IAKxB,IAAI;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,eAAe,GAAkB,YAAY,CAAC,eAAe,IAAI,IAAI,CAAC;QAE5E,QAAQ,eAAe,EAAE;YACvB,KAAK,IAAI,CAAC;YACV,KAAK,CAAC;gBACJ,OAAO,mBAAmB,CAAC,SAAS,CAAC;YACvC,KAAK,CAAC;gBACJ,OAAO,mBAAmB,CAAC,SAAS,CAAC;YACvC,KAAK,CAAC;gBACJ,OAAO,mBAAmB,CAAC,SAAS,CAAC;YACvC;gBACE,MAAM,IAAI,8BAAqB,CAC7B,yDAAyD;oBACvD,mEAAmE,CACtE,CAAC;SACL;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,8BAAqB,CAC7B,0FAA0F,CAC3F,CAAC;KACH;AACH,CAAC;AA7BD,sDA6BC"}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"scripts": {
|
|
9
9
|
"test": "npm run unit-test && npm run test:jest",
|
|
10
10
|
"unit-test": "tap --ts -Rspec ./test/lib/*.test.[tj]s --timeout=300 --no-check-coverage",
|
|
11
|
-
"test:jest": "jest",
|
|
11
|
+
"test:jest": "jest --coverage --runInBand",
|
|
12
12
|
"lint": "eslint --color --cache '{lib,test}/**/*.{js,ts}' && prettier --check '{lib,test}/**/*.{js,ts}'",
|
|
13
13
|
"format": "prettier --write '{lib,test}/**/*.{js,ts,json}'",
|
|
14
14
|
"build": "tsc",
|
|
@@ -31,19 +31,21 @@
|
|
|
31
31
|
],
|
|
32
32
|
"homepage": "https://github.com/snyk/nodejs-lockfile-parser#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
+
"@snyk/error-catalog-nodejs-public": "^5.16.0",
|
|
34
35
|
"@snyk/dep-graph": "^2.3.0",
|
|
35
36
|
"@snyk/graphlib": "2.1.9-patch.3",
|
|
36
37
|
"@yarnpkg/core": "^2.4.0",
|
|
37
38
|
"@yarnpkg/lockfile": "^1.1.0",
|
|
39
|
+
"dependency-path": "^9.2.8",
|
|
38
40
|
"event-loop-spinner": "^2.0.0",
|
|
39
41
|
"js-yaml": "^4.1.0",
|
|
40
42
|
"lodash.clonedeep": "^4.5.0",
|
|
41
|
-
"p-map": "^4.0.0",
|
|
42
43
|
"lodash.flatmap": "^4.5.0",
|
|
43
44
|
"lodash.isempty": "^4.4.0",
|
|
44
45
|
"lodash.topairs": "^4.3.0",
|
|
45
46
|
"micromatch": "^4.0.5",
|
|
46
|
-
"
|
|
47
|
+
"p-map": "^4.0.0",
|
|
48
|
+
"semver": "^7.6.0",
|
|
47
49
|
"snyk-config": "^5.0.0",
|
|
48
50
|
"tslib": "^1.9.3",
|
|
49
51
|
"uuid": "^8.3.0"
|
|
@@ -65,5 +67,5 @@
|
|
|
65
67
|
"typescript": "4.8.4"
|
|
66
68
|
},
|
|
67
69
|
"packageManager": "yarn@2.4.1",
|
|
68
|
-
"version": "1.
|
|
70
|
+
"version": "1.53.1"
|
|
69
71
|
}
|