@securecode-ai/mcp 0.2.1 → 0.3.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.
Files changed (52) hide show
  1. package/dist/dependency/depCache.d.ts +22 -0
  2. package/dist/dependency/depCache.js +115 -0
  3. package/dist/dependency/depCache.js.map +1 -0
  4. package/dist/dependency/dependencyChecker.d.ts +48 -0
  5. package/dist/dependency/dependencyChecker.js +196 -0
  6. package/dist/dependency/dependencyChecker.js.map +1 -0
  7. package/dist/dependency/finding.d.ts +42 -0
  8. package/dist/dependency/finding.js +13 -0
  9. package/dist/dependency/finding.js.map +1 -0
  10. package/dist/dependency/licensePolicy.d.ts +56 -0
  11. package/dist/dependency/licensePolicy.js +109 -0
  12. package/dist/dependency/licensePolicy.js.map +1 -0
  13. package/dist/dependency/minSafeVersion.d.ts +32 -0
  14. package/dist/dependency/minSafeVersion.js +125 -0
  15. package/dist/dependency/minSafeVersion.js.map +1 -0
  16. package/dist/dependency/osvClient.d.ts +45 -0
  17. package/dist/dependency/osvClient.js +452 -0
  18. package/dist/dependency/osvClient.js.map +1 -0
  19. package/dist/dependency/parsers/npm.d.ts +13 -0
  20. package/dist/dependency/parsers/npm.js +160 -0
  21. package/dist/dependency/parsers/npm.js.map +1 -0
  22. package/dist/dependency/parsers/pipfile.d.ts +8 -0
  23. package/dist/dependency/parsers/pipfile.js +110 -0
  24. package/dist/dependency/parsers/pipfile.js.map +1 -0
  25. package/dist/dependency/parsers/pnpm.d.ts +11 -0
  26. package/dist/dependency/parsers/pnpm.js +148 -0
  27. package/dist/dependency/parsers/pnpm.js.map +1 -0
  28. package/dist/dependency/parsers/requirements.d.ts +24 -0
  29. package/dist/dependency/parsers/requirements.js +153 -0
  30. package/dist/dependency/parsers/requirements.js.map +1 -0
  31. package/dist/dependency/parsers/yarn.d.ts +10 -0
  32. package/dist/dependency/parsers/yarn.js +153 -0
  33. package/dist/dependency/parsers/yarn.js.map +1 -0
  34. package/dist/dependency/resolver.d.ts +28 -0
  35. package/dist/dependency/resolver.js +159 -0
  36. package/dist/dependency/resolver.js.map +1 -0
  37. package/dist/dependency/types.d.ts +85 -0
  38. package/dist/dependency/types.js +11 -0
  39. package/dist/dependency/types.js.map +1 -0
  40. package/dist/mcp/server.js +2 -0
  41. package/dist/mcp/server.js.map +1 -1
  42. package/dist/mcp/tools.js +8 -0
  43. package/dist/mcp/tools.js.map +1 -1
  44. package/dist/project-map/sinkFinder.js +41 -0
  45. package/dist/project-map/sinkFinder.js.map +1 -1
  46. package/dist/project-map/sinkRegistry.d.ts +8 -0
  47. package/dist/project-map/sinkRegistry.js +145 -0
  48. package/dist/project-map/sinkRegistry.js.map +1 -1
  49. package/dist/tools/scanDependencies.d.ts +11 -0
  50. package/dist/tools/scanDependencies.js +37 -0
  51. package/dist/tools/scanDependencies.js.map +1 -0
  52. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osvClient.js","sourceRoot":"","sources":["../../src/dependency/osvClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ParsedLockfile } from '../types';
