@0xrama/bnpm 0.0.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 (204) hide show
  1. package/README.md +83 -0
  2. package/dist/package.json +45 -0
  3. package/dist/src/cache/archive.d.ts +15 -0
  4. package/dist/src/cache/archive.js +163 -0
  5. package/dist/src/cache/archive.js.map +1 -0
  6. package/dist/src/cache/commands.d.ts +15 -0
  7. package/dist/src/cache/commands.js +168 -0
  8. package/dist/src/cache/commands.js.map +1 -0
  9. package/dist/src/cache/quarantine.d.ts +18 -0
  10. package/dist/src/cache/quarantine.js +104 -0
  11. package/dist/src/cache/quarantine.js.map +1 -0
  12. package/dist/src/cache/store.d.ts +10 -0
  13. package/dist/src/cache/store.js +155 -0
  14. package/dist/src/cache/store.js.map +1 -0
  15. package/dist/src/cli.d.ts +2 -0
  16. package/dist/src/cli.js +4 -0
  17. package/dist/src/cli.js.map +1 -0
  18. package/dist/src/commands/diff.d.ts +34 -0
  19. package/dist/src/commands/diff.js +223 -0
  20. package/dist/src/commands/diff.js.map +1 -0
  21. package/dist/src/commands/doctor.d.ts +14 -0
  22. package/dist/src/commands/doctor.js +42 -0
  23. package/dist/src/commands/doctor.js.map +1 -0
  24. package/dist/src/commands/edit.d.ts +12 -0
  25. package/dist/src/commands/edit.js +100 -0
  26. package/dist/src/commands/edit.js.map +1 -0
  27. package/dist/src/commands/fund.d.ts +10 -0
  28. package/dist/src/commands/fund.js +32 -0
  29. package/dist/src/commands/fund.js.map +1 -0
  30. package/dist/src/commands/graph.d.ts +29 -0
  31. package/dist/src/commands/graph.js +90 -0
  32. package/dist/src/commands/graph.js.map +1 -0
  33. package/dist/src/commands/index.d.ts +20 -0
  34. package/dist/src/commands/index.js +1753 -0
  35. package/dist/src/commands/index.js.map +1 -0
  36. package/dist/src/commands/navigation.d.ts +2 -0
  37. package/dist/src/commands/navigation.js +47 -0
  38. package/dist/src/commands/navigation.js.map +1 -0
  39. package/dist/src/commands/outdated.d.ts +17 -0
  40. package/dist/src/commands/outdated.js +69 -0
  41. package/dist/src/commands/outdated.js.map +1 -0
  42. package/dist/src/commands/process.d.ts +11 -0
  43. package/dist/src/commands/process.js +189 -0
  44. package/dist/src/commands/process.js.map +1 -0
  45. package/dist/src/commands/prompts.d.ts +6 -0
  46. package/dist/src/commands/prompts.js +86 -0
  47. package/dist/src/commands/prompts.js.map +1 -0
  48. package/dist/src/commands/query.d.ts +48 -0
  49. package/dist/src/commands/query.js +639 -0
  50. package/dist/src/commands/query.js.map +1 -0
  51. package/dist/src/commands/rebuild.d.ts +16 -0
  52. package/dist/src/commands/rebuild.js +44 -0
  53. package/dist/src/commands/rebuild.js.map +1 -0
  54. package/dist/src/commands/sbom.d.ts +6 -0
  55. package/dist/src/commands/sbom.js +31 -0
  56. package/dist/src/commands/sbom.js.map +1 -0
  57. package/dist/src/commands/script-approvals.d.ts +22 -0
  58. package/dist/src/commands/script-approvals.js +128 -0
  59. package/dist/src/commands/script-approvals.js.map +1 -0
  60. package/dist/src/commands/shrinkwrap.d.ts +6 -0
  61. package/dist/src/commands/shrinkwrap.js +97 -0
  62. package/dist/src/commands/shrinkwrap.js.map +1 -0
  63. package/dist/src/commands/stage.d.ts +20 -0
  64. package/dist/src/commands/stage.js +40 -0
  65. package/dist/src/commands/stage.js.map +1 -0
  66. package/dist/src/commands/token.d.ts +2 -0
  67. package/dist/src/commands/token.js +47 -0
  68. package/dist/src/commands/token.js.map +1 -0
  69. package/dist/src/commands/trust.d.ts +5 -0
  70. package/dist/src/commands/trust.js +41 -0
  71. package/dist/src/commands/trust.js.map +1 -0
  72. package/dist/src/config/commands.d.ts +5 -0
  73. package/dist/src/config/commands.js +91 -0
  74. package/dist/src/config/commands.js.map +1 -0
  75. package/dist/src/config/configuration.d.ts +40 -0
  76. package/dist/src/config/configuration.js +157 -0
  77. package/dist/src/config/configuration.js.map +1 -0
  78. package/dist/src/config/interactive.d.ts +16 -0
  79. package/dist/src/config/interactive.js +19 -0
  80. package/dist/src/config/interactive.js.map +1 -0
  81. package/dist/src/config/paths.d.ts +22 -0
  82. package/dist/src/config/paths.js +46 -0
  83. package/dist/src/config/paths.js.map +1 -0
  84. package/dist/src/config/types.d.ts +15 -0
  85. package/dist/src/config/types.js +6 -0
  86. package/dist/src/config/types.js.map +1 -0
  87. package/dist/src/core/cli-parser.d.ts +102 -0
  88. package/dist/src/core/cli-parser.js +1148 -0
  89. package/dist/src/core/cli-parser.js.map +1 -0
  90. package/dist/src/core/cli-runner.d.ts +15 -0
  91. package/dist/src/core/cli-runner.js +261 -0
  92. package/dist/src/core/cli-runner.js.map +1 -0
  93. package/dist/src/core/exit-codes.d.ts +13 -0
  94. package/dist/src/core/exit-codes.js +13 -0
  95. package/dist/src/core/exit-codes.js.map +1 -0
  96. package/dist/src/core/output.d.ts +23 -0
  97. package/dist/src/core/output.js +123 -0
  98. package/dist/src/core/output.js.map +1 -0
  99. package/dist/src/installer/install.d.ts +73 -0
  100. package/dist/src/installer/install.js +596 -0
  101. package/dist/src/installer/install.js.map +1 -0
  102. package/dist/src/installer/mutations.d.ts +5 -0
  103. package/dist/src/installer/mutations.js +160 -0
  104. package/dist/src/installer/mutations.js.map +1 -0
  105. package/dist/src/linker/project-linker.d.ts +9 -0
  106. package/dist/src/linker/project-linker.js +223 -0
  107. package/dist/src/linker/project-linker.js.map +1 -0
  108. package/dist/src/lockfile/index.d.ts +27 -0
  109. package/dist/src/lockfile/index.js +221 -0
  110. package/dist/src/lockfile/index.js.map +1 -0
  111. package/dist/src/package/authoring.d.ts +31 -0
  112. package/dist/src/package/authoring.js +125 -0
  113. package/dist/src/package/authoring.js.map +1 -0
  114. package/dist/src/package/pack.d.ts +22 -0
  115. package/dist/src/package/pack.js +238 -0
  116. package/dist/src/package/pack.js.map +1 -0
  117. package/dist/src/package/provenance.d.ts +28 -0
  118. package/dist/src/package/provenance.js +162 -0
  119. package/dist/src/package/provenance.js.map +1 -0
  120. package/dist/src/package/publish.d.ts +28 -0
  121. package/dist/src/package/publish.js +189 -0
  122. package/dist/src/package/publish.js.map +1 -0
  123. package/dist/src/package/trusted-publishing.d.ts +7 -0
  124. package/dist/src/package/trusted-publishing.js +84 -0
  125. package/dist/src/package/trusted-publishing.js.map +1 -0
  126. package/dist/src/project/dependency-error.d.ts +3 -0
  127. package/dist/src/project/dependency-error.js +7 -0
  128. package/dist/src/project/dependency-error.js.map +1 -0
  129. package/dist/src/project/dev-engines.d.ts +10 -0
  130. package/dist/src/project/dev-engines.js +70 -0
  131. package/dist/src/project/dev-engines.js.map +1 -0
  132. package/dist/src/project/discovery.d.ts +6 -0
  133. package/dist/src/project/discovery.js +51 -0
  134. package/dist/src/project/discovery.js.map +1 -0
  135. package/dist/src/project/global.d.ts +3 -0
  136. package/dist/src/project/global.js +43 -0
  137. package/dist/src/project/global.js.map +1 -0
  138. package/dist/src/project/invalidation.d.ts +3 -0
  139. package/dist/src/project/invalidation.js +21 -0
  140. package/dist/src/project/invalidation.js.map +1 -0
  141. package/dist/src/project/link.d.ts +21 -0
  142. package/dist/src/project/link.js +152 -0
  143. package/dist/src/project/link.js.map +1 -0
  144. package/dist/src/project/manifest.d.ts +27 -0
  145. package/dist/src/project/manifest.js +378 -0
  146. package/dist/src/project/manifest.js.map +1 -0
  147. package/dist/src/project/pkg.d.ts +5 -0
  148. package/dist/src/project/pkg.js +94 -0
  149. package/dist/src/project/pkg.js.map +1 -0
  150. package/dist/src/project/recovery.d.ts +2 -0
  151. package/dist/src/project/recovery.js +82 -0
  152. package/dist/src/project/recovery.js.map +1 -0
  153. package/dist/src/project/workspaces.d.ts +4 -0
  154. package/dist/src/project/workspaces.js +59 -0
  155. package/dist/src/project/workspaces.js.map +1 -0
  156. package/dist/src/registry/account.d.ts +79 -0
  157. package/dist/src/registry/account.js +305 -0
  158. package/dist/src/registry/account.js.map +1 -0
  159. package/dist/src/registry/audit.d.ts +18 -0
  160. package/dist/src/registry/audit.js +74 -0
  161. package/dist/src/registry/audit.js.map +1 -0
  162. package/dist/src/registry/client.d.ts +19 -0
  163. package/dist/src/registry/client.js +102 -0
  164. package/dist/src/registry/client.js.map +1 -0
  165. package/dist/src/registry/configuration.d.ts +36 -0
  166. package/dist/src/registry/configuration.js +133 -0
  167. package/dist/src/registry/configuration.js.map +1 -0
  168. package/dist/src/registry/operations.d.ts +163 -0
  169. package/dist/src/registry/operations.js +502 -0
  170. package/dist/src/registry/operations.js.map +1 -0
  171. package/dist/src/registry/types.d.ts +30 -0
  172. package/dist/src/registry/types.js +2 -0
  173. package/dist/src/registry/types.js.map +1 -0
  174. package/dist/src/resolver/registry-resolver.d.ts +40 -0
  175. package/dist/src/resolver/registry-resolver.js +354 -0
  176. package/dist/src/resolver/registry-resolver.js.map +1 -0
  177. package/dist/src/resolver/source-provider.d.ts +17 -0
  178. package/dist/src/resolver/source-provider.js +336 -0
  179. package/dist/src/resolver/source-provider.js.map +1 -0
  180. package/dist/src/resolver/types.d.ts +28 -0
  181. package/dist/src/resolver/types.js +2 -0
  182. package/dist/src/resolver/types.js.map +1 -0
  183. package/dist/src/security/analyzer.d.ts +38 -0
  184. package/dist/src/security/analyzer.js +241 -0
  185. package/dist/src/security/analyzer.js.map +1 -0
  186. package/dist/src/security/audit.d.ts +19 -0
  187. package/dist/src/security/audit.js +61 -0
  188. package/dist/src/security/audit.js.map +1 -0
  189. package/dist/src/security/findings.d.ts +23 -0
  190. package/dist/src/security/findings.js +2 -0
  191. package/dist/src/security/findings.js.map +1 -0
  192. package/dist/src/security/integrity.d.ts +14 -0
  193. package/dist/src/security/integrity.js +40 -0
  194. package/dist/src/security/integrity.js.map +1 -0
  195. package/dist/src/security/policy.d.ts +16 -0
  196. package/dist/src/security/policy.js +24 -0
  197. package/dist/src/security/policy.js.map +1 -0
  198. package/dist/src/security/recent-release.d.ts +19 -0
  199. package/dist/src/security/recent-release.js +27 -0
  200. package/dist/src/security/recent-release.js.map +1 -0
  201. package/dist/src/security/script-runner.d.ts +13 -0
  202. package/dist/src/security/script-runner.js +73 -0
  203. package/dist/src/security/script-runner.js.map +1 -0
  204. package/package.json +45 -0
