@metaobjectsdev/cli 1.0.3 → 1.0.4
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 +13 -5
- package/dist/src/commands/eject.d.ts +2 -1
- package/dist/src/commands/eject.d.ts.map +1 -1
- package/dist/src/commands/eject.js +235 -75
- package/dist/src/commands/eject.js.map +1 -1
- package/dist/src/commands/gen.d.ts.map +1 -1
- package/dist/src/commands/gen.js +119 -29
- package/dist/src/commands/gen.js.map +1 -1
- package/dist/src/commands/init.d.ts +5 -9
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +80 -384
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/verify.d.ts.map +1 -1
- package/dist/src/commands/verify.js +40 -14
- package/dist/src/commands/verify.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +36 -14
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/advisory.d.ts +6 -0
- package/dist/src/lib/advisory.d.ts.map +1 -1
- package/dist/src/lib/advisory.js +10 -0
- package/dist/src/lib/advisory.js.map +1 -1
- package/dist/src/lib/args.d.ts +18 -2
- package/dist/src/lib/args.d.ts.map +1 -1
- package/dist/src/lib/args.js +15 -3
- package/dist/src/lib/args.js.map +1 -1
- package/dist/src/lib/catalog-listing.d.ts +92 -0
- package/dist/src/lib/catalog-listing.d.ts.map +1 -0
- package/dist/src/lib/catalog-listing.js +268 -0
- package/dist/src/lib/catalog-listing.js.map +1 -0
- package/dist/src/lib/catalog.d.ts +41 -0
- package/dist/src/lib/catalog.d.ts.map +1 -0
- package/dist/src/lib/catalog.js +89 -0
- package/dist/src/lib/catalog.js.map +1 -0
- package/dist/src/lib/collection-load-options.d.ts +1 -1
- package/dist/src/lib/collection-load-options.d.ts.map +1 -1
- package/dist/src/lib/collection-load-options.js +6 -0
- package/dist/src/lib/collection-load-options.js.map +1 -1
- package/dist/src/lib/install-set.d.ts +31 -0
- package/dist/src/lib/install-set.d.ts.map +1 -0
- package/dist/src/lib/install-set.js +103 -0
- package/dist/src/lib/install-set.js.map +1 -0
- package/dist/src/lib/library-eject.d.ts +79 -0
- package/dist/src/lib/library-eject.d.ts.map +1 -0
- package/dist/src/lib/library-eject.js +241 -0
- package/dist/src/lib/library-eject.js.map +1 -0
- package/dist/src/lib/library-listing.d.ts +63 -0
- package/dist/src/lib/library-listing.d.ts.map +1 -0
- package/dist/src/lib/library-listing.js +178 -0
- package/dist/src/lib/library-listing.js.map +1 -0
- package/dist/src/lib/library-prefix-advisory.d.ts +17 -0
- package/dist/src/lib/library-prefix-advisory.d.ts.map +1 -0
- package/dist/src/lib/library-prefix-advisory.js +67 -0
- package/dist/src/lib/library-prefix-advisory.js.map +1 -0
- package/dist/src/lib/load-metaobjects-config.d.ts +1 -2
- package/dist/src/lib/load-metaobjects-config.d.ts.map +1 -1
- package/dist/src/lib/load-metaobjects-config.js +11 -17
- package/dist/src/lib/load-metaobjects-config.js.map +1 -1
- package/dist/src/lib/requirement-check.d.ts +17 -2
- package/dist/src/lib/requirement-check.d.ts.map +1 -1
- package/dist/src/lib/requirement-check.js +51 -9
- package/dist/src/lib/requirement-check.js.map +1 -1
- package/package.json +10 -10
- package/src/commands/eject.ts +304 -90
- package/src/commands/gen.ts +128 -28
- package/src/commands/init.ts +82 -390
- package/src/commands/verify.ts +47 -15
- package/src/index.ts +36 -14
- package/src/lib/advisory.ts +13 -0
- package/src/lib/args.ts +29 -5
- package/src/lib/catalog-listing.ts +369 -0
- package/src/lib/catalog.ts +107 -0
- package/src/lib/collection-load-options.ts +7 -1
- package/src/lib/install-set.ts +116 -0
- package/src/lib/library-eject.ts +298 -0
- package/src/lib/library-listing.ts +258 -0
- package/src/lib/library-prefix-advisory.ts +78 -0
- package/src/lib/load-metaobjects-config.ts +15 -21
- package/src/lib/requirement-check.ts +71 -11
|
@@ -24,6 +24,10 @@ import { TYPE_OBJECT, TYPE_REQUIREMENT, OBJECT_SUBTYPE_ENTITY, PACKAGE_SEPARATOR
|
|
|
24
24
|
// ADR-0042 package-local binding, so these moved to @metaobjectsdev/metadata rather
|
|
25
25
|
// than being reimplemented there.
|
|
26
26
|
resolveClaimTarget, resolveMember, didYouMeanHint, } from "@metaobjectsdev/metadata";
|
|
27
|
+
// FR-043 §5.4 — the provenance key for coverage activation. A node-only subpath, which
|
|
28
|
+
// is why it is a second import rather than a name on the barrel above: the library
|
|
29
|
+
// module reaches the filesystem and the root barrel stays browser-safe.
|
|
30
|
+
import { libraryPackages } from "@metaobjectsdev/metadata/library";
|
|
27
31
|
export const ERR_REQUIREMENT_LINK_ABOVE_FLOOR = "ERR_REQUIREMENT_LINK_ABOVE_FLOOR";
|
|
28
32
|
export const ERR_REQUIREMENT_DANGLING_REF = "ERR_REQUIREMENT_DANGLING_REF";
|
|
29
33
|
export const ERR_REQUIREMENT_BAD_LEVEL = "ERR_REQUIREMENT_BAD_LEVEL";
|
|
@@ -178,11 +182,41 @@ export function resolveRequirementRef(addressed, ref, referrerPkg) {
|
|
|
178
182
|
export function collectRequirements(root) {
|
|
179
183
|
return collectAddressedRequirements(root).map((r) => r.node);
|
|
180
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Did the ADOPTER author any of these requirements?
|
|
187
|
+
*
|
|
188
|
+
* FR-043 §5.4, and the rule exists because `checkRequirements` activates object
|
|
189
|
+
* coverage on the presence of any requirement at all. A library ships its own ledger
|
|
190
|
+
* — `iam` ships eleven entries — so without this, opting into a library would switch
|
|
191
|
+
* the unclaimed-entity gate on across a project that has never written a requirement,
|
|
192
|
+
* and report every entity in it. The gate would then be measuring the LIBRARY's
|
|
193
|
+
* decision to ship a ledger rather than anything the adopter did.
|
|
194
|
+
*
|
|
195
|
+
* Provenance is the library's declared PACKAGE. That is a manifest fact the standalone
|
|
196
|
+
* library gate resolves against the library loaded alone, whereas a node's source id
|
|
197
|
+
* differs between the on-disk dev layout (an absolute path) and the embedded one
|
|
198
|
+
* (`library:<ref>.yaml`) — a rule keyed on source would hold in this repo and stop
|
|
199
|
+
* holding in an installed build.
|
|
200
|
+
*
|
|
201
|
+
* An adopter OVERLAYING a library requirement (§5.5) is deliberately not authoring one:
|
|
202
|
+
* the overlay merges into the library's node, in the library's package, and disagreeing
|
|
203
|
+
* with a shipped verdict is a statement about the library's design rather than about
|
|
204
|
+
* what the adopter's own model is for. Treating it as activation would mean correcting
|
|
205
|
+
* one library entry silently acquired a coverage gate over the whole estate.
|
|
206
|
+
*/
|
|
207
|
+
function projectAuthoredRequirements(addressed) {
|
|
208
|
+
const libPkgs = libraryPackages();
|
|
209
|
+
return addressed.some((r) => {
|
|
210
|
+
const pkg = r.node.package ?? r.node.fileDefaultPackage ?? "";
|
|
211
|
+
return !libPkgs.has(pkg);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
181
214
|
export function scanRequirements(root, opts) {
|
|
182
215
|
const addressed = collectAddressedRequirements(root);
|
|
183
216
|
return {
|
|
184
217
|
addressed,
|
|
185
218
|
claimedObjects: claimedObjectKeys(root, addressed.map((r) => r.node)),
|
|
219
|
+
measureCoverage: opts?.measureCoverage ?? projectAuthoredRequirements(addressed),
|
|
186
220
|
// `exactOptionalPropertyTypes` — an omitted key, never an explicit `undefined`.
|
|
187
221
|
...(opts?.coverable !== undefined ? { coverable: opts.coverable } : {}),
|
|
188
222
|
};
|
|
@@ -266,7 +300,7 @@ function coverableEntities(root, coverable) {
|
|
|
266
300
|
*/
|
|
267
301
|
export function checkRequirements(root, scan = scanRequirements(root)) {
|
|
268
302
|
const out = [];
|
|
269
|
-
const { addressed, claimedObjects, coverable } = scan;
|
|
303
|
+
const { addressed, claimedObjects, coverable, measureCoverage } = scan;
|
|
270
304
|
if (addressed.length === 0)
|
|
271
305
|
return out; // opt-in by declaration — no requirements, nothing to say
|
|
272
306
|
for (const { node: req, path: reqPath } of addressed) {
|
|
@@ -470,7 +504,9 @@ export function checkRequirements(root, scan = scanRequirements(root)) {
|
|
|
470
504
|
//
|
|
471
505
|
// So a green run means "every entity is claimed by something", not "every node is
|
|
472
506
|
// described". The stronger reading would be false.
|
|
473
|
-
|
|
507
|
+
// ADOPTER-AUTHORED ONLY. FR-043 §5.4 — see `projectAuthoredRequirements`. A library's
|
|
508
|
+
// ledger is counted and checked, but it cannot volunteer you for coverage.
|
|
509
|
+
for (const ent of measureCoverage ? coverableEntities(root, coverable) : []) {
|
|
474
510
|
const key = ent.resolutionKey();
|
|
475
511
|
if (!claimedObjects.has(key)) {
|
|
476
512
|
out.push({
|
|
@@ -502,8 +538,8 @@ export function summariseRequirements(root, scan = scanRequirements(root)) {
|
|
|
502
538
|
byStatus: {},
|
|
503
539
|
undecided: 0,
|
|
504
540
|
deferredUntracked: 0,
|
|
505
|
-
|
|
506
|
-
|
|
541
|
+
// The coverage pair is filled in below only when the run measures coverage —
|
|
542
|
+
// `exactOptionalPropertyTypes`, so the keys are absent rather than undefined.
|
|
507
543
|
};
|
|
508
544
|
for (const req of reqs) {
|
|
509
545
|
if (req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL)
|
|
@@ -522,11 +558,17 @@ export function summariseRequirements(root, scan = scanRequirements(root)) {
|
|
|
522
558
|
// Both sides of the ratio come from the SAME scan the gate read, so the printed
|
|
523
559
|
// summary cannot disagree with the diagnostics printed beneath it — previously
|
|
524
560
|
// the same helper, now literally the same result.
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
561
|
+
if (scan.measureCoverage) {
|
|
562
|
+
const claimed = scan.claimedObjects;
|
|
563
|
+
let total = 0;
|
|
564
|
+
let claimedCount = 0;
|
|
565
|
+
for (const ent of coverableEntities(root, scan.coverable)) {
|
|
566
|
+
total++;
|
|
567
|
+
if (claimed.has(ent.resolutionKey()))
|
|
568
|
+
claimedCount++;
|
|
569
|
+
}
|
|
570
|
+
summary.entitiesTotal = total;
|
|
571
|
+
summary.entitiesClaimed = claimedCount;
|
|
530
572
|
}
|
|
531
573
|
return summary;
|
|
532
574
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirement-check.js","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requirement-check.js","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "CLI for MetaObjects: scaffold, codegen, migrate, and drift-detection commands.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -51,15 +51,15 @@
|
|
|
51
51
|
"@biomejs/js-api": "^0.7.0",
|
|
52
52
|
"@biomejs/wasm-nodejs": "^1.9.4",
|
|
53
53
|
"@libsql/kysely-libsql": "^0.4.0",
|
|
54
|
-
"@metaobjectsdev/codegen-ts": "1.0.
|
|
55
|
-
"@metaobjectsdev/codegen-ts-react": "1.0.
|
|
56
|
-
"@metaobjectsdev/codegen-ts-tanstack": "1.0.
|
|
57
|
-
"@metaobjectsdev/docs-site": "1.0.
|
|
58
|
-
"@metaobjectsdev/metadata": "1.0.
|
|
59
|
-
"@metaobjectsdev/migrate-ts": "1.0.
|
|
60
|
-
"@metaobjectsdev/render": "1.0.
|
|
61
|
-
"@metaobjectsdev/runtime-ts": "1.0.
|
|
62
|
-
"@metaobjectsdev/sdk": "1.0.
|
|
54
|
+
"@metaobjectsdev/codegen-ts": "1.0.4",
|
|
55
|
+
"@metaobjectsdev/codegen-ts-react": "1.0.4",
|
|
56
|
+
"@metaobjectsdev/codegen-ts-tanstack": "1.0.4",
|
|
57
|
+
"@metaobjectsdev/docs-site": "1.0.4",
|
|
58
|
+
"@metaobjectsdev/metadata": "1.0.4",
|
|
59
|
+
"@metaobjectsdev/migrate-ts": "1.0.4",
|
|
60
|
+
"@metaobjectsdev/render": "1.0.4",
|
|
61
|
+
"@metaobjectsdev/runtime-ts": "1.0.4",
|
|
62
|
+
"@metaobjectsdev/sdk": "1.0.4",
|
|
63
63
|
"@toon-format/toon": "^2.3.0",
|
|
64
64
|
"jiti": "^2.4.0"
|
|
65
65
|
},
|
package/src/commands/eject.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
// FR-040 §4.2(a) — `meta eject <generator
|
|
2
|
-
// generator, in any package, at any time after `meta init`.
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
1
|
+
// FR-040 §4.2(a) — `meta eject <generator>...` takes ownership of any reference-template
|
|
2
|
+
// generator, in any package, at any time after `meta init`.
|
|
3
|
+
//
|
|
4
|
+
// Under opt-in codegen this is THE copy door: `meta init` scaffolds the layout and an
|
|
5
|
+
// empty selection, so every generator an adopter runs arrives through here. It takes
|
|
6
|
+
// MANY names, because a real selection is several — choosing a client tier is
|
|
7
|
+
// `form hooks grid` — and three separate invocations produce three separate install
|
|
8
|
+
// lines for the same package. The consolidated install set is the point.
|
|
9
|
+
//
|
|
10
|
+
// It REPORTS; it never edits `metaobjects.config.ts` or `package.json`. ADR-0034 §3(c)
|
|
11
|
+
// already rules out a parameterized add/configure surface; the config is user-owned
|
|
12
|
+
// TypeScript with comments, and automated mutation of a real user config is the
|
|
13
|
+
// persistently fragile step even for well-resourced teams (Nuxt's `nuxi module add`
|
|
14
|
+
// config-array edit has regressed across at least four filed issues). The primary
|
|
15
|
+
// consumer performs two file edits and one install trivially when told exactly what
|
|
16
|
+
// they are. `meta gen` plus `tsc` is the audit.
|
|
6
17
|
import { mkdir, writeFile, stat, readFile } from "node:fs/promises";
|
|
7
18
|
import { join } from "node:path";
|
|
8
19
|
import { cliVersion } from "../lib/version.js";
|
|
@@ -13,6 +24,13 @@ import { parseEjectArgs } from "../lib/args.js";
|
|
|
13
24
|
import { log } from "../lib/log.js";
|
|
14
25
|
import { declaredDependencyNames, readPackageManifest } from "../lib/package-manifest.js";
|
|
15
26
|
import { compareOwnedCopy, type OwnedComparison } from "../lib/owned-copy.js";
|
|
27
|
+
import { composeCatalog } from "../lib/catalog.js";
|
|
28
|
+
import { installSetFor, type InstallSet } from "../lib/install-set.js";
|
|
29
|
+
import { emitStructured, type OutputFormat } from "../lib/format.js";
|
|
30
|
+
import {
|
|
31
|
+
ejectLibrary, ejectableLibraryNames, isLibraryName, libraryStaleness,
|
|
32
|
+
type LibraryEjectResult,
|
|
33
|
+
} from "../lib/library-eject.js";
|
|
16
34
|
|
|
17
35
|
// Mirrors `OWNED_GENERATORS_DIR` in init.ts's `writeOwnedGenerators` — same directory,
|
|
18
36
|
// same never-clobber-without-consent contract. Kept as its own local constant rather
|
|
@@ -291,11 +309,209 @@ async function listOutput(cwd: string): Promise<string> {
|
|
|
291
309
|
);
|
|
292
310
|
lines.push("");
|
|
293
311
|
}
|
|
312
|
+
// FR-043 — the shipped libraries, and how far this project's copies have drifted.
|
|
313
|
+
lines.push("Shipped libraries (copy one into your own sources and own it):");
|
|
314
|
+
for (const name of ejectableLibraryNames()) lines.push(` ${name}`);
|
|
315
|
+
lines.push("");
|
|
316
|
+
const staleness = await libraryStaleness(cwd);
|
|
317
|
+
if (staleness.length > 0) {
|
|
318
|
+
lines.push("Libraries this project has already ejected:");
|
|
319
|
+
for (const row of staleness) {
|
|
320
|
+
if (row.verdict === "unreadable") {
|
|
321
|
+
lines.push(` ${row.library} [ejected — NOT COMPARED: ${row.reason}]`);
|
|
322
|
+
} else if (row.verdict === "identical") {
|
|
323
|
+
lines.push(` ${row.library} [ejected — identical to the shipped library]`);
|
|
324
|
+
} else {
|
|
325
|
+
lines.push(
|
|
326
|
+
` ${row.library} [ejected — DIFFERS: ${row.changed} node(s) changed, ` +
|
|
327
|
+
`${row.upstreamOnly} only upstream, ${row.localOnly} only yours]`,
|
|
328
|
+
);
|
|
329
|
+
}
|
|
330
|
+
lines.push(` ${row.files.join(", ")}`);
|
|
331
|
+
if (row.stillOptedIn) {
|
|
332
|
+
lines.push(
|
|
333
|
+
` STILL OPTED IN — remove "${row.library}" from \`libraries\`; the shipped ` +
|
|
334
|
+
"tree and your copy both load, and deletions in yours do nothing.",
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
lines.push("");
|
|
339
|
+
lines.push(
|
|
340
|
+
" Compared through the canonical serializer in OWN mode, so re-indentation and " +
|
|
341
|
+
"key order never show up — only a declaration that actually changed. Nodes are " +
|
|
342
|
+
"matched by NAME, so renaming the package (which you may) does not read as drift.",
|
|
343
|
+
);
|
|
344
|
+
lines.push(
|
|
345
|
+
" \"only upstream\" — the library gained or you deleted. \"only yours\" — you added.",
|
|
346
|
+
);
|
|
347
|
+
lines.push("");
|
|
348
|
+
}
|
|
349
|
+
|
|
294
350
|
lines.push("Run: meta eject <name>");
|
|
295
351
|
return lines.join("\n");
|
|
296
352
|
}
|
|
297
353
|
|
|
298
|
-
|
|
354
|
+
// ---------------------------------------------------------------------------
|
|
355
|
+
// the command
|
|
356
|
+
// ---------------------------------------------------------------------------
|
|
357
|
+
|
|
358
|
+
/** One row of the `--format json` payload. */
|
|
359
|
+
interface EjectedRow {
|
|
360
|
+
name: string;
|
|
361
|
+
path: string;
|
|
362
|
+
status: EjectResult["status"];
|
|
363
|
+
/** The two edits an adopter makes in `metaobjects.config.ts`. */
|
|
364
|
+
wire: { import: string; entry: string };
|
|
365
|
+
requires: readonly string[];
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
interface EjectPayload {
|
|
369
|
+
ejected: EjectedRow[];
|
|
370
|
+
install: InstallSet;
|
|
371
|
+
/** Config keys the ejected generators read — what to set beside `generators`. */
|
|
372
|
+
config: { keys: string[] };
|
|
373
|
+
/** FR-043 — libraries ejected in this call. Absent when none were. */
|
|
374
|
+
libraries?: LibraryEjectResult[];
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** The text report for one ejected library. */
|
|
378
|
+
function reportLibrary(result: LibraryEjectResult): void {
|
|
379
|
+
const created = result.files.filter((f) => f.status !== "preserved");
|
|
380
|
+
const kept = result.files.filter((f) => f.status === "preserved");
|
|
381
|
+
if (created.length > 0) {
|
|
382
|
+
log.info(
|
|
383
|
+
`Ejected library "${result.library}" -> ${result.root}:`,
|
|
384
|
+
);
|
|
385
|
+
for (const f of created) log.info(` ${f.path} [${f.status}]`);
|
|
386
|
+
}
|
|
387
|
+
if (kept.length > 0) {
|
|
388
|
+
// Never clobber without consent — the same contract the generator path keeps, and
|
|
389
|
+
// the stakes are higher here: these files are the adopter's MODEL.
|
|
390
|
+
for (const f of kept) {
|
|
391
|
+
log.info(` ${f.path} already exists — left untouched (--force replaces it).`);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
log.info(
|
|
395
|
+
`You own this metadata now (FR-043 §3.4): rename the package, delete what you do ` +
|
|
396
|
+
`not need, change anything. Nothing regenerates it.`,
|
|
397
|
+
);
|
|
398
|
+
if (result.stillOptedIn.length > 0) {
|
|
399
|
+
// The one step that makes the eject complete. Said here AND stamped in every file,
|
|
400
|
+
// because the failure it prevents is silent in a way an adopter cannot diagnose.
|
|
401
|
+
log.info(
|
|
402
|
+
`NEXT: remove ${result.stillOptedIn.map((t) => `"${t}"`).join(", ")} from ` +
|
|
403
|
+
`\`libraries\` in .metaobjects/config.json. Left there, the shipped tree and your ` +
|
|
404
|
+
`copy BOTH load: additions take effect and deletions do NOT, because the library ` +
|
|
405
|
+
`still declares what you removed. The loader refuses it outright ` +
|
|
406
|
+
`(ERR_LIBRARY_PACKAGE_COLLISION) — your next command will fail until you do.`,
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
log.info("`meta eject --list` reports how far your copy has drifted from the shipped one.");
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Validate EVERY name before writing ANY file.
|
|
414
|
+
*
|
|
415
|
+
* A partial eject is the worst outcome available here: a non-zero exit over a repo
|
|
416
|
+
* that is half-changed, where re-running the fixed command then reports the
|
|
417
|
+
* already-copied half as "preserved" and the adopter cannot tell what happened.
|
|
418
|
+
* Returns the unknown names, or an empty array.
|
|
419
|
+
*/
|
|
420
|
+
function unknownNames(names: readonly string[]): string[] {
|
|
421
|
+
return names.filter((n) => resolveSource(n) === undefined && !isLibraryName(n));
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/** Print the per-name text report — every branch below predates this command taking
|
|
425
|
+
* more than one name, and each was written against a real incident. */
|
|
426
|
+
function reportOne(result: EjectResult, name: string): void {
|
|
427
|
+
if (result.status === "preserved") {
|
|
428
|
+
// "already exists — left untouched" was the whole message, and it answered the
|
|
429
|
+
// question nobody has. What an owner needs to know is whether their copy still
|
|
430
|
+
// matches what this CLI ships — the only way an owned generator's staleness is
|
|
431
|
+
// ever observable, since no gate compares the two.
|
|
432
|
+
if (result.comparison?.verdict === "identical") {
|
|
433
|
+
log.info(
|
|
434
|
+
`${result.path} already exists and is IDENTICAL to the ${result.packageName} ` +
|
|
435
|
+
"reference template — nothing to do.",
|
|
436
|
+
);
|
|
437
|
+
} else if (result.comparison?.verdict === "reformatted") {
|
|
438
|
+
// Worth its own branch: this is the state a project that formats what it owns
|
|
439
|
+
// is in permanently, and calling it DIFFERS taught every one of them to ignore
|
|
440
|
+
// the line that is supposed to warn them.
|
|
441
|
+
log.info(
|
|
442
|
+
`${result.path} already exists and has the SAME CONTENT as the ` +
|
|
443
|
+
`${result.packageName} reference template, in your own formatting — ` +
|
|
444
|
+
"nothing to do.",
|
|
445
|
+
);
|
|
446
|
+
} else {
|
|
447
|
+
log.info(
|
|
448
|
+
`${result.path} already exists and DIFFERS from the ${result.packageName} ` +
|
|
449
|
+
`reference template (${result.comparison?.referenceOnly ?? 0} line(s) behind it, ` +
|
|
450
|
+
`${result.comparison?.localOnly ?? 0} line(s) of your own) — left untouched.`,
|
|
451
|
+
);
|
|
452
|
+
log.info(
|
|
453
|
+
" Formatting is not counted: both files are re-formatted and their lines " +
|
|
454
|
+
"sorted before comparing, so re-wrapping and import order never show up.",
|
|
455
|
+
);
|
|
456
|
+
log.info(
|
|
457
|
+
" That difference is either YOUR customization or upstream having moved on. " +
|
|
458
|
+
"See which, before deciding:",
|
|
459
|
+
);
|
|
460
|
+
log.info(` diff -u node_modules/${result.packageName}/src/reference/${name}.ts ${result.path}`);
|
|
461
|
+
log.info(
|
|
462
|
+
" To take upstream changes AND keep your customization, three-way merge them — " +
|
|
463
|
+
"`git merge-file --diff3 <your copy> <the reference you ejected from> <the reference above>`. " +
|
|
464
|
+
"`--force` does NOT merge: it replaces the file and your customization with it.",
|
|
465
|
+
);
|
|
466
|
+
}
|
|
467
|
+
} else if (result.status === "replaced") {
|
|
468
|
+
// Never let a --force over a modified file be silent: this is the step that
|
|
469
|
+
// destroys an adopter's customization, and the file's own header is often the
|
|
470
|
+
// only record that the customization was deliberate.
|
|
471
|
+
log.info(
|
|
472
|
+
`Ejected "${name}" -> ${result.path}, REPLACING the file that was there` +
|
|
473
|
+
(result.comparison?.verdict === "differs"
|
|
474
|
+
? ` and DISCARDING ${result.comparison.localOnly} line(s) it had that the reference does not.`
|
|
475
|
+
: result.comparison?.verdict === "reformatted"
|
|
476
|
+
? " (its content was already the reference's — only your formatting is gone)."
|
|
477
|
+
: " (it was already identical to the reference)."),
|
|
478
|
+
);
|
|
479
|
+
} else {
|
|
480
|
+
log.info(`Ejected "${name}" -> ${result.path}. You own it now (ADR-0034 scaffold-and-own).`);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
// REPLACE, never "paste". A generator reaches `generators: [...]` under ONE binding,
|
|
484
|
+
// so a reader told to "paste" gets a duplicate identifier at best — and at worst
|
|
485
|
+
// deletes nothing, keeps `formFile()` in the array bound to the PACKAGE import, and
|
|
486
|
+
// silently runs the packaged generator while editing the ejected file. That failure
|
|
487
|
+
// is invisible and is the exact one ejecting exists to prevent.
|
|
488
|
+
//
|
|
489
|
+
// But eject reads no config, so it cannot know WHICH of the three states this project
|
|
490
|
+
// is in, and stating one of them as fact is wrong in the other two. Name the goal,
|
|
491
|
+
// then the three branches; the reader knows which one they are looking at.
|
|
492
|
+
log.info(`In metaobjects.config.ts, "${result.exportName}" must resolve to this file:`);
|
|
493
|
+
log.info(` ${result.importLine}`);
|
|
494
|
+
log.info(
|
|
495
|
+
` - If it is imported from "${result.packageName}", REPLACE that import with the ` +
|
|
496
|
+
"line above. Adding a second one leaves `generators` bound to the PACKAGED " +
|
|
497
|
+
"generator, and your edits to this file do nothing.",
|
|
498
|
+
);
|
|
499
|
+
log.info(
|
|
500
|
+
" - If it is already imported from ./codegen/generators/, it points here already " +
|
|
501
|
+
"— nothing to change.",
|
|
502
|
+
);
|
|
503
|
+
log.info(
|
|
504
|
+
` - If ${result.exportName}() is not in \`generators\` yet, add the import above ` +
|
|
505
|
+
"AND the entry.",
|
|
506
|
+
);
|
|
507
|
+
for (const line of result.dependencyNotes) log.info(line);
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
export async function ejectCommand(
|
|
511
|
+
args: string[],
|
|
512
|
+
cwd: string,
|
|
513
|
+
fmt: OutputFormat = "text",
|
|
514
|
+
): Promise<number> {
|
|
299
515
|
let flags;
|
|
300
516
|
try {
|
|
301
517
|
flags = parseEjectArgs(args);
|
|
@@ -309,98 +525,96 @@ export async function ejectCommand(args: string[], cwd: string): Promise<number>
|
|
|
309
525
|
return 0;
|
|
310
526
|
}
|
|
311
527
|
|
|
312
|
-
if (flags.
|
|
313
|
-
log.error(
|
|
528
|
+
if (flags.names.length === 0) {
|
|
529
|
+
log.error(
|
|
530
|
+
"meta eject requires at least one generator name, or --list to see what's ejectable. " +
|
|
531
|
+
"`meta gen --list --format json --probe` is the catalog, with a file count per " +
|
|
532
|
+
"generator for your own model.",
|
|
533
|
+
);
|
|
534
|
+
return 2;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// All-or-nothing on the names, BEFORE any write — see unknownNames().
|
|
538
|
+
const unknown = unknownNames(flags.names);
|
|
539
|
+
if (unknown.length > 0) {
|
|
540
|
+
log.error(
|
|
541
|
+
`unknown name(s): ${unknown.join(", ")}. Nothing was ejected. ` +
|
|
542
|
+
`Ejectable generators: ${ejectableNames().join(", ")}. ` +
|
|
543
|
+
`Shipped libraries: ${ejectableLibraryNames().join(", ")}. ` +
|
|
544
|
+
"Run `meta eject --list` to see them grouped.",
|
|
545
|
+
);
|
|
314
546
|
return 2;
|
|
315
547
|
}
|
|
316
548
|
|
|
549
|
+
const catalog = composeCatalog();
|
|
550
|
+
const rows: EjectedRow[] = [];
|
|
551
|
+
const libraries: LibraryEjectResult[] = [];
|
|
317
552
|
try {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
if (result.comparison?.verdict === "identical") {
|
|
325
|
-
log.info(
|
|
326
|
-
`${result.path} already exists and is IDENTICAL to the ${result.packageName} ` +
|
|
327
|
-
"reference template — nothing to do.",
|
|
328
|
-
);
|
|
329
|
-
} else if (result.comparison?.verdict === "reformatted") {
|
|
330
|
-
// Worth its own branch: this is the state a project that formats what it owns
|
|
331
|
-
// is in permanently, and calling it DIFFERS taught every one of them to ignore
|
|
332
|
-
// the line that is supposed to warn them.
|
|
333
|
-
log.info(
|
|
334
|
-
`${result.path} already exists and has the SAME CONTENT as the ` +
|
|
335
|
-
`${result.packageName} reference template, in your own formatting — ` +
|
|
336
|
-
"nothing to do.",
|
|
337
|
-
);
|
|
338
|
-
} else {
|
|
339
|
-
log.info(
|
|
340
|
-
`${result.path} already exists and DIFFERS from the ${result.packageName} ` +
|
|
341
|
-
`reference template (${result.comparison?.referenceOnly ?? 0} line(s) behind it, ` +
|
|
342
|
-
`${result.comparison?.localOnly ?? 0} line(s) of your own) — left untouched.`,
|
|
343
|
-
);
|
|
344
|
-
log.info(
|
|
345
|
-
" Formatting is not counted: both files are re-formatted and their lines " +
|
|
346
|
-
"sorted before comparing, so re-wrapping and import order never show up.",
|
|
347
|
-
);
|
|
348
|
-
log.info(
|
|
349
|
-
" That difference is either YOUR customization or upstream having moved on. " +
|
|
350
|
-
"See which, before deciding:",
|
|
351
|
-
);
|
|
352
|
-
log.info(` diff -u node_modules/${result.packageName}/src/reference/${flags.name}.ts ${result.path}`);
|
|
353
|
-
log.info(
|
|
354
|
-
" To take upstream changes AND keep your customization, three-way merge them — " +
|
|
355
|
-
"`git merge-file --diff3 <your copy> <the reference you ejected from> <the reference above>`. " +
|
|
356
|
-
"`--force` does NOT merge: it replaces the file and your customization with it.",
|
|
357
|
-
);
|
|
553
|
+
for (const name of flags.names) {
|
|
554
|
+
if (isLibraryName(name)) {
|
|
555
|
+
const lib = await ejectLibrary({ cwd, name, force: flags.force });
|
|
556
|
+
libraries.push(lib);
|
|
557
|
+
if (fmt === "text") reportLibrary(lib);
|
|
558
|
+
continue;
|
|
358
559
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
? " (its content was already the reference's — only your formatting is gone)."
|
|
369
|
-
: " (it was already identical to the reference)."),
|
|
370
|
-
);
|
|
371
|
-
} else {
|
|
372
|
-
log.info(`Ejected "${flags.name}" -> ${result.path}. You own it now (ADR-0034 scaffold-and-own).`);
|
|
560
|
+
const result = await ejectGenerator({ cwd, name, force: flags.force });
|
|
561
|
+
rows.push({
|
|
562
|
+
name,
|
|
563
|
+
path: result.path,
|
|
564
|
+
status: result.status,
|
|
565
|
+
wire: { import: result.importLine, entry: `${result.exportName}()` },
|
|
566
|
+
requires: catalog[name]?.requires ?? [],
|
|
567
|
+
});
|
|
568
|
+
if (fmt === "text") reportOne(result, name);
|
|
373
569
|
}
|
|
374
|
-
// REPLACE, never "paste". A generator reaches `generators: [...]` under ONE binding,
|
|
375
|
-
// so a reader told to "paste" gets a duplicate identifier at best — and at worst
|
|
376
|
-
// deletes nothing, keeps `formFile()` in the array bound to the PACKAGE import, and
|
|
377
|
-
// silently runs the packaged generator while editing the ejected file. That failure
|
|
378
|
-
// is invisible and is the exact one ejecting exists to prevent.
|
|
379
|
-
//
|
|
380
|
-
// But eject reads no config, so it cannot know WHICH of the three states this project
|
|
381
|
-
// is in, and stating one of them as fact is wrong in the other two — including for the
|
|
382
|
-
// five `meta init` scaffolds, whose config already imports from ./codegen/generators/,
|
|
383
|
-
// which is precisely the `meta eject <name> --force` re-sync case. Name the goal, then
|
|
384
|
-
// the three branches; the reader knows which one they are looking at.
|
|
385
|
-
log.info(`In metaobjects.config.ts, "${result.exportName}" must resolve to this file:`);
|
|
386
|
-
log.info(` ${result.importLine}`);
|
|
387
|
-
log.info(
|
|
388
|
-
` - If it is imported from "${result.packageName}", REPLACE that import with the ` +
|
|
389
|
-
"line above. Adding a second one leaves `generators` bound to the PACKAGED " +
|
|
390
|
-
"generator, and your edits to this file do nothing.",
|
|
391
|
-
);
|
|
392
|
-
log.info(
|
|
393
|
-
" - If it is already imported from ./codegen/generators/ (what `meta init` " +
|
|
394
|
-
"scaffolds), it points here already — nothing to change.",
|
|
395
|
-
);
|
|
396
|
-
log.info(
|
|
397
|
-
` - If ${result.exportName}() is not in \`generators\` yet, add the import above ` +
|
|
398
|
-
"AND the entry.",
|
|
399
|
-
);
|
|
400
|
-
for (const line of result.dependencyNotes) log.info(line);
|
|
401
|
-
return 0;
|
|
402
570
|
} catch (err) {
|
|
403
571
|
log.error((err as Error).message);
|
|
404
572
|
return 1;
|
|
405
573
|
}
|
|
574
|
+
|
|
575
|
+
// ONE install set for the whole call, not one per name: ejecting `hooks` and `grid`
|
|
576
|
+
// needs @metaobjectsdev/codegen-ts-tanstack once, and an adopter handed the same
|
|
577
|
+
// package twice reasonably wonders which line to run.
|
|
578
|
+
const entries = flags.names
|
|
579
|
+
.filter((n) => !isLibraryName(n))
|
|
580
|
+
.map((n) => catalog[n])
|
|
581
|
+
.filter((e) => e !== undefined);
|
|
582
|
+
const install = installSetFor(entries);
|
|
583
|
+
const configKeys = [...new Set(entries.flatMap((e) => e.configKeys ?? []))].sort();
|
|
584
|
+
|
|
585
|
+
if (fmt === "text") {
|
|
586
|
+
if (install.command !== "") {
|
|
587
|
+
log.info("");
|
|
588
|
+
log.info("Install what the ejected generators and their output need:");
|
|
589
|
+
log.info(` ${install.command}`);
|
|
590
|
+
}
|
|
591
|
+
if (configKeys.length > 0) {
|
|
592
|
+
log.info(
|
|
593
|
+
`These generators read config: ${configKeys.join(", ")} — set them in ` +
|
|
594
|
+
"metaobjects.config.ts beside `generators`.",
|
|
595
|
+
);
|
|
596
|
+
}
|
|
597
|
+
// Every requires edge the selection does not itself satisfy. `meta gen` warns
|
|
598
|
+
// about this too, but saying it HERE is what stops the adopter wiring a broken
|
|
599
|
+
// pair in the first place.
|
|
600
|
+
const chosen = new Set(flags.names);
|
|
601
|
+
const missing = [...new Set(rows.flatMap((r) => r.requires).filter((d) => !chosen.has(d)))].sort();
|
|
602
|
+
if (missing.length > 0) {
|
|
603
|
+
log.info(
|
|
604
|
+
`Also needed: ${missing.join(", ")} — the code you just ejected imports modules ` +
|
|
605
|
+
`${missing.length === 1 ? "that generator emits" : "those generators emit"}. ` +
|
|
606
|
+
`Eject ${missing.length === 1 ? "it" : "them"} too, or keep your own.`,
|
|
607
|
+
);
|
|
608
|
+
}
|
|
609
|
+
} else {
|
|
610
|
+
const payload: EjectPayload = {
|
|
611
|
+
ejected: rows,
|
|
612
|
+
install,
|
|
613
|
+
config: { keys: configKeys },
|
|
614
|
+
...(libraries.length > 0 ? { libraries } : {}),
|
|
615
|
+
};
|
|
616
|
+
emitStructured(payload, fmt);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
return 0;
|
|
406
620
|
}
|