2
+ /**
3
+ * Parse a package-lock.json (npm v2/v3, lockfileVersion >= 2).
4
+ *
5
+ * npm lockfiles already contain the fully-resolved transitive tree — every
6
+ * installed package (direct and transitive) is a `packages.*` entry with a
7
+ * resolved `version`. The resolver therefore does not need to hit the
8
+ * network; it just walks `packages`.
9
+ *
10
+ * v1 (lockfileVersion 1) uses a `dependencies` tree instead; we support it
11
+ * too, recursively.
12
+ */
13
+ export declare function parseNpmLockfile(lockfilePath: string): ParsedLockfile | null;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseNpmLockfile = parseNpmLockfile;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ /**
40
+ * Parse a package-lock.json (npm v2/v3, lockfileVersion >= 2).
41
+ *
42
+ * npm lockfiles already contain the fully-resolved transitive tree — every
43
+ * installed package (direct and transitive) is a `packages.*` entry with a
44
+ * resolved `version`. The resolver therefore does not need to hit the
45
+ * network; it just walks `packages`.
46
+ *
47
+ * v1 (lockfileVersion 1) uses a `dependencies` tree instead; we support it
48
+ * too, recursively.
49
+ */
50
+ function parseNpmLockfile(lockfilePath) {
51
+ let raw;
52
+ try {
53
+ raw = fs.readFileSync(lockfilePath, 'utf8');
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ let data;
59
+ try {
60
+ data = JSON.parse(raw);
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ const manifestPath = path.join(path.dirname(lockfilePath), 'package.json');
66
+ let projectLicense;
67
+ try {
68
+ const pkg = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
69
+ if (typeof pkg.license === 'string')
70
+ projectLicense = pkg.license;
71
+ else if (pkg.license && typeof pkg.license === 'object' && typeof pkg.license.type === 'string') {
72
+ projectLicense = pkg.license.type;
73
+ }
74
+ }
75
+ catch {
76
+ // package.json optional; ignore
77
+ }
78
+ const packages = [];
79
+ const seen = new Set();
80
+ const lockfileVersion = typeof data.lockfileVersion === 'number' ? data.lockfileVersion : 0;
81
+ if (lockfileVersion >= 2 && data.packages) {
82
+ // v2/v3: keyed by install path, `node_modules/<name>`.
83
+ for (const [key, entry] of Object.entries(data.packages)) {
84
+ // The root project itself is keyed by "" — skip it.
85
+ if (key === '')
86
+ continue;
87
+ // Extract the package name from the path. Scoped packages live at
88
+ // `node_modules/@scope/name`. Optional deps may have their own paths.
89
+ const nmIdx = key.indexOf('node_modules/');
90
+ if (nmIdx < 0)
91
+ continue;
92
+ const name = key.slice(nmIdx + 'node_modules/'.length);
93
+ // Nested node_modules paths (e.g. "node_modules/a/node_modules/b")
94
+ // describe a deduped alternative install; the canonical entry is the
95
+ // top-level one. We keep the first occurrence per name+version.
96
+ if (entry.link === true)
97
+ continue; // symlinked, not a real install
98
+ const version = entry.version;
99
+ if (!version)
100
+ continue;
101
+ const id = `${name}@${version}`;
102
+ if (seen.has(id))
103
+ continue;
104
+ seen.add(id);
105
+ packages.push({
106
+ ecosystem: 'npm',
107
+ name,
108
+ version,
109
+ license: typeof entry.license === 'string' ? entry.license : undefined,
110
+ manifestPath,
111
+ direct: entry.dev === undefined && entry.optional === undefined
112
+ ? isDirectNpm(key)
113
+ : false,
114
+ });
115
+ }
116
+ }
117
+ else if (data.dependencies) {
118
+ // v1: recursive `dependencies` tree.
119
+ walkNpmV1(data.dependencies, '', manifestPath, packages, seen);
120
+ }
121
+ return {
122
+ ecosystem: 'npm',
123
+ lockfilePath,
124
+ manifestPath,
125
+ packages,
126
+ projectLicense,
127
+ };
128
+ }
129
+ function walkNpmV1(deps, parentPath, manifestPath, out, seen) {
130
+ for (const [name, entry] of Object.entries(deps || {})) {
131
+ const version = entry && entry.version;
132
+ if (!version)
133
+ continue;
134
+ const id = `${name}@${version}`;
135
+ if (!seen.has(id)) {
136
+ seen.add(id);
137
+ out.push({
138
+ ecosystem: 'npm',
139
+ name,
140
+ version,
141
+ license: entry && typeof entry.license === 'string' ? entry.license : undefined,
142
+ manifestPath,
143
+ direct: parentPath === '',
144
+ });
145
+ }
146
+ if (entry && entry.dependencies) {
147
+ walkNpmV1(entry.dependencies, `${parentPath}${name}/`, manifestPath, out, seen);
148
+ }
149
+ }
150
+ }
151
+ /**
152
+ * Best-effort: did this `packages` key correspond to a top-level dependency?
153
+ * Top-level keys look exactly like `node_modules/<name>` (no nested node_modules).
154
+ */
155
+ function isDirectNpm(key) {
156
+ const nmIdx = key.indexOf('node_modules/');
157
+ const tail = key.slice(nmIdx + 'node_modules/'.length);
158
+ return !tail.includes('node_modules/');
159
+ }
160
+ //# sourceMappingURL=npm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.js","sourceRoot":"","sources":["../../../src/dependency/parsers/npm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ParsedLockfile } from '../types';
2
+ /**
3
+ * Parse a `Pipfile.lock` (Pipenv). It is a JSON document with two top-level
4
+ * sections, `default` and `develop`, each keyed by package name with `version`
5
+ * (without leading `==`) and optional `hashes`. Both sections contain the
6
+ * resolved transitive tree, so we walk them and return everything.
7
+ */
8
+ export declare function parsePipfileLock(lockfilePath: string): ParsedLockfile | null;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parsePipfileLock = parsePipfileLock;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const requirements_1 = require("./requirements");
40
+ /**
41
+ * Parse a `Pipfile.lock` (Pipenv). It is a JSON document with two top-level
42
+ * sections, `default` and `develop`, each keyed by package name with `version`
43
+ * (without leading `==`) and optional `hashes`. Both sections contain the
44
+ * resolved transitive tree, so we walk them and return everything.
45
+ */
46
+ function parsePipfileLock(lockfilePath) {
47
+ let raw;
48
+ try {
49
+ raw = fs.readFileSync(lockfilePath, 'utf8');
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ let data;
55
+ try {
56
+ data = JSON.parse(raw);
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ if (!data || typeof data !== 'object')
62
+ return null;
63
+ const manifestPath = path.join(path.dirname(lockfilePath), 'Pipfile');
64
+ let projectLicense;
65
+ try {
66
+ const pipfile = fs.readFileSync(manifestPath, 'utf8');
67
+ // Pipfile is TOML; we don't depend on a TOML parser. Best-effort regex
68
+ // for the top-level `license = "..."` line.
69
+ const m = pipfile.match(/^\s*license\s*=\s*"([^"]+)"/m);
70
+ if (m)
71
+ projectLicense = m[1];
72
+ }
73
+ catch {
74
+ // optional
75
+ }
76
+ const packages = [];
77
+ const seen = new Set();
78
+ for (const section of ['default', 'develop']) {
79
+ const deps = data[section];
80
+ if (!deps || typeof deps !== 'object')
81
+ continue;
82
+ for (const [rawName, entry] of Object.entries(deps)) {
83
+ const name = (0, requirements_1.normalizePipName)(rawName);
84
+ const version = entry && typeof entry.version === 'string'
85
+ ? entry.version.replace(/^==/, '')
86
+ : undefined;
87
+ if (!version)
88
+ continue;
89
+ const id = `${name}@${version}`;
90
+ if (seen.has(id))
91
+ continue;
92
+ seen.add(id);
93
+ packages.push({
94
+ ecosystem: 'pipenv',
95
+ name,
96
+ version,
97
+ manifestPath,
98
+ direct: section === 'default',
99
+ });
100
+ }
101
+ }
102
+ return {
103
+ ecosystem: 'pipenv',
104
+ lockfilePath,
105
+ manifestPath,
106
+ packages,
107
+ projectLicense,
108
+ };
109
+ }
110
+ //# sourceMappingURL=pipfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipfile.js","sourceRoot":"","sources":["../../../src/dependency/parsers/pipfile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,4CA2DC;AAtED,uCAAyB;AACzB,2CAA6B;AAE7B,iDAAkD;AAElD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,YAAoB;IACjD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACD,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,IAAS,CAAC;IACd,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IACtE,IAAI,cAAkC,CAAC;IACvC,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACtD,uEAAuE;QACvE,4CAA4C;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACxD,IAAI,CAAC;YAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACL,WAAW;IACf,CAAC;IAED,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,CAAU,EAAE,CAAC;QACpD,MAAM,IAAI,GAAoC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,IAAA,+BAAgB,EAAC,OAAO,CAAC,CAAC;YACvC,MAAM,OAAO,GAAuB,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAC1E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAClC,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,QAAQ;gBACnB,IAAI;gBACJ,OAAO;gBACP,YAAY;gBACZ,MAAM,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO;QACH,SAAS,EAAE,QAAQ;QACnB,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,cAAc;KACjB,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ParsedLockfile } from '../types';
2
+ /**
3
+ * Parse a pnpm-lock.yaml (v6+).
4
+ *
5
+ * pnpm lockfiles contain the resolved transitive tree under `packages`,
6
+ * keyed as `<name>@<version>` (with optional peer suffixes). We walk that
7
+ * section. Importers (`importers`) tell us which deps are direct; we use
8
+ * it to flag direct vs transitive, but every package ends up in the list
9
+ * regardless (transitive deps need scanning too).
10
+ */
11
+ export declare function parsePnpmLockfile(lockfilePath: string): ParsedLockfile | null;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parsePnpmLockfile = parsePnpmLockfile;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const yaml_1 = require("yaml");
40
+ /**
41
+ * Parse a pnpm-lock.yaml (v6+).
42
+ *
43
+ * pnpm lockfiles contain the resolved transitive tree under `packages`,
44
+ * keyed as `<name>@<version>` (with optional peer suffixes). We walk that
45
+ * section. Importers (`importers`) tell us which deps are direct; we use
46
+ * it to flag direct vs transitive, but every package ends up in the list
47
+ * regardless (transitive deps need scanning too).
48
+ */
49
+ function parsePnpmLockfile(lockfilePath) {
50
+ let raw;
51
+ try {
52
+ raw = fs.readFileSync(lockfilePath, 'utf8');
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ let data;
58
+ try {
59
+ data = (0, yaml_1.parse)(raw);
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ if (!data || typeof data !== 'object')
65
+ return null;
66
+ const manifestPath = path.join(path.dirname(lockfilePath), 'package.json');
67
+ let projectLicense;
68
+ try {
69
+ const pkg = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
70
+ if (typeof pkg.license === 'string')
71
+ projectLicense = pkg.license;
72
+ else if (pkg.license && typeof pkg.license === 'object' && typeof pkg.license.type === 'string') {
73
+ projectLicense = pkg.license.type;
74
+ }
75
+ }
76
+ catch {
77
+ // optional
78
+ }
79
+ // Collect direct dependency names from the lockfile's `importers` section
80
+ // (more reliable than reading package.json for pnpm, since pnpm prunes).
81
+ const directKeys = new Set();
82
+ const importers = data.importers || {};
83
+ for (const importer of Object.values(importers)) {
84
+ for (const cat of ['dependencies', 'devDependencies', 'optionalDependencies']) {
85
+ const deps = importer?.[cat];
86
+ if (deps && typeof deps === 'object') {
87
+ for (const name of Object.keys(deps))
88
+ directKeys.add(name);
89
+ }
90
+ }
91
+ }
92
+ const packages = [];
93
+ const seen = new Set();
94
+ const pkgSection = data.packages || {};
95
+ for (const key of Object.keys(pkgSection)) {
96
+ const entry = pkgSection[key];
97
+ // pnpm v6+: key like "lodash@4.17.19" or "/lodash/4.17.19"
98
+ // v9+: key like "lodash@4.17.19(peerdeps...)"
99
+ const { name, version } = parsePnpmPkgKey(key);
100
+ if (!name || !version)
101
+ continue;
102
+ const id = `${name}@${version}`;
103
+ if (seen.has(id))
104
+ continue;
105
+ seen.add(id);
106
+ packages.push({
107
+ ecosystem: 'pnpm',
108
+ name,
109
+ version,
110
+ manifestPath,
111
+ direct: directKeys.has(name),
112
+ });
113
+ }
114
+ return {
115
+ ecosystem: 'pnpm',
116
+ lockfilePath,
117
+ manifestPath,
118
+ packages,
119
+ projectLicense,
120
+ };
121
+ }
122
+ /**
123
+ * Parse a pnpm `packages.<key>` entry. Supported forms:
124
+ * "lodash@4.17.19"
125
+ * "/lodash/4.17.19" (older)
126
+ * "@babel/core@7.0.0"
127
+ * "lodash@4.17.19(react@18)" (peer-suffixed; we strip the parens)
128
+ */
129
+ function parsePnpmPkgKey(key) {
130
+ // Strip peer suffix in parens.
131
+ const parenIdx = key.indexOf('(');
132
+ let k = parenIdx >= 0 ? key.slice(0, parenIdx) : key;
133
+ k = k.trim();
134
+ if (k.startsWith('/'))
135
+ k = k.slice(1);
136
+ // For scoped: leading "@" then name then "@version"
137
+ if (k.startsWith('@')) {
138
+ const at = k.indexOf('@', 1);
139
+ if (at < 0)
140
+ return { name: '', version: '' };
141
+ return { name: k.slice(0, at), version: k.slice(at + 1) };
142
+ }
143
+ const at = k.indexOf('@');
144
+ if (at < 0)
145
+ return { name: '', version: '' };
146
+ return { name: k.slice(0, at), version: k.slice(at + 1) };
147
+ }
148
+ //# sourceMappingURL=pnpm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnpm.js","sourceRoot":"","sources":["../../../src/dependency/parsers/pnpm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,8CAoEC;AAlFD,uCAAyB;AACzB,2CAA6B;AAC7B,+BAA0C;AAG1C;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,YAAoB;IAClD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACD,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,IAAS,CAAC;IACd,IAAI,CAAC;QACD,IAAI,GAAG,IAAA,YAAS,EAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC;IAC3E,IAAI,cAAkC,CAAC;IACvC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;aAC7D,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9F,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,WAAW;IACf,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,SAAS,GAAwB,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IAC5D,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAwB,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,2DAA2D;QAC3D,8CAA8C;QAC9C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,SAAS;QAChC,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC;YACV,SAAS,EAAE,MAAM;YACjB,IAAI;YACJ,OAAO;YACP,YAAY;YACZ,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,SAAS,EAAE,MAAM;QACjB,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,cAAc;KACjB,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAAW;IAChC,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACb,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,oDAAoD;IACpD,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC7C,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7C,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { ParsedLockfile } from '../types';
2
+ /**
3
+ * Parse a `requirements.txt` file.
4
+ *
5
+ * Supported pins:
6
+ * name==1.2.3
7
+ * name>=1.2.3
8
+ * name~=1.2.3
9
+ * name>1.0,<2.0
10
+ * name (unpinned — marked unresolved)
11
+ *
12
+ * `#`-comments, blank lines, `-r other.txt`, `-e .`, and VCS/URL specs are
13
+ * skipped (URL specs are treated as unpinned/unresolved under the package
14
+ * name extracted from the URL when possible, otherwise skipped entirely).
15
+ *
16
+ * IMPORTANT: no network calls are made. When a pin is not an exact `==`,
17
+ * the entry is marked `unresolved` and surfaced to the user as such rather
18
+ * than queried against OSV (since the installed version is unknown). A
19
+ * Pipfile.lock alongside the requirements.txt will be preferred when
20
+ * present (handled by the resolver/dependencyChecker, not here).
21
+ */
22
+ export declare function parseRequirementsTxt(lockfilePath: string): ParsedLockfile | null;
23
+ /** Normalize a PyPI package name per PEP 503 (lowercase, runs of [-_.] -> "-"). */
24
+ export declare function normalizePipName(name: string): string;