@visulima/vis 1.0.0-alpha.37 → 1.0.0-alpha.39

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 (176) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE.md +1 -503
  3. package/dist/bin.js +1 -1
  4. package/dist/binx.js +1 -1
  5. package/dist/config/index.d.ts +7 -0
  6. package/dist/packem_chunks/DEFAULT_CLEAN_KEEP.js +1 -0
  7. package/dist/packem_chunks/bin.js +302 -515
  8. package/dist/packem_chunks/bloom-sync.js +1 -1
  9. package/dist/packem_chunks/catalog-detector.js +1 -0
  10. package/dist/packem_chunks/detect.js +3 -0
  11. package/dist/packem_chunks/detect2.js +8 -0
  12. package/dist/packem_chunks/discord.js +4 -0
  13. package/dist/packem_chunks/dynamic-import.js +1 -0
  14. package/dist/packem_chunks/extra-files.js +3 -0
  15. package/dist/packem_chunks/fix.js +1 -1
  16. package/dist/packem_chunks/git.js +3 -0
  17. package/dist/packem_chunks/handler10.js +1 -1
  18. package/dist/packem_chunks/handler12.js +1 -1
  19. package/dist/packem_chunks/handler13.js +1 -1
  20. package/dist/packem_chunks/handler14.js +1 -1
  21. package/dist/packem_chunks/handler15.js +1 -1
  22. package/dist/packem_chunks/handler16.js +1 -1
  23. package/dist/packem_chunks/handler17.js +1 -1
  24. package/dist/packem_chunks/handler18.js +1 -1
  25. package/dist/packem_chunks/handler19.js +1 -1
  26. package/dist/packem_chunks/handler21.js +1 -1
  27. package/dist/packem_chunks/handler27.js +1 -1
  28. package/dist/packem_chunks/handler28.js +1 -1
  29. package/dist/packem_chunks/handler29.js +1 -1
  30. package/dist/packem_chunks/handler3.js +4 -4
  31. package/dist/packem_chunks/handler30.js +2 -7
  32. package/dist/packem_chunks/handler31.js +2 -33
  33. package/dist/packem_chunks/handler32.js +2 -3
  34. package/dist/packem_chunks/handler33.js +3 -8
  35. package/dist/packem_chunks/handler34.js +6 -4
  36. package/dist/packem_chunks/handler35.js +1 -1
  37. package/dist/packem_chunks/handler36.js +42 -5
  38. package/dist/packem_chunks/handler37.js +8 -11
  39. package/dist/packem_chunks/handler38.js +9 -3
  40. package/dist/packem_chunks/handler39.js +74 -21
  41. package/dist/packem_chunks/handler4.js +1 -1
  42. package/dist/packem_chunks/handler40.js +5 -61
  43. package/dist/packem_chunks/handler41.js +4 -3
  44. package/dist/packem_chunks/handler42.js +3 -6
  45. package/dist/packem_chunks/handler43.js +2 -24
  46. package/dist/packem_chunks/handler44.js +1 -25
  47. package/dist/packem_chunks/handler45.js +1 -153
  48. package/dist/packem_chunks/handler46.js +1 -10
  49. package/dist/packem_chunks/handler47.js +3 -24
  50. package/dist/packem_chunks/handler48.js +1 -322
  51. package/dist/packem_chunks/handler49.js +7 -708
  52. package/dist/packem_chunks/handler5.js +6 -6
  53. package/dist/packem_chunks/handler50.js +33 -48
  54. package/dist/packem_chunks/handler51.js +3 -27
  55. package/dist/packem_chunks/handler52.js +8 -3
  56. package/dist/packem_chunks/handler53.js +4 -200
  57. package/dist/packem_chunks/handler54.js +1 -38
  58. package/dist/packem_chunks/handler55.js +12 -0
  59. package/dist/packem_chunks/handler56.js +7 -0
  60. package/dist/packem_chunks/handler57.js +5 -0
  61. package/dist/packem_chunks/handler58.js +11 -0
  62. package/dist/packem_chunks/handler59.js +3 -0
  63. package/dist/packem_chunks/handler60.js +22 -0
  64. package/dist/packem_chunks/handler61.js +61 -0
  65. package/dist/packem_chunks/handler62.js +3 -0
  66. package/dist/packem_chunks/handler63.js +6 -0
  67. package/dist/packem_chunks/handler64.js +708 -0
  68. package/dist/packem_chunks/handler65.js +24 -0
  69. package/dist/packem_chunks/handler66.js +25 -0
  70. package/dist/packem_chunks/handler67.js +153 -0
  71. package/dist/packem_chunks/handler68.js +10 -0
  72. package/dist/packem_chunks/handler69.js +24 -0
  73. package/dist/packem_chunks/handler7.js +1 -1
  74. package/dist/packem_chunks/handler70.js +322 -0
  75. package/dist/packem_chunks/handler71.js +48 -0
  76. package/dist/packem_chunks/handler72.js +27 -0
  77. package/dist/packem_chunks/handler73.js +3 -0
  78. package/dist/packem_chunks/handler74.js +190 -0
  79. package/dist/packem_chunks/handler75.js +38 -0
  80. package/dist/packem_chunks/handler8.js +1 -1
  81. package/dist/packem_chunks/handler9.js +1 -1
  82. package/dist/packem_chunks/heal-accept.js +1 -1
  83. package/dist/packem_chunks/heal.js +1 -1
  84. package/dist/packem_chunks/help-command.js +1 -1
  85. package/dist/packem_chunks/index.js +1 -7
  86. package/dist/packem_chunks/index2.js +7 -0
  87. package/dist/packem_chunks/interface.js +2 -0
  88. package/dist/packem_chunks/keys-refresh.js +1 -1
  89. package/dist/packem_chunks/list.js +1 -1
  90. package/dist/packem_chunks/loader.js +1 -1
  91. package/dist/packem_chunks/orchestrator.js +39 -0
  92. package/dist/packem_chunks/pre-mode.js +2 -0
  93. package/dist/packem_chunks/print-config.js +2 -0
  94. package/dist/packem_chunks/prompts.js +7 -0
  95. package/dist/packem_chunks/publish-guards.js +1 -0
  96. package/dist/packem_chunks/registry.js +48 -0
  97. package/dist/packem_chunks/resolveFormatter.js +9 -0
  98. package/dist/packem_chunks/security.js +1 -0
  99. package/dist/packem_chunks/shell-runner.js +1 -0
  100. package/dist/packem_chunks/slack.js +2 -0
  101. package/dist/packem_chunks/snapshot.js +2 -0
  102. package/dist/packem_chunks/stage-publisher.js +1 -0
  103. package/dist/packem_chunks/staged-registry.js +2 -0
  104. package/dist/packem_chunks/state.js +3 -0
  105. package/dist/packem_chunks/success-walk.js +8 -0
  106. package/dist/packem_chunks/sync.js +1 -1
  107. package/dist/packem_chunks/sync2.js +1 -1
  108. package/dist/packem_chunks/tripwire.js +1 -1
  109. package/dist/packem_chunks/verify-lockfile.js +2 -2
  110. package/dist/packem_chunks/version-resolver.js +2 -0
  111. package/dist/packem_chunks/webhook.js +1 -0
  112. package/dist/packem_chunks/workflow-templates.js +167 -0
  113. package/dist/packem_chunks/workspace.js +2 -0
  114. package/dist/packem_shared/AfterAllProjectsVersioned-CAKI2nWf.js +1 -0
  115. package/dist/packem_shared/ReleaseClient-YHzBIxYS.js +1 -0
  116. package/dist/packem_shared/VisReleaseError-DMGRBTNO.js +1 -0
  117. package/dist/packem_shared/{ai-analysis-DT3bU-_M.js → ai-analysis-K-DKU3ZA.js} +1 -1
  118. package/dist/packem_shared/{ai-fix-BkNqd5nP.js → ai-fix-BPrYoCk8.js} +1 -1
  119. package/dist/packem_shared/api.d-BPftyU9r.d.ts +27 -0
  120. package/dist/packem_shared/createAdapter-bU4DIP3F.js +1 -0
  121. package/dist/packem_shared/createVersionActions-BK43SNDH.js +1 -0
  122. package/dist/packem_shared/{cyclonedx-86-DbHtf.js → cyclonedx-kYozDyxp.js} +3 -3
  123. package/dist/packem_shared/defineFormatter-D5dCp6Kv.js +1 -0
  124. package/dist/packem_shared/dependency-scan-anTuZB1t.js +1 -0
  125. package/dist/packem_shared/{docker-tNrDU3oK.js → docker-BMLrNtWm.js} +1 -1
  126. package/dist/packem_shared/{failure-log-Dwqt6_Ga.js → failure-log-CEWP3bP0.js} +1 -1
  127. package/dist/packem_shared/{index-dQ37x8_P.js → index-B4RYu87L.js} +1 -1
  128. package/dist/packem_shared/index-BJbpNthk.js +1 -0
  129. package/dist/packem_shared/index-CgcF6_wo.js +1 -0
  130. package/dist/packem_shared/interface.d-B7VK2rcH.d.ts +148 -0
  131. package/dist/packem_shared/interface.d-Cezzifoh.d.ts +106 -0
  132. package/dist/packem_shared/{missing-package-json-41VUWFBY.js → missing-package-json-BfWUxTGv.js} +1 -1
  133. package/dist/packem_shared/{native-config-sync-BKAZ0NIs.js → native-config-sync-BEkJW7g3.js} +8 -8
  134. package/dist/packem_shared/pm-runner-OGResYrA.js +1 -0
  135. package/dist/packem_shared/provenance-_CJjMKwu.js +1 -0
  136. package/dist/packem_shared/public-api-WqUCiyIe.js +131 -0
  137. package/dist/packem_shared/{registry-keys-Bf2zzlcZ.js → registry-keys-BfFto6vI.js} +1 -1
  138. package/dist/packem_shared/{resolve-explicit-jH0RKyMJ.js → resolve-explicit-CMDl55Nz.js} +2 -2
  139. package/dist/packem_shared/s1ngularity-Dhr3bPk0.js +1 -0
  140. package/dist/packem_shared/{scan-progress-JBbd9QeT.js → scan-progress-DG7_JmTV.js} +1 -1
  141. package/dist/packem_shared/{signatures-D1H6h6GH.js → signatures-C730vkyK.js} +2 -2
  142. package/dist/packem_shared/slug-DoueYuLo.js +1 -0
  143. package/dist/packem_shared/spinner-CV3WVJLv.js +1 -0
  144. package/dist/packem_shared/sticky-comment-D6_7-w8T.js +1 -0
  145. package/dist/packem_shared/{tabs-BqUepRaD.js → tabs-BuTy5gPV.js} +1 -1
  146. package/dist/packem_shared/{typosquats-C8qg1neE.js → typosquats-DN78xx1x.js} +1 -1
  147. package/dist/packem_shared/use-measured-height-_eVGWtWt.js +1 -0
  148. package/dist/packem_shared/verify-6WCmFmy8.js +1 -0
  149. package/dist/packem_shared/{vis-update-app-CTwRkNgj.js → vis-update-app-k3fDxech.js} +1 -1
  150. package/dist/release/core/changelog/index.d.ts +5 -0
  151. package/dist/release/core/changelog/index.js +1 -0
  152. package/dist/release/core/package-managers/index.d.ts +6 -0
  153. package/dist/release/core/package-managers/index.js +1 -0
  154. package/dist/release/core/version-actions/index.d.ts +14 -0
  155. package/dist/release/core/version-actions/index.js +1 -0
  156. package/dist/release/index.d.ts +196 -0
  157. package/dist/release/index.js +1 -0
  158. package/dist/release/plugin-sdk.d.ts +127 -0
  159. package/dist/release/plugin-sdk.js +1 -0
  160. package/dist/release/presets.d.ts +225 -0
  161. package/dist/release/presets.js +1 -0
  162. package/dist/release/types.d.ts +1377 -0
  163. package/dist/release/types.js +1 -0
  164. package/index.js +578 -752
  165. package/package.json +52 -10
  166. package/schemas/vis-config.schema.json +1394 -6
  167. package/schemas/vis-release-config.schema.json +1390 -0
  168. package/dist/packem_shared/dependency-scan-BDTH898x.js +0 -1
  169. package/dist/packem_shared/index-CB4p298r.js +0 -1
  170. package/dist/packem_shared/index-DMefdF51.js +0 -1
  171. package/dist/packem_shared/pm-runner-pVihAfxV.js +0 -1
  172. package/dist/packem_shared/provenance-DMuEftgc.js +0 -1
  173. package/dist/packem_shared/s1ngularity-BkfgC6NO.js +0 -1
  174. package/dist/packem_shared/spinner-BXSl864p.js +0 -1
  175. package/dist/packem_shared/use-measured-height-BBJ9intr.js +0 -1
  176. package/dist/packem_shared/verify-Du7xZ2BJ.js +0 -1
