@metaobjectsdev/cli 1.0.13 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -22
- package/dist/bin/meta.js +14 -2
- package/dist/bin/meta.js.map +1 -1
- package/dist/src/commands/docs.d.ts +1 -14
- package/dist/src/commands/docs.d.ts.map +1 -1
- package/dist/src/commands/docs.js +11 -835
- package/dist/src/commands/docs.js.map +1 -1
- package/dist/src/commands/eject.d.ts +24 -1
- package/dist/src/commands/eject.d.ts.map +1 -1
- package/dist/src/commands/eject.js +240 -69
- package/dist/src/commands/eject.js.map +1 -1
- package/dist/src/commands/gen.d.ts +7 -0
- package/dist/src/commands/gen.d.ts.map +1 -1
- package/dist/src/commands/gen.js +91 -21
- package/dist/src/commands/gen.js.map +1 -1
- package/dist/src/commands/generator.js +2 -2
- package/dist/src/commands/generator.js.map +1 -1
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +71 -36
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/migrate.d.ts +1 -1
- package/dist/src/commands/migrate.d.ts.map +1 -1
- package/dist/src/commands/migrate.js +224 -125
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/types.d.ts.map +1 -1
- package/dist/src/commands/types.js +16 -2
- package/dist/src/commands/types.js.map +1 -1
- package/dist/src/commands/upgrade.d.ts.map +1 -1
- package/dist/src/commands/upgrade.js +4 -1
- package/dist/src/commands/upgrade.js.map +1 -1
- package/dist/src/commands/verify.d.ts.map +1 -1
- package/dist/src/commands/verify.js +189 -125
- package/dist/src/commands/verify.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +59 -72
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/agent-context-staleness.d.ts +8 -1
- package/dist/src/lib/agent-context-staleness.d.ts.map +1 -1
- package/dist/src/lib/agent-context-staleness.js +20 -5
- package/dist/src/lib/agent-context-staleness.js.map +1 -1
- package/dist/src/lib/agent-schema.d.ts +9 -0
- package/dist/src/lib/agent-schema.d.ts.map +1 -0
- package/dist/src/lib/agent-schema.js +61 -0
- package/dist/src/lib/agent-schema.js.map +1 -0
- package/dist/src/lib/allow.d.ts +6 -0
- package/dist/src/lib/allow.d.ts.map +1 -1
- package/dist/src/lib/allow.js +49 -5
- package/dist/src/lib/allow.js.map +1 -1
- package/dist/src/lib/anti-patterns.d.ts.map +1 -1
- package/dist/src/lib/anti-patterns.js +4 -2
- package/dist/src/lib/anti-patterns.js.map +1 -1
- package/dist/src/lib/args.d.ts +51 -10
- package/dist/src/lib/args.d.ts.map +1 -1
- package/dist/src/lib/args.js +44 -18
- package/dist/src/lib/args.js.map +1 -1
- package/dist/src/lib/catalog-listing.d.ts +21 -1
- package/dist/src/lib/catalog-listing.d.ts.map +1 -1
- package/dist/src/lib/catalog-listing.js +85 -16
- package/dist/src/lib/catalog-listing.js.map +1 -1
- package/dist/src/lib/catalog.d.ts +30 -0
- package/dist/src/lib/catalog.d.ts.map +1 -1
- package/dist/src/lib/catalog.js +40 -5
- package/dist/src/lib/catalog.js.map +1 -1
- package/dist/src/lib/codegen-drift.d.ts +31 -2
- package/dist/src/lib/codegen-drift.d.ts.map +1 -1
- package/dist/src/lib/codegen-drift.js +109 -4
- package/dist/src/lib/codegen-drift.js.map +1 -1
- 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 +1 -0
- package/dist/src/lib/collection-load-options.js.map +1 -1
- package/dist/src/lib/config.d.ts +4 -2
- package/dist/src/lib/config.d.ts.map +1 -1
- package/dist/src/lib/config.js +4 -2
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/decimal-precision-advisory.d.ts +10 -0
- package/dist/src/lib/decimal-precision-advisory.d.ts.map +1 -0
- package/dist/src/lib/decimal-precision-advisory.js +34 -0
- package/dist/src/lib/decimal-precision-advisory.js.map +1 -0
- package/dist/src/lib/deprecation-lint.d.ts.map +1 -1
- package/dist/src/lib/deprecation-lint.js +17 -26
- package/dist/src/lib/deprecation-lint.js.map +1 -1
- package/dist/src/lib/docs-removed.d.ts +13 -0
- package/dist/src/lib/docs-removed.d.ts.map +1 -0
- package/dist/src/lib/docs-removed.js +31 -0
- package/dist/src/lib/docs-removed.js.map +1 -0
- package/dist/src/lib/docs-site-eject.d.ts +13 -0
- package/dist/src/lib/docs-site-eject.d.ts.map +1 -0
- package/dist/src/lib/docs-site-eject.js +40 -0
- package/dist/src/lib/docs-site-eject.js.map +1 -0
- package/dist/src/lib/field-lint.d.ts +25 -0
- package/dist/src/lib/field-lint.d.ts.map +1 -0
- package/dist/src/lib/field-lint.js +102 -0
- package/dist/src/lib/field-lint.js.map +1 -0
- package/dist/src/lib/fk-index-advisory.d.ts +1 -2
- package/dist/src/lib/fk-index-advisory.d.ts.map +1 -1
- package/dist/src/lib/fk-index-advisory.js +4 -3
- package/dist/src/lib/fk-index-advisory.js.map +1 -1
- package/dist/src/lib/format.d.ts +7 -0
- package/dist/src/lib/format.d.ts.map +1 -1
- package/dist/src/lib/format.js +13 -0
- package/dist/src/lib/format.js.map +1 -1
- package/dist/src/lib/gen-migrate-advice.d.ts +3 -1
- package/dist/src/lib/gen-migrate-advice.d.ts.map +1 -1
- package/dist/src/lib/gen-migrate-advice.js +3 -4
- package/dist/src/lib/gen-migrate-advice.js.map +1 -1
- package/dist/src/lib/install-set.d.ts +10 -1
- package/dist/src/lib/install-set.d.ts.map +1 -1
- package/dist/src/lib/install-set.js +20 -2
- package/dist/src/lib/install-set.js.map +1 -1
- package/dist/src/lib/load-metaobjects-config.d.ts +13 -11
- package/dist/src/lib/load-metaobjects-config.d.ts.map +1 -1
- package/dist/src/lib/load-metaobjects-config.js +53 -75
- package/dist/src/lib/load-metaobjects-config.js.map +1 -1
- package/dist/src/lib/manifest-ignored-check.d.ts +4 -1
- package/dist/src/lib/manifest-ignored-check.d.ts.map +1 -1
- package/dist/src/lib/manifest-ignored-check.js +9 -4
- package/dist/src/lib/manifest-ignored-check.js.map +1 -1
- package/dist/src/lib/output.d.ts +15 -0
- package/dist/src/lib/output.d.ts.map +1 -1
- package/dist/src/lib/output.js +9 -1
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/payload-field-tree.d.ts +4 -5
- package/dist/src/lib/payload-field-tree.d.ts.map +1 -1
- package/dist/src/lib/payload-field-tree.js +16 -31
- package/dist/src/lib/payload-field-tree.js.map +1 -1
- package/dist/src/lib/requirement-check.d.ts +7 -0
- package/dist/src/lib/requirement-check.d.ts.map +1 -1
- package/dist/src/lib/requirement-check.js +14 -7
- package/dist/src/lib/requirement-check.js.map +1 -1
- package/dist/src/lib/strict-args.d.ts +28 -0
- package/dist/src/lib/strict-args.d.ts.map +1 -0
- package/dist/src/lib/strict-args.js +49 -0
- package/dist/src/lib/strict-args.js.map +1 -0
- package/dist/src/lib/template-eject.d.ts +108 -0
- package/dist/src/lib/template-eject.d.ts.map +1 -0
- package/dist/src/lib/template-eject.js +438 -0
- package/dist/src/lib/template-eject.js.map +1 -0
- package/dist/src/lib/version.d.ts +9 -0
- package/dist/src/lib/version.d.ts.map +1 -1
- package/dist/src/lib/version.js +15 -0
- package/dist/src/lib/version.js.map +1 -1
- package/package.json +10 -10
- package/src/commands/docs.ts +11 -952
- package/src/commands/eject.ts +318 -73
- package/src/commands/gen.ts +94 -22
- package/src/commands/generator.ts +2 -2
- package/src/commands/init.ts +80 -38
- package/src/commands/migrate.ts +248 -117
- package/src/commands/types.ts +18 -2
- package/src/commands/upgrade.ts +5 -1
- package/src/commands/verify.ts +229 -136
- package/src/index.ts +59 -72
- package/src/lib/agent-context-staleness.ts +20 -5
- package/src/lib/agent-schema.ts +74 -0
- package/src/lib/allow.ts +57 -6
- package/src/lib/anti-patterns.ts +4 -2
- package/src/lib/args.ts +83 -28
- package/src/lib/catalog-listing.ts +105 -25
- package/src/lib/catalog.ts +51 -6
- package/src/lib/codegen-drift.ts +138 -3
- package/src/lib/collection-load-options.ts +2 -1
- package/src/lib/config.ts +5 -3
- package/src/lib/decimal-precision-advisory.ts +50 -0
- package/src/lib/deprecation-lint.ts +16 -24
- package/src/lib/docs-removed.ts +41 -0
- package/src/lib/docs-site-eject.ts +48 -0
- package/src/lib/field-lint.ts +122 -0
- package/src/lib/fk-index-advisory.ts +4 -4
- package/src/lib/format.ts +12 -0
- package/src/lib/gen-migrate-advice.ts +6 -4
- package/src/lib/install-set.ts +20 -1
- package/src/lib/load-metaobjects-config.ts +57 -78
- package/src/lib/manifest-ignored-check.ts +14 -10
- package/src/lib/output.ts +18 -1
- package/src/lib/payload-field-tree.ts +18 -35
- package/src/lib/requirement-check.ts +21 -6
- package/src/lib/strict-args.ts +52 -0
- package/src/lib/template-eject.ts +526 -0
- package/src/lib/version.ts +18 -0
- package/dist/src/lib/docs-drift.d.ts +0 -42
- package/dist/src/lib/docs-drift.d.ts.map +0 -1
- package/dist/src/lib/docs-drift.js +0 -264
- package/dist/src/lib/docs-drift.js.map +0 -1
- package/src/lib/docs-drift.ts +0 -312
|
@@ -34,7 +34,7 @@ import { DOC_ATTR_DEPRECATED, DOC_ATTR_REPLACED_BY, TYPE_FIELD, TYPE_IDENTITY, T
|
|
|
34
34
|
// @via is spelled identically on every origin subtype (passthrough / aggregate /
|
|
35
35
|
// first); @of is identical on aggregate and first. One constant each, reused —
|
|
36
36
|
// see origin-constants.ts.
|
|
37
|
-
ORIGIN_PASSTHROUGH_ATTR_FROM, ORIGIN_PASSTHROUGH_ATTR_VIA, ORIGIN_AGGREGATE_ATTR_OF, isMetaObject, resolveObjectRef, } from "@metaobjectsdev/metadata";
|
|
37
|
+
ORIGIN_PASSTHROUGH_ATTR_FROM, ORIGIN_PASSTHROUGH_ATTR_VIA, ORIGIN_AGGREGATE_ATTR_OF, isMetaObject, resolveObjectRef, refTarget, } from "@metaobjectsdev/metadata";
|
|
38
38
|
export const WARN_DEPRECATED_REFERENCE = "WARN_DEPRECATED_REFERENCE";
|
|
39
39
|
function warn(path, message) {
|
|
40
40
|
return { severity: "warn", code: WARN_DEPRECATED_REFERENCE, path, message };
|
|
@@ -129,12 +129,11 @@ function findHop(entity, hopName) {
|
|
|
129
129
|
return entity.children().find((c) => (c.type === TYPE_RELATIONSHIP || (c.type === TYPE_IDENTITY && c.subType === IDENTITY_SUBTYPE_REFERENCE)) &&
|
|
130
130
|
c.name === hopName);
|
|
131
131
|
}
|
|
132
|
-
/** The entity a resolved hop (relationship or identity.reference) points at,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return typeof v === "string" && v !== "" ? headOf(v) : undefined;
|
|
132
|
+
/** The entity a resolved hop (relationship or identity.reference) points at, as the
|
|
133
|
+
* loader bound it (ADR-0059 R7: resolved where the hop's reference was declared). */
|
|
134
|
+
function hopTarget(hop) {
|
|
135
|
+
const target = refTarget(hop, hop.type === TYPE_RELATIONSHIP ? RELATIONSHIP_ATTR_OBJECT_REF : IDENTITY_REFERENCE_ATTR_REFERENCES);
|
|
136
|
+
return target !== undefined && isMetaObject(target) ? target : undefined;
|
|
138
137
|
}
|
|
139
138
|
/**
|
|
140
139
|
* Check a dotted "Entity" or "Entity.field" reference — shared by origin
|
|
@@ -148,12 +147,10 @@ function hopTargetRef(hop) {
|
|
|
148
147
|
* under-flagging, the same stance every sibling advisory pass in this
|
|
149
148
|
* directory takes.
|
|
150
149
|
*/
|
|
151
|
-
function checkEntityFieldPath(
|
|
152
|
-
const head = headOf(raw);
|
|
153
|
-
const entity = resolveEntityRef(root, head, referrerPkg);
|
|
150
|
+
function checkEntityFieldPath(referrer, referrerPath, verb, raw, entity, out) {
|
|
154
151
|
if (entity === undefined)
|
|
155
152
|
return;
|
|
156
|
-
const fieldName = raw.slice(
|
|
153
|
+
const fieldName = raw.slice(headOf(raw).length + 1);
|
|
157
154
|
const field = fieldName !== "" ? entity.fields().find((f) => f.name === fieldName) : undefined;
|
|
158
155
|
if (field !== undefined && considerTarget(referrer, referrerPath, verb, field, out)) {
|
|
159
156
|
return; // the field itself is the deprecated thing — don't ALSO warn about its (fine) entity.
|
|
@@ -181,10 +178,7 @@ function checkViaPath(root, origin, referrerPath, verb, via, referrerPkg, out) {
|
|
|
181
178
|
if (hop === undefined)
|
|
182
179
|
return;
|
|
183
180
|
considerTarget(origin, referrerPath, verb, hop, out);
|
|
184
|
-
const
|
|
185
|
-
if (targetRef === undefined)
|
|
186
|
-
return;
|
|
187
|
-
const next = resolveEntityRef(root, targetRef, packageOf(current));
|
|
181
|
+
const next = hopTarget(hop);
|
|
188
182
|
if (next === undefined)
|
|
189
183
|
return;
|
|
190
184
|
considerTarget(origin, referrerPath, verb, next, out);
|
|
@@ -201,11 +195,11 @@ function checkOrigin(root, origin, referrerPath, out) {
|
|
|
201
195
|
// same stance every origin accessor in meta-origin.ts takes).
|
|
202
196
|
const from = origin.ownAttr(ORIGIN_PASSTHROUGH_ATTR_FROM);
|
|
203
197
|
if (typeof from === "string" && from !== "") {
|
|
204
|
-
checkEntityFieldPath(
|
|
198
|
+
checkEntityFieldPath(origin, referrerPath, `${subtypeLabel} @from references`, from, resolveEntityRef(root, headOf(from), referrerPkg), out);
|
|
205
199
|
}
|
|
206
200
|
const of_ = origin.ownAttr(ORIGIN_AGGREGATE_ATTR_OF);
|
|
207
201
|
if (typeof of_ === "string" && of_ !== "") {
|
|
208
|
-
checkEntityFieldPath(
|
|
202
|
+
checkEntityFieldPath(origin, referrerPath, `${subtypeLabel} @of references`, of_, resolveEntityRef(root, headOf(of_), referrerPkg), out);
|
|
209
203
|
}
|
|
210
204
|
const via = origin.ownAttr(ORIGIN_PASSTHROUGH_ATTR_VIA);
|
|
211
205
|
if (typeof via === "string" && via !== "") {
|
|
@@ -220,13 +214,10 @@ function checkNode(root, node, path, out) {
|
|
|
220
214
|
// @objectRef — relationship.* (its target object) and field.object/value (a
|
|
221
215
|
// value-typed field's own objectRef). Same attr name on both (naming-refs.ts).
|
|
222
216
|
if (node.type === TYPE_RELATIONSHIP || node.type === TYPE_FIELD) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
if (target !== undefined)
|
|
228
|
-
considerTarget(node, path, "references (@objectRef)", target, out);
|
|
229
|
-
}
|
|
217
|
+
// ADR-0059 R7: the target the loader bound, resolved where @objectRef was declared.
|
|
218
|
+
const target = refTarget(node, node.type === TYPE_RELATIONSHIP ? RELATIONSHIP_ATTR_OBJECT_REF : FIELD_ATTR_OBJECT_REF);
|
|
219
|
+
if (target !== undefined && isMetaObject(target))
|
|
220
|
+
considerTarget(node, path, "references (@objectRef)", target, out);
|
|
230
221
|
}
|
|
231
222
|
// @references — identity.reference's FK target. May be bare ("Entity",
|
|
232
223
|
// defaulting to the primary identity) or dotted ("Entity.field" /
|
|
@@ -237,8 +228,8 @@ function checkNode(root, node, path, out) {
|
|
|
237
228
|
if (node.type === TYPE_IDENTITY && node.subType === IDENTITY_SUBTYPE_REFERENCE) {
|
|
238
229
|
const raw = node.attr(IDENTITY_REFERENCE_ATTR_REFERENCES);
|
|
239
230
|
if (typeof raw === "string" && raw !== "") {
|
|
240
|
-
const
|
|
241
|
-
checkEntityFieldPath(
|
|
231
|
+
const target = refTarget(node, IDENTITY_REFERENCE_ATTR_REFERENCES);
|
|
232
|
+
checkEntityFieldPath(node, path, "references (@references)", raw, target !== undefined && isMetaObject(target) ? target : undefined, out);
|
|
242
233
|
}
|
|
243
234
|
}
|
|
244
235
|
// origin.* — @from / @of / @via.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deprecation-lint.js","sourceRoot":"","sources":["../../../src/lib/deprecation-lint.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,6EAA6E;AAC7E,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,mFAAmF;AACnF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,wBAAwB;AACxB,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,4EAA4E;AAC5E,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,mEAAmE;AACnE,iEAAiE;AAEjE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB;AACrB,iFAAiF;AACjF,+EAA+E;AAC/E,2BAA2B;AAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"deprecation-lint.js","sourceRoot":"","sources":["../../../src/lib/deprecation-lint.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,6EAA6E;AAC7E,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,mFAAmF;AACnF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,wBAAwB;AACxB,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,4EAA4E;AAC5E,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,mEAAmE;AACnE,iEAAiE;AAEjE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB;AACrB,iFAAiF;AACjF,+EAA+E;AAC/E,2BAA2B;AAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,SAAS,GAGV,MAAM,0BAA0B,CAAC;AAGlC,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AAErE,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,sDAAsD;AACtD,8EAA8E;AAE9E,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC;AACvD,CAAC;AAED;uFACuF;AACvF,SAAS,YAAY,CAAC,IAAc;IAClC,IAAI,GAAG,GAAyB,IAAI,CAAC,MAAM,CAAC;IAC5C,OAAO,GAAG,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACjE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;+EAE+E;AAC/E,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnF,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,YAAY,CAAC,aAAuB,EAAE,IAAc;IAC3D,IAAI,GAAG,GAAyB,IAAI,CAAC,MAAM,CAAC;IAC5C,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,aAAa;YAAE,OAAO,IAAI,CAAC;QACvC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,QAAkB,EAAE,MAAgB;IAC3D,OAAO,QAAQ,KAAK,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E;;6EAE6E;AAC7E,SAAS,cAAc,CAAC,QAAkB,EAAE,YAAoB,EAAE,IAAY,EAAE,MAAgB,EAAE,GAAiB;IACjH,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,wEAAwE;IACxE,4EAA4E;IAC5E,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,GAAG,CAAC,IAAI,CACN,IAAI,CACF,YAAY,EACZ,GAAG,IAAI,eAAe,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,EAAE;QACpE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAClE,CACF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;2EAE2E;AAC3E,SAAS,MAAM,CAAC,GAAW;IACzB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,GAAW,EAAE,WAAmB;IACxE,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC;IAC3D,OAAO,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED;;cAEc;AACd,SAAS,OAAO,CAAC,MAAkB,EAAE,OAAe;IAClD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,0BAA0B,CAAC,CAAC;QACxG,CAAC,CAAC,IAAI,KAAK,OAAO,CACrB,CAAC;AACJ,CAAC;AAED;sFACsF;AACtF,SAAS,SAAS,CAAC,GAAa;IAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAClI,OAAO,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB,CAC3B,QAAkB,EAClB,YAAoB,EACpB,IAAY,EACZ,GAAW,EACX,MAA8B,EAC9B,GAAiB;IAEjB,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO;IACjC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,IAAI,KAAK,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,CAAC,sFAAsF;IAChG,CAAC;IACD,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,IAAc,EACd,MAAgB,EAChB,YAAoB,EACpB,IAAY,EACZ,GAAW,EACX,WAAmB,EACnB,GAAiB;IAEjB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;QAAE,OAAO;IAC5D,IAAI,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACzD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAC/B,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAc,EAAE,MAAgB,EAAE,YAAoB,EAAE,GAAiB;IAC5F,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;QACxB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,YAAY,GAAG,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;IAEhD,6EAA6E;IAC7E,8DAA8D;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAC5C,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/I,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAC1C,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3I,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAC1C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,kBAAkB,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,IAAc,EAAE,IAAY,EAAE,GAAiB;IAChF,iFAAiF;IACjF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,4EAA4E;IAC5E,+EAA+E;IAC/E,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChE,oFAAoF;QACpF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACvH,IAAI,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC;YAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACvH,CAAC;IAED,uEAAuE;IACvE,kEAAkE;IAClE,0EAA0E;IAC1E,6EAA6E;IAC7E,2EAA2E;IAC3E,4CAA4C;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,0BAA0B,EAAE,CAAC;QAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;YACnE,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5I,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAc;IACrD,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAW,EAAE,MAAc,EAAQ,EAAE;QACjD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,4EAA4E;YAC5E,gFAAgF;YAChF,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW;gBACjC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,KAAK,EAAE;oBACb,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;oBACnB,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** The migration guide every message below points at, and the section for this port. */
|
|
2
|
+
export declare const DOCS_MIGRATION_GUIDE: string;
|
|
3
|
+
/** What `meta docs` prints before it exits 2. */
|
|
4
|
+
export declare const REMOVED_DOCS_COMMAND: string;
|
|
5
|
+
/** What `meta verify --docs` prints before it exits 2. */
|
|
6
|
+
export declare const REMOVED_VERIFY_DOCS: string;
|
|
7
|
+
/** What a gen run prints, and fails on, when there is no config to read the list from. */
|
|
8
|
+
export declare const NO_CONFIG_MESSAGE: string;
|
|
9
|
+
/** True when a loaded config still carries the 1.0 `docs` block. */
|
|
10
|
+
export declare function hasLegacyDocsBlock(config: object): boolean;
|
|
11
|
+
/** What `command` prints, and fails on, before it writes anything, for a 1.0 `docs` block. */
|
|
12
|
+
export declare function legacyDocsConfigMessage(command: string): string;
|
|
13
|
+
//# sourceMappingURL=docs-removed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-removed.d.ts","sourceRoot":"","sources":["../../../src/lib/docs-removed.ts"],"names":[],"mappings":"AAMA,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,QAA8D,CAAC;AAKhG,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,QAE+B,CAAC;AAEjE,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,QAE0D,CAAC;AAE3F,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,QAGsB,CAAC;AAErD,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// ADR-0034 Amendment 9 — one way to generate. Documentation is written by generators the
|
|
2
|
+
// project lists in `generators`, and `meta gen` runs them. The docs command, `meta verify
|
|
3
|
+
// --docs` and the `docs` config block are gone, and each says so in the amendment's fixed
|
|
4
|
+
// words, pointing at the migration section an agent can apply by hand.
|
|
5
|
+
import { guideUrl } from "@metaobjectsdev/metadata/release-docs";
|
|
6
|
+
/** The migration guide every message below points at, and the section for this port. */
|
|
7
|
+
export const DOCS_MIGRATION_GUIDE = guideUrl("docs/features/migrations/docs-are-generators.md");
|
|
8
|
+
const SECTION = `section "TypeScript"`;
|
|
9
|
+
/** Where a TypeScript project declares a docs generator. */
|
|
10
|
+
const WHERE = "in `generators` in metaobjects.config.ts";
|
|
11
|
+
/** What `meta docs` prints before it exits 2. */
|
|
12
|
+
export const REMOVED_DOCS_COMMAND = "`meta docs` was removed in 1.1.0. `meta gen` writes documentation now: declare each docs " +
|
|
13
|
+
`generator ${WHERE}. See ${DOCS_MIGRATION_GUIDE}, ${SECTION}.`;
|
|
14
|
+
/** What `meta verify --docs` prints before it exits 2. */
|
|
15
|
+
export const REMOVED_VERIFY_DOCS = "`meta verify --docs` was removed in 1.1.0. `meta verify --codegen` checks documentation now, " +
|
|
16
|
+
`with everything else \`generators\` declares. See ${DOCS_MIGRATION_GUIDE}, ${SECTION}.`;
|
|
17
|
+
/** What a gen run prints, and fails on, when there is no config to read the list from. */
|
|
18
|
+
export const NO_CONFIG_MESSAGE = "meta gen: no metaobjects.config.ts. Nothing is generated until a config declares it, " +
|
|
19
|
+
"documentation included; `meta init` writes one. A 1.0 project that ran `meta docs` with no " +
|
|
20
|
+
`config: see ${DOCS_MIGRATION_GUIDE}, ${SECTION}.`;
|
|
21
|
+
/** True when a loaded config still carries the 1.0 `docs` block. */
|
|
22
|
+
export function hasLegacyDocsBlock(config) {
|
|
23
|
+
return Object.hasOwn(config, "docs");
|
|
24
|
+
}
|
|
25
|
+
/** What `command` prints, and fails on, before it writes anything, for a 1.0 `docs` block. */
|
|
26
|
+
export function legacyDocsConfigMessage(command) {
|
|
27
|
+
return (`${command}: found 1.0 docs configuration (the docs block in metaobjects.config.ts). ` +
|
|
28
|
+
"Nothing reads it any more, so this run would write no documentation. Declare each docs " +
|
|
29
|
+
`generator ${WHERE}. See ${DOCS_MIGRATION_GUIDE}, ${SECTION}.`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=docs-removed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-removed.js","sourceRoot":"","sources":["../../../src/lib/docs-removed.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,0FAA0F;AAC1F,0FAA0F;AAC1F,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEjE,wFAAwF;AACxF,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,iDAAiD,CAAC,CAAC;AAChG,MAAM,OAAO,GAAG,sBAAsB,CAAC;AACvC,4DAA4D;AAC5D,MAAM,KAAK,GAAG,0CAA0C,CAAC;AAEzD,iDAAiD;AACjD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,2FAA2F;IAC3F,aAAa,KAAK,SAAS,oBAAoB,KAAK,OAAO,GAAG,CAAC;AAEjE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,+FAA+F;IAC/F,qDAAqD,oBAAoB,KAAK,OAAO,GAAG,CAAC;AAE3F,0FAA0F;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAC5B,uFAAuF;IACvF,6FAA6F;IAC7F,eAAe,oBAAoB,KAAK,OAAO,GAAG,CAAC;AAErD,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,OAAO,CACL,GAAG,OAAO,4EAA4E;QACtF,yFAAyF;QACzF,aAAa,KAAK,SAAS,oBAAoB,KAAK,OAAO,GAAG,CAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** The name `meta eject` takes for the site theme. A catalog entry, but not a generator copy. */
|
|
2
|
+
export declare const DOCS_SITE_NAME = "docs-site";
|
|
3
|
+
export interface DocsSiteFileResult {
|
|
4
|
+
/** Project-relative path. */
|
|
5
|
+
path: string;
|
|
6
|
+
status: "created" | "preserved" | "replaced";
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Write each template and asset that is missing. A file already there is kept unless
|
|
10
|
+
* `force`: a re-run never clobbers a theme the adopter has edited.
|
|
11
|
+
*/
|
|
12
|
+
export declare function ejectDocsSite(projectRoot: string, force: boolean): Promise<DocsSiteFileResult[]>;
|
|
13
|
+
//# sourceMappingURL=docs-site-eject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-site-eject.d.ts","sourceRoot":"","sources":["../../../src/lib/docs-site-eject.ts"],"names":[],"mappings":"AAaA,iGAAiG;AACjG,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAqBtG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// `meta eject docs-site` (ADR-0034 Amendment 9): copy the HTML site's templates and assets
|
|
2
|
+
// into `codegen/docs-site/{templates,assets}`, where `docsSiteFile()` reads them in place of
|
|
3
|
+
// the bundled ones. The site's BUILDER stays packaged (it assembles the page data the
|
|
4
|
+
// templates read; Amendment 8 ruling 3); what an adopter changes is the look, and that is
|
|
5
|
+
// these files. It was `meta docs --scaffold-site` until 1.1.0, and writes the same files to
|
|
6
|
+
// the same place.
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import { OWNED_DOCS_SITE_DIR } from "@metaobjectsdev/codegen-ts";
|
|
11
|
+
import { readSiteFile, SITE_ASSET_NAMES, SITE_TEMPLATE_NAMES } from "@metaobjectsdev/docs-site";
|
|
12
|
+
/** The name `meta eject` takes for the site theme. A catalog entry, but not a generator copy. */
|
|
13
|
+
export const DOCS_SITE_NAME = "docs-site";
|
|
14
|
+
/**
|
|
15
|
+
* Write each template and asset that is missing. A file already there is kept unless
|
|
16
|
+
* `force`: a re-run never clobbers a theme the adopter has edited.
|
|
17
|
+
*/
|
|
18
|
+
export async function ejectDocsSite(projectRoot, force) {
|
|
19
|
+
const out = [];
|
|
20
|
+
const sets = [
|
|
21
|
+
{ dir: `${OWNED_DOCS_SITE_DIR}/templates`, names: SITE_TEMPLATE_NAMES, kind: "template" },
|
|
22
|
+
{ dir: `${OWNED_DOCS_SITE_DIR}/assets`, names: SITE_ASSET_NAMES, kind: "asset" },
|
|
23
|
+
];
|
|
24
|
+
for (const { dir, names, kind } of sets) {
|
|
25
|
+
await mkdir(join(projectRoot, dir), { recursive: true });
|
|
26
|
+
for (const name of names) {
|
|
27
|
+
const path = `${dir}/${name}`;
|
|
28
|
+
const abs = join(projectRoot, path);
|
|
29
|
+
const existed = existsSync(abs);
|
|
30
|
+
if (existed && !force) {
|
|
31
|
+
out.push({ path, status: "preserved" });
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
await writeFile(abs, readSiteFile(kind, name), "utf8");
|
|
35
|
+
out.push({ path, status: existed ? "replaced" : "created" });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=docs-site-eject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-site-eject.js","sourceRoot":"","sources":["../../../src/lib/docs-site-eject.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,6FAA6F;AAC7F,sFAAsF;AACtF,0FAA0F;AAC1F,4FAA4F;AAC5F,kBAAkB;AAElB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhG,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAQ1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,KAAc;IACrE,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAiF;QACzF,EAAE,GAAG,EAAE,GAAG,mBAAmB,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE;QACzF,EAAE,GAAG,EAAE,GAAG,mBAAmB,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;KACjF,CAAC;IACF,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,MAAM,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type MetaData, type MetaDataSource } from "@metaobjectsdev/metadata";
|
|
2
|
+
import { type DeclaredDuplicateField } from "@metaobjectsdev/metadata/core";
|
|
3
|
+
import type { Diagnostic } from "./requirement-check.js";
|
|
4
|
+
/** An `identity.reference` lists a field its object does not have. */
|
|
5
|
+
export declare const WARN_REFERENCE_FIELD_NOT_FOUND = "WARN_REFERENCE_FIELD_NOT_FOUND";
|
|
6
|
+
/** One `children` list declares the same field name more than once. */
|
|
7
|
+
export declare const WARN_DUPLICATE_FIELD_NAME = "WARN_DUPLICATE_FIELD_NAME";
|
|
8
|
+
/** Resolve one metadata file path to the source the duplicate scan reads it through. */
|
|
9
|
+
export type ReadSource = (path: string) => MetaDataSource;
|
|
10
|
+
/**
|
|
11
|
+
* Report every `identity.reference` whose `@fields` names a field its object lacks.
|
|
12
|
+
* Returns `[]` for a model where every listed field exists.
|
|
13
|
+
*/
|
|
14
|
+
export declare function lintReferenceFields(root: MetaData): Diagnostic[];
|
|
15
|
+
/** One raw-scan finding as a diagnostic. Exported so the scan and its text are testable
|
|
16
|
+
* without a filesystem. */
|
|
17
|
+
export declare function duplicateFieldDiagnostic(dup: DeclaredDuplicateField): Diagnostic;
|
|
18
|
+
/**
|
|
19
|
+
* Report every field name declared more than once in one object's `children` list,
|
|
20
|
+
* scanning each of `files` as raw content.
|
|
21
|
+
*
|
|
22
|
+
* Unreadable or unparsable files are skipped — the loader reports those itself.
|
|
23
|
+
*/
|
|
24
|
+
export declare function lintDuplicateFields(files: readonly string[], readSource: ReadSource): Promise<Diagnostic[]>;
|
|
25
|
+
//# sourceMappingURL=field-lint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-lint.d.ts","sourceRoot":"","sources":["../../../src/lib/field-lint.ts"],"names":[],"mappings":"AA0BA,OAAO,EAML,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,sEAAsE;AACtE,eAAO,MAAM,8BAA8B,mCAAmC,CAAC;AAC/E,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AAErE,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;AAM1D;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAyBhE;AAWD;4BAC4B;AAC5B,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,sBAAsB,GAAG,UAAU,CAQhF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAajH"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// `meta verify` — the field AUTHORING lint.
|
|
2
|
+
//
|
|
3
|
+
// Two metadata mistakes about an object's FIELDS load with no error on every port:
|
|
4
|
+
//
|
|
5
|
+
// 1. An `identity.reference` whose `@fields` names a field the object does not have.
|
|
6
|
+
// The loader resolves `@references` (the target) and never looks at `@fields`, so a
|
|
7
|
+
// typo there produces a foreign key over a column nothing declares.
|
|
8
|
+
// 2. Two `field.*` children with the same `name` in one object's `children` list. The
|
|
9
|
+
// later declaration is folded into the first, and one of a different subtype is
|
|
10
|
+
// dropped, both silently.
|
|
11
|
+
//
|
|
12
|
+
// WHY THESE ARE WARNINGS AND NOT LOAD ERRORS. docs/compatibility-policy.md does not allow
|
|
13
|
+
// a new load error for metadata that loads today — name-lint.ts's header has the same
|
|
14
|
+
// ruling for whitespace names. So, like every sibling lint in this directory:
|
|
15
|
+
//
|
|
16
|
+
// EVERY FINDING IS A WARNING, BY CONSTRUCTION. Nothing here reaches the exit code.
|
|
17
|
+
//
|
|
18
|
+
// THE TWO HALVES READ DIFFERENT THINGS, and have to. The reference half reads the LOADED
|
|
19
|
+
// model, because "does this object have that field" is a question about the EFFECTIVE
|
|
20
|
+
// field set — inherited through `extends` and merged from overlay files. The duplicate
|
|
21
|
+
// half reads the RAW DOCUMENTS, because the merge has already erased the duplicate from
|
|
22
|
+
// the model by the time anything can ask (overlay-lint.ts reads files for the same reason).
|
|
23
|
+
//
|
|
24
|
+
// The codes, the message text and the fixtures are shared with the C#, Java and Python
|
|
25
|
+
// CLIs: fixtures/field-lint-conformance/.
|
|
26
|
+
import { IDENTITY_ATTR_FIELDS, IDENTITY_SUBTYPE_REFERENCE, TYPE_FIELD, TYPE_IDENTITY, TYPE_OBJECT, } from "@metaobjectsdev/metadata";
|
|
27
|
+
import { declaredDuplicateFields } from "@metaobjectsdev/metadata/core";
|
|
28
|
+
/** An `identity.reference` lists a field its object does not have. */
|
|
29
|
+
export const WARN_REFERENCE_FIELD_NOT_FOUND = "WARN_REFERENCE_FIELD_NOT_FOUND";
|
|
30
|
+
/** One `children` list declares the same field name more than once. */
|
|
31
|
+
export const WARN_DUPLICATE_FIELD_NAME = "WARN_DUPLICATE_FIELD_NAME";
|
|
32
|
+
function warn(path, code, message) {
|
|
33
|
+
return { severity: "warn", code, path, message };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Report every `identity.reference` whose `@fields` names a field its object lacks.
|
|
37
|
+
* Returns `[]` for a model where every listed field exists.
|
|
38
|
+
*/
|
|
39
|
+
export function lintReferenceFields(root) {
|
|
40
|
+
const out = [];
|
|
41
|
+
// OWN-ONLY (ADR-0039 sanctioned case): a root has no super, and its own children are
|
|
42
|
+
// the declared objects.
|
|
43
|
+
for (const object of root.ownChildren()) {
|
|
44
|
+
if (object.type !== TYPE_OBJECT)
|
|
45
|
+
continue;
|
|
46
|
+
const address = object.resolutionKey();
|
|
47
|
+
// RESOLVING: the effective field set — a field inherited through `extends` or added
|
|
48
|
+
// by an overlay file is a field the object has.
|
|
49
|
+
const fields = new Set(object.children().filter((c) => c.type === TYPE_FIELD).map((c) => c.name));
|
|
50
|
+
// OWN-ONLY (ADR-0039 sanctioned case): report each DECLARATION once, on the object
|
|
51
|
+
// that declares it. The resolving `children()` would repeat an inherited reference
|
|
52
|
+
// on every subtype.
|
|
53
|
+
for (const identity of object.ownChildren()) {
|
|
54
|
+
if (identity.type !== TYPE_IDENTITY || identity.subType !== IDENTITY_SUBTYPE_REFERENCE)
|
|
55
|
+
continue;
|
|
56
|
+
// RESOLVING: `@fields` may itself be inherited through the identity's `extends`.
|
|
57
|
+
const listed = identity.attr(IDENTITY_ATTR_FIELDS);
|
|
58
|
+
const names = Array.isArray(listed) ? listed : typeof listed === "string" ? [listed] : [];
|
|
59
|
+
for (const name of names) {
|
|
60
|
+
if (typeof name !== "string" || fields.has(name))
|
|
61
|
+
continue;
|
|
62
|
+
out.push(warn(`${address}.${identity.name}`, WARN_REFERENCE_FIELD_NOT_FOUND, referenceFieldMessage(identity.name, name, address)));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function referenceFieldMessage(identity, field, object) {
|
|
69
|
+
return (`identity.reference ${JSON.stringify(identity)} lists ${JSON.stringify(field)} in @fields, but ` +
|
|
70
|
+
`${object} has no field of that name, inherited and overlaid fields included. Nothing checks ` +
|
|
71
|
+
`this at load, so the reference is built on a field that does not exist. Rename the entry to ` +
|
|
72
|
+
`an existing field, or declare the field.`);
|
|
73
|
+
}
|
|
74
|
+
/** One raw-scan finding as a diagnostic. Exported so the scan and its text are testable
|
|
75
|
+
* without a filesystem. */
|
|
76
|
+
export function duplicateFieldDiagnostic(dup) {
|
|
77
|
+
return warn(`${dup.object}.${dup.field}`, WARN_DUPLICATE_FIELD_NAME, `${dup.object} declares the field ${JSON.stringify(dup.field)} ${dup.count} times in one children ` +
|
|
78
|
+
`list. Nothing reports this at load, and only the first declaration is certain to take effect. ` +
|
|
79
|
+
`Remove or rename the duplicate.`);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Report every field name declared more than once in one object's `children` list,
|
|
83
|
+
* scanning each of `files` as raw content.
|
|
84
|
+
*
|
|
85
|
+
* Unreadable or unparsable files are skipped — the loader reports those itself.
|
|
86
|
+
*/
|
|
87
|
+
export async function lintDuplicateFields(files, readSource) {
|
|
88
|
+
const out = [];
|
|
89
|
+
for (const path of files) {
|
|
90
|
+
let declared;
|
|
91
|
+
try {
|
|
92
|
+
const source = readSource(path);
|
|
93
|
+
declared = declaredDuplicateFields(await source.read(), source.format);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
out.push(...declared.map(duplicateFieldDiagnostic));
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=field-lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-lint.js","sourceRoot":"","sources":["../../../src/lib/field-lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MetaData } from "@metaobjectsdev/metadata";
|
|
2
2
|
import { type Dialect } from "@metaobjectsdev/migrate-ts";
|
|
3
3
|
export interface UnindexedFkFinding {
|
|
4
4
|
/** The metadata file declaring the entity ("" when the loader recorded none). */
|
|
@@ -9,7 +9,6 @@ export interface UnindexedFkFinding {
|
|
|
9
9
|
}
|
|
10
10
|
export interface UnindexedFkOptions {
|
|
11
11
|
dialect: Dialect;
|
|
12
|
-
columnNamingStrategy: ColumnNamingStrategy;
|
|
13
12
|
/** Skip an entity by FQN — imported (dependency) metadata is not the adopter's to index. */
|
|
14
13
|
skip?: (fqn: string) => boolean;
|
|
15
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fk-index-advisory.d.ts","sourceRoot":"","sources":["../../../src/lib/fk-index-advisory.ts"],"names":[],"mappings":"AAoBA,OAAO,
|
|
1
|
+
{"version":3,"file":"fk-index-advisory.d.ts","sourceRoot":"","sources":["../../../src/lib/fk-index-advisory.ts"],"names":[],"mappings":"AAoBA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,OAAO,EAEb,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACjC;AAkBD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAmD1G"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// a key when its leading columns are exactly the key's columns, in any order. Expression
|
|
14
14
|
// indexes are not counted; partial ones are (bias to under-flagging).
|
|
15
15
|
import { INDEX_SUBTYPE_LOOKUP, TYPE_INDEX, TYPE_SUBTYPE_SEPARATOR, } from "@metaobjectsdev/metadata/constants";
|
|
16
|
-
import { isMetaObject, resolveColumnName, } from "@metaobjectsdev/metadata";
|
|
16
|
+
import { isMetaObject, resolveColumnName, physicalNamingOf, } from "@metaobjectsdev/metadata";
|
|
17
17
|
import { buildExpectedSchemaWithProvenance, qualifiedDbName, } from "@metaobjectsdev/migrate-ts";
|
|
18
18
|
const INDEX_LOOKUP = `${TYPE_INDEX}${TYPE_SUBTYPE_SEPARATOR}${INDEX_SUBTYPE_LOOKUP}`;
|
|
19
19
|
function covered(table, fkColumns) {
|
|
@@ -30,8 +30,9 @@ function pascal(s) {
|
|
|
30
30
|
export function scanForUnindexedForeignKeys(root, opts) {
|
|
31
31
|
const { snapshot, provenance } = buildExpectedSchemaWithProvenance(root, {
|
|
32
32
|
dialect: opts.dialect,
|
|
33
|
-
columnNamingStrategy: opts.columnNamingStrategy,
|
|
34
33
|
});
|
|
34
|
+
// ADR-0058: the same column rule the expected schema just used, from the loaded root.
|
|
35
|
+
const columnNamingStrategy = physicalNamingOf(root).columns;
|
|
35
36
|
// ADR-0039: effective children — resolve rather than rely on root being unextended.
|
|
36
37
|
const objectsByFqn = new Map(root.children().filter(isMetaObject).map((o) => [o.resolutionKey(), o]));
|
|
37
38
|
const out = [];
|
|
@@ -55,7 +56,7 @@ export function scanForUnindexedForeignKeys(root, opts) {
|
|
|
55
56
|
const ref = entity.referenceIdentities().find((r) => {
|
|
56
57
|
const cols = r.fields.map((f) => {
|
|
57
58
|
const field = entity.fields().find((x) => x.name === f);
|
|
58
|
-
return field !== undefined ? resolveColumnName(field,
|
|
59
|
+
return field !== undefined ? resolveColumnName(field, columnNamingStrategy) : f;
|
|
59
60
|
});
|
|
60
61
|
return cols.length === fk.columns.length && cols.every((c, i) => c === fk.columns[i]);
|
|
61
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fk-index-advisory.js","sourceRoot":"","sources":["../../../src/lib/fk-index-advisory.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,wFAAwF;AACxF,wFAAwF;AACxF,yFAAyF;AACzF,yFAAyF;AACzF,yFAAyF;AACzF,kFAAkF;AAClF,EAAE;AACF,qFAAqF;AACrF,0FAA0F;AAC1F,2FAA2F;AAC3F,yFAAyF;AACzF,sEAAsE;AAEtE,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,iBAAiB,
|
|
1
|
+
{"version":3,"file":"fk-index-advisory.js","sourceRoot":"","sources":["../../../src/lib/fk-index-advisory.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/format.d.ts
CHANGED
|
@@ -15,4 +15,11 @@ export declare function toonEncode(value: unknown): string;
|
|
|
15
15
|
* `emitStructuredError` is the same split, made command-locally before this existed.
|
|
16
16
|
*/
|
|
17
17
|
export declare function emitStructured(payload: unknown, fmt: OutputFormat): void;
|
|
18
|
+
/**
|
|
19
|
+
* One narration line, on the other side of the split {@link emitStructured} states:
|
|
20
|
+
* stdout in text format, stderr in a structured run, so a document never has a
|
|
21
|
+
* sentence in front of it. Every command that prints prose alongside a document
|
|
22
|
+
* routes it through here.
|
|
23
|
+
*/
|
|
24
|
+
export declare function narrate(fmt: OutputFormat, line: string): void;
|
|
18
25
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/lib/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/lib/format.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAIpD,iDAAiD;AACjD,eAAO,MAAM,aAAa,EAAE,SAAS,YAAY,EAA6B,CAAC;AAE/E,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEhE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,CAIpF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAGxE;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG7D"}
|
package/dist/src/lib/format.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { encode } from "@toon-format/toon";
|
|
2
|
+
import { log } from "./log.js";
|
|
2
3
|
const VALID = new Set(["toon", "json", "text"]);
|
|
3
4
|
/** Valid --format values, for usage messages. */
|
|
4
5
|
export const VALID_FORMATS = ["toon", "json", "text"];
|
|
@@ -30,4 +31,16 @@ export function emitStructured(payload, fmt) {
|
|
|
30
31
|
else if (fmt === "toon")
|
|
31
32
|
console.log(toonEncode(payload));
|
|
32
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* One narration line, on the other side of the split {@link emitStructured} states:
|
|
36
|
+
* stdout in text format, stderr in a structured run, so a document never has a
|
|
37
|
+
* sentence in front of it. Every command that prints prose alongside a document
|
|
38
|
+
* routes it through here.
|
|
39
|
+
*/
|
|
40
|
+
export function narrate(fmt, line) {
|
|
41
|
+
if (fmt === "text")
|
|
42
|
+
log.info(line);
|
|
43
|
+
else
|
|
44
|
+
log.warn(line);
|
|
45
|
+
}
|
|
33
46
|
//# sourceMappingURL=format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/lib/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/lib/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI/B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,iDAAiD;AACjD,MAAM,CAAC,MAAM,aAAa,GAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/E,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAoB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAwB,EAAE,KAAc;IACpE,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAoB,CAAC;QAAE,OAAO,IAAoB,CAAC;IACzE,2EAA2E;IAC3E,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,GAAiB;IAChE,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAC7D,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,GAAiB,EAAE,IAAY;IACrD,IAAI,GAAG,KAAK,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;QAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -5,10 +5,12 @@ export interface GenMigrateAdviceInput {
|
|
|
5
5
|
dialect: "sqlite" | "postgres" | "mysql" | undefined;
|
|
6
6
|
/** `.metaobjects/config.json` `migrate.dialect`, when set (may say `d1`). */
|
|
7
7
|
migrateDialect: "sqlite" | "postgres" | "d1" | undefined;
|
|
8
|
-
columnNamingStrategy: "snake_case" | "literal" | "kebab-case" | undefined;
|
|
9
8
|
projectRoot: string;
|
|
10
9
|
/** The migrations directory `meta migrate` uses (holds the committed snapshot). */
|
|
11
10
|
migrateOutDir: string;
|
|
11
|
+
/** `.metaobjects/config.json` `migrate.format`. Under `flyway` the snapshot is read without
|
|
12
|
+
* Flyway's history table, as `meta migrate` reads it. */
|
|
13
|
+
migrateFormat: "default" | "flyway";
|
|
12
14
|
/** Paths (any form) of the files this run wrote, merged or removed. */
|
|
13
15
|
changedFiles: readonly string[];
|
|
14
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen-migrate-advice.d.ts","sourceRoot":"","sources":["../../../src/lib/gen-migrate-advice.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"gen-migrate-advice.d.ts","sourceRoot":"","sources":["../../../src/lib/gen-migrate-advice.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAoBzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,kFAAkF;IAClF,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACrD,6EAA6E;IAC7E,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB;8DAC0D;IAC1D,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,uEAAuE;IACvE,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,qFAAqF;AACrF,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0ChG"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// other sourceless declarations do not count.
|
|
19
19
|
import { existsSync } from "node:fs";
|
|
20
20
|
import { basename, resolve as resolvePath } from "node:path";
|
|
21
|
-
import { buildExpectedSchemaWithProvenance, diff, findWranglerConfig, parseWranglerConfig, readSnapshot, snapshotPath, } from "@metaobjectsdev/migrate-ts";
|
|
21
|
+
import { buildExpectedSchemaWithProvenance, diff, findWranglerConfig, parseWranglerConfig, readSnapshot, snapshotPath, withoutFlywayHistory, } from "@metaobjectsdev/migrate-ts";
|
|
22
22
|
/** The FQN separator; an object's short name is the segment after the last one. */
|
|
23
23
|
const FQN_SEPARATOR = "::";
|
|
24
24
|
/** The shared enums module `entityFile()` emits (its members back CHECK constraints). */
|
|
@@ -36,7 +36,6 @@ export async function genMigrateAdvice(input) {
|
|
|
36
36
|
try {
|
|
37
37
|
built = buildExpectedSchemaWithProvenance(input.metadata, {
|
|
38
38
|
dialect: schemaDialect,
|
|
39
|
-
...(input.columnNamingStrategy !== undefined ? { columnNamingStrategy: input.columnNamingStrategy } : {}),
|
|
40
39
|
});
|
|
41
40
|
}
|
|
42
41
|
catch {
|
|
@@ -49,7 +48,8 @@ export async function genMigrateAdvice(input) {
|
|
|
49
48
|
const snapPath = snapshotPath(resolvePath(input.projectRoot, input.migrateOutDir), schemaDialect);
|
|
50
49
|
const snapshot = existsSync(snapPath) ? await readSnapshot(snapPath) : null;
|
|
51
50
|
if (snapshot !== null) {
|
|
52
|
-
const
|
|
51
|
+
const committed = input.migrateFormat === "flyway" ? withoutFlywayHistory(snapshot) : snapshot;
|
|
52
|
+
const actual = { ...committed, views: [] };
|
|
53
53
|
try {
|
|
54
54
|
const d = await diff({ expected, actual, dialect: schemaDialect });
|
|
55
55
|
if (d.changes.every((c) => VIEW_CHANGE_KINDS.has(c.kind)))
|
|
@@ -82,7 +82,6 @@ function mysqlAdvice(input) {
|
|
|
82
82
|
try {
|
|
83
83
|
provenance = buildExpectedSchemaWithProvenance(input.metadata, {
|
|
84
84
|
dialect: "postgres",
|
|
85
|
-
...(input.columnNamingStrategy !== undefined ? { columnNamingStrategy: input.columnNamingStrategy } : {}),
|
|
86
85
|
}).provenance;
|
|
87
86
|
}
|
|
88
87
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen-migrate-advice.js","sourceRoot":"","sources":["../../../src/lib/gen-migrate-advice.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,oCAAoC;AACpC,EAAE;AACF,mEAAmE;AACnE,uFAAuF;AACvF,qFAAqF;AACrF,mFAAmF;AACnF,+EAA+E;AAC/E,EAAE;AACF,6CAA6C;AAC7C,mFAAmF;AACnF,6CAA6C;AAC7C,sFAAsF;AACtF,0EAA0E;AAC1E,oFAAoF;AACpF,qFAAqF;AACrF,qFAAqF;AACrF,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EACL,iCAAiC,EACjC,IAAI,EACJ,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,
|
|
1
|
+
{"version":3,"file":"gen-migrate-advice.js","sourceRoot":"","sources":["../../../src/lib/gen-migrate-advice.ts"],"names":[],"mappings":"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"}
|