@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.
Files changed (36) hide show
  1. package/README.md +23 -0
  2. package/dist/commands/dev/workspace/index.d.ts +9 -0
  3. package/dist/commands/dev/workspace/index.d.ts.map +1 -1
  4. package/dist/commands/dev/workspace/index.js +82 -6
  5. package/dist/commands/dev/workspace/index.js.map +1 -1
  6. package/dist/config.d.ts +127 -2
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +24 -2
  9. package/dist/config.js.map +1 -1
  10. package/dist/hooks/prerun.d.ts +6 -0
  11. package/dist/hooks/prerun.d.ts.map +1 -1
  12. package/dist/hooks/prerun.js +29 -3
  13. package/dist/hooks/prerun.js.map +1 -1
  14. package/dist/lib/dev-workspace/build.d.ts +155 -18
  15. package/dist/lib/dev-workspace/build.d.ts.map +1 -1
  16. package/dist/lib/dev-workspace/build.js +522 -39
  17. package/dist/lib/dev-workspace/build.js.map +1 -1
  18. package/dist/lib/dev-workspace/detect.d.ts +14 -1
  19. package/dist/lib/dev-workspace/detect.d.ts.map +1 -1
  20. package/dist/lib/dev-workspace/detect.js +60 -3
  21. package/dist/lib/dev-workspace/detect.js.map +1 -1
  22. package/dist/lib/dev-workspace/doctor.d.ts +17 -1
  23. package/dist/lib/dev-workspace/doctor.d.ts.map +1 -1
  24. package/dist/lib/dev-workspace/doctor.js +92 -1
  25. package/dist/lib/dev-workspace/doctor.js.map +1 -1
  26. package/dist/lib/dev-workspace/types.d.ts +185 -2
  27. package/dist/lib/dev-workspace/types.d.ts.map +1 -1
  28. package/dist/lib/dev-workspace/usage.d.ts.map +1 -1
  29. package/dist/lib/dev-workspace/usage.js +5 -3
  30. package/dist/lib/dev-workspace/usage.js.map +1 -1
  31. package/dist/lib/dynamic-packages.d.ts +31 -0
  32. package/dist/lib/dynamic-packages.d.ts.map +1 -0
  33. package/dist/lib/dynamic-packages.js +56 -0
  34. package/dist/lib/dynamic-packages.js.map +1 -0
  35. package/oclif.manifest.json +1802 -1742
  36. package/package.json +22 -21
@@ -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;AAgCnC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,QAAQ,CA2ExB,CAAC;AAcF,eAAe,IAAI,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"}
@@ -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;
@@ -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
- /** The three .npmrc settings lines — strict peers has been the standard since 2026-08-07. */
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 three proven settings lines.
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
- * Layers the three override sources into the parent `pnpm.overrides`, weakest
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 private parent `package.json`: pnpm pin, the cleaned member
156
- * devDependency union, and the full absorbed `pnpm` block member overrides and
157
- * patches hoisted, lockfile-derived pins, and `workspace:*` overrides for every
158
- * member-provided package. Every decision lands in the returned Report.
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":"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"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/lib/dev-workspace/build.ts"],"names":[],"mappings":"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"}