@metaobjectsdev/cli 1.0.2 → 1.0.4-rc.1
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/deps.d.ts +3 -0
- package/dist/src/commands/deps.d.ts.map +1 -0
- package/dist/src/commands/deps.js +200 -0
- package/dist/src/commands/deps.js.map +1 -0
- package/dist/src/commands/docs.d.ts.map +1 -1
- package/dist/src/commands/docs.js +19 -3
- package/dist/src/commands/docs.js.map +1 -1
- 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 +173 -30
- 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 +92 -402
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/migrate.d.ts.map +1 -1
- package/dist/src/commands/migrate.js +24 -19
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/prompt-snapshot.d.ts.map +1 -1
- package/dist/src/commands/prompt-snapshot.js +2 -1
- package/dist/src/commands/prompt-snapshot.js.map +1 -1
- package/dist/src/commands/verify.d.ts.map +1 -1
- package/dist/src/commands/verify.js +186 -29
- package/dist/src/commands/verify.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +97 -15
- 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/agent-context-staleness.d.ts.map +1 -1
- package/dist/src/lib/agent-context-staleness.js +7 -1
- package/dist/src/lib/agent-context-staleness.js.map +1 -1
- package/dist/src/lib/args.d.ts +75 -3
- package/dist/src/lib/args.d.ts.map +1 -1
- package/dist/src/lib/args.js +54 -5
- 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 +13 -0
- package/dist/src/lib/collection-load-options.d.ts.map +1 -0
- package/dist/src/lib/collection-load-options.js +25 -0
- package/dist/src/lib/collection-load-options.js.map +1 -0
- package/dist/src/lib/dependency-sync.d.ts +170 -0
- package/dist/src/lib/dependency-sync.d.ts.map +1 -0
- package/dist/src/lib/dependency-sync.js +457 -0
- package/dist/src/lib/dependency-sync.js.map +1 -0
- 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/migrate-scope.d.ts +32 -1
- package/dist/src/lib/migrate-scope.d.ts.map +1 -1
- package/dist/src/lib/migrate-scope.js +51 -3
- package/dist/src/lib/migrate-scope.js.map +1 -1
- package/dist/src/lib/overlay-lint.d.ts +37 -0
- package/dist/src/lib/overlay-lint.d.ts.map +1 -0
- package/dist/src/lib/overlay-lint.js +102 -0
- package/dist/src/lib/overlay-lint.js.map +1 -0
- package/dist/src/lib/requirement-check.d.ts +26 -3
- package/dist/src/lib/requirement-check.d.ts.map +1 -1
- package/dist/src/lib/requirement-check.js +71 -13
- package/dist/src/lib/requirement-check.js.map +1 -1
- package/package.json +10 -10
- package/src/commands/deps.ts +231 -0
- package/src/commands/docs.ts +19 -3
- package/src/commands/eject.ts +304 -90
- package/src/commands/gen.ts +189 -29
- package/src/commands/init.ts +95 -407
- package/src/commands/migrate.ts +26 -16
- package/src/commands/prompt-snapshot.ts +2 -1
- package/src/commands/verify.ts +213 -30
- package/src/index.ts +97 -15
- package/src/lib/advisory.ts +13 -0
- package/src/lib/agent-context-staleness.ts +7 -1
- package/src/lib/args.ts +118 -8
- package/src/lib/catalog-listing.ts +369 -0
- package/src/lib/catalog.ts +107 -0
- package/src/lib/collection-load-options.ts +42 -0
- package/src/lib/dependency-sync.ts +656 -0
- 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/migrate-scope.ts +59 -4
- package/src/lib/overlay-lint.ts +129 -0
- package/src/lib/requirement-check.ts +100 -14
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// server/typescript/packages/cli/src/lib/overlay-lint.ts
|
|
2
|
+
//
|
|
3
|
+
// `meta verify` — the overlay AUTHORING lint (FR-023 §11.1 item 4).
|
|
4
|
+
//
|
|
5
|
+
// The parser's own merge rule (parser-core.ts, "Default: no operator →
|
|
6
|
+
// silently reuse existing or create new") means a top-level redeclaration of
|
|
7
|
+
// an existing node works TODAY whether or not it carries `overlay: true` —
|
|
8
|
+
// as long as the target still exists under the same (type, resolutionKey).
|
|
9
|
+
// That is exactly the trap: a consumer who redeclares an imported node
|
|
10
|
+
// without the flag gets today's silent merge for free, and gets a silent NEW
|
|
11
|
+
// OBJECT the day the upstream node is renamed or removed — no error, just a
|
|
12
|
+
// second, disconnected node under the same name. `overlay: true` turns that
|
|
13
|
+
// into a loud `ERR_OVERLAY_NO_TARGET` instead.
|
|
14
|
+
//
|
|
15
|
+
// This lint does not change that parser behavior (nor could it — it reads
|
|
16
|
+
// raw file content, never the parser's merge decisions). It tells the AUTHOR:
|
|
17
|
+
// every top-level (type, resolutionKey) declared in two or more of the
|
|
18
|
+
// collection's files where more than one declaration lacks the flag. Exactly
|
|
19
|
+
// one unflagged declaration is the base and is fine; every additional
|
|
20
|
+
// unflagged one is a finding.
|
|
21
|
+
//
|
|
22
|
+
// Advisory only, like its sibling in requirement-lint.ts: never fails
|
|
23
|
+
// `meta verify`, never changes load behavior. Deliberately NO severity
|
|
24
|
+
// constant to flip — see requirement-lint.ts's header for why that promise
|
|
25
|
+
// would be false here too.
|
|
26
|
+
import { declaredTopLevelKeys } from "@metaobjectsdev/metadata";
|
|
27
|
+
import { relPosix } from "./rel-posix.js";
|
|
28
|
+
export const WARN_OVERLAY_IMPLICIT = "WARN_OVERLAY_IMPLICIT";
|
|
29
|
+
function warn(code, message) {
|
|
30
|
+
return { severity: "warn", code, message };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Lint the collection's files for unflagged cross-file redeclarations.
|
|
34
|
+
*
|
|
35
|
+
* Reads every file in `collection.files` — dependency artifacts first, since
|
|
36
|
+
* `Collection.files` already orders them that way and they are the BASES a
|
|
37
|
+
* consumer's own declarations amend — and structurally scans each with
|
|
38
|
+
* {@link declaredTopLevelKeys} (never the loaded/merged model: the merged
|
|
39
|
+
* tree has already lost which FILE contributed which declaration).
|
|
40
|
+
*
|
|
41
|
+
* Groups by (type, resolutionKey) — mirroring the parser's own merge lookup,
|
|
42
|
+
* which matches on type AND resolutionKey (parser-core.ts) — and reports
|
|
43
|
+
* every unflagged declaration after the first one for a key with 2+
|
|
44
|
+
* declarations. The first unflagged declaration is the base.
|
|
45
|
+
*
|
|
46
|
+
* `file` in each finding's message is the collection-relative path
|
|
47
|
+
* (`relPosix`), or the dependency's `dep:<name>/<artifact>` id when the
|
|
48
|
+
* declaration came from an imported artifact.
|
|
49
|
+
*
|
|
50
|
+
* Unreadable or unparsable files are skipped — the loader itself reports
|
|
51
|
+
* those (as a load error / `meta verify`'s own failure path); duplicating
|
|
52
|
+
* that diagnosis here would just be a second, worse-informed version of the
|
|
53
|
+
* same message.
|
|
54
|
+
*/
|
|
55
|
+
export async function lintOverlays(collection, readSource) {
|
|
56
|
+
// type -> resolutionKey -> every declaration seen for it, in file order.
|
|
57
|
+
const byType = new Map();
|
|
58
|
+
for (const path of collection.files) {
|
|
59
|
+
let declared;
|
|
60
|
+
try {
|
|
61
|
+
const source = readSource(path);
|
|
62
|
+
const content = await source.read();
|
|
63
|
+
declared = await declaredTopLevelKeys(content, source.format);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const file = collection.fileIds.get(path) ?? relPosix(collection.configDir, path);
|
|
69
|
+
for (const decl of declared) {
|
|
70
|
+
let byKey = byType.get(decl.type);
|
|
71
|
+
if (byKey === undefined) {
|
|
72
|
+
byKey = new Map();
|
|
73
|
+
byType.set(decl.type, byKey);
|
|
74
|
+
}
|
|
75
|
+
const list = byKey.get(decl.key) ?? [];
|
|
76
|
+
list.push({ file, overlay: decl.overlay });
|
|
77
|
+
byKey.set(decl.key, list);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const diags = [];
|
|
81
|
+
for (const byKey of byType.values()) {
|
|
82
|
+
for (const [fqn, declarations] of byKey) {
|
|
83
|
+
if (declarations.length < 2)
|
|
84
|
+
continue;
|
|
85
|
+
let baseSeen = false;
|
|
86
|
+
for (const decl of declarations) {
|
|
87
|
+
if (decl.overlay)
|
|
88
|
+
continue;
|
|
89
|
+
if (!baseSeen) {
|
|
90
|
+
// The first unflagged declaration is the base — nothing to report.
|
|
91
|
+
baseSeen = true;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
diags.push(warn(WARN_OVERLAY_IMPLICIT, `${fqn} is redeclared in ${decl.file} without overlay: true — add the flag ` +
|
|
95
|
+
`so a removed or renamed target fails loudly (ERR_OVERLAY_NO_TARGET) instead ` +
|
|
96
|
+
`of silently becoming a new object`));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return diags;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=overlay-lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-lint.js","sourceRoot":"","sources":["../../../src/lib/overlay-lint.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,oEAAoE;AACpE,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,2EAA2E;AAC3E,2EAA2E;AAC3E,uEAAuE;AACvE,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,+CAA+C;AAC/C,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,uEAAuE;AACvE,6EAA6E;AAC7E,sEAAsE;AACtE,8BAA8B;AAC9B,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,2EAA2E;AAC3E,2BAA2B;AAE3B,OAAO,EAAE,oBAAoB,EAAiD,MAAM,0BAA0B,CAAC;AAE/G,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAW7D,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,UAAsB;IAEtB,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsC,CAAC;IAE7D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,QAA4C,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;gBACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,CAAC;YACxC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,OAAO;oBAAE,SAAS;gBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,mEAAmE;oBACnE,QAAQ,GAAG,IAAI,CAAC;oBAChB,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,IAAI,CACR,IAAI,CACF,qBAAqB,EACrB,GAAG,GAAG,qBAAqB,IAAI,CAAC,IAAI,wCAAwC;oBAC1E,8EAA8E;oBAC9E,mCAAmC,CACtC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -35,8 +35,11 @@ export interface RequirementSummary {
|
|
|
35
35
|
undecided: number;
|
|
36
36
|
/** deferred entries naming no ticket, so nobody will be reminded. */
|
|
37
37
|
deferredUntracked: number;
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
/** ABSENT when coverage was not measured — FR-043 §5.4. A number here is a
|
|
39
|
+
* ratio the project is held to; absence is the honest reading of "this project
|
|
40
|
+
* has authored no requirement of its own, so it asked to be held to none". */
|
|
41
|
+
entitiesTotal?: number;
|
|
42
|
+
entitiesClaimed?: number;
|
|
40
43
|
}
|
|
41
44
|
/** Severity of the object-coverage gate. Promotion to `"error"` is a one-line
|
|
42
45
|
* flip here, which activates an already-written test rather than requiring new
|
|
@@ -122,8 +125,28 @@ export declare function collectRequirements(root: MetaData): MetaRequirement[];
|
|
|
122
125
|
export interface RequirementScan {
|
|
123
126
|
readonly addressed: readonly AddressedRequirement[];
|
|
124
127
|
readonly claimedObjects: ReadonlySet<string>;
|
|
128
|
+
/** FR-023 — narrows which entities `coverableEntities` counts. Undefined
|
|
129
|
+
* means "every non-abstract entity is coverable", exactly as before this
|
|
130
|
+
* option existed: a project with no dependencies gets no change at all.
|
|
131
|
+
* Threaded through so BOTH `coverableEntities` call sites (the gate and the
|
|
132
|
+
* summary) inherit the same narrowing — see `coverableEntities`. */
|
|
133
|
+
readonly coverable?: (fqn: string) => boolean;
|
|
134
|
+
/** FR-043 §5.4 — whether object coverage applies at all on this run. See
|
|
135
|
+
* {@link projectAuthoredRequirements}. Read by BOTH the gate and the summary from
|
|
136
|
+
* this one scan, for the same reason `claimedObjects` is shared: a summary that
|
|
137
|
+
* printed a ratio the gate had not enforced would be a measurement nobody could
|
|
138
|
+
* reconcile with the diagnostics beneath it. */
|
|
139
|
+
readonly measureCoverage: boolean;
|
|
125
140
|
}
|
|
126
|
-
export declare function scanRequirements(root: MetaData
|
|
141
|
+
export declare function scanRequirements(root: MetaData, opts?: {
|
|
142
|
+
coverable?: (fqn: string) => boolean;
|
|
143
|
+
/** Force coverage on or off instead of deriving it. The one caller that legitimately
|
|
144
|
+
* knows better is the gate over a SHIPPED library loaded standalone: there the
|
|
145
|
+
* library IS the project under test, and "every entity this library ships is claimed
|
|
146
|
+
* by its own ledger" is exactly what is being asserted — so the derivation would
|
|
147
|
+
* switch the check off precisely where it is the point. */
|
|
148
|
+
measureCoverage?: boolean;
|
|
149
|
+
}): RequirementScan;
|
|
127
150
|
/**
|
|
128
151
|
* Check the requirement tree against the loaded model.
|
|
129
152
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirement-check.d.ts","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"AAsBA,OAAO,EAkBL,KAAK,QAAQ,EACb,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"requirement-check.d.ts","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,9 +182,44 @@ export function resolveRequirementRef(addressed, ref, referrerPkg) {
|
|
|
178
182
|
export function collectRequirements(root) {
|
|
179
183
|
return collectAddressedRequirements(root).map((r) => r.node);
|
|
180
184
|
}
|
|
181
|
-
|
|
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
|
+
}
|
|
214
|
+
export function scanRequirements(root, opts) {
|
|
182
215
|
const addressed = collectAddressedRequirements(root);
|
|
183
|
-
return {
|
|
216
|
+
return {
|
|
217
|
+
addressed,
|
|
218
|
+
claimedObjects: claimedObjectKeys(root, addressed.map((r) => r.node)),
|
|
219
|
+
measureCoverage: opts?.measureCoverage ?? projectAuthoredRequirements(addressed),
|
|
220
|
+
// `exactOptionalPropertyTypes` — an omitted key, never an explicit `undefined`.
|
|
221
|
+
...(opts?.coverable !== undefined ? { coverable: opts.coverable } : {}),
|
|
222
|
+
};
|
|
184
223
|
}
|
|
185
224
|
/**
|
|
186
225
|
* Resolution keys of every object claimed by a requirement.
|
|
@@ -236,9 +275,20 @@ function claimedObjectKeys(root, reqs) {
|
|
|
236
275
|
* An ABSTRACT entity is shape, not data: there is no table and no rows, so
|
|
237
276
|
* demanding a capability claim for it is the same category error as demanding
|
|
238
277
|
* one for an object.value. It is exempt for the same reason.
|
|
278
|
+
*
|
|
279
|
+
* FR-023: an entity loaded from a dependency's synced snapshot is load-only —
|
|
280
|
+
* the publisher owns it, and this project never declared it — unless the
|
|
281
|
+
* project's own `scope.include` names the dependency's package literally
|
|
282
|
+
* (`Collection.inScope`, threaded in as `coverable`). Demanding a capability
|
|
283
|
+
* claim for an import nobody here opted into owning would report a project as
|
|
284
|
+
* failing to claim entities it does not own. `coverable` is applied INSIDE
|
|
285
|
+
* this function, once, so every call site inherits it — the alternative
|
|
286
|
+
* (filtering at a call site) is exactly the shape of bug this task exists to
|
|
287
|
+
* avoid: the other call site would keep counting imports.
|
|
239
288
|
*/
|
|
240
|
-
function coverableEntities(root) {
|
|
241
|
-
return root.children().filter((n) => n.type === TYPE_OBJECT && n.subType === OBJECT_SUBTYPE_ENTITY && !n.isAbstract
|
|
289
|
+
function coverableEntities(root, coverable) {
|
|
290
|
+
return root.children().filter((n) => n.type === TYPE_OBJECT && n.subType === OBJECT_SUBTYPE_ENTITY && !n.isAbstract &&
|
|
291
|
+
(coverable === undefined || coverable(n.resolutionKey())));
|
|
242
292
|
}
|
|
243
293
|
/**
|
|
244
294
|
* Check the requirement tree against the loaded model.
|
|
@@ -250,7 +300,7 @@ function coverableEntities(root) {
|
|
|
250
300
|
*/
|
|
251
301
|
export function checkRequirements(root, scan = scanRequirements(root)) {
|
|
252
302
|
const out = [];
|
|
253
|
-
const { addressed, claimedObjects } = scan;
|
|
303
|
+
const { addressed, claimedObjects, coverable, measureCoverage } = scan;
|
|
254
304
|
if (addressed.length === 0)
|
|
255
305
|
return out; // opt-in by declaration — no requirements, nothing to say
|
|
256
306
|
for (const { node: req, path: reqPath } of addressed) {
|
|
@@ -454,7 +504,9 @@ export function checkRequirements(root, scan = scanRequirements(root)) {
|
|
|
454
504
|
//
|
|
455
505
|
// So a green run means "every entity is claimed by something", not "every node is
|
|
456
506
|
// described". The stronger reading would be false.
|
|
457
|
-
|
|
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) : []) {
|
|
458
510
|
const key = ent.resolutionKey();
|
|
459
511
|
if (!claimedObjects.has(key)) {
|
|
460
512
|
out.push({
|
|
@@ -486,8 +538,8 @@ export function summariseRequirements(root, scan = scanRequirements(root)) {
|
|
|
486
538
|
byStatus: {},
|
|
487
539
|
undecided: 0,
|
|
488
540
|
deferredUntracked: 0,
|
|
489
|
-
|
|
490
|
-
|
|
541
|
+
// The coverage pair is filled in below only when the run measures coverage —
|
|
542
|
+
// `exactOptionalPropertyTypes`, so the keys are absent rather than undefined.
|
|
491
543
|
};
|
|
492
544
|
for (const req of reqs) {
|
|
493
545
|
if (req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL)
|
|
@@ -506,11 +558,17 @@ export function summariseRequirements(root, scan = scanRequirements(root)) {
|
|
|
506
558
|
// Both sides of the ratio come from the SAME scan the gate read, so the printed
|
|
507
559
|
// summary cannot disagree with the diagnostics printed beneath it — previously
|
|
508
560
|
// the same helper, now literally the same result.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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;
|
|
514
572
|
}
|
|
515
573
|
return summary;
|
|
516
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-rc.1",
|
|
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-rc.1",
|
|
55
|
+
"@metaobjectsdev/codegen-ts-react": "1.0.4-rc.1",
|
|
56
|
+
"@metaobjectsdev/codegen-ts-tanstack": "1.0.4-rc.1",
|
|
57
|
+
"@metaobjectsdev/docs-site": "1.0.4-rc.1",
|
|
58
|
+
"@metaobjectsdev/metadata": "1.0.4-rc.1",
|
|
59
|
+
"@metaobjectsdev/migrate-ts": "1.0.4-rc.1",
|
|
60
|
+
"@metaobjectsdev/render": "1.0.4-rc.1",
|
|
61
|
+
"@metaobjectsdev/runtime-ts": "1.0.4-rc.1",
|
|
62
|
+
"@metaobjectsdev/sdk": "1.0.4-rc.1",
|
|
63
63
|
"@toon-format/toon": "^2.3.0",
|
|
64
64
|
"jiti": "^2.4.0"
|
|
65
65
|
},
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// server/typescript/packages/cli/src/commands/deps.ts
|
|
2
|
+
//
|
|
3
|
+
// FR-023 Phase 1a — Task 14 shipped `meta deps sync` (`path` transport) and
|
|
4
|
+
// `meta deps list`; Task 15 shipped `meta deps check` (this file's `runCheck`).
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import {
|
|
7
|
+
DEFAULT_METAOBJECTS_DIR,
|
|
8
|
+
discoverCollectionRoot,
|
|
9
|
+
loadConfig,
|
|
10
|
+
loadMemory,
|
|
11
|
+
resolveCollection,
|
|
12
|
+
type DependencySpec,
|
|
13
|
+
type Lock,
|
|
14
|
+
} from "@metaobjectsdev/sdk";
|
|
15
|
+
import { parseDepsArgs, type DepsFlags } from "../lib/args.js";
|
|
16
|
+
import { log } from "../lib/log.js";
|
|
17
|
+
import { emitStructured, type OutputFormat } from "../lib/format.js";
|
|
18
|
+
import { reportLoadError } from "../lib/load-error.js";
|
|
19
|
+
import { collectionLoadOptions } from "../lib/collection-load-options.js";
|
|
20
|
+
import {
|
|
21
|
+
applySync,
|
|
22
|
+
checkDependencies,
|
|
23
|
+
ERR_DEPENDENCY_UPSTREAM_DRIFT,
|
|
24
|
+
formatCheckLine,
|
|
25
|
+
hash8,
|
|
26
|
+
planSync,
|
|
27
|
+
readLockOrThrow,
|
|
28
|
+
} from "../lib/dependency-sync.js";
|
|
29
|
+
|
|
30
|
+
/** The declared `dependencies` for the config governing `cwd` — read
|
|
31
|
+
* DIRECTLY via `loadConfig`, never through `resolveCollection`/`Collection`:
|
|
32
|
+
* that resolver VERIFIES the snapshot against the lock (`verifySnapshot`)
|
|
33
|
+
* and throws `ERR_DEPENDENCY_SNAPSHOT_STALE` the moment they disagree — the
|
|
34
|
+
* exact condition `meta deps sync` exists to fix. A project with no config
|
|
35
|
+
* at all declares none (`resolveCollection`'s own default: no config ⇒ no
|
|
36
|
+
* dependencies), which `discoverCollectionRoot`'s `hasConfig` already knows
|
|
37
|
+
* without a doomed `loadConfig` call. */
|
|
38
|
+
async function declaredDependencies(cwd: string): Promise<{ configDir: string; specs: readonly DependencySpec[] }> {
|
|
39
|
+
const { dir: configDir, hasConfig } = await discoverCollectionRoot(cwd);
|
|
40
|
+
if (!hasConfig) return { configDir, specs: [] };
|
|
41
|
+
const cfg = await loadConfig(join(configDir, DEFAULT_METAOBJECTS_DIR));
|
|
42
|
+
return { configDir, specs: cfg.dependencies };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function runSync(configDir: string, specs: readonly DependencySpec[], flags: DepsFlags, fmt: OutputFormat): Promise<number> {
|
|
46
|
+
let lock: Lock | undefined;
|
|
47
|
+
try {
|
|
48
|
+
lock = await readLockOrThrow(configDir);
|
|
49
|
+
} catch (err) {
|
|
50
|
+
// Same convention as `depsCommand`'s `declaredDependencies` catch below: a
|
|
51
|
+
// committed project file that fails to parse is a config-class problem,
|
|
52
|
+
// exit 2 — distinct from the exit-1 a `sync` verdict failure gets.
|
|
53
|
+
log.error((err as Error).message);
|
|
54
|
+
return 2;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let plan;
|
|
58
|
+
try {
|
|
59
|
+
plan = await planSync(configDir, specs, lock, flags.names);
|
|
60
|
+
} catch (err) {
|
|
61
|
+
log.error((err as Error).message);
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
let applied;
|
|
66
|
+
try {
|
|
67
|
+
applied = await applySync(configDir, plan, { dryRun: flags.dryRun });
|
|
68
|
+
} catch (err) {
|
|
69
|
+
log.error((err as Error).message);
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (fmt === "text") {
|
|
74
|
+
for (const w of plan.warnings) log.info(w);
|
|
75
|
+
if (applied.report.length === 0) {
|
|
76
|
+
log.info("meta deps sync: nothing to do — no dependencies declared.");
|
|
77
|
+
} else {
|
|
78
|
+
for (const r of applied.report) log.info(r.line);
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
emitStructured(
|
|
82
|
+
{
|
|
83
|
+
warnings: plan.warnings,
|
|
84
|
+
dependencies: applied.report.map((r) => ({ name: r.name, action: r.action, message: r.line })),
|
|
85
|
+
},
|
|
86
|
+
fmt,
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// A dry run wrote nothing to validate — the plan already stands for what
|
|
91
|
+
// WOULD load.
|
|
92
|
+
if (flags.dryRun) return 0;
|
|
93
|
+
|
|
94
|
+
// DESIGN §4.1's closing sentence: load the full collection once, so a sync
|
|
95
|
+
// that produces an unloadable model (a collision the plan missed because it
|
|
96
|
+
// only compares declared node LISTS, a scope that now excludes something
|
|
97
|
+
// load-bearing, …) fails in THIS command with the loader's own error,
|
|
98
|
+
// rather than surfacing on the next unrelated `meta gen`/`verify`.
|
|
99
|
+
let collection;
|
|
100
|
+
try {
|
|
101
|
+
collection = await resolveCollection(configDir);
|
|
102
|
+
} catch (err) {
|
|
103
|
+
log.error(`meta deps sync: the updated dependency set does not resolve: ${(err as Error).message}`);
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
await loadMemory(collection.configDir, collectionLoadOptions(collection));
|
|
108
|
+
} catch (err) {
|
|
109
|
+
reportLoadError(log, "meta deps sync: the updated dependency set does not load", err);
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async function runList(configDir: string, fmt: OutputFormat): Promise<number> {
|
|
117
|
+
let lock: Lock | undefined;
|
|
118
|
+
try {
|
|
119
|
+
lock = await readLockOrThrow(configDir);
|
|
120
|
+
} catch (err) {
|
|
121
|
+
log.error((err as Error).message);
|
|
122
|
+
return 2;
|
|
123
|
+
}
|
|
124
|
+
const entries = Object.entries(lock?.dependencies ?? {});
|
|
125
|
+
|
|
126
|
+
if (fmt === "text") {
|
|
127
|
+
if (entries.length === 0) {
|
|
128
|
+
log.info("meta deps list: no dependencies locked — run `meta deps sync`.");
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
for (const [name, entry] of entries) {
|
|
132
|
+
log.info(
|
|
133
|
+
`${name} ${entry.version} ${hash8(entry.integrity)} ${entry.nodes.length} node(s) ${entry.packages.join(", ")}`,
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
emitStructured(
|
|
138
|
+
{ dependencies: entries.map(([name, entry]) => ({ name, ...entry })) },
|
|
139
|
+
fmt,
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* `meta deps check` (Task 15) — re-resolve each declared dependency exactly
|
|
147
|
+
* as `sync` steps 1-2 do and compare its installed artifact's TRUE hash
|
|
148
|
+
* against what `.metaobjects/deps.lock.json` pinned. Read-only: never touches
|
|
149
|
+
* the lock or the snapshot (that is `sync`'s job). A `drifted` or
|
|
150
|
+
* `unresolved` dependency fails the command — a check that cannot check must
|
|
151
|
+
* not pass.
|
|
152
|
+
*/
|
|
153
|
+
async function runCheck(
|
|
154
|
+
configDir: string,
|
|
155
|
+
specs: readonly DependencySpec[],
|
|
156
|
+
fmt: OutputFormat,
|
|
157
|
+
): Promise<number> {
|
|
158
|
+
let lock: Lock | undefined;
|
|
159
|
+
try {
|
|
160
|
+
lock = await readLockOrThrow(configDir);
|
|
161
|
+
} catch (err) {
|
|
162
|
+
log.error((err as Error).message);
|
|
163
|
+
return 2;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (specs.length === 0) {
|
|
167
|
+
if (fmt === "text") {
|
|
168
|
+
log.info("meta deps check: nothing to check — no dependencies declared.");
|
|
169
|
+
} else {
|
|
170
|
+
emitStructured({ dependencies: [] }, fmt);
|
|
171
|
+
}
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const results = await checkDependencies(configDir, specs, lock);
|
|
176
|
+
const failing = results.filter((r) => r.status !== "current");
|
|
177
|
+
|
|
178
|
+
if (fmt === "text") {
|
|
179
|
+
for (const r of results) log.info(formatCheckLine(r));
|
|
180
|
+
if (failing.length > 0) {
|
|
181
|
+
log.error(
|
|
182
|
+
`meta deps check: ${failing.length} of ${results.length} dependenc` +
|
|
183
|
+
`${results.length === 1 ? "y" : "ies"} drifted or unresolved (${ERR_DEPENDENCY_UPSTREAM_DRIFT}).`,
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
emitStructured(
|
|
188
|
+
{
|
|
189
|
+
dependencies: results.map((r) => ({ ...r, line: formatCheckLine(r) })),
|
|
190
|
+
...(failing.length > 0 ? { code: ERR_DEPENDENCY_UPSTREAM_DRIFT } : {}),
|
|
191
|
+
},
|
|
192
|
+
fmt,
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return failing.length > 0 ? 1 : 0;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export async function depsCommand(args: string[], cwd: string, fmt: OutputFormat): Promise<number> {
|
|
200
|
+
let flags: DepsFlags;
|
|
201
|
+
try {
|
|
202
|
+
flags = parseDepsArgs(args);
|
|
203
|
+
} catch (err) {
|
|
204
|
+
log.error((err as Error).message);
|
|
205
|
+
return 2;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
let configDir: string;
|
|
209
|
+
let specs: readonly DependencySpec[];
|
|
210
|
+
try {
|
|
211
|
+
({ configDir, specs } = await declaredDependencies(cwd));
|
|
212
|
+
} catch (err) {
|
|
213
|
+
// Mirrors `resolveCollection`'s own convention for a config.json that
|
|
214
|
+
// EXISTS but fails to load (malformed JSON, a schema violation): exit 2,
|
|
215
|
+
// the same code every other routed command uses for that class of
|
|
216
|
+
// failure (gen.ts, migrate.ts, docs.ts) — distinct from the exit 1 a
|
|
217
|
+
// dependency-resolution failure gets below, because this is a config
|
|
218
|
+
// problem, not a `sync` verdict.
|
|
219
|
+
log.error((err as Error).message);
|
|
220
|
+
return 2;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
switch (flags.subverb) {
|
|
224
|
+
case "sync":
|
|
225
|
+
return runSync(configDir, specs, flags, fmt);
|
|
226
|
+
case "list":
|
|
227
|
+
return runList(configDir, fmt);
|
|
228
|
+
case "check":
|
|
229
|
+
return runCheck(configDir, specs, fmt);
|
|
230
|
+
}
|
|
231
|
+
}
|