@memberjunction/cli 6.1.0-edge.5 → 6.1.0-edge.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/commands/dev/workspace/index.d.ts +9 -0
- package/dist/commands/dev/workspace/index.d.ts.map +1 -1
- package/dist/commands/dev/workspace/index.js +82 -6
- package/dist/commands/dev/workspace/index.js.map +1 -1
- package/dist/config.d.ts +127 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -2
- package/dist/config.js.map +1 -1
- package/dist/hooks/prerun.d.ts +6 -0
- package/dist/hooks/prerun.d.ts.map +1 -1
- package/dist/hooks/prerun.js +29 -3
- package/dist/hooks/prerun.js.map +1 -1
- package/dist/lib/dev-workspace/build.d.ts +155 -18
- package/dist/lib/dev-workspace/build.d.ts.map +1 -1
- package/dist/lib/dev-workspace/build.js +522 -39
- package/dist/lib/dev-workspace/build.js.map +1 -1
- package/dist/lib/dev-workspace/detect.d.ts +14 -1
- package/dist/lib/dev-workspace/detect.d.ts.map +1 -1
- package/dist/lib/dev-workspace/detect.js +60 -3
- package/dist/lib/dev-workspace/detect.js.map +1 -1
- package/dist/lib/dev-workspace/doctor.d.ts +17 -1
- package/dist/lib/dev-workspace/doctor.d.ts.map +1 -1
- package/dist/lib/dev-workspace/doctor.js +92 -1
- package/dist/lib/dev-workspace/doctor.js.map +1 -1
- package/dist/lib/dev-workspace/types.d.ts +185 -2
- package/dist/lib/dev-workspace/types.d.ts.map +1 -1
- package/dist/lib/dev-workspace/usage.d.ts.map +1 -1
- package/dist/lib/dev-workspace/usage.js +5 -3
- package/dist/lib/dev-workspace/usage.js.map +1 -1
- package/dist/lib/dynamic-packages.d.ts +31 -0
- package/dist/lib/dynamic-packages.d.ts.map +1 -0
- package/dist/lib/dynamic-packages.js +56 -0
- package/dist/lib/dynamic-packages.js.map +1 -0
- package/oclif.manifest.json +1802 -1742
- package/package.json +22 -21
package/dist/hooks/prerun.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { Hook } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Mirror of `DYNAMIC_PACKAGES_MODE_ENV_VAR` from @memberjunction/dynamic-packages, inlined so
|
|
4
|
+
* LIGHT commands (version, help, migrate, …) do not pay for that package — and its cosmiconfig
|
|
5
|
+
* import — at startup. `dynamic-packages.test.ts` asserts the two stay equal.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DYNAMIC_PACKAGES_MODE_ENV_VAR = "MJ_DYNAMIC_PACKAGES";
|
|
2
8
|
declare const hook: Hook<'prerun'>;
|
|
3
9
|
export default hook;
|
|
4
10
|
//# sourceMappingURL=prerun.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerun.d.ts","sourceRoot":"","sources":["../../src/hooks/prerun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"prerun.d.ts","sourceRoot":"","sources":["../../src/hooks/prerun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAKnC;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AA6BnE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,QAAQ,CAqFxB,CAAC;AA0BF,eAAe,IAAI,CAAC"}
|
package/dist/hooks/prerun.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import figlet from 'figlet';
|
|
2
2
|
import { INTERACTIVE_ENV, ResolveOutputFormat, ShouldSuppressChrome } from '@memberjunction/cli-core';
|
|
3
3
|
import { LIGHT_COMMANDS } from '../light-commands.js';
|
|
4
|
+
/**
|
|
5
|
+
* Mirror of `DYNAMIC_PACKAGES_MODE_ENV_VAR` from @memberjunction/dynamic-packages, inlined so
|
|
6
|
+
* LIGHT commands (version, help, migrate, …) do not pay for that package — and its cosmiconfig
|
|
7
|
+
* import — at startup. `dynamic-packages.test.ts` asserts the two stay equal.
|
|
8
|
+
*/
|
|
9
|
+
export const DYNAMIC_PACKAGES_MODE_ENV_VAR = 'MJ_DYNAMIC_PACKAGES';
|
|
4
10
|
/**
|
|
5
11
|
* Strips a global boolean flag from argv in place and reports whether it was there.
|
|
6
12
|
*
|
|
@@ -47,6 +53,13 @@ const hook = async function (options) {
|
|
|
47
53
|
if (noBanner) {
|
|
48
54
|
process.env.MJ_CLI_NO_BANNER = '1';
|
|
49
55
|
}
|
|
56
|
+
// `--no-app-packages` skips loading the installed Open Apps' server packages (and the host's
|
|
57
|
+
// generated packages) for this one invocation, so e.g. `mj sync push` writes with the generic
|
|
58
|
+
// BaseEntity — no custom Save() logic, no lifecycle hooks. It rides the same env var the
|
|
59
|
+
// loader honours everywhere (`MJ_DYNAMIC_PACKAGES=none`), so scripts can set either.
|
|
60
|
+
if (takeGlobalFlag(argv, '--no-app-packages')) {
|
|
61
|
+
process.env[DYNAMIC_PACKAGES_MODE_ENV_VAR] = 'none';
|
|
62
|
+
}
|
|
50
63
|
// Decide chrome with the SAME resolver the commands themselves use, rather than
|
|
51
64
|
// re-deriving the format from argv here. The two views drifting is not hypothetical:
|
|
52
65
|
// while this hook only looked for `--format` in argv, `MJ_CLI_FORMAT=json mj codegen`
|
|
@@ -64,11 +77,12 @@ const hook = async function (options) {
|
|
|
64
77
|
// ShouldSuppressChrome covers both machine formats and a redirected stdout: a caller
|
|
65
78
|
// that piped us has already said it is a machine, and a banner in its capture buffer
|
|
66
79
|
// is pure noise.
|
|
80
|
+
const verbose = argv.includes('--verbose') || argv.includes('-v');
|
|
67
81
|
if (noBanner || quiet || ShouldSuppressChrome(format)) {
|
|
68
82
|
// Still conditionally load bootstrap — just no decorative output. (The old `--json`
|
|
69
83
|
// branch returned *without* loading it, which would have silently skipped class
|
|
70
84
|
// registration for any heavy command that later grew a `--json` flag.)
|
|
71
|
-
return await maybeLoadBootstrap(options);
|
|
85
|
+
return await maybeLoadBootstrap(options, verbose);
|
|
72
86
|
}
|
|
73
87
|
// Suppress the large figlet banner for hot-path, frequently-run commands (e.g. `mj sync *`)
|
|
74
88
|
// and the agent-facing usage commands, where it's pure scrollback cost. The
|
|
@@ -92,17 +106,29 @@ const hook = async function (options) {
|
|
|
92
106
|
if (options.Command.id !== 'version' && !isUsageCommand) {
|
|
93
107
|
options.context.log(options.config.userAgent + '\n');
|
|
94
108
|
}
|
|
95
|
-
await maybeLoadBootstrap(options);
|
|
109
|
+
await maybeLoadBootstrap(options, verbose);
|
|
96
110
|
};
|
|
97
111
|
/**
|
|
98
112
|
* Conditionally load MJ bootstrap for heavy commands. Light commands (version,
|
|
99
113
|
* help, bump, migrate, clean, install, dbdoc/*, usage/*) skip the ~1,400 class
|
|
100
114
|
* registrations for instant startup.
|
|
115
|
+
*
|
|
116
|
+
* Heavy commands then load the installed Open Apps' server packages (and the host's generated
|
|
117
|
+
* packages) through @memberjunction/dynamic-packages — AFTER the manifest, so an app's
|
|
118
|
+
* @RegisterClass wins via load-order priority, and BEFORE the command opens a database
|
|
119
|
+
* provider, the same ordering MJAPI uses. This is what makes `mj sync push`, `mj app …`,
|
|
120
|
+
* `mj test` and every other command construct an app's real entity subclasses instead of
|
|
121
|
+
* falling back to BaseEntity (issue #4199). The process ID is `cli:<command id>`, so entries
|
|
122
|
+
* can be scoped to `cli`, `cli:sync`, or one command.
|
|
101
123
|
*/
|
|
102
|
-
async function maybeLoadBootstrap(options) {
|
|
124
|
+
async function maybeLoadBootstrap(options, verbose = false) {
|
|
103
125
|
const commandId = options.Command.id ?? '';
|
|
104
126
|
if (!LIGHT_COMMANDS.has(commandId)) {
|
|
127
|
+
// Both modules are dynamic-imported so light commands keep their instant startup (the
|
|
128
|
+
// config module's cosmiconfig search runs at import time).
|
|
105
129
|
await import('@memberjunction/server-bootstrap-lite/mj-class-registrations');
|
|
130
|
+
const { loadDynamicPackagesForCommand } = await import('../lib/dynamic-packages.js');
|
|
131
|
+
await loadDynamicPackagesForCommand(commandId, { verbose });
|
|
106
132
|
}
|
|
107
133
|
}
|
|
108
134
|
export default hook;
|
package/dist/hooks/prerun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerun.js","sourceRoot":"","sources":["../../src/hooks/prerun.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prerun.js","sourceRoot":"","sources":["../../src/hooks/prerun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,25 @@
|
|
|
1
|
-
import type { CandidateRepo, DevDepConflict, DuplicateFamilyPackage, PackageExtension, RootPackageJsonResult, TurboJsonResult } from './types.js';
|
|
1
|
+
import type { CandidateRepo, DevDepConflict, DuplicateClientPackage, DuplicateFamilyPackage, DuplicateProviderLink, MemberPackageJson, OpenAppClientPackage, PackageExtension, RootPackageJsonResult, ShellPeerGap, TurboJsonResult, WorkspaceShell } from './types.js';
|
|
2
2
|
/** Build-scripts allowlist proven on the core-monorepo spike. */
|
|
3
3
|
export declare const ONLY_BUILT_DEPENDENCIES: readonly string[];
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The one .npmrc settings line. The peer settings that used to sit beside it
|
|
6
|
+
* (`strict-peer-dependencies`, `auto-install-peers`) now live in
|
|
7
|
+
* `pnpm-workspace.yaml` with the rest of the pnpm settings — see
|
|
8
|
+
* {@link PEER_INSTALL_SETTINGS}.
|
|
9
|
+
*/
|
|
5
10
|
export declare const NPMRC_BASE_LINES: readonly string[];
|
|
11
|
+
/**
|
|
12
|
+
* Peer-resolution settings for the parent workspace, emitted into
|
|
13
|
+
* `pnpm-workspace.yaml`. Peers are auto-installed but NOT strict: a mixed
|
|
14
|
+
* workspace links MJ from source while a member may still resolve published
|
|
15
|
+
* packages (Skip-Brain's `@mj-biz-apps/*` 5.33) whose peer ranges name an older
|
|
16
|
+
* MJ major than the linked source — a strict install fails on peers no member
|
|
17
|
+
* can fix, while a non-strict one reports them and completes.
|
|
18
|
+
*/
|
|
19
|
+
export declare const PEER_INSTALL_SETTINGS: {
|
|
20
|
+
readonly strictPeerDependencies: false;
|
|
21
|
+
readonly autoInstallPeers: true;
|
|
22
|
+
};
|
|
6
23
|
/**
|
|
7
24
|
* Packages an MJ library declares as a `peerDependency` because the choice belongs
|
|
8
25
|
* to the app shell, not the library — the auth SDK family especially, where a shell
|
|
@@ -12,6 +29,11 @@ export declare const NPMRC_BASE_LINES: readonly string[];
|
|
|
12
29
|
*
|
|
13
30
|
* Kept here (rather than as prose) so the command's guidance text has one source of
|
|
14
31
|
* truth. Grouped by the MJ package whose peer declaration creates the requirement.
|
|
32
|
+
*
|
|
33
|
+
* Scope: this list covers MJ's OWN libraries. Open App client packages declare shell-provided
|
|
34
|
+
* peers too, and they are NOT enumerated here — MJ's CLI does not hardcode knowledge of specific
|
|
35
|
+
* Open App repos. They are DERIVED instead, per shell, by {@link ResolveShellPeerGaps} from the
|
|
36
|
+
* members' committed `mj-app.json` files (#4364).
|
|
15
37
|
*/
|
|
16
38
|
export declare const SHELL_PROVIDED_PEERS: ReadonlyArray<{
|
|
17
39
|
Library: string;
|
|
@@ -43,12 +65,23 @@ export declare const PEER_DEPENDENCY_RULES: {
|
|
|
43
65
|
export declare const FALLBACK_PNPM_PIN = "pnpm@10.33.0";
|
|
44
66
|
/** The proven root-manifest devDependency baseline; fills gaps the union leaves. */
|
|
45
67
|
export declare const BASELINE_DEV_DEPENDENCIES: Readonly<Record<string, string>>;
|
|
68
|
+
/**
|
|
69
|
+
* The #3795 guard, made explicit for admitted app shells: every package an `--apps` glob
|
|
70
|
+
* enumerates must have a name no other workspace package uses, or pnpm would silently pick one.
|
|
71
|
+
* Throws naming both sides; returns the admitted app package names otherwise. Pure.
|
|
72
|
+
*/
|
|
73
|
+
export declare function AssertAppPackageNamesUnique(members: ReadonlyArray<Pick<CandidateRepo, 'Name' | 'Packages' | 'AppGlobs'>>): string[];
|
|
46
74
|
/**
|
|
47
75
|
* Builds `pnpm-workspace.yaml`: per member (sorted by name) the repo root plus the
|
|
48
76
|
* member's own packages-rooted workspace globs re-prefixed with its directory name.
|
|
49
77
|
* Producer packages only — never `apps/*` (app-shell names collide across repos).
|
|
78
|
+
*
|
|
79
|
+
* `settings` — the assembled pnpm settings from {@link BuildRootPackageJson}
|
|
80
|
+
* (`PnpmSettings`: overrides, patches, peer rules, the peer install switches) —
|
|
81
|
+
* are appended as block YAML. pnpm 10 honours them ONLY in this file; the same
|
|
82
|
+
* block in the root package.json is ignored with a per-field warning.
|
|
50
83
|
*/
|
|
51
|
-
export declare function BuildWorkspaceYaml(members: ReadonlyArray<Pick<CandidateRepo, 'Name' | 'WorkspaceGlobs'>>): string;
|
|
84
|
+
export declare function BuildWorkspaceYaml(members: ReadonlyArray<Pick<CandidateRepo, 'Name' | 'WorkspaceGlobs' | 'AppGlobs'>>, settings?: Readonly<Record<string, unknown>>): string;
|
|
52
85
|
/**
|
|
53
86
|
* Renders the shell-dependency guidance the command prints — the replacement for
|
|
54
87
|
* the deleted hoist block. Derived from {@link SHELL_PROVIDED_PEERS} so the advice
|
|
@@ -56,7 +89,7 @@ export declare function BuildWorkspaceYaml(members: ReadonlyArray<Pick<Candidate
|
|
|
56
89
|
*/
|
|
57
90
|
export declare function BuildShellPeerGuidance(): string[];
|
|
58
91
|
/**
|
|
59
|
-
* Builds `.npmrc`: exactly the
|
|
92
|
+
* Builds `.npmrc`: exactly the one settings line pnpm still needs there.
|
|
60
93
|
*
|
|
61
94
|
* No `public-hoist-pattern[]` block by design — see the "Why no hoist block" note
|
|
62
95
|
* at the top of this module.
|
|
@@ -110,6 +143,82 @@ export declare function CollectFamilyPackages(members: readonly CandidateRepo[])
|
|
|
110
143
|
Names: string[];
|
|
111
144
|
Duplicates: DuplicateFamilyPackage[];
|
|
112
145
|
};
|
|
146
|
+
/** The consumer-scoped links for duplicated family names plus every consumer that could not get one. */
|
|
147
|
+
export interface DuplicateProviderLinksResult {
|
|
148
|
+
/** `<consumer>><package>` -> `link:<member>/<relPath>` — ready to merge into the parent overrides. */
|
|
149
|
+
Overrides: Record<string, string>;
|
|
150
|
+
Links: DuplicateProviderLink[];
|
|
151
|
+
Unlinked: Array<{
|
|
152
|
+
Consumer: string;
|
|
153
|
+
Package: string;
|
|
154
|
+
Repo: string;
|
|
155
|
+
Reason: 'ambiguous-consumer' | 'no-own-copy';
|
|
156
|
+
}>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Keeps each member's OWN copy of a duplicated package name in front of that
|
|
160
|
+
* member's own consumers. A plain `name: workspace:*` override can only pick
|
|
161
|
+
* one provider (pnpm takes the first by sort order), so every MJ-based app repo's
|
|
162
|
+
* `mj_generatedentities` / `mj_generatedactions` collided as soon as two such
|
|
163
|
+
* repos shared a workspace: Skip-Brain's packages type-checked against MJ's
|
|
164
|
+
* generated entities and could not find their own.
|
|
165
|
+
* pnpm's `parent>child` override selector with a root-relative `link:` value
|
|
166
|
+
* scopes the fix to the consumer: `@skip-brain/core>mj_generatedentities:
|
|
167
|
+
* link:Skip-Brain/packages/GeneratedEntities` (verified live).
|
|
168
|
+
*
|
|
169
|
+
* Two consumer shapes cannot be linked and are reported instead: a consumer whose
|
|
170
|
+
* own name is duplicated (the selector would hit every copy of it), and a consumer
|
|
171
|
+
* in a member that provides no copy (nothing of its own to link to — it gets the
|
|
172
|
+
* sort-order provider like before). Pure; deterministic over sorted names.
|
|
173
|
+
*/
|
|
174
|
+
export declare function ResolveDuplicateProviderLinks(members: readonly CandidateRepo[], duplicates: readonly DuplicateFamilyPackage[]): DuplicateProviderLinksResult;
|
|
175
|
+
/**
|
|
176
|
+
* Indexes every package the workspace members provide, by package name. One lookup structure
|
|
177
|
+
* serves both "does the workspace provide this?" (what {@link CollectFamilyPackages} answers with
|
|
178
|
+
* a name list) and "what does this package declare?" — the peer resolution in
|
|
179
|
+
* {@link ResolveShellPeerGaps} needs the manifest, not just the name.
|
|
180
|
+
*/
|
|
181
|
+
export declare function IndexWorkspacePackages(members: readonly CandidateRepo[]): Map<string, MemberPackageJson>;
|
|
182
|
+
export declare function CollectOpenAppClientPackages(members: readonly CandidateRepo[], workspacePackages: ReadonlyMap<string, MemberPackageJson>): {
|
|
183
|
+
Packages: OpenAppClientPackage[];
|
|
184
|
+
Duplicates: DuplicateClientPackage[];
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* The MJ Angular app shells the workspace enumerates — the shells that could actually host an Open
|
|
188
|
+
* App client package.
|
|
189
|
+
*
|
|
190
|
+
* Structural, with no configuration, and all three conditions earn their place:
|
|
191
|
+
* - depends on `@angular/core` — a LIBRARY takes it as a peer, so this alone separates app from library;
|
|
192
|
+
* - carries an Angular application builder (`@angular/cli` / `@angular/build`) in devDependencies;
|
|
193
|
+
* - declares at least one `@memberjunction/ng-*` package — it has an MJ Angular surface.
|
|
194
|
+
*
|
|
195
|
+
* The third condition is not decoration. Without it the sole other Angular app in the MJ monorepo,
|
|
196
|
+
* `mj_angular_elements_demo`, is reported as missing five peers of packages it will never load —
|
|
197
|
+
* five warnings on every regenerate, which is how a report teaches people to stop reading it. It
|
|
198
|
+
* declares zero `@memberjunction/ng-*` packages while MJExplorer declares 22, and an Open App
|
|
199
|
+
* client package peer-depends on eleven of them, so a shell with none cannot be hosting one. It is
|
|
200
|
+
* a predicate, deliberately not a count threshold.
|
|
201
|
+
*
|
|
202
|
+
* Scope, stated rather than implied: only packages the workspace enumerates are candidates, and
|
|
203
|
+
* detection filters members' `apps/*` globs out because every Open App repo names its shells
|
|
204
|
+
* `mj_api`/`mj_explorer` and they collide (#3795). A shell under `apps/` is outside the workspace
|
|
205
|
+
* by design and is not checked here.
|
|
206
|
+
*/
|
|
207
|
+
export declare function CollectWorkspaceShells(members: readonly CandidateRepo[]): WorkspaceShell[];
|
|
208
|
+
/**
|
|
209
|
+
* Peers of the registered client-side packages that a shell cannot resolve.
|
|
210
|
+
*
|
|
211
|
+
* A peer is a gap for a shell when the workspace does not PROVIDE it and the shell does not
|
|
212
|
+
* DECLARE it. Both halves are required: without the first, every `@memberjunction/*` peer is
|
|
213
|
+
* noise; without the second, `@angular/core` is a false positive in every shell.
|
|
214
|
+
*
|
|
215
|
+
* Why this must not be auto-added to the parent manifest: an Angular dev server externalizes
|
|
216
|
+
* `@angular/*` and resolves it from the VITE ROOT (the shell), so the copy `auto-install-peers`
|
|
217
|
+
* places in the consumer's own tree is never consulted — measured, with a control, on 2026-09-11.
|
|
218
|
+
* The fix belongs in the shell's own tracked package.json, which is what {@link SHELL_PROVIDED_PEERS}
|
|
219
|
+
* has always said and what MJExplorer already does for `@angular/service-worker`.
|
|
220
|
+
*/
|
|
221
|
+
export declare function ResolveShellPeerGaps(clientPackages: readonly OpenAppClientPackage[], shells: readonly WorkspaceShell[], workspacePackages: ReadonlyMap<string, MemberPackageJson>, overrides: Readonly<Record<string, string>>): ShellPeerGap[];
|
|
113
222
|
/** The unioned member pnpm blocks, ready for the parent manifest. */
|
|
114
223
|
export interface MemberPnpmBlocksResult {
|
|
115
224
|
Overrides: Record<string, string>;
|
|
@@ -139,24 +248,52 @@ export interface MemberPnpmBlocksResult {
|
|
|
139
248
|
* ignoreMissing set-unioned.
|
|
140
249
|
*/
|
|
141
250
|
export declare function ResolveMemberPnpmBlocks(members: readonly CandidateRepo[]): MemberPnpmBlocksResult;
|
|
142
|
-
/**
|
|
143
|
-
|
|
144
|
-
* first: lockfile-derived pins < explicit member overrides < family
|
|
145
|
-
* `workspace:*` (local source always wins). A member's or family's whole-name
|
|
146
|
-
* entry displaces every per-major pin selector for that name (a plain key and
|
|
147
|
-
* a `name@^N` selector must not fight). Displacements are returned so the
|
|
148
|
-
* command reports them — nothing is overwritten silently.
|
|
149
|
-
*/
|
|
150
|
-
export declare function AssembleParentOverrides(lockfilePins: Record<string, string>, memberOverrides: Record<string, string>, familyNames: readonly string[]): {
|
|
251
|
+
/** The assembled parent overrides plus every decision the layering made. */
|
|
252
|
+
export interface AssembledOverrides {
|
|
151
253
|
Overrides: Record<string, string>;
|
|
254
|
+
/** Entries a stronger layer displaced (lockfile pins, member overrides, or both). */
|
|
152
255
|
SupersededPins: string[];
|
|
153
|
-
|
|
256
|
+
/** Override keys written from a member's `patchedDependencies` key — the patched exact version wins. */
|
|
257
|
+
PatchPins: string[];
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Layers the override sources into the parent overrides, weakest first:
|
|
261
|
+
* lockfile-derived pins < explicit member overrides < patched-package pins <
|
|
262
|
+
* family `workspace:*` (local source always wins). A member's or family's
|
|
263
|
+
* whole-name entry displaces every per-major pin selector for that name (a plain
|
|
264
|
+
* key and a `name@^N` selector must not fight). Displacements are returned so
|
|
265
|
+
* the command reports them — nothing is overwritten silently.
|
|
266
|
+
*
|
|
267
|
+
* `patchedPackages` are the members' `patchedDependencies` keys (`name@version`);
|
|
268
|
+
* see {@link pinPatchedPackage} for why a patch outranks an override.
|
|
269
|
+
*/
|
|
270
|
+
export declare function AssembleParentOverrides(lockfilePins: Record<string, string>, memberOverrides: Record<string, string>, familyNames: readonly string[], patchedPackages?: readonly string[]): AssembledOverrides;
|
|
154
271
|
/**
|
|
155
|
-
* Builds the
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
272
|
+
* Builds the pnpm settings for `pnpm-workspace.yaml` from the assembled parts,
|
|
273
|
+
* omitting empty sections: the peer install switches, the peer bridge rules, the
|
|
274
|
+
* layered overrides, hoisted patches and package extensions. Key order is fixed
|
|
275
|
+
* so a regenerated workspace is byte-identical.
|
|
276
|
+
*/
|
|
277
|
+
export declare function BuildPnpmWorkspaceSettings(overrides: Record<string, string>, blocks: MemberPnpmBlocksResult): Record<string, unknown>;
|
|
278
|
+
/**
|
|
279
|
+
* Builds the private parent `package.json` — pnpm pin and the cleaned member
|
|
280
|
+
* devDependency union — and, alongside it, the pnpm settings the workspace yaml
|
|
281
|
+
* carries: member overrides and patches hoisted, lockfile-derived pins,
|
|
282
|
+
* patched-package pins, and `workspace:*` overrides for every member-provided
|
|
283
|
+
* package. The settings are returned rather than written into the manifest
|
|
284
|
+
* because pnpm 10 ignores a `pnpm` block at a workspace root. Every decision
|
|
285
|
+
* lands in the returned Report.
|
|
286
|
+
*/
|
|
287
|
+
/**
|
|
288
|
+
* The parent manifest's `dependencies`: every member-PROVIDED client-side package at
|
|
289
|
+
* `workspace:*`.
|
|
290
|
+
*
|
|
291
|
+
* This key is what puts the package at the parent's `node_modules` root, which is the only place
|
|
292
|
+
* an app shell that never declared it can resolve it from. An unprovided package is skipped — a
|
|
293
|
+
* `workspace:*` specifier on a package nothing provides is unresolvable and fails the install, the
|
|
294
|
+
* same reasoning as the devDependency union's `DroppedWorkspace` branch.
|
|
159
295
|
*/
|
|
296
|
+
export declare function BuildClientDependencies(clientPackages: readonly OpenAppClientPackage[]): Record<string, string>;
|
|
160
297
|
export declare function BuildRootPackageJson(parentDirName: string, members: readonly CandidateRepo[]): RootPackageJsonResult;
|
|
161
298
|
/**
|
|
162
299
|
* Marker value the sentinel carries. `mj dev workspace clean` refuses to delete a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/lib/dev-workspace/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/lib/dev-workspace/build.ts"],"names":[],"mappings":"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"}
|