@_linked/cli 1.46.1 → 1.47.0

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 (167) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/README.md +48 -36
  3. package/hooks/drift.cjs +169 -0
  4. package/hooks/git-hook.cjs +170 -0
  5. package/hooks/hook-shim.cjs +63 -0
  6. package/hooks/lock-at-rest.cjs +268 -0
  7. package/hooks/manifests.cjs +216 -0
  8. package/hooks/platform.cjs +25 -0
  9. package/lib/esm/app-release/build-backend.d.ts.map +1 -1
  10. package/lib/esm/app-release/build-backend.js +2 -1
  11. package/lib/esm/app-release/build-backend.js.map +1 -1
  12. package/lib/esm/cli-methods.d.ts.map +1 -1
  13. package/lib/esm/cli-methods.js +166 -150
  14. package/lib/esm/cli-methods.js.map +1 -1
  15. package/lib/esm/cli.js +20 -22
  16. package/lib/esm/cli.js.map +1 -1
  17. package/lib/esm/commands/build-app.d.ts.map +1 -1
  18. package/lib/esm/commands/build-app.js +2 -1
  19. package/lib/esm/commands/build-app.js.map +1 -1
  20. package/lib/esm/commands/build-package.d.ts.map +1 -1
  21. package/lib/esm/commands/build-package.js +6 -2
  22. package/lib/esm/commands/build-package.js.map +1 -1
  23. package/lib/esm/commands/localize.d.ts +9 -15
  24. package/lib/esm/commands/localize.d.ts.map +1 -1
  25. package/lib/esm/commands/localize.js +43 -74
  26. package/lib/esm/commands/localize.js.map +1 -1
  27. package/lib/esm/commands/setup-publish.d.ts.map +1 -1
  28. package/lib/esm/commands/setup-publish.js +22 -15
  29. package/lib/esm/commands/setup-publish.js.map +1 -1
  30. package/lib/esm/commands/start.d.ts +8 -0
  31. package/lib/esm/commands/start.d.ts.map +1 -1
  32. package/lib/esm/commands/start.js +20 -8
  33. package/lib/esm/commands/start.js.map +1 -1
  34. package/lib/esm/installed-packages.d.ts +5 -13
  35. package/lib/esm/installed-packages.d.ts.map +1 -1
  36. package/lib/esm/installed-packages.js +5 -38
  37. package/lib/esm/installed-packages.js.map +1 -1
  38. package/lib/esm/lifecycle.d.ts +35 -22
  39. package/lib/esm/lifecycle.d.ts.map +1 -1
  40. package/lib/esm/lifecycle.js +62 -36
  41. package/lib/esm/lifecycle.js.map +1 -1
  42. package/lib/esm/localize/adopt.d.ts +5 -5
  43. package/lib/esm/localize/adopt.d.ts.map +1 -1
  44. package/lib/esm/localize/adopt.js +46 -55
  45. package/lib/esm/localize/adopt.js.map +1 -1
  46. package/lib/esm/localize/app-root.d.ts +16 -0
  47. package/lib/esm/localize/app-root.d.ts.map +1 -0
  48. package/lib/esm/localize/app-root.js +94 -0
  49. package/lib/esm/localize/app-root.js.map +1 -0
  50. package/lib/esm/localize/app-setup.d.ts +21 -0
  51. package/lib/esm/localize/app-setup.d.ts.map +1 -0
  52. package/lib/esm/localize/app-setup.js +178 -0
  53. package/lib/esm/localize/app-setup.js.map +1 -0
  54. package/lib/esm/localize/delocalize.d.ts.map +1 -1
  55. package/lib/esm/localize/delocalize.js +169 -104
  56. package/lib/esm/localize/delocalize.js.map +1 -1
  57. package/lib/esm/localize/drift-hook.d.ts +18 -0
  58. package/lib/esm/localize/drift-hook.d.ts.map +1 -0
  59. package/lib/esm/localize/drift-hook.js +37 -0
  60. package/lib/esm/localize/drift-hook.js.map +1 -0
  61. package/lib/esm/localize/drift.d.ts +36 -0
  62. package/lib/esm/localize/drift.d.ts.map +1 -0
  63. package/lib/esm/localize/drift.js +34 -0
  64. package/lib/esm/localize/drift.js.map +1 -0
  65. package/lib/esm/localize/errors.d.ts +14 -8
  66. package/lib/esm/localize/errors.d.ts.map +1 -1
  67. package/lib/esm/localize/errors.js +14 -8
  68. package/lib/esm/localize/errors.js.map +1 -1
  69. package/lib/esm/localize/fsops.d.ts +11 -27
  70. package/lib/esm/localize/fsops.d.ts.map +1 -1
  71. package/lib/esm/localize/fsops.js +40 -115
  72. package/lib/esm/localize/fsops.js.map +1 -1
  73. package/lib/esm/localize/git-hooks.d.ts +33 -0
  74. package/lib/esm/localize/git-hooks.d.ts.map +1 -0
  75. package/lib/esm/localize/git-hooks.js +146 -0
  76. package/lib/esm/localize/git-hooks.js.map +1 -0
  77. package/lib/esm/localize/hook-module.d.ts +6 -0
  78. package/lib/esm/localize/hook-module.d.ts.map +1 -0
  79. package/lib/esm/localize/hook-module.js +37 -0
  80. package/lib/esm/localize/hook-module.js.map +1 -0
  81. package/lib/esm/localize/index.d.ts +14 -15
  82. package/lib/esm/localize/index.d.ts.map +1 -1
  83. package/lib/esm/localize/index.js +8 -9
  84. package/lib/esm/localize/index.js.map +1 -1
  85. package/lib/esm/localize/list.d.ts +6 -10
  86. package/lib/esm/localize/list.d.ts.map +1 -1
  87. package/lib/esm/localize/list.js +49 -189
  88. package/lib/esm/localize/list.js.map +1 -1
  89. package/lib/esm/localize/localize.d.ts +46 -62
  90. package/lib/esm/localize/localize.d.ts.map +1 -1
  91. package/lib/esm/localize/localize.js +411 -285
  92. package/lib/esm/localize/localize.js.map +1 -1
  93. package/lib/esm/localize/members.d.ts +13 -0
  94. package/lib/esm/localize/members.d.ts.map +1 -0
  95. package/lib/esm/localize/members.js +46 -0
  96. package/lib/esm/localize/members.js.map +1 -0
  97. package/lib/esm/localize/resolve.d.ts +1 -2
  98. package/lib/esm/localize/resolve.d.ts.map +1 -1
  99. package/lib/esm/localize/resolve.js +3 -5
  100. package/lib/esm/localize/resolve.js.map +1 -1
  101. package/lib/esm/localize/run.d.ts +1 -0
  102. package/lib/esm/localize/run.d.ts.map +1 -1
  103. package/lib/esm/localize/run.js +11 -6
  104. package/lib/esm/localize/run.js.map +1 -1
  105. package/lib/esm/localize/setup-lockfile.d.ts +13 -0
  106. package/lib/esm/localize/setup-lockfile.d.ts.map +1 -0
  107. package/lib/esm/localize/setup-lockfile.js +80 -0
  108. package/lib/esm/localize/setup-lockfile.js.map +1 -0
  109. package/lib/esm/utils/createPackageLocation.d.ts +4 -13
  110. package/lib/esm/utils/createPackageLocation.d.ts.map +1 -1
  111. package/lib/esm/utils/createPackageLocation.js +12 -21
  112. package/lib/esm/utils/createPackageLocation.js.map +1 -1
  113. package/lib/esm/utils/packageSetup.d.ts +5 -2
  114. package/lib/esm/utils/packageSetup.d.ts.map +1 -1
  115. package/lib/esm/utils/packageSetup.js +9 -3
  116. package/lib/esm/utils/packageSetup.js.map +1 -1
  117. package/lib/esm/utils/platform.d.ts +24 -0
  118. package/lib/esm/utils/platform.d.ts.map +1 -0
  119. package/lib/esm/utils/platform.js +62 -0
  120. package/lib/esm/utils/platform.js.map +1 -0
  121. package/lib/esm/utils/shapeReferences.d.ts.map +1 -1
  122. package/lib/esm/utils/shapeReferences.js +3 -2
  123. package/lib/esm/utils/shapeReferences.js.map +1 -1
  124. package/lib/esm/utils/spawn.d.ts +65 -0
  125. package/lib/esm/utils/spawn.d.ts.map +1 -0
  126. package/lib/esm/utils/spawn.js +181 -0
  127. package/lib/esm/utils/spawn.js.map +1 -0
  128. package/lib/esm/utils.d.ts.map +1 -1
  129. package/lib/esm/utils.js +19 -5
  130. package/lib/esm/utils.js.map +1 -1
  131. package/lib/esm/vite-config.d.ts +5 -12
  132. package/lib/esm/vite-config.d.ts.map +1 -1
  133. package/lib/esm/vite-config.js +41 -33
  134. package/lib/esm/vite-config.js.map +1 -1
  135. package/package.json +4 -3
  136. package/lib/esm/localize/ensure.d.ts +0 -44
  137. package/lib/esm/localize/ensure.d.ts.map +0 -1
  138. package/lib/esm/localize/ensure.js +0 -151
  139. package/lib/esm/localize/ensure.js.map +0 -1
  140. package/lib/esm/localize/manifest.d.ts +0 -63
  141. package/lib/esm/localize/manifest.d.ts.map +0 -1
  142. package/lib/esm/localize/manifest.js +0 -133
  143. package/lib/esm/localize/manifest.js.map +0 -1
  144. package/lib/esm/localize/one-copy-hook.d.ts +0 -16
  145. package/lib/esm/localize/one-copy-hook.d.ts.map +0 -1
  146. package/lib/esm/localize/one-copy-hook.js +0 -20
  147. package/lib/esm/localize/one-copy-hook.js.map +0 -1
  148. package/lib/esm/localize/provided.d.ts +0 -28
  149. package/lib/esm/localize/provided.d.ts.map +0 -1
  150. package/lib/esm/localize/provided.js +0 -89
  151. package/lib/esm/localize/provided.js.map +0 -1
  152. package/lib/esm/localize/prune.d.ts +0 -165
  153. package/lib/esm/localize/prune.d.ts.map +0 -1
  154. package/lib/esm/localize/prune.js +0 -619
  155. package/lib/esm/localize/prune.js.map +0 -1
  156. package/lib/esm/localize/relink.d.ts +0 -13
  157. package/lib/esm/localize/relink.d.ts.map +0 -1
  158. package/lib/esm/localize/relink.js +0 -179
  159. package/lib/esm/localize/relink.js.map +0 -1
  160. package/lib/esm/localized-dedupe.d.ts +0 -26
  161. package/lib/esm/localized-dedupe.d.ts.map +0 -1
  162. package/lib/esm/localized-dedupe.js +0 -139
  163. package/lib/esm/localized-dedupe.js.map +0 -1
  164. package/lib/esm/utils/relinkHooks.d.ts +0 -19
  165. package/lib/esm/utils/relinkHooks.d.ts.map +0 -1
  166. package/lib/esm/utils/relinkHooks.js +0 -74
  167. package/lib/esm/utils/relinkHooks.js.map +0 -1