@@ -0,0 +1,100 @@
1
+ import { spawn } from "node:child_process";
2
+ import { lstat, readFile, realpath } from "node:fs/promises";
3
+ import { join, resolve, sep } from "node:path";
4
+ import { createBnpmPaths } from "../config/paths.js";
5
+ import { discoverProject } from "../project/discovery.js";
6
+ import { parseManifest } from "../project/manifest.js";
7
+ import { ProcessCommandError } from "./process.js";
8
+ import { invalidateInstalledLayout } from "../project/invalidation.js";
9
+ const packageName = /^(?:@[^/@\s]+\/)?[A-Za-z0-9][A-Za-z0-9._-]*$/;
10
+ export function parseEditor(value) {
11
+ if (!value.trim() || value.includes("\0") || /[\r\n]/.test(value))
12
+ throw new ProcessCommandError("Editor command is empty or invalid");
13
+ const result = [];
14
+ let current = "";
15
+ let quote;
16
+ let escaped = false;
17
+ for (const character of value.trim()) {
18
+ if (escaped) {
19
+ current += character;
20
+ escaped = false;
21
+ continue;
22
+ }
23
+ if (character === "\\" && quote !== "'") {
24
+ escaped = true;
25
+ continue;
26
+ }
27
+ if (quote) {
28
+ if (character === quote)
29
+ quote = undefined;
30
+ else
31
+ current += character;
32
+ continue;
33
+ }
34
+ if (character === "'" || character === '"') {
35
+ quote = character;
36
+ continue;
37
+ }
38
+ if (/\s/.test(character)) {
39
+ if (current) {
40
+ result.push(current);
41
+ current = "";
42
+ }
43
+ }
44
+ else
45
+ current += character;
46
+ }
47
+ if (escaped || quote)
48
+ throw new ProcessCommandError("Editor command has incomplete quoting");
49
+ if (current)
50
+ result.push(current);
51
+ if (!result[0])
52
+ throw new ProcessCommandError("Editor command is empty or invalid");
53
+ return result;
54
+ }
55
+ export async function editInstalledPackage(options) {
56
+ if (!packageName.test(options.name))
57
+ throw new ProcessCommandError(`Invalid package name: ${options.name}`);
58
+ const discovered = await discoverProject(options.cwd);
59
+ if (!discovered)
60
+ throw new ProcessCommandError("No project package.json was found");
61
+ const logical = join(discovered.importerRoot, "node_modules", ...options.name.split("/"));
62
+ let target;
63
+ try {
64
+ const info = await lstat(logical);
65
+ if (!info.isDirectory() && !info.isSymbolicLink())
66
+ throw new ProcessCommandError(`Installed package path is not a directory: ${options.name}`);
67
+ target = await realpath(logical);
68
+ }
69
+ catch (error) {
70
+ if (error.code === "ENOENT")
71
+ throw new ProcessCommandError(`Installed package not found: ${options.name}`);
72
+ throw error;
73
+ }
74
+ const paths = options.paths ?? createBnpmPaths({ cwd: discovered.projectRoot });
75
+ const store = await realpath(paths.store).catch(() => resolve(paths.store));
76
+ if (target === store || target.startsWith(`${store}${sep}`))
77
+ throw new ProcessCommandError("Refusing to edit immutable global store content directly");
78
+ const manifestPath = join(target, "package.json");
79
+ parseManifest(await readFile(manifestPath, "utf8"), manifestPath);
80
+ const editor = options.editor ?? parseEditor(process.env.VISUAL ?? process.env.EDITOR ?? (process.platform === "win32" ? "notepad" : "vi"));
81
+ await invalidateInstalledLayout(discovered.projectRoot, `edit:${options.name}`);
82
+ const child = spawn(editor[0], [...editor.slice(1), target], { cwd: target, stdio: "inherit", windowsHide: false });
83
+ const abort = () => { child.kill("SIGTERM"); };
84
+ options.signal.addEventListener("abort", abort, { once: true });
85
+ try {
86
+ const code = await new Promise((resolvePromise, reject) => {
87
+ child.once("error", reject);
88
+ child.once("close", (exitCode, signal) => resolvePromise(exitCode ?? (signal === "SIGINT" ? 130 : 1)));
89
+ });
90
+ if (options.signal.aborted)
91
+ throw options.signal.reason;
92
+ if (code !== 0)
93
+ throw new ProcessCommandError(`Editor exited with ${code}`);
94
+ return { package: options.name, path: target };
95
+ }
96
+ finally {
97
+ options.signal.removeEventListener("abort", abort);
98
+ }
99
+ }
100
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/commands/edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type BnpmPaths } from "../config/paths.js";
2
+ export interface FundingEntry {
3
+ readonly package: string;
4
+ readonly type?: string;
5
+ readonly url: string;
6
+ }
7
+ export declare function listFunding(options: {
8
+ readonly cwd: string;
9
+ readonly paths?: BnpmPaths;
10
+ }): Promise<readonly FundingEntry[]>;
@@ -0,0 +1,32 @@
1
+ import { createBnpmPaths } from "../config/paths.js";
2
+ import { readLockfileGraph } from "../lockfile/index.js";
3
+ import { discoverProject } from "../project/discovery.js";
4
+ function funding(value) {
5
+ if (typeof value === "string")
6
+ return [{ url: value }];
7
+ if (Array.isArray(value))
8
+ return value.flatMap(funding);
9
+ if (typeof value !== "object" || value === null)
10
+ return [];
11
+ const entry = value;
12
+ if (typeof entry.url !== "string")
13
+ return [];
14
+ let url;
15
+ try {
16
+ url = new URL(entry.url);
17
+ }
18
+ catch {
19
+ return [];
20
+ }
21
+ if (url.protocol !== "https:")
22
+ return [];
23
+ return [{ ...(typeof entry.type === "string" && entry.type.length > 0 ? { type: entry.type } : {}), url: url.href }];
24
+ }
25
+ export async function listFunding(options) {
26
+ const discovered = await discoverProject(options.cwd);
27
+ const root = discovered?.projectRoot ?? options.cwd;
28
+ const paths = options.paths ?? createBnpmPaths({ cwd: root });
29
+ const locked = await readLockfileGraph(paths.lockfile, paths.store);
30
+ return [...locked.graph.packages.values()].sort((left, right) => left.id.localeCompare(right.id)).flatMap((pkg) => funding(pkg.manifest.funding).map((entry) => ({ package: pkg.id, ...entry })));
31
+ }
32
+ //# sourceMappingURL=fund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fund.js","sourceRoot":"","sources":["../../../src/commands/fund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQ1D,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,KAA0C,CAAC;IACzD,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC7C,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACtD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACvH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA6D;IAC7F,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,UAAU,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpM,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { ResolutionGraph } from "../resolver/types.js";
2
+ export interface DependencyTreeNode {
3
+ readonly alias: string;
4
+ readonly id: string;
5
+ readonly name: string;
6
+ readonly version: string;
7
+ readonly circular?: boolean;
8
+ readonly dependencies: readonly DependencyTreeNode[];
9
+ }
10
+ export interface InstalledGraphReport {
11
+ readonly roots: readonly DependencyTreeNode[];
12
+ readonly paths: readonly (readonly string[])[];
13
+ readonly human: string;
14
+ }
15
+ export declare function reportInstalledGraph(graph: ResolutionGraph, roots: ReadonlyMap<string, string>, options?: {
16
+ readonly names?: readonly string[];
17
+ readonly why?: string;
18
+ }): InstalledGraphReport;
19
+ export declare function inspectInstalledGraph(cwd: string, options?: {
20
+ readonly names?: readonly string[];
21
+ readonly why?: string;
22
+ }): Promise<InstalledGraphReport>;
23
+ export interface DuplicatePackage {
24
+ readonly name: string;
25
+ readonly versions: readonly string[];
26
+ readonly ids: readonly string[];
27
+ }
28
+ export declare function duplicatePackages(graph: ResolutionGraph): readonly DuplicatePackage[];
29
+ export declare function findInstalledDuplicates(cwd: string): Promise<readonly DuplicatePackage[]>;
@@ -0,0 +1,90 @@
1
+ import { relative, sep } from "node:path";
2
+ import { createBnpmPaths } from "../config/paths.js";
3
+ import { readLockfileGraph } from "../lockfile/index.js";
4
+ import { discoverProject } from "../project/discovery.js";
5
+ function treeNode(graph, alias, id, ancestors, depth) {
6
+ const pkg = graph.packages.get(id);
7
+ if (!pkg)
8
+ throw new Error(`Installed graph references missing package ${id}`);
9
+ if (ancestors.has(id) || depth >= 100)
10
+ return { alias, id, name: pkg.name, version: pkg.version, circular: true, dependencies: [] };
11
+ const next = new Set(ancestors);
12
+ next.add(id);
13
+ const dependencies = [...pkg.dependencies]
14
+ .sort(([left], [right]) => left.localeCompare(right))
15
+ .map(([childAlias, childId]) => treeNode(graph, childAlias, childId, next, depth + 1));
16
+ return { alias, id, name: pkg.name, version: pkg.version, dependencies };
17
+ }
18
+ function treeLines(nodes, indent = "") {
19
+ const lines = [];
20
+ for (const node of nodes) {
21
+ const identity = node.alias === node.name ? `${node.name}@${node.version}` : `${node.alias} -> ${node.name}@${node.version}`;
22
+ lines.push(`${indent}${identity}${node.circular ? " (cycle)" : ""}`);
23
+ lines.push(...treeLines(node.dependencies, `${indent} `));
24
+ }
25
+ return lines;
26
+ }
27
+ export function reportInstalledGraph(graph, roots, options = {}) {
28
+ const selected = new Set(options.names ?? []);
29
+ const rootNodes = [...roots]
30
+ .filter(([alias, id]) => {
31
+ if (selected.size === 0)
32
+ return true;
33
+ const pkg = graph.packages.get(id);
34
+ return selected.has(alias) || (pkg !== undefined && selected.has(pkg.name));
35
+ })
36
+ .sort(([left], [right]) => left.localeCompare(right))
37
+ .map(([alias, id]) => treeNode(graph, alias, id, new Set(), 0));
38
+ const paths = [];
39
+ if (options.why) {
40
+ const target = options.why;
41
+ const visit = (alias, id, path, ancestors) => {
42
+ if (paths.length >= 100 || ancestors.has(id))
43
+ return;
44
+ const pkg = graph.packages.get(id);
45
+ if (!pkg)
46
+ return;
47
+ const label = alias === pkg.name ? `${pkg.name}@${pkg.version}` : `${alias} -> ${pkg.name}@${pkg.version}`;
48
+ const nextPath = [...path, label];
49
+ if (alias === target || pkg.name === target)
50
+ paths.push(nextPath);
51
+ const next = new Set(ancestors);
52
+ next.add(id);
53
+ for (const [childAlias, childId] of [...pkg.dependencies].sort(([left], [right]) => left.localeCompare(right)))
54
+ visit(childAlias, childId, nextPath, next);
55
+ };
56
+ for (const [alias, id] of [...roots].sort(([left], [right]) => left.localeCompare(right)))
57
+ visit(alias, id, [], new Set());
58
+ }
59
+ const human = options.why
60
+ ? paths.length === 0 ? `${options.why} is not installed` : paths.map((path) => path.join(" > ")).join("\n")
61
+ : rootNodes.length === 0 ? "No matching installed dependencies" : treeLines(rootNodes).join("\n");
62
+ return { roots: rootNodes, paths, human };
63
+ }
64
+ export async function inspectInstalledGraph(cwd, options = {}) {
65
+ const discovered = await discoverProject(cwd);
66
+ const projectRoot = discovered?.projectRoot ?? cwd;
67
+ const importerRoot = discovered?.importerRoot ?? cwd;
68
+ const paths = createBnpmPaths({ cwd: projectRoot });
69
+ const locked = await readLockfileGraph(paths.lockfile, paths.store);
70
+ const importer = relative(projectRoot, importerRoot).split(sep).join("/") || ".";
71
+ const roots = locked.graph.importers?.get(importer) ?? (importer === "." ? locked.graph.roots : new Map());
72
+ return reportInstalledGraph(locked.graph, roots, options);
73
+ }
74
+ export function duplicatePackages(graph) {
75
+ const groups = new Map();
76
+ for (const pkg of graph.packages.values()) {
77
+ const group = groups.get(pkg.name) ?? { versions: new Set(), ids: [] };
78
+ group.versions.add(pkg.version);
79
+ group.ids.push(pkg.id);
80
+ groups.set(pkg.name, group);
81
+ }
82
+ return [...groups].filter(([, group]) => group.ids.length > 1).sort(([left], [right]) => left.localeCompare(right)).map(([name, group]) => ({ name, versions: [...group.versions].sort(), ids: group.ids.sort() }));
83
+ }
84
+ export async function findInstalledDuplicates(cwd) {
85
+ const discovered = await discoverProject(cwd);
86
+ const root = discovered?.projectRoot ?? cwd;
87
+ const paths = createBnpmPaths({ cwd: root });
88
+ return duplicatePackages((await readLockfileGraph(paths.lockfile, paths.store)).graph);
89
+ }
90
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type ExitCode as ExitCodeValue } from "../core/exit-codes.js";
2
+ import type { CommandOptions } from "../core/cli-parser.js";
3
+ import type { Output } from "../core/output.js";
4
+ import type { GlobalOptions } from "../core/cli-parser.js";
5
+ export declare const commandNames: readonly ["install", "install-test", "install-ci-test", "add", "remove", "update", "outdated", "list", "why", "query", "diff", "find-dupes", "bin", "prefix", "root", "run", "restart", "audit", "exec", "explore", "edit", "pack", "publish", "stage", "unpublish", "access", "owner", "token", "star", "unstar", "stars", "org", "team", "profile", "trust", "login", "logout", "whoami", "view", "search", "repo", "docs", "bugs", "dist-tag", "deprecate", "config", "init", "version", "shrinkwrap", "prune", "dedupe", "rebuild", "install-scripts", "approve-scripts", "deny-scripts", "fund", "cache", "ping", "doctor", "completion", "pkg", "sbom", "link", "unlink"];
6
+ export type CommandName = (typeof commandNames)[number];
7
+ export interface CommandContext {
8
+ args: readonly string[];
9
+ cwd: string;
10
+ output: Output;
11
+ invokedAsBnpmx: boolean;
12
+ options?: CommandOptions;
13
+ signal: AbortSignal;
14
+ }
15
+ export declare function initializerPackage(initializer: string): {
16
+ readonly specifier: string;
17
+ readonly binary: string;
18
+ };
19
+ export declare function runCommand(name: CommandName, context: CommandContext): Promise<ExitCodeValue>;
20
+ export declare function runBnpmxCommand(context: Omit<CommandContext, "options">, global: GlobalOptions, specification: string, targetArgs: readonly string[]): Promise<ExitCodeValue>;