@@ -0,0 +1,148 @@
1
+ interface PackResult {
2
+ /** Whatever metadata the manager emitted (e.g. file list). Optional. */
3
+ raw?: unknown;
4
+ /** Absolute path to the produced `.tgz` file. */
5
+ tarball: string;
6
+ }
7
+ interface PackOptions {
8
+ /** Working directory of the package. */
9
+ cwd: string;
10
+ /** Output directory for the tarball. Default: cwd. */
11
+ destination?: string;
12
+ /** Override output filename — useful to normalise yarn's `package.tgz` default. */
13
+ filename?: string;
14
+ }
15
+ interface InstallLockfileOnlyOptions {
16
+ /** Workspace root (or any dir within the workspace). */
17
+ cwd: string;
18
+ /** Avoid emitting noise to stdout/stderr. */
19
+ silent?: boolean;
20
+ }
21
+ interface PublishOptions {
22
+ /** `public` or `restricted`. */
23
+ access?: "public" | "restricted";
24
+ /** Extra args passed through to the publisher. */
25
+ extraArgs?: string[];
26
+ /** 2FA token. */
27
+ otp?: string;
28
+ /** Provenance attestation (npm/pnpm/yarn only). */
29
+ provenance?: boolean;
30
+ /** Override registry URL. */
31
+ registry?: string;
32
+ /**
33
+ * Stage the publish for human review instead of going live. Requires
34
+ * npm CLI ≥ 11.15.0 and npmjs.com as the registry. Adapters that don't
35
+ * support staging silently fall through to a regular publish; the
36
+ * orchestrator's doctor + workflow text steer operators around this.
37
+ */
38
+ stage?: boolean;
39
+ /** npm dist-tag. */
40
+ tag?: string;
41
+ /** Path to the `.tgz` to publish. */
42
+ tarball: string;
43
+ }
44
+ interface PublishNativeOptions {
45
+ /** `public` or `restricted`. */
46
+ access?: "public" | "restricted";
47
+ /** Package directory — the manager packs + publishes from here. */
48
+ cwd: string;
49
+ /** Extra args passed through to the publisher. */
50
+ extraArgs?: string[];
51
+ /** 2FA token (managers that support it on their native publish path). */
52
+ otp?: string;
53
+ /** Provenance attestation (npm/pnpm/yarn only; bun ignores). */
54
+ provenance?: boolean;
55
+ /** Override registry URL. */
56
+ registry?: string;
57
+ /** npm dist-tag. */
58
+ tag?: string;
59
+ }
60
+ interface PublishResult {
61
+ /** Whether the registry rejected because the tarball was already there. */
62
+ alreadyPublished?: boolean;
63
+ /** Captured stdout/stderr for diagnostics. */
64
+ output?: string;
65
+ /** Whether the publish succeeded. False if "already published" was detected. */
66
+ published: boolean;
67
+ /**
68
+ * `npm stage publish` returns a stage id (uuid). Surfaced so the
69
+ * orchestrator can list it in the state file and so `vis release stage
70
+ * approve` can promote the wave atomically.
71
+ */
72
+ stageId?: string;
73
+ /**
74
+ * Path + hashes of the tarball that was published (or would have been, in
75
+ * dry-run). Set when the version-actions implementation can surface them;
76
+ * consumed by the orchestrator's release-asset attestation step.
77
+ */
78
+ tarball?: {
79
+ path: string;
80
+ sha256: string;
81
+ sha512: string;
82
+ size: number;
83
+ };
84
+ }
85
+ interface CommandRunner {
86
+ /** Spawn a child process. Returns combined stdout for downstream parsing. */
87
+ run: (command: string, args: ReadonlyArray<string>, options: {
88
+ cwd: string;
89
+ env?: NodeJS.ProcessEnv;
90
+ silent?: boolean;
91
+ }) => Promise<{
92
+ exitCode: number;
93
+ stderr: string;
94
+ stdout: string;
95
+ }>;
96
+ }
97
+ interface WorkspaceListEntry {
98
+ name: string;
99
+ /** Absolute directory of the package. */
100
+ path: string;
101
+ private: boolean;
102
+ version: string;
103
+ }
104
+ /**
105
+ * Per-pm primitives: pack, install, publish, list workspaces, resolve
106
+ * `catalog:` (only pnpm — others throw if asked).
107
+ *
108
+ * Implementations are stateless. Construct via `detectPackageManager(cwd)`.
109
+ */
110
+ declare abstract class PackageManagerAdapter {
111
+ readonly runner: CommandRunner;
112
+ abstract readonly id: "npm" | "pnpm" | "yarn" | "bun";
113
+ abstract readonly minVersion: string;
114
+ constructor(runner: CommandRunner);
115
+ abstract pack(options: PackOptions): Promise<PackResult>;
116
+ abstract installLockfileOnly(options: InstallLockfileOnlyOptions): Promise<void>;
117
+ abstract listWorkspacePackages(cwd: string): Promise<WorkspaceListEntry[]>;
118
+ /**
119
+ * Publish a tarball. Default impl in the `npm` adapter — yarn/bun/pnpm
120
+ * may simply re-call `npm publish &lt;tarball>` per RFC §11.3 when the
121
+ * configured `publishStrategy` is `"npm-publish-tarball"` (default).
122
+ */
123
+ abstract publish(options: PublishOptions): Promise<PublishResult>;
124
+ /**
125
+ * Native publish: run the package manager's own `publish` command directly
126
+ * from the package directory (the manager packs + publishes itself), used
127
+ * when the project opts into `publish.publishStrategy: "native"`. The
128
+ * default LCD path is `publish` (an `npm publish` of a packed tarball).
129
+ * Each adapter overrides this with its own publish command + flag surface;
130
+ * the default throws so an adapter that genuinely can't publish natively
131
+ * fails loudly rather than silently no-opping.
132
+ *
133
+ * Caveat (RFC §11.3): native publish lets the manager resolve
134
+ * `workspace:`/`catalog:` itself. Only pnpm rewrites `catalog:` — on
135
+ * npm/yarn/bun the operator must set `catalogResolution: "in-place"` (or
136
+ * have no catalog refs) or the published tarball will carry literal
137
+ * `catalog:` specifiers.
138
+ */
139
+ publishNative(_options: PublishNativeOptions): Promise<PublishResult>;
140
+ /** Native pm version detection (e.g. `&lt;pm> --version`). */
141
+ abstract detectVersion(cwd: string): Promise<string | undefined>;
142
+ /**
143
+ * Read this manager's catalog block (only pnpm has them). Default impl
144
+ * returns `undefined` — adapters override to provide raw YAML/JSON.
145
+ */
146
+ readCatalogYaml(_cwd: string): Promise<string | undefined>;
147
+ }
148
+ export { CommandRunner as C, InstallLockfileOnlyOptions as I, PackageManagerAdapter as P, WorkspaceListEntry as W, PackOptions as a, PackResult as b, PublishNativeOptions as c, PublishOptions as d, PublishResult as e };
@@ -0,0 +1,106 @@
1
+ import { PlannedRelease, PerPackageReleaseConfig, WorkspacePackage, PackageManifest, VisReleaseConfig } from "../release/types.js";
2
+ import { P as PackageManagerAdapter, e as PublishResult } from "./interface.d-B7VK2rcH.js";
3
+ /**
4
+ * Parsed `pnpm-workspace.yaml` catalogs.
5
+ * - `default` is the top-level `catalog:` block (referenced as `catalog:` in deps).
6
+ * - `named` is the `catalogs:` map (referenced as `catalog:&lt;name&gt;`).
7
+ */
8
+ interface Catalogs {
9
+ default: Record<string, string>;
10
+ named: Record<string, Record<string, string>>;
11
+ }
12
+ interface PublishContext {
13
+ /** Catalog blocks for `catalog:` rewriting. */
14
+ catalogs: Catalogs;
15
+ /** Strip non-publishable fields (`scripts`, `devDependencies`, etc.). */
16
+ cleanPackageJsonConfig?: boolean | {
17
+ keep?: string[];
18
+ strip?: string[];
19
+ };
20
+ /** Dry-run mode — perform no writes / no network calls. */
21
+ dryRun?: boolean;
22
+ /** OTP for 2FA-protected publishes. */
23
+ otp?: string;
24
+ /** Per-package config (incl. custom commands subject to trust gate). */
25
+ perPackageConfig?: PerPackageReleaseConfig;
26
+ /** Pre-bump source-tree manifest (read-only). */
27
+ pkg: WorkspacePackage;
28
+ /** Active package-manager adapter for this workspace. */
29
+ pm: PackageManagerAdapter;
30
+ /** Provenance attestation requested? (Skipped for managers that don't support it.) */
31
+ provenance?: boolean;
32
+ /** Resolved registry (per-pkg override or global). */
33
+ registry?: string;
34
+ /** The plan entry for this package (with the new version etc.). */
35
+ release: PlannedRelease;
36
+ /**
37
+ * When set, the tarball is already staged on the registry under this
38
+ * id; skip pack + publish and resume waiting on the existing decision.
39
+ * Carried by `vis release publish --resume` / re-runs after a timeout
40
+ * so we don't try to re-upload a version npm already has staged.
41
+ */
42
+ resumeStageId?: string;
43
+ /** Channel-derived dist-tag. */
44
+ tag?: string;
45
+ /** Map of every package being released this wave (for workspace: rewriting). */
46
+ versionedManifestByName: ReadonlyMap<string, PackageManifest>;
47
+ /** Workspace-wide config (for trust-gate evaluation, etc.). */
48
+ workspaceConfig?: VisReleaseConfig;
49
+ }
50
+ interface AfterAllVersionedContext {
51
+ /** Workspace root. */
52
+ cwd: string;
53
+ /** Active package-manager adapter. */
54
+ pm: PackageManagerAdapter;
55
+ /** All releases in this wave. */
56
+ releases: ReadonlyArray<PlannedRelease>;
57
+ }
58
+ interface AfterAllVersionedResult {
59
+ changedFiles: string[];
60
+ deletedFiles: string[];
61
+ }
62
+ /**
63
+ * Per-package versioning + publishing contract.
64
+ *
65
+ * Concrete implementations are stateless. Construct one instance per
66
+ * package per release wave; the orchestrator passes context per call.
67
+ */
68
+ declare abstract class VersionActions {
69
+ /**
70
+ * Stable id for resolution (`"npm"`, `"native-addon"`, `"private"`,
71
+ * or a path for custom impls).
72
+ */
73
+ abstract readonly id: string;
74
+ /**
75
+ * Read the current published version of this package from the registry.
76
+ * Returns `undefined` for private packages or fresh packages never published.
77
+ *
78
+ * The optional `workspaceConfig` field threads workspace-level
79
+ * knobs (currently only `httpProxy`) so adapters can route registry
80
+ * probes through an enterprise proxy. Older adapters that ignore
81
+ * the field continue to work.
82
+ */
83
+ abstract readPublishedVersion(context: {
84
+ pkg: WorkspacePackage;
85
+ pm: PackageManagerAdapter;
86
+ workspaceConfig?: VisReleaseConfig;
87
+ }): Promise<string | undefined>;
88
+ /**
89
+ * Publish this package (and any sidecars). Implementations are responsible
90
+ * for: protocol resolution, catalog rewriting, clean-package-json,
91
+ * pack-then-publish via the active adapter.
92
+ */
93
+ abstract publish(context: PublishContext): Promise<PublishResult>;
94
+ }
95
+ /**
96
+ * Optional companion hook — runs once per workspace after every package's
97
+ * `bumpVersion` step has completed and before the prettier/commit phase.
98
+ *
99
+ * Used to update sidecar files that span packages (e.g. NAPI platform
100
+ * `optionalDependencies` blocks, lockfile re-sync). Returned files are
101
+ * auto-staged into the release commit.
102
+ */
103
+ declare abstract class AfterAllProjectsVersioned {
104
+ abstract afterAllVersioned(context: AfterAllVersionedContext): Promise<AfterAllVersionedResult>;
105
+ }
106
+ export { AfterAllProjectsVersioned as A, PublishContext as P, VersionActions as V, AfterAllVersionedContext as a, AfterAllVersionedResult as b };
@@ -1 +1 @@
1
- import{f as a,m as h,B as o,I as f}from"./index-BDmTbWX1.js";import{l as d,m as $}from"../packem_chunks/bin.js";const g=/\/+$/,p=/node_modules/,u=/\.git/,k=/[$()+.?[\\\]^{|}]/g,S=/\/\*\*$|\/\*\/\*$/,W=(i,c)=>{const e=c.replace(g,"");if(e.startsWith("!"))return[];const n=[];if(e.endsWith("/*")){const s=e.slice(0,-2),t=o(i,s);if(!a(t))return[];for(const r of f(t,{includeFiles:!1,includeSymlinks:!1,maxDepth:1,skip:[p,u]}))r.path===t||r.name.startsWith(".")||n.push(h(s,r.name));return n}if(e.endsWith("/**")||e.endsWith("/*/*")){const s=e.replace(S,""),t=o(i,s);if(!a(t))return[];for(const r of f(t,{includeFiles:!1,includeSymlinks:!1,skip:[p,u]})){if(r.path===t)continue;const m=r.path.slice(t.length+1);n.push(`${s}/${m}`)}return n}if(!e.includes("/")&&e.includes("*")){const s=e.replaceAll(k,String.raw`\$&`).replaceAll("*",".*"),t=new RegExp(`^${s}$`);for(const r of f(i,{includeFiles:!1,includeSymlinks:!1,maxDepth:1,skip:[p,u]}))r.path!==i&&t.test(r.name)&&n.push(r.name);return n}const l=o(i,e);return a(l)&&n.push(e),n},y=i=>{const c=d(i)??$(i)??[],e=new Set,n=[];for(const l of c)for(const s of W(i,l))s==="."||e.has(s)||(e.add(s),a(h(i,s,"package.json"))||n.push({packageDir:s}));return n};export{y as l};
1
+ import{f as a,m as h,B as l,I as f}from"./index-BDmTbWX1.js";import{e as d,t as $}from"../packem_chunks/bin.js";const g=/\/+$/,p=/node_modules/,u=/\.git/,k=/[$()+.?[\\\]^{|}]/g,S=/\/\*\*$|\/\*\/\*$/,W=(i,c)=>{const e=c.replace(g,"");if(e.startsWith("!"))return[];const n=[];if(e.endsWith("/*")){const s=e.slice(0,-2),t=l(i,s);if(!a(t))return[];for(const r of f(t,{includeFiles:!1,includeSymlinks:!1,maxDepth:1,skip:[p,u]}))r.path===t||r.name.startsWith(".")||n.push(h(s,r.name));return n}if(e.endsWith("/**")||e.endsWith("/*/*")){const s=e.replace(S,""),t=l(i,s);if(!a(t))return[];for(const r of f(t,{includeFiles:!1,includeSymlinks:!1,skip:[p,u]})){if(r.path===t)continue;const m=r.path.slice(t.length+1);n.push(`${s}/${m}`)}return n}if(!e.includes("/")&&e.includes("*")){const s=e.replaceAll(k,String.raw`\$&`).replaceAll("*",".*"),t=new RegExp(`^${s}$`);for(const r of f(i,{includeFiles:!1,includeSymlinks:!1,maxDepth:1,skip:[p,u]}))r.path!==i&&t.test(r.name)&&n.push(r.name);return n}const o=l(i,e);return a(o)&&n.push(e),n},y=i=>{const c=d(i)??$(i)??[],e=new Set,n=[];for(const o of c)for(const s of W(i,o))s==="."||e.has(s)||(e.add(s),a(h(i,s,"package.json"))||n.push({packageDir:s}));return n};export{y as l};
@@ -1,7 +1,7 @@
1
- import{m as c,v as f,T as i,f as y}from"./index-BDmTbWX1.js";import{r as O,u as C}from"../packem_chunks/bin.js";import{a as D}from"../packem_chunks/config.js";const N=(E,p,o)=>{const s=[],$=Object.entries(o).filter(([,n])=>n).map(([n])=>n);switch(E){case"bun":{const n=c(p,"package.json");if(y(n))try{const e=D(n);e.trustedDependencies=$,i(n,`${JSON.stringify(e,null,2)}
2
- `),s.push(`Updated package.json trustedDependencies with ${$.length} packages`)}catch(e){s.push(`Failed to update package.json: ${e instanceof Error?e.message:String(e)}`)}break}case"npm":{const n=c(p,".npmrc");let e=y(n)?f(n):"";/^\s*ignore-scripts\s*=\s*true\s*$/m.test(e)?s.push(".npmrc already has ignore-scripts=true"):(e=`${e.trimEnd()}
1
+ import{m as c,v as f,T as i,f as y}from"./index-BDmTbWX1.js";import"./public-api-WqUCiyIe.js";import{n as O,u as C}from"../packem_chunks/bin.js";import{a as D}from"../packem_chunks/config.js";const W=(E,a,o)=>{const s=[],$=Object.entries(o).filter(([,n])=>n).map(([n])=>n);switch(E){case"bun":{const n=c(a,"package.json");if(y(n))try{const e=D(n);e.trustedDependencies=$,i(n,`${JSON.stringify(e,null,2)}
2
+ `),s.push(`Updated package.json trustedDependencies with ${$.length} packages`)}catch(e){s.push(`Failed to update package.json: ${e instanceof Error?e.message:String(e)}`)}break}case"npm":{const n=c(a,".npmrc");let e=y(n)?f(n):"";/^\s*ignore-scripts\s*=\s*true\s*$/m.test(e)?s.push(".npmrc already has ignore-scripts=true"):(e=`${e.trimEnd()}
3
3
  ignore-scripts=true
4
- `,i(n,e),s.push("Added ignore-scripts=true to .npmrc"));break}case"pnpm":{const n=c(p,"pnpm-workspace.yaml");if(!y(n)){s.push("pnpm-workspace.yaml not found. Cannot sync allowBuilds.");break}let e={},m=[];try{const t=C(n);e=t?.allowBuilds??{},m=Array.isArray(t?.onlyBuiltDependencies)?t.onlyBuiltDependencies:[]}catch{}const g={...e,...o},j=Object.keys(o).filter(t=>e[t]!==o[t]).length,d=$.toSorted((t,a)=>t.localeCompare(a)),k=[...new Set([...m,...d])].toSorted((t,a)=>t.localeCompare(a)),b=d.filter(t=>!m.includes(t)).length;if(j===0&&b===0)s.push(`All ${String(Object.keys(o).length)} allowBuilds entries already present in pnpm-workspace.yaml.`);else{const t=Object.keys(g).sort(),a=l=>l.startsWith("@")||l.includes("/")||/[:#\s]/.test(l),h=l=>a(l)?`'${l.replaceAll("'","''")}'`:l,u=`allowBuilds:
4
+ `,i(n,e),s.push("Added ignore-scripts=true to .npmrc"));break}case"pnpm":{const n=c(a,"pnpm-workspace.yaml");if(!y(n)){s.push("pnpm-workspace.yaml not found. Cannot sync allowBuilds.");break}let e={},m=[];try{const t=C(n);e=t?.allowBuilds??{},m=Array.isArray(t?.onlyBuiltDependencies)?t.onlyBuiltDependencies:[]}catch{}const g={...e,...o},j=Object.keys(o).filter(t=>e[t]!==o[t]).length,d=$.toSorted((t,p)=>t.localeCompare(p)),k=[...new Set([...m,...d])].toSorted((t,p)=>t.localeCompare(p)),b=d.filter(t=>!m.includes(t)).length;if(j===0&&b===0)s.push(`All ${String(Object.keys(o).length)} allowBuilds entries already present in pnpm-workspace.yaml.`);else{const t=Object.keys(g).sort(),p=l=>l.startsWith("@")||l.includes("/")||/[:#\s]/.test(l),h=l=>p(l)?`'${l.replaceAll("'","''")}'`:l,u=`allowBuilds:
5
5
  ${t.map(l=>` ${h(l)}: ${String(g[l])}`).join(`
6
6
  `)}
7
7
  `;let r=f(n);r.endsWith(`
@@ -9,13 +9,13 @@ ${t.map(l=>` ${h(l)}: ${String(g[l])}`).join(`
9
9
  `);const S=/^allowBuilds:[ \t]*\n(?:[ \t]{2}[^\n]*\n)*/m;if(r=S.test(r)?r.replace(S,u):`${r.trimEnd()}
10
10
 
11
11
  ${u}`,k.length>0){const l=`onlyBuiltDependencies:
12
- ${k.map(B=>` - ${a(B)?`'${B.replaceAll("'","''")}'`:B}`).join(`
12
+ ${k.map(B=>` - ${p(B)?`'${B.replaceAll("'","''")}'`:B}`).join(`
13
13
  `)}
14
14
  `,A=/^onlyBuiltDependencies:[ \t]*\n(?:[ \t]{2}[^\n]*\n)*/m;r=A.test(r)?r.replace(A,l):`${r.trimEnd()}
15
15
 
16
- ${l}`}i(n,r),s.push(`Updated pnpm-workspace.yaml allowBuilds (${String(j)} new, ${String(t.length)} total)`),b>0&&s.push(`Updated pnpm-workspace.yaml onlyBuiltDependencies (${String(b)} new, ${String(k.length)} total)`)}const w=c(p,"package.json");if(y(w)&&d.length>0)try{const t=D(w),a=Array.isArray(t.pnpm?.onlyBuiltDependencies)?t.pnpm.onlyBuiltDependencies:[],h=[...new Set([...a,...d])].toSorted((r,S)=>r.localeCompare(S)),u=d.filter(r=>!a.includes(r)).length;u>0&&(t.pnpm={...t.pnpm,onlyBuiltDependencies:h},i(w,`${JSON.stringify(t,null,2)}
17
- `),s.push(`Updated package.json pnpm.onlyBuiltDependencies (${String(u)} new, ${String(h.length)} total)`))}catch(t){s.push(`Failed to update package.json pnpm.onlyBuiltDependencies: ${t instanceof Error?t.message:String(t)}`)}break}case"yarn":{if(O(p)){const n=c(p,".yarnrc.yml");let e=f(n);const m=/^\s*enableScripts\s*:/m.test(e),g=/^\s*enableScripts\s*:\s*false\s*$/m.test(e);m?g?s.push(".yarnrc.yml already has enableScripts: false"):(e=e.replace(/^\s*enableScripts\s*:.+$/m,"enableScripts: false"),i(n,e),s.push("Changed enableScripts to false in .yarnrc.yml")):(e=`${e.trimEnd()}
16
+ ${l}`}i(n,r),s.push(`Updated pnpm-workspace.yaml allowBuilds (${String(j)} new, ${String(t.length)} total)`),b>0&&s.push(`Updated pnpm-workspace.yaml onlyBuiltDependencies (${String(b)} new, ${String(k.length)} total)`)}const w=c(a,"package.json");if(y(w)&&d.length>0)try{const t=D(w),p=Array.isArray(t.pnpm?.onlyBuiltDependencies)?t.pnpm.onlyBuiltDependencies:[],h=[...new Set([...p,...d])].toSorted((r,S)=>r.localeCompare(S)),u=d.filter(r=>!p.includes(r)).length;u>0&&(t.pnpm={...t.pnpm,onlyBuiltDependencies:h},i(w,`${JSON.stringify(t,null,2)}
17
+ `),s.push(`Updated package.json pnpm.onlyBuiltDependencies (${String(u)} new, ${String(h.length)} total)`))}catch(t){s.push(`Failed to update package.json pnpm.onlyBuiltDependencies: ${t instanceof Error?t.message:String(t)}`)}break}case"yarn":{if(O(a)){const n=c(a,".yarnrc.yml");let e=f(n);const m=/^\s*enableScripts\s*:/m.test(e),g=/^\s*enableScripts\s*:\s*false\s*$/m.test(e);m?g?s.push(".yarnrc.yml already has enableScripts: false"):(e=e.replace(/^\s*enableScripts\s*:.+$/m,"enableScripts: false"),i(n,e),s.push("Changed enableScripts to false in .yarnrc.yml")):(e=`${e.trimEnd()}
18
18
  enableScripts: false
19
- `,i(n,e),s.push("Added enableScripts: false to .yarnrc.yml"))}else{const n=c(p,".npmrc");let e=y(n)?f(n):"";/^\s*ignore-scripts\s*=\s*true\s*$/m.test(e)?s.push(".npmrc already has ignore-scripts=true"):(e=`${e.trimEnd()}
19
+ `,i(n,e),s.push("Added enableScripts: false to .yarnrc.yml"))}else{const n=c(a,".npmrc");let e=y(n)?f(n):"";/^\s*ignore-scripts\s*=\s*true\s*$/m.test(e)?s.push(".npmrc already has ignore-scripts=true"):(e=`${e.trimEnd()}
20
20
  ignore-scripts=true
21
- `,i(n,e),s.push("Added ignore-scripts=true to .npmrc (yarn classic lacks enableScripts)"))}break}}return s};export{N as O};
21
+ `,i(n,e),s.push("Added ignore-scripts=true to .npmrc (yarn classic lacks enableScripts)"))}break}}return s};export{W as O};
@@ -0,0 +1 @@
1
+ import{createRequire as L}from"node:module";import{f as R,m as $,H as S,j as x,v as N}from"./index-BDmTbWX1.js";import{s as y}from"./index-CgcF6_wo.js";import{detectPackageManager as J,resolveAdd as z,resolveRemove as H,resolveDlx as F,whichBin as V,resolveInstall as Y,execPmCommandInteractive as G,resolveDedupe as K,resolveWhy as Q,resolveLink as X,resolveUnlink as Z,resolveExec as ee,resolvePmCommand as ne}from"#native";const T=L(import.meta.url),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,U=e=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[n,s]=b.versions.node.split(".").map(Number);if(n>22||n===22&&s>=3||n===20&&s>=16)return b.getBuiltinModule(e)}return T(e)},{spawn:q,spawnSync:B}=U("node:child_process"),h=(e,n,s,r)=>{for(const a of n)e.push("--filter",a);s&&e.push("--recursive"),r&&e.push("--workspace-root")},se=e=>{const n=[],s=[];return h(n,e.filter,e.recursive,e.workspaceRoot),e.silent&&n.push("--silent"),e.frozenLockfile&&n.push("--frozen-lockfile"),n.push("install"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.force&&n.push("--force"),e.ignoreScripts&&n.push("--ignore-scripts"),e.lockfileOnly&&n.push("--lockfile-only"),e.noOptional&&n.push("--no-optional"),e.offline&&n.push("--offline"),{args:n,bin:"aube",warnings:s}},re=e=>{const n=[],s=[];return h(n,e.filter,!1,!1),n.push("add"),e.saveDev&&n.push("--save-dev"),e.exact&&n.push("--save-exact"),e.global&&n.push("--global"),e.optional&&n.push("--save-optional"),e.peer&&n.push("--save-peer"),e.workspace&&s.push("aube has no flag for the `workspace:` protocol; it auto-detects local workspace members during add. Ignoring --workspace."),e.workspaceRoot&&n.push("--workspace"),n.push(...e.packages),{args:n,bin:"aube",warnings:s}},ae=e=>{const n=[];return h(n,e.filter,e.recursive,!1),n.push("remove"),e.saveDev&&n.push("--save-dev"),e.global&&n.push("--global"),e.workspaceRoot&&n.push("--workspace"),n.push(...e.packages),{args:n,bin:"aube",warnings:[]}},oe=e=>{const n=["dedupe"];return e&&n.push("--check"),{args:n,bin:"aube",warnings:[]}},ie=e=>{const n=[],s=[];h(n,e.filter,e.recursive,!1),n.push("why"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.json&&n.push("--json"),e.long&&n.push("--long"),e.parseable&&n.push("--parseable"),e.depth!==void 0&&s.push("aube why does not accept --depth; ignoring."),e.noOptional&&s.push("aube why does not accept --no-optional; ignoring."),e.global&&s.push("aube why does not accept --global; ignoring.");const[r,...a]=e.packages;return r===void 0?s.push("aube why requires a package name; none provided."):(a.length>0&&s.push("aube why takes a single package; using the first."),n.push(r)),{args:n,bin:"aube",warnings:s}},te=e=>{const n=[];e.silent&&n.push("--silent"),n.push("dlx");for(const s of e.additionalPackages)n.push("--package",s);return e.shellMode&&n.push("--shell-mode"),n.push(e.package),n.push(...e.args),{args:n,bin:"aube",warnings:[]}},pe=e=>{const n=[];return h(n,e.filter,e.recursive,e.workspaceRoot),n.push("exec"),e.parallel&&n.push("--parallel"),e.reverse&&n.push("--reverse"),e.shellMode&&n.push("--shell-mode"),n.push(e.command),n.push(...e.args),{args:n,bin:"aube",warnings:[]}},ue=e=>{const n=["link"];return e!==null&&n.push(e),{args:n,bin:"aube",warnings:[]}},ce=(e,n)=>{const s=[],r=[];return n&&s.push("--recursive"),s.push("unlink"),e.length>1&&r.push("aube unlink takes a single package; using the first."),e.length>0&&s.push(e[0]),{args:s,bin:"aube",warnings:r}},le=e=>{const n=["view","--",e.package],s=[],[r,...a]=e.fields;return r!==void 0?(a.length>0&&s.push("aube view only supports a single field; using the first."),e.json&&s.push("aube view does not support --json with a field selector; printing the field without --json."),n.push(r)):e.json&&n.push("--json"),{args:n,bin:"aube",warnings:s}},Le=e=>{const n=[],s=[];return h(n,e.filters,e.recursive,e.workspaceRoot),n.push("update"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.global&&n.push("--global"),e.interactive&&n.push("--interactive"),e.latest&&n.push("--latest"),e.noOptional&&n.push("--no-optional"),e.noSave&&n.push("--no-save"),n.push(...e.packages),{args:n,bin:"aube",warnings:s}},ge=new Set(["fund","ping","search","token"]),de=(e,n)=>ge.has(e)?{args:[e,...n],bin:"npm",warnings:[`'${e}' is not natively supported by aube. Delegating to npm.`]}:{args:[e,...n],bin:"aube",warnings:[]},k=256*1024,he=e=>{const n=e?{...process.env,...e}:{...process.env};return process.stderr.isTTY&&n.FORCE_COLOR===void 0&&n.NO_COLOR===void 0&&(n.FORCE_COLOR="1"),n},_=e=>e!==""&&!/[\s"&()<>^|%!]/u.test(e)?e:`"${e.replaceAll(/(\\*)"/gu,String.raw`$1$1\"`).replace(/(\\+)$/u,"$1$1").replaceAll(/[&()<>^|%!]/gu,String.raw`^$&`)}"`,fe=async(e,n,s)=>new Promise((r,a)=>{const o=process.platform==="win32",i=q(o?_(e):e,o?n.map(t=>_(t)):[...n],{cwd:s.cwd,env:he(s.env),shell:o,stdio:["inherit","pipe","pipe"],windowsHide:!0});let u=[],l=0;const g=t=>{if(u.push(t),l+=t.length,!(l<=k)){for(;u.length>1&&l-u[0].length>k;)l-=u.shift().length;if(u.length===1&&l>k){const d=u[0];u[0]=d.subarray(d.length-k),l=k}}},m=()=>Buffer.concat(u).toString("utf8");i.stdout?.on("data",t=>{process.stdout.write(t),g(t)}),i.stderr?.on("data",t=>{process.stderr.write(t),g(t)}),i.on("error",a),i.on("close",t=>{const d=m();u=[],r({code:t??1,output:d})})}),w=e=>{const n=y.coerce(e);return n?y.gte(n,"11.0.0"):!1},c=e=>e.name==="yarn"&&!e.version.startsWith("1."),j=e=>e.name==="yarn"&&e.version.startsWith("1."),me=e=>e[0]==="rm"?["remove",...e.slice(1)]:e,be=(e,n,s)=>{switch(n){case"audit":return c(e)?{args:["npm","audit",...s],bin:"yarn",kind:"rewrite"}:{kind:"passthrough"};case"config":{if(c(e)){const[r,...a]=s;return r==="delete"?{args:["config","unset",...a],bin:"yarn",kind:"rewrite",warning:"yarn berry uses `config unset`, not `config delete`."}:{kind:"passthrough"}}return e.name==="bun"?{kind:"skip",warning:"bun has no `config` CLI. Edit bunfig.toml or .npmrc directly."}:e.name==="deno"?{kind:"skip",warning:"deno has no registry-config CLI. Edit deno.json directly."}:{kind:"passthrough"}}case"dist-tag":return j(e)?{args:["tag",...s],bin:"yarn",kind:"rewrite",warning:"yarn 1 has no `dist-tag`; using `yarn tag`."}:c(e)?{args:["npm","tag",...me(s)],bin:"yarn",kind:"rewrite"}:e.name==="bun"||e.name==="deno"?{kind:"skip",warning:`${e.name} has no \`dist-tag\`. Use \`npm dist-tag\` instead.`}:{kind:"passthrough"};case"login":case"logout":return c(e)?{args:["npm",n,...s],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{args:[n,...s],bin:"npm",kind:"rewrite",warning:`bun has no \`${n}\`; falling back to \`npm ${n}\` (writes ~/.npmrc, which bun reads).`}:e.name==="deno"?{kind:"skip",warning:`deno has no \`${n}\`. JSR uses browser OAuth via \`deno publish\`.`}:{kind:"passthrough"};case"owner":return e.name==="pnpm"&&w(e.version)?{args:["owner",...s],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `owner`; falling back to `npm owner`."}:c(e)?{args:["owner",...s],bin:"npm",kind:"rewrite",warning:"yarn berry has no `owner` (not in `yarn npm`); falling back to `npm owner`."}:e.name==="bun"?{args:["owner",...s],bin:"npm",kind:"rewrite",warning:"bun has no `owner`; falling back to `npm owner`."}:e.name==="deno"?{kind:"skip",warning:"deno has no `owner`. JSR uses scope-member roles via the web UI."}:{kind:"passthrough"};case"ping":return e.name==="pnpm"&&w(e.version)?{args:["ping",...s],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `ping`; falling back to `npm ping`."}:{kind:"passthrough"};case"plugin":return c(e)?{kind:"passthrough"}:{kind:"skip",warning:`${e.name} does not support yarn-style plugins. Skipping (no-op).`};case"prune":return j(e)?{kind:"skip",warning:"yarn 1 has no `prune`. Use `yarn install --production` for a prod-only tree."}:c(e)?{kind:"skip",warning:"yarn berry has no `prune`. Use `yarn workspaces focus --production` instead."}:e.name==="bun"||e.name==="deno"?{kind:"skip",warning:`${e.name} has no \`prune\`. Pruning happens automatically on install.`}:{kind:"passthrough"};case"publish":return c(e)?{args:["npm","publish",...s],bin:"yarn",kind:"rewrite"}:{kind:"passthrough"};case"rebuild":return j(e)?{kind:"skip",warning:"yarn 1 has no `rebuild`. Re-install instead."}:e.name==="bun"?{kind:"skip",warning:"bun has no `rebuild`. Use `bun install --force` instead."}:e.name==="deno"?{kind:"skip",warning:"deno has no `rebuild`."}:{kind:"passthrough"};case"search":return e.name==="pnpm"&&w(e.version)?{args:["search",...s],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `search`; falling back to `npm search`."}:{kind:"passthrough"};case"token":return e.name==="pnpm"&&w(e.version)?{args:["token",...s],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `token`; falling back to `npm token`."}:{kind:"passthrough"};case"whoami":return e.name==="pnpm"&&w(e.version)?{args:["whoami",...s],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `whoami`; falling back to `npm whoami`."}:c(e)?{args:["npm","whoami",...s],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{args:["pm","whoami",...s],bin:"bun",kind:"rewrite"}:e.name==="deno"?{kind:"skip",warning:"deno has no `whoami`. JSR uses browser auth."}:{kind:"passthrough"};default:return{kind:"passthrough"}}},O=e=>V(e)!==null,ke=e=>{const n=[["pnpm-lock.yaml","pnpm"],["yarn.lock","yarn"],["package-lock.json","npm"],["npm-shrinkwrap.json","npm"],["bun.lock","bun"],["bun.lockb","bun"],["deno.lock","deno"]];let s=e;for(;;){for(const[a,o]of n)if(R($(s,a)))return o;const r=S(s);if(r===s||x(s).root===s)return;s=r}},Te=(e,n)=>{if(n.name!=="aube")return;const s=ke(e);if(s!==void 0)return`Resolved installer is aube but the workspace has a ${s} lockfile. Aube reads and writes ${s}'s lockfile format in place, but its byte output may differ subtly — expect a one-time churn diff on the first install, and ongoing drift if your team mixes tools on the same lockfile. To pin the choice across the team, set \`install.backend\` in vis.config; to bypass aube for this run, pass --no-aube.`},C=e=>{if(R(e))try{return JSON.parse(N(e,{buffer:!1}))}catch{return}},we=e=>{let n=e;for(;;){const s=$(n,"package.json"),r=C(s);if(r&&typeof r.packageManager=="string"&&r.packageManager.length>0)return r.packageManager;const a=S(n);if(a===n||x(n).root===n)return;n=a}},E=new Set(["npm","pnpm","yarn"]),W=(e,n,s)=>s===!1||!E.has(n)||!O("corepack")?!1:s===!0?!0:we(e)!==void 0,Ue=(e,n)=>{const s=n.backend,r=process.env.VIS_INSTALLER,a=s??r??n.configBackend,o=n.configCorepack??"auto";if(a&&a!=="auto"){if(a==="aube"&&!O("aube"))throw new Error('install.backend is set to "aube" but the `aube` binary is not on PATH. Install it via `npm i -g @endevco/aube`, `mise use -g aube`, or `brew install endevco/tap/aube`.');return{name:a,useCorepack:W(e,a,o),version:"latest"}}if(O("aube"))return{name:"aube",useCorepack:!1,version:"latest"};const i=ve(e);return{...i,useCorepack:W(e,i.name,o)}},ve=e=>{if(!R(e))throw new Error(`Could not detect package manager in ${e}. Directory does not exist.`);const n=J(e);return{name:n.name,version:n.version||"latest"}},M=(e,n)=>n.useCorepack!==!0||!E.has(n.name)||e.bin==="corepack"||e.bin!==n.name?e:{...e,args:[n.name,...e.args],bin:"corepack"},ye=(e,n,s)=>{if(s===void 0)return G(e.bin,e.args,n);const r=B(e.bin,e.args,{cwd:n,env:{...process.env,...s},stdio:"inherit"});if(r.error)throw r.error;return r.status??1},p=(e,n,s,r,a={})=>{const o=M(n,e);for(const i of o.warnings)r.warn(`warning: ${i}`);return a.dry?(r.log(`[dry-run] ${o.bin} ${o.args.join(" ")}`),0):ye(o,s,a.env)},f=(e,n,s,r,a={})=>p(e,n(),s,r,a),$e=(e,n)=>n==="aube"||n==="deno"?e:{...e,args:[...e.args,"--prefer-offline"]},je=(e,n,s)=>n!=="yarn"||s.startsWith("1.")||!e.args.includes("--immutable")||e.args.includes("--immutable-cache")?e:{...e,args:[...e.args,"--immutable-cache"]},P=(e,n,s)=>{let r=e.name==="aube"?se(n):Y(e.name,e.version,{...n,silent:n.silent||s.silent===!0});return s.preferOffline&&(r=$e(r,e.name)),s.ciMode&&(r=je(r,e.name,e.version)),r},qe=(e,n,s,r,a={})=>{const o=P(e,n,a);return D(e,o,s,r,{dry:a.dry,env:a.env})},Be=async(e,n,s,r,a={})=>{const o=M(P(e,n,a),e);for(const i of o.warnings)r.warn(`warning: ${i}`);return a.dry?(r.log(`[dry-run] ${o.bin} ${o.args.join(" ")}`),{code:0,output:""}):fe(o.bin,o.args,{cwd:s,env:a.env?{...process.env,...a.env}:process.env})},I=(e,n)=>{const s=n==="deno"?"--quiet":"--silent";return{...e,args:[...e.args,s]}},Oe=(e,n)=>n==="yarn"||n==="aube"?null:{...e,args:[...e.args,"--dry-run"]},D=(e,n,s,r,a)=>{if(a.dry!==!0)return p(e,n,s,r,a);const o=Oe(n,e.name);return o===null?p(e,n,s,r,a):p(e,o,s,r,{env:a.env})},Re=(e,n)=>n==="aube"?{...e,args:[...e.args,"--ignore-scripts"]}:n==="deno"?e:{...e,args:[...e.args,"--ignore-scripts"]},Se=(e,n,s,r,a={})=>{let o=e.name==="aube"?re(n):z(e.name,e.version,n);a.ignoreScripts&&(o=Re(o,e.name)),a.silent&&(o=I(o,e.name));const i=D(e,o,s,r,{dry:a.dry,env:a.env});return i===0&&a.autoInstallPeers&&_e(e,n,s,r,a),i},xe=e=>{if(e.startsWith("@")){const s=e.indexOf("/");if(s===-1)return e;const r=e.indexOf("@",s);return r===-1?e:e.slice(0,r)}const n=e.indexOf("@");return n===-1?e:e.slice(0,n)},Ce=(e,n)=>{let s=e;for(;;){const r=$(s,"node_modules",n,"package.json"),a=C(r);if(a)return a;const o=S(s);if(o===s||x(s).root===s)return;s=o}},De=e=>{const n=C($(e,"package.json")),s=new Set;if(!n)return s;for(const r of["dependencies","devDependencies","peerDependencies","optionalDependencies"]){const a=n[r];if(a)for(const o of Object.keys(a))s.add(o)}return s},_e=(e,n,s,r,a)=>{if(e.name==="deno")return;const o=De(s),i=new Map;for(const g of n.packages){const m=xe(g),t=Ce(s,m);if(!t?.peerDependencies)continue;const d=t.peerDependenciesMeta??{};for(const[v,A]of Object.entries(t.peerDependencies))d[v]?.optional||o.has(v)||i.has(v)||i.set(v,A)}if(i.size===0)return;const u=[...i.entries()].map(([g,m])=>`${g}@${m}`);r.log(`auto-installing peer dependencies: ${u.join(", ")}`);const l={exact:!1,filter:n.filter,global:!1,optional:!1,packages:u,peer:!1,saveDev:n.saveDev,workspace:!1,workspaceRoot:n.workspaceRoot};Se(e,l,s,r,{ignoreScripts:a.ignoreScripts})},Ne=(e,n,s,r,a={})=>{let o=e.name==="aube"?ae(n):H(e.name,e.version,n);return a.silent&&(o=I(o,e.name)),D(e,o,s,r,{dry:a.dry,env:a.env})},Je=(e,n,s,r,a={})=>e.name==="aube"?p(e,oe(n),s,r,a):f(e,()=>K(e.name,e.version,n),s,r,a),ze=(e,n,s,r,a={})=>e.name==="aube"?p(e,ie(n),s,r,a):f(e,()=>Q(e.name,e.version,n),s,r,a),We=(e,n)=>{if(e.name==="aube")return le(n);const s=[],r=[],a=e.name;switch(e.name){case"bun":{const o=y.coerce(e.version);o&&y.lt(o,"1.3.0")&&r.push(`bun ${e.version} does not support \`bun pm view\` (added in bun 1.3). Upgrade bun, or run \`npm view ${n.package}\` instead.`),s.push("pm","view","--",n.package,...n.fields),n.json&&s.push("--json");break}case"deno":{const o=n.package.startsWith("npm:")||n.package.startsWith("jsr:")||n.package.startsWith("https://")||n.package.startsWith("http://")||n.package.startsWith("file:")?n.package:`npm:${n.package}`;s.push("info","--",o),n.json&&s.push("--json"),n.fields.length>0&&r.push("deno info does not accept field selectors; ignoring.");break}case"npm":case"pnpm":{s.push("view","--",n.package,...n.fields),n.json&&s.push("--json");break}case"yarn":{if(e.version.startsWith("1.")){s.push("info","--",n.package);const[o,...i]=n.fields;o!==void 0&&(i.length>0&&r.push("yarn v1 only supports querying one field at a time; using the first."),s.push(o)),n.json&&s.push("--json")}else s.push("npm","info","--",n.package),n.fields.length>0&&r.push("yarn berry does not support field arguments to 'npm info'; ignoring."),n.json&&s.push("--json");break}default:{const o=e.name;throw new Error(`Unsupported package manager: ${o}`)}}return{args:s,bin:a,warnings:r}},He=(e,n,s,r,a={})=>p(e,We(e,n),s,r,a),Fe=(e,n,s,r,a={})=>e.name==="aube"?p(e,ue(n),s,r,a):f(e,()=>X(e.name,e.version,n),s,r,a),Ve=(e,n,s,r,a,o={})=>e.name==="aube"?p(e,ce(n,s),r,a,o):f(e,()=>Z(e.name,e.version,n,s),r,a,o),Ee=(e,n,s)=>{if(e.args.includes("--offline")||e.args.includes("--cached-only"))return e;const r=(a,o)=>{const i=[...e.args];return i.splice(o,0,a),{...e,args:i}};switch(n){case"aube":case"pnpm":return r("--offline",1);case"bun":return{...e,warnings:[...e.warnings,"bun x does not support --offline. Pre-install the package via `vis install` so bun x resolves from the local cache."]};case"deno":return r("--cached-only",1);case"npm":return r("--offline",1);case"yarn":return s.startsWith("1.")?r("--offline",0):{...e,warnings:[...e.warnings,"yarn berry has no --offline flag for dlx. Configure `enableNetwork: false` in .yarnrc.yml or set `enableMirror: true` for offline-first behavior."]};default:{const a=n;return{...e,warnings:[...e.warnings,`applyDlxOffline: unsupported pm ${String(a)}`]}}}},Ye=(e,n,s,r,a={})=>{let o=e.name==="aube"?te(n):F(e.name,e.version,n);return a.offline&&(o=Ee(o,e.name,e.version)),p(e,o,s,r,{dry:a.dry,env:a.env})},Ge=(e,n,s,r,a={})=>e.name==="aube"?p(e,pe(n),s,r,a):f(e,()=>ee(e.name,e.version,n),s,r,a),Ke=(e,n,s,r,a,o={})=>{if(e.name==="aube")return p(e,de(n,s),r,a,o);const i=be(e,n,s);return i.kind==="skip"?(a.warn(`warning: ${i.warning}`),0):i.kind==="rewrite"?p(e,{args:i.args,bin:i.bin,warnings:i.warning?[i.warning]:[]},r,a,o):f(e,()=>ne(e.name,e.version,n,s),r,a,o)};export{Ye as $,Ke as B,Ne as D,ze as E,Ue as I,Se as M,He as P,qe as R,Ve as S,Ge as W,Be as h,Fe as j,Te as p,fe as s,Le as v,ve as w,Je as x};
@@ -0,0 +1 @@
1
+ import{createRequire as w}from"node:module";import{s as l}from"./index-CgcF6_wo.js";import{f as T,a as R,m as p}from"./index-BDmTbWX1.js";import{g as A,l as M}from"../packem_chunks/bin.js";import{a as P}from"../packem_chunks/config.js";const k=w(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_=t=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[e,s]=u.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return u.getBuiltinModule(t)}return k(t)},{rmSync:f,writeFileSync:j}=_("node:fs"),U=8,$=async(t,e,s)=>{if(t.length===0)return[];const o=Math.max(1,Math.min(e,t.length)),a=Array.from({length:t.length});let r=0;const i=async()=>{for(;r<t.length;){const n=r;r+=1;const c=t[n];a[n]=await s(c,n)}};return await Promise.all(Array.from({length:o},()=>i())),a},g=2,C=1800*1e3,S=15e3,v=()=>p(A(),"packuments"),y=t=>p(v(),`${encodeURIComponent(t)}.json`),D=t=>{const e=y(t);if(T(e))try{const s=P(e);if(s.cacheVersion!==g){f(e,{force:!0});return}if(Date.now()-s.createdAt>s.ttlMs){f(e,{force:!0});return}return s.packument}catch{f(e,{force:!0});return}},N=(t,e,s)=>{R(v());const o={cacheVersion:g,createdAt:Date.now(),packument:e,ttlMs:s};j(y(t),JSON.stringify(o),"utf8")},O=t=>{const e={},s=t.versions??{};for(const[a,r]of Object.entries(s)){const i=r.dist,n={version:a};if(r._npmUser!==void 0&&(n._npmUser=r._npmUser),r.maintainers!==void 0&&(n.maintainers=r.maintainers),r.bin!==void 0&&(n.bin=r.bin),i!==void 0){const c={};i.signatures!==void 0&&(c.signatures=i.signatures),i.attestations!==void 0&&(c.attestations=i.attestations),typeof i.integrity=="string"&&(c.integrity=i.integrity),typeof i.tarball=="string"&&(c.tarball=i.tarball),n.dist=c}r.repository!==void 0&&(n.repository=r.repository),r.license!==void 0&&(n.license=r.license),typeof r.readme=="string"&&(n.readme=r.readme),typeof r.readmeFilename=="string"&&(n.readmeFilename=r.readmeFilename),typeof r.private=="boolean"&&(n.private=r.private),typeof r.deprecated=="string"&&(n.deprecated=r.deprecated),r.scripts!==void 0&&typeof r.scripts=="object"&&(n.scripts=r.scripts),e[a]=n}const o={name:typeof t.name=="string"?t.name:"",versions:e};return t["dist-tags"]!==void 0&&(o["dist-tags"]=t["dist-tags"]),t.time!==void 0&&(o.time=t.time),typeof t.readme=="string"&&(o.readme=t.readme),o},E=t=>{const e={Accept:"application/json"};return t!==void 0&&t!==""&&(e.Authorization=`Bearer ${t}`),e},F=async(t,e)=>{if(e.registryUrl!==void 0)return{authToken:e.authToken,url:e.registryUrl};if(e.workspaceRoot!==void 0){const{getRegistryForPackage:s,loadNpmrc:o}=await import("../packem_chunks/bin.js").then(n=>n.bx),a=o(e.workspaceRoot),{token:r,url:i}=s(t,a);return{authToken:e.authToken??r,url:i}}return{authToken:e.authToken,url:"https://registry.npmjs.org"}},V=async(t,e={})=>{const s=e.cacheTtlMs??C,o=D(t);if(o!==void 0)return o;const a=await F(t,e),r=`${a.url.endsWith("/")?a.url.slice(0,-1):a.url}/${t.replace("/","%2f")}`,i=new AbortController,n=setTimeout(()=>{i.abort()},S),c=()=>{i.abort()};e.signal?.addEventListener("abort",c,{once:!0});try{const d=await fetch(r,{headers:E(a.authToken),signal:i.signal});if(d.status===404)return;if(!d.ok)throw new Error(`Registry returned ${String(d.status)} for ${t}`);const b=await d.json(),m=O(b);return N(t,m,s),m}finally{clearTimeout(n),e.signal?.removeEventListener("abort",c)}},H=(t,e)=>{const s=Object.keys(t.versions);if(s.length===0)return;if(e===void 0||e===""||e==="latest")return t["dist-tags"]?.latest??s.at(-1);const o=t["dist-tags"]?.[e];return o!==void 0?o:Object.hasOwn(t.versions,e)?e:l.maxSatisfying(s,e)??void 0},h=(t,e)=>t.versions[e]?.dist?.attestations?.provenance!==void 0,x=(t,e)=>l.valid(e)?Object.keys(t.versions).filter(s=>l.valid(s)!==null&&l.lt(s,e)).filter(s=>l.satisfies(s,"*",{includePrerelease:!1})).filter(s=>h(t,s)).sort((s,o)=>l.lt(s,o)?1:-1)[0]:void 0,I=async(t,e={})=>{if(M("provenance"))return[];const s=new Set(e.allowlist),o=e.concurrency??U;return(await $(t,o,async({name:a,version:r})=>{if(s.has(a))return;const i=await V(a,{workspaceRoot:e.workspaceRoot});if(i===void 0||h(i,r))return;const n=x(i,r);if(n!==void 0)return{packageName:a,priorVersionWithProvenance:n,version:r}})).filter(a=>a!==void 0)};export{U as D,H as a,x as f,V as g,$ as m,I as r};