@@ -1,165 +0,0 @@
1
- import type { ProvidedSkip } from './provided.js';
2
- import type { ManifestEntry } from './manifest.js';
3
- import type { Deps } from './run.js';
4
- /** What pruning reads from a command's options. */
5
- export interface PruneOptions {
6
- /** On unless explicitly false. */
7
- prune?: boolean;
8
- }
9
- /** Limit a prune to some checkouts and/or some dependency names. */
10
- export interface PruneScope {
11
- /** Only these localized packages' checkouts. */
12
- owners?: string[];
13
- /** Only these dependency names (the first pass; later passes take every candidate of `owners`). */
14
- deps?: string[];
15
- }
16
- /** The rule's names (every localized sibling among them) and what the rule skipped. */
17
- export interface Candidates {
18
- names: Set<string>;
19
- skipped: Map<string, ProvidedSkip>;
20
- }
21
- /** The rule (`providedPackages`, provided.ts) over `entries`, plus every entry (sibling). */
22
- export declare function candidatesFor(entries: Record<string, ManifestEntry>, deps: Pick<Deps, 'appRoot'>): Candidates;
23
- /**
24
- * Does the app's installed `version` satisfy `range`? `null` means "cannot
25
- * tell" -- a dist-tag, `file:`, `npm:`, `workspace:`, a git URL, or a version
26
- * that is not one -- and every caller then keeps the copy. The failure mode is
27
- * therefore always the safe one: a copy kept that could have gone, never a
28
- * copy removed that was needed.
29
- *
30
- * npm's own `semver` decides, so prereleases follow npm's rule: `1.3.0-beta.1`
31
- * satisfies a range only when one of its comparators names a prerelease on
32
- * the same `major.minor.patch`.
33
- */
34
- export declare function satisfies(version: string, range: string): boolean | null;
35
- /** Pruning is on unless a caller says `{prune: false}`. */
36
- export declare function shouldPrune(opts?: PruneOptions): boolean;
37
- /** Is pruning on for this recorded checkout? `--no-prune` at localize/adopt records `prune: false`. */
38
- export declare function prunesEntry(entry: Pick<ManifestEntry, 'prune'>): boolean;
39
- /** prune repeats until a pass removes nothing, at most this many passes. */
40
- export declare const MAX_PRUNE_PASSES = 5;
41
- /** A range that resolves to a copy: who asks, and what. */
42
- interface Ask {
43
- from: string;
44
- range: string;
45
- }
46
- /** One copy in a checkout's `node_modules`, and what pruning decides about it. */
47
- export interface PruneDecision {
48
- /** The localized package whose checkout holds the copy. */
49
- ownerName: string;
50
- /** Its checkout, relative to the app root. */
51
- owner: string;
52
- dep: string;
53
- /** `<nm>/<dep>`, absolute. */
54
- dir: string;
55
- /** `dir` relative to the app root. */
56
- where: string;
57
- nm: string;
58
- version: string;
59
- /** The app's version. */
60
- app: string;
61
- sibling: boolean;
62
- action: 'remove' | 'keep';
63
- /**
64
- * Why a copy stays: `range` -- a range that loads it is one the app's
65
- * version misses (or one that cannot be read); `context` -- removing it
66
- * would change what its own dependencies resolve to.
67
- */
68
- reason?: 'range' | 'context';
69
- /** The ranges the app's version does not satisfy (`range`), or a sibling's drift (`remove`). */
70
- unmet: Ask[];
71
- /** `context`: the dependency that would resolve elsewhere, and both versions. */
72
- context?: {
73
- dep: string;
74
- here: string;
75
- app: string | null;
76
- };
77
- }
78
- /** What a plan found, without touching anything. */
79
- export interface PrunePlan {
80
- remove: PruneDecision[];
81
- keep: PruneDecision[];
82
- /** Checkouts left alone because they are not under the app root. */
83
- outside: {
84
- name: string;
85
- path: string;
86
- }[];
87
- }
88
- /**
89
- * Per-call caches: a requirement index per `node_modules` (built once, see
90
- * `RequirementIndex`) and the package.json files read along the way.
91
- */
92
- export interface PruneCache {
93
- indexes: Map<string, RequirementIndex>;
94
- /** How many indexes were built -- each is one read of a whole tree. */
95
- builds: number;
96
- }
97
- export declare function newPruneCache(): PruneCache;
98
- /**
99
- * Decide, for every recorded checkout and every candidate copy in its
100
- * `node_modules`, whether pruning removes it -- without removing anything.
101
- * `pruneProvided` applies it; the run-time check (`checkOneCopy`) and
102
- * `--list` call it on its own, which is why it has to be cheap: a copy whose
103
- * checkout's own range rules it out is decided from that `package.json`
104
- * alone, and every other range comes from one requirement index per
105
- * `node_modules`, built at most once per call.
106
- *
107
- * Candidates are PER OWNER: a copy is a candidate in checkout O when the rule
108
- * provides it AND it is a localized sibling, `react`/`react-dom`, or one of
109
- * O's own runtime dependencies (`dependencies`, `peerDependencies`,
110
- * `optionalDependencies`). O's devDependencies are O's tooling, whatever
111
- * another checkout declares at runtime.
112
- */
113
- export declare function planPrune(entries: Record<string, ManifestEntry>, deps: Pick<Deps, 'appRoot'>, scope?: PruneScope, cache?: PruneCache, candidates?: Candidates): PrunePlan;
114
- /**
115
- * @param entries the localized packages: every one counts as a sibling
116
- * @param opts unused beyond `prune`, which callers check with `shouldPrune`
117
- * @param deps `{appRoot, log, warn}`
118
- * @param scope prune only some checkouts / names (the run-time check)
119
- *
120
- * A removal can make another copy removable -- the copy that went was the one
121
- * asking a range the app misses, or the one a sibling copy's dependency
122
- * resolved to -- so it plans and removes again until a pass removes nothing
123
- * (at most `MAX_PRUNE_PASSES`): one call converges. A checkout recorded with
124
- * `prune: false` is never touched.
125
- */
126
- export declare function pruneProvided(entries: Record<string, ManifestEntry>, opts: PruneOptions, deps: Pick<Deps, 'appRoot' | 'log' | 'warn'>, scope?: PruneScope, cache?: PruneCache): {
127
- removed: PruneDecision[];
128
- kept: PruneDecision[];
129
- };
130
- /**
131
- * Is `dep` -- declared by a checkout at `range` -- something the app provides,
132
- * so that its absence from the checkout's own `node_modules` is not a
133
- * dependency gone missing? `--relink` asks this before reinstalling a
134
- * checkout, so a copy pruned on purpose does not trigger a reinstall on every
135
- * postinstall. `pkg` is the checkout's `package.json`: only what would be a
136
- * candidate in THAT checkout counts.
137
- */
138
- export declare function isProvidedByApp(dep: string, range: string | undefined, entries: Record<string, ManifestEntry>, candidates: Candidates, deps: Pick<Deps, 'appRoot'>, pkg?: any): boolean;
139
- /**
140
- * Every range that would load a copy at the top of one `node_modules`: the
141
- * requirements (`dependencies`, `peerDependencies`, `optionalDependencies`) of
142
- * every installed package under it, read ONCE per `node_modules`, then asked
143
- * per name. A package counts for `<nm>/<dep>` when nothing between it and
144
- * `nm` holds its own `dep` -- Node would load the top-level copy.
145
- *
146
- * Read from npm's hidden lockfile (`node_modules/.package-lock.json`, which
147
- * npm rewrites on every install in that tree) when there is one: measured
148
- * over 21 checkouts, parsing all of them took ~45 ms where walking the same
149
- * 16,800 package.json files took 0.8 s warm and 3.4 s cold. Without one (a
150
- * tree npm did not write) the tree is walked, once. Either way a requirer is
151
- * checked against the disk when asked about -- what an earlier prune removed
152
- * asks nothing, and a copy is shadowed only by a directory that exists.
153
- */
154
- export interface RequirementIndex {
155
- asks(dep: string): Ask[];
156
- }
157
- /** `react@18.3.1 (app 19.2.0), prism-react-renderer@2.4.1 (its react would change), … and 4 more` */
158
- export declare function summarizeKept(list: PruneDecision[]): string;
159
- /** The full reason a copy stays, for `--list`. */
160
- export declare function explainKept(k: PruneDecision): string;
161
- /** The package dir's `node_modules`, and the clone root's when the package is a monorepo subdir. */
162
- export declare function nodeModulesRoots(pkgDir: any, entry: any): string[];
163
- export declare function realOrSelf(p: string): string;
164
- export {};
165
- //# sourceMappingURL=prune.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../src/localize/prune.ts"],"names":[],"mappings":"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"}