@metaobjectsdev/codegen-ts 0.9.0 → 0.10.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 +1 -1
- package/dist/column-mapper.d.ts.map +1 -1
- package/dist/column-mapper.js +24 -8
- package/dist/column-mapper.js.map +1 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -1
- package/dist/docs-paths.d.ts +58 -0
- package/dist/docs-paths.d.ts.map +1 -0
- package/dist/docs-paths.js +89 -0
- package/dist/docs-paths.js.map +1 -0
- package/dist/enum-import.d.ts +14 -0
- package/dist/enum-import.d.ts.map +1 -0
- package/dist/enum-import.js +35 -0
- package/dist/enum-import.js.map +1 -0
- package/dist/enum-shared.d.ts +32 -0
- package/dist/enum-shared.d.ts.map +1 -0
- package/dist/enum-shared.js +83 -0
- package/dist/enum-shared.js.map +1 -0
- package/dist/generator-registry.d.ts +22 -0
- package/dist/generator-registry.d.ts.map +1 -0
- package/dist/generator-registry.js +161 -0
- package/dist/generator-registry.js.map +1 -0
- package/dist/generator.d.ts +6 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js.map +1 -1
- package/dist/generators/api-doc-render.d.ts +17 -0
- package/dist/generators/api-doc-render.d.ts.map +1 -0
- package/dist/generators/api-doc-render.js +431 -0
- package/dist/generators/api-doc-render.js.map +1 -0
- package/dist/generators/api-docs-file.d.ts +21 -0
- package/dist/generators/api-docs-file.d.ts.map +1 -0
- package/dist/generators/api-docs-file.js +112 -0
- package/dist/generators/api-docs-file.js.map +1 -0
- package/dist/generators/api-field-shape.d.ts +39 -0
- package/dist/generators/api-field-shape.d.ts.map +1 -0
- package/dist/generators/api-field-shape.js +92 -0
- package/dist/generators/api-field-shape.js.map +1 -0
- package/dist/generators/api-label.d.ts +3 -0
- package/dist/generators/api-label.d.ts.map +1 -0
- package/dist/generators/api-label.js +8 -0
- package/dist/generators/api-label.js.map +1 -0
- package/dist/generators/api-model.d.ts +122 -0
- package/dist/generators/api-model.d.ts.map +1 -0
- package/dist/generators/api-model.js +809 -0
- package/dist/generators/api-model.js.map +1 -0
- package/dist/generators/docs-data-builder.d.ts +26 -4
- package/dist/generators/docs-data-builder.d.ts.map +1 -1
- package/dist/generators/docs-data-builder.js +436 -164
- package/dist/generators/docs-data-builder.js.map +1 -1
- package/dist/generators/docs-data.d.ts +136 -27
- package/dist/generators/docs-data.d.ts.map +1 -1
- package/dist/generators/docs-data.js +1 -1
- package/dist/generators/docs-data.js.map +1 -1
- package/dist/generators/docs-file.d.ts +19 -0
- package/dist/generators/docs-file.d.ts.map +1 -1
- package/dist/generators/docs-file.js +154 -27
- package/dist/generators/docs-file.js.map +1 -1
- package/dist/generators/entity-file.d.ts.map +1 -1
- package/dist/generators/entity-file.js +29 -14
- package/dist/generators/entity-file.js.map +1 -1
- package/dist/generators/extractor-file.d.ts.map +1 -1
- package/dist/generators/extractor-file.js +2 -1
- package/dist/generators/extractor-file.js.map +1 -1
- package/dist/generators/field-anchor.d.ts +7 -0
- package/dist/generators/field-anchor.d.ts.map +1 -0
- package/dist/generators/field-anchor.js +23 -0
- package/dist/generators/field-anchor.js.map +1 -0
- package/dist/generators/index.d.ts +8 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +6 -0
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/mermaid-er.d.ts +14 -0
- package/dist/generators/mermaid-er.d.ts.map +1 -1
- package/dist/generators/mermaid-er.js +14 -0
- package/dist/generators/mermaid-er.js.map +1 -1
- package/dist/generators/output-parser-file.d.ts.map +1 -1
- package/dist/generators/output-parser-file.js +3 -4
- package/dist/generators/output-parser-file.js.map +1 -1
- package/dist/generators/output-prompt-file.d.ts.map +1 -1
- package/dist/generators/output-prompt-file.js +2 -2
- package/dist/generators/output-prompt-file.js.map +1 -1
- package/dist/generators/prompt-render-file.d.ts.map +1 -1
- package/dist/generators/prompt-render-file.js +3 -4
- package/dist/generators/prompt-render-file.js.map +1 -1
- package/dist/generators/queries-file.d.ts.map +1 -1
- package/dist/generators/queries-file.js +8 -3
- package/dist/generators/queries-file.js.map +1 -1
- package/dist/generators/render-helper-file.d.ts.map +1 -1
- package/dist/generators/render-helper-file.js +2 -2
- package/dist/generators/render-helper-file.js.map +1 -1
- package/dist/generators/routes-file-hono.d.ts.map +1 -1
- package/dist/generators/routes-file-hono.js +5 -1
- package/dist/generators/routes-file-hono.js.map +1 -1
- package/dist/generators/routes-file.d.ts +3 -0
- package/dist/generators/routes-file.d.ts.map +1 -1
- package/dist/generators/routes-file.js +6 -1
- package/dist/generators/routes-file.js.map +1 -1
- package/dist/generators/template-doc-builder.d.ts +19 -0
- package/dist/generators/template-doc-builder.d.ts.map +1 -0
- package/dist/generators/template-doc-builder.js +220 -0
- package/dist/generators/template-doc-builder.js.map +1 -0
- package/dist/generators/template-doc-data.d.ts +62 -0
- package/dist/generators/template-doc-data.d.ts.map +1 -0
- package/dist/generators/template-doc-data.js +16 -0
- package/dist/generators/template-doc-data.js.map +1 -0
- package/dist/generators/template-payload-tree.d.ts +15 -0
- package/dist/generators/template-payload-tree.d.ts.map +1 -0
- package/dist/generators/template-payload-tree.js +61 -0
- package/dist/generators/template-payload-tree.js.map +1 -0
- package/dist/generators/template-source-annotate.d.ts +74 -0
- package/dist/generators/template-source-annotate.d.ts.map +1 -0
- package/dist/generators/template-source-annotate.js +184 -0
- package/dist/generators/template-source-annotate.js.map +1 -0
- package/dist/generators/template-source-render.d.ts +24 -0
- package/dist/generators/template-source-render.d.ts.map +1 -0
- package/dist/generators/template-source-render.js +175 -0
- package/dist/generators/template-source-render.js.map +1 -0
- package/dist/generators/trace-helper-file.d.ts +9 -0
- package/dist/generators/trace-helper-file.d.ts.map +1 -0
- package/dist/generators/trace-helper-file.js +196 -0
- package/dist/generators/trace-helper-file.js.map +1 -0
- package/dist/index.d.ts +29 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -2
- package/dist/index.js.map +1 -1
- package/dist/metaobjects-config.d.ts +75 -2
- package/dist/metaobjects-config.d.ts.map +1 -1
- package/dist/metaobjects-config.js +43 -0
- package/dist/metaobjects-config.js.map +1 -1
- package/dist/naming.d.ts +19 -0
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +41 -0
- package/dist/naming.js.map +1 -1
- package/dist/payload-codegen.d.ts.map +1 -1
- package/dist/payload-codegen.js +12 -4
- package/dist/payload-codegen.js.map +1 -1
- package/dist/projection/extract-view-spec.d.ts.map +1 -1
- package/dist/projection/extract-view-spec.js +51 -25
- package/dist/projection/extract-view-spec.js.map +1 -1
- package/dist/relation-resolver.d.ts +16 -0
- package/dist/relation-resolver.d.ts.map +1 -1
- package/dist/relation-resolver.js +82 -1
- package/dist/relation-resolver.js.map +1 -1
- package/dist/render-context.d.ts +4 -0
- package/dist/render-context.d.ts.map +1 -1
- package/dist/render-context.js.map +1 -1
- package/dist/render-engine/embedded-templates.generated.d.ts +2 -0
- package/dist/render-engine/embedded-templates.generated.d.ts.map +1 -0
- package/dist/render-engine/embedded-templates.generated.js +15 -0
- package/dist/render-engine/embedded-templates.generated.js.map +1 -0
- package/dist/render-engine/framework-provider.d.ts.map +1 -1
- package/dist/render-engine/framework-provider.js +26 -13
- package/dist/render-engine/framework-provider.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +17 -0
- package/dist/runner.js.map +1 -1
- package/dist/templates/docs-file.d.ts +2 -6
- package/dist/templates/docs-file.d.ts.map +1 -1
- package/dist/templates/docs-file.js +2 -5
- package/dist/templates/docs-file.js.map +1 -1
- package/dist/templates/drizzle-schema.d.ts.map +1 -1
- package/dist/templates/drizzle-schema.js +30 -2
- package/dist/templates/drizzle-schema.js.map +1 -1
- package/dist/templates/entity-constants.d.ts +7 -0
- package/dist/templates/entity-constants.d.ts.map +1 -1
- package/dist/templates/entity-constants.js +1 -1
- package/dist/templates/entity-constants.js.map +1 -1
- package/dist/templates/entity-file.d.ts.map +1 -1
- package/dist/templates/entity-file.js +16 -5
- package/dist/templates/entity-file.js.map +1 -1
- package/dist/templates/enums-file.d.ts +11 -0
- package/dist/templates/enums-file.d.ts.map +1 -0
- package/dist/templates/enums-file.js +44 -0
- package/dist/templates/enums-file.js.map +1 -0
- package/dist/templates/extract-delegate-emitter.d.ts.map +1 -1
- package/dist/templates/extract-delegate-emitter.js +5 -7
- package/dist/templates/extract-delegate-emitter.js.map +1 -1
- package/dist/templates/extract-schema-emitter.d.ts.map +1 -1
- package/dist/templates/extract-schema-emitter.js +5 -1
- package/dist/templates/extract-schema-emitter.js.map +1 -1
- package/dist/templates/extractor.d.ts.map +1 -1
- package/dist/templates/extractor.js +56 -39
- package/dist/templates/extractor.js.map +1 -1
- package/dist/templates/field-meta.d.ts.map +1 -1
- package/dist/templates/field-meta.js +1 -5
- package/dist/templates/field-meta.js.map +1 -1
- package/dist/templates/filter-allowlist.d.ts +7 -2
- package/dist/templates/filter-allowlist.d.ts.map +1 -1
- package/dist/templates/filter-allowlist.js +17 -9
- package/dist/templates/filter-allowlist.js.map +1 -1
- package/dist/templates/filter-type.d.ts +7 -1
- package/dist/templates/filter-type.d.ts.map +1 -1
- package/dist/templates/filter-type.js +9 -5
- package/dist/templates/filter-type.js.map +1 -1
- package/dist/templates/find-templates.d.ts +4 -0
- package/dist/templates/find-templates.d.ts.map +1 -0
- package/dist/templates/find-templates.js +15 -0
- package/dist/templates/find-templates.js.map +1 -0
- package/dist/templates/fr010-field-mapping.d.ts +2 -0
- package/dist/templates/fr010-field-mapping.d.ts.map +1 -1
- package/dist/templates/fr010-field-mapping.js +10 -6
- package/dist/templates/fr010-field-mapping.js.map +1 -1
- package/dist/templates/inferred-types.d.ts +44 -7
- package/dist/templates/inferred-types.d.ts.map +1 -1
- package/dist/templates/inferred-types.js +107 -16
- package/dist/templates/inferred-types.js.map +1 -1
- package/dist/templates/mermaid-er.d.ts +35 -2
- package/dist/templates/mermaid-er.d.ts.map +1 -1
- package/dist/templates/mermaid-er.js +174 -7
- package/dist/templates/mermaid-er.js.map +1 -1
- package/dist/templates/output-parser.d.ts.map +1 -1
- package/dist/templates/output-parser.js +30 -79
- package/dist/templates/output-parser.js.map +1 -1
- package/dist/templates/output-prompt.d.ts.map +1 -1
- package/dist/templates/output-prompt.js +2 -2
- package/dist/templates/output-prompt.js.map +1 -1
- package/dist/templates/queries-file.d.ts.map +1 -1
- package/dist/templates/queries-file.js +112 -4
- package/dist/templates/queries-file.js.map +1 -1
- package/dist/templates/queries.d.ts +5 -0
- package/dist/templates/queries.d.ts.map +1 -1
- package/dist/templates/queries.js +7 -7
- package/dist/templates/queries.js.map +1 -1
- package/dist/templates/recover-schema-emitter.d.ts +8 -0
- package/dist/templates/recover-schema-emitter.d.ts.map +1 -0
- package/dist/templates/recover-schema-emitter.js +64 -0
- package/dist/templates/recover-schema-emitter.js.map +1 -0
- package/dist/templates/relations-block.js +10 -0
- package/dist/templates/relations-block.js.map +1 -1
- package/dist/templates/render-helper.d.ts.map +1 -1
- package/dist/templates/render-helper.js +4 -4
- package/dist/templates/render-helper.js.map +1 -1
- package/dist/templates/routes-file.d.ts.map +1 -1
- package/dist/templates/routes-file.js +183 -6
- package/dist/templates/routes-file.js.map +1 -1
- package/dist/templates/tph-discriminator.d.ts +56 -0
- package/dist/templates/tph-discriminator.d.ts.map +1 -0
- package/dist/templates/tph-discriminator.js +180 -0
- package/dist/templates/tph-discriminator.js.map +1 -0
- package/dist/templates/value-object-file.d.ts +2 -1
- package/dist/templates/value-object-file.d.ts.map +1 -1
- package/dist/templates/value-object-file.js +32 -4
- package/dist/templates/value-object-file.js.map +1 -1
- package/dist/templates/zod-validators.d.ts +64 -1
- package/dist/templates/zod-validators.d.ts.map +1 -1
- package/dist/templates/zod-validators.js +181 -8
- package/dist/templates/zod-validators.js.map +1 -1
- package/package.json +103 -34
- package/src/column-mapper.ts +25 -8
- package/src/constants.ts +18 -0
- package/src/docs-paths.ts +128 -0
- package/src/enum-import.ts +43 -0
- package/src/enum-shared.ts +95 -0
- package/src/generator-registry.ts +204 -0
- package/src/generator.ts +6 -0
- package/src/generators/api-doc-render.ts +572 -0
- package/src/generators/api-docs-file.ts +146 -0
- package/src/generators/api-field-shape.ts +114 -0
- package/src/generators/api-label.ts +7 -0
- package/src/generators/api-model.ts +1067 -0
- package/src/generators/docs-data-builder.ts +479 -185
- package/src/generators/docs-data.ts +139 -28
- package/src/generators/docs-file.ts +205 -39
- package/src/generators/entity-file.ts +31 -15
- package/src/generators/extractor-file.ts +2 -1
- package/src/generators/field-anchor.ts +24 -0
- package/src/generators/index.ts +8 -1
- package/src/generators/mermaid-er.ts +14 -0
- package/src/generators/output-parser-file.ts +3 -4
- package/src/generators/output-prompt-file.ts +2 -1
- package/src/generators/prompt-render-file.ts +3 -4
- package/src/generators/queries-file.ts +9 -3
- package/src/generators/render-helper-file.ts +2 -1
- package/src/generators/routes-file-hono.ts +5 -1
- package/src/generators/routes-file.ts +7 -1
- package/src/generators/template-doc-builder.ts +306 -0
- package/src/generators/template-doc-data.ts +85 -0
- package/src/generators/template-payload-tree.ts +71 -0
- package/src/generators/template-source-annotate.ts +290 -0
- package/src/generators/template-source-render.ts +203 -0
- package/src/generators/trace-helper-file.ts +301 -0
- package/src/index.ts +55 -4
- package/src/metaobjects-config.ts +117 -2
- package/src/naming.ts +48 -0
- package/src/payload-codegen.ts +14 -3
- package/src/projection/extract-view-spec.ts +49 -30
- package/src/relation-resolver.ts +103 -1
- package/src/render-context.ts +4 -0
- package/src/render-engine/embedded-templates.generated.ts +14 -0
- package/src/render-engine/framework-provider.ts +25 -11
- package/src/runner.ts +21 -0
- package/src/templates/docs-file.ts +2 -9
- package/src/templates/drizzle-schema.ts +31 -1
- package/src/templates/entity-constants.ts +1 -1
- package/src/templates/entity-file.ts +16 -5
- package/src/templates/enums-file.ts +50 -0
- package/src/templates/extract-delegate-emitter.ts +5 -6
- package/src/templates/extractor.ts +68 -38
- package/src/templates/field-meta.ts +0 -6
- package/src/templates/filter-allowlist.ts +17 -10
- package/src/templates/filter-type.ts +8 -6
- package/src/templates/find-templates.ts +15 -0
- package/src/templates/fr010-field-mapping.ts +10 -8
- package/src/templates/inferred-types.ts +108 -18
- package/src/templates/mermaid-er.ts +176 -8
- package/src/templates/output-parser.ts +30 -79
- package/src/templates/output-prompt.ts +2 -1
- package/src/templates/queries-file.ts +132 -3
- package/src/templates/queries.ts +15 -7
- package/src/templates/relations-block.ts +17 -0
- package/src/templates/render-helper.ts +4 -3
- package/src/templates/routes-file.ts +233 -6
- package/src/templates/tph-discriminator.ts +232 -0
- package/src/templates/value-object-file.ts +38 -4
- package/src/templates/zod-validators.ts +204 -7
- package/templates/api/agent-api.md.mustache +30 -0
- package/templates/api/entity-api.md.mustache +69 -0
- package/templates/api/index.md.mustache +21 -0
- package/templates/docs/entity-page.md.mustache +33 -21
- package/templates/docs/template-page.md.mustache +56 -0
- package/src/templates/extract-schema-emitter.ts +0 -111
|
@@ -1,28 +1,43 @@
|
|
|
1
1
|
import { perEntity } from "../generator.js";
|
|
2
2
|
import { renderEntityFile } from "../templates/entity-file.js";
|
|
3
|
+
import { renderSharedEnumsFile, SHARED_ENUMS_BASENAME } from "../templates/enums-file.js";
|
|
3
4
|
import { formatTs } from "../format.js";
|
|
4
5
|
import { entityOutputPath } from "../import-path.js";
|
|
5
6
|
import { isAbstract } from "../instance-artifacts.js";
|
|
6
7
|
export const entityFile = function entityFile(opts) {
|
|
7
8
|
const allowlists = opts?.allowlists ?? true;
|
|
9
|
+
const perEntityEmit = perEntity(async (entity, ctx) => {
|
|
10
|
+
if (!ctx.renderContext) {
|
|
11
|
+
throw new Error("entity-file: renderContext is required (provided by runGen)");
|
|
12
|
+
}
|
|
13
|
+
// Abstract entities contribute shape only. When emitAbstractShapes is off
|
|
14
|
+
// (cross-port knob; default on) the entity-file generator emits nothing for
|
|
15
|
+
// them. Instance/write generators skip abstract unconditionally elsewhere.
|
|
16
|
+
if (isAbstract(entity) && !ctx.renderContext.emitAbstractShapes) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
path: entityOutputPath(ctx.config.outputLayout ?? "flat", entity.package, `${entity.name}.ts`),
|
|
21
|
+
content: await formatTs(renderEntityFile(entity, ctx.renderContext, { allowlists })),
|
|
22
|
+
};
|
|
23
|
+
});
|
|
8
24
|
const generator = {
|
|
9
25
|
name: "entity-file",
|
|
10
26
|
emitsEntityModule: true,
|
|
11
|
-
generate:
|
|
12
|
-
|
|
13
|
-
|
|
27
|
+
generate: async (ctx) => {
|
|
28
|
+
const files = await perEntityEmit(ctx);
|
|
29
|
+
// FR-019: emit the shared-enums module ONCE per run, into the entity-module
|
|
30
|
+
// target root. Returns null (no file) when the model uses no materialized
|
|
31
|
+
// shared enums — keeping the inline-enum default byte-identical (no new file).
|
|
32
|
+
const sharedEnums = renderSharedEnumsFile(ctx.loadedRoot);
|
|
33
|
+
if (sharedEnums !== null) {
|
|
34
|
+
files.push({
|
|
35
|
+
path: `${SHARED_ENUMS_BASENAME}.ts`,
|
|
36
|
+
content: await formatTs(sharedEnums),
|
|
37
|
+
});
|
|
14
38
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// them. Instance/write generators skip abstract unconditionally elsewhere.
|
|
18
|
-
if (isAbstract(entity) && !ctx.renderContext.emitAbstractShapes) {
|
|
19
|
-
return [];
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
path: entityOutputPath(ctx.config.outputLayout ?? "flat", entity.package, `${entity.name}.ts`),
|
|
23
|
-
content: await formatTs(renderEntityFile(entity, ctx.renderContext, { allowlists })),
|
|
24
|
-
};
|
|
25
|
-
}),
|
|
39
|
+
return files;
|
|
40
|
+
},
|
|
26
41
|
};
|
|
27
42
|
if (opts?.filter) {
|
|
28
43
|
generator.filter = opts.filter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-file.js","sourceRoot":"","sources":["../../src/generators/entity-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"entity-file.js","sourceRoot":"","sources":["../../src/generators/entity-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA4E,MAAM,iBAAiB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAsBtD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,UAAU,CAAC,IAAqB;IACjE,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC;IAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,0EAA0E;QAC1E,4EAA4E;QAC5E,2EAA2E;QAC3E,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAChE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC;YAC9F,OAAO,EAAE,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;SACrF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,aAAa;QACnB,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,KAAK,EAAE,GAAe,EAA0B,EAAE;YAC1D,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;YACvC,4EAA4E;YAC5E,0EAA0E;YAC1E,+EAA+E;YAC/E,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,qBAAqB,KAAK;oBACnC,OAAO,EAAE,MAAM,QAAQ,CAAC,WAAW,CAAC;iBACrC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAqC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractor-file.d.ts","sourceRoot":"","sources":["../../src/generators/extractor-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extractor-file.d.ts","sourceRoot":"","sources":["../../src/generators/extractor-file.ts"],"names":[],"mappings":"AAiBA,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,aAAa;IAC5B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,SAAS,EAyBjB,gBAAgB,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
//
|
|
6
6
|
// The emitted extractor sits over the output-parser's nested-capable extract and turns dirty LLM
|
|
7
7
|
// text into the strict typed payload graph. It imports from the sibling <Name>.output.ts (the
|
|
8
|
-
// output-parser) and
|
|
8
|
+
// output-parser) and from each payload value-object's own entity module (<VO>.ts, emitted by
|
|
9
|
+
// entityFile), so run it alongside outputParser() + entityFile().
|
|
9
10
|
//
|
|
10
11
|
// Consumer wiring (metaobjects.config.ts):
|
|
11
12
|
// generators: [..., outputParser(), extractor()]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractor-file.js","sourceRoot":"","sources":["../../src/generators/extractor-file.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,+FAA+F;AAC/F,uFAAuF;AACvF,EAAE;AACF,iGAAiG;AACjG,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"extractor-file.js","sourceRoot":"","sources":["../../src/generators/extractor-file.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,+FAA+F;AAC/F,uFAAuF;AACvF,EAAE;AACF,iGAAiG;AACjG,8FAA8F;AAC9F,6FAA6F;AAC7F,kEAAkE;AAClE,EAAE;AACF,2CAA2C;AAC3C,mDAAmD;AACnD,EAAE;AACF,2BAA2B;AAC3B,sEAAsE;AAEtE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAIL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAS5D,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,IAAoB;IAC9D,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU;iBAC3B,WAAW,EAAE;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,CAAC;YACpF,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,sFAAsF;gBACtF,MAAM,MAAM,GAAG,CAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAwB,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBACjG,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK;oBAAE,SAAS;gBACpD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,eAAe;oBAC1C,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;iBACjD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAoC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** The stable doc-anchor slug for a field: `field-<name>`. */
|
|
2
|
+
export declare function fieldAnchorSlug(name: string): string;
|
|
3
|
+
/** The literal HTML anchor a Markdown link can target: `<a id="field-<name>"></a>`.
|
|
4
|
+
* Renders on GitHub-flavored Markdown and static-site generators, including
|
|
5
|
+
* inside a table cell. */
|
|
6
|
+
export declare function fieldAnchorHtml(name: string): string;
|
|
7
|
+
//# sourceMappingURL=field-anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-anchor.d.ts","sourceRoot":"","sources":["../../src/generators/field-anchor.ts"],"names":[],"mappings":"AAaA,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;2BAE2B;AAC3B,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Per-field doc anchor convention (linked-template-source-docs).
|
|
2
|
+
//
|
|
3
|
+
// A field's stable doc anchor slug is `field-<name>` (the field name verbatim).
|
|
4
|
+
// This is the SINGLE source of truth for the slug, shared by BOTH:
|
|
5
|
+
// • the entity-page builder, which emits a literal `<a id="field-<name>">` in
|
|
6
|
+
// each Constraints-table Field cell, and
|
|
7
|
+
// • the template-source annotator, whose links target `#field-<name>`.
|
|
8
|
+
// Sharing one helper means the anchor and its links can never drift.
|
|
9
|
+
//
|
|
10
|
+
// The name is used verbatim (not URL-slugified): MetaObjects field names are
|
|
11
|
+
// already identifier-safe (no spaces / punctuation), so `field-<name>` is a
|
|
12
|
+
// valid HTML id and a valid Markdown fragment as-is.
|
|
13
|
+
/** The stable doc-anchor slug for a field: `field-<name>`. */
|
|
14
|
+
export function fieldAnchorSlug(name) {
|
|
15
|
+
return `field-${name}`;
|
|
16
|
+
}
|
|
17
|
+
/** The literal HTML anchor a Markdown link can target: `<a id="field-<name>"></a>`.
|
|
18
|
+
* Renders on GitHub-flavored Markdown and static-site generators, including
|
|
19
|
+
* inside a table cell. */
|
|
20
|
+
export function fieldAnchorHtml(name) {
|
|
21
|
+
return `<a id="${fieldAnchorSlug(name)}"></a>`;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=field-anchor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-anchor.js","sourceRoot":"","sources":["../../src/generators/field-anchor.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAChF,6CAA6C;AAC7C,yEAAyE;AACzE,qEAAqE;AACrE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,qDAAqD;AAErD,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,SAAS,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;2BAE2B;AAC3B,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,UAAU,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjD,CAAC"}
|
|
@@ -4,14 +4,21 @@ export { callableFile, type CallableFileOpts } from "./callable-file.js";
|
|
|
4
4
|
export { routesFile, type RoutesFileOpts } from "./routes-file.js";
|
|
5
5
|
export { routesFileHono, type RoutesFileHonoOpts } from "./routes-file-hono.js";
|
|
6
6
|
export { barrel, type BarrelOpts } from "./barrel.js";
|
|
7
|
+
/** @deprecated ADR-0021 D1 — neutral artifact owned by `meta docs` (ADR-0020); not part of the recommended `meta gen` suite. */
|
|
7
8
|
export { mermaidErDiagram, type MermaidErOptions } from "./mermaid-er.js";
|
|
8
9
|
export { promptRender, type PromptRenderOpts } from "./prompt-render-file.js";
|
|
9
10
|
export { outputParser, type OutputParserOpts } from "./output-parser-file.js";
|
|
10
11
|
export { extractor, type ExtractorOpts } from "./extractor-file.js";
|
|
11
12
|
export { outputPrompt, type OutputPromptOpts } from "./output-prompt-file.js";
|
|
12
13
|
export { renderHelper, type RenderHelperOpts } from "./render-helper-file.js";
|
|
14
|
+
/** @deprecated ADR-0025 — `meta docs` is the single docs door; `apiDocsFile` stays as the internal engine of its api surface, not a `meta gen` config generator. */
|
|
15
|
+
export { apiDocsFile, type ApiDocsFileOpts } from "./api-docs-file.js";
|
|
16
|
+
/** @deprecated ADR-0021 D1 — `meta docs` is the single docs door; `docsFile` stays as its internal engine, not a `meta gen` config generator. */
|
|
13
17
|
export { docsFile, type DocsFileOpts } from "./docs-file.js";
|
|
14
18
|
export { templateGenerator, type TemplateGeneratorOpts, type TemplateWalkResult, type TemplateFormat, } from "./template-generator.js";
|
|
15
|
-
export
|
|
19
|
+
export { traceHelperFile, type TraceHelperOpts } from "./trace-helper-file.js";
|
|
20
|
+
export type { EntityDocData, StorageFieldDoc, IdentityDoc, RelationshipDoc, UsedByDoc, ConstraintRow, } from "./docs-data.js";
|
|
16
21
|
export { buildEntityDocData } from "./docs-data-builder.js";
|
|
22
|
+
export type { TemplateDocData, TemplateOutputPart } from "./template-doc-data.js";
|
|
23
|
+
export { buildTemplateDocData } from "./template-doc-builder.js";
|
|
17
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,gIAAgI;AAChI,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,oKAAoK;AACpK,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,iJAAiJ;AACjJ,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/generators/index.js
CHANGED
|
@@ -4,13 +4,19 @@ export { callableFile } from "./callable-file.js";
|
|
|
4
4
|
export { routesFile } from "./routes-file.js";
|
|
5
5
|
export { routesFileHono } from "./routes-file-hono.js";
|
|
6
6
|
export { barrel } from "./barrel.js";
|
|
7
|
+
/** @deprecated ADR-0021 D1 — neutral artifact owned by `meta docs` (ADR-0020); not part of the recommended `meta gen` suite. */
|
|
7
8
|
export { mermaidErDiagram } from "./mermaid-er.js";
|
|
8
9
|
export { promptRender } from "./prompt-render-file.js";
|
|
9
10
|
export { outputParser } from "./output-parser-file.js";
|
|
10
11
|
export { extractor } from "./extractor-file.js";
|
|
11
12
|
export { outputPrompt } from "./output-prompt-file.js";
|
|
12
13
|
export { renderHelper } from "./render-helper-file.js";
|
|
14
|
+
/** @deprecated ADR-0025 — `meta docs` is the single docs door; `apiDocsFile` stays as the internal engine of its api surface, not a `meta gen` config generator. */
|
|
15
|
+
export { apiDocsFile } from "./api-docs-file.js";
|
|
16
|
+
/** @deprecated ADR-0021 D1 — `meta docs` is the single docs door; `docsFile` stays as its internal engine, not a `meta gen` config generator. */
|
|
13
17
|
export { docsFile } from "./docs-file.js";
|
|
14
18
|
export { templateGenerator, } from "./template-generator.js";
|
|
19
|
+
export { traceHelperFile } from "./trace-helper-file.js";
|
|
15
20
|
export { buildEntityDocData } from "./docs-data-builder.js";
|
|
21
|
+
export { buildTemplateDocData } from "./template-doc-builder.js";
|
|
16
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAA2B,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAA2B,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AACtD,gIAAgI;AAChI,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,oKAAoK;AACpK,OAAO,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;AACvE,iJAAiJ;AACjJ,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAwB,MAAM,wBAAwB,CAAC;AAS/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -9,6 +9,20 @@ export interface MermaidErOptions {
|
|
|
9
9
|
* Emit a single Markdown file containing a Mermaid `erDiagram` plus per-entity
|
|
10
10
|
* prose sections. The renderer walks the loaded root for all entities; the
|
|
11
11
|
* default outFile is "docs/model.md".
|
|
12
|
+
*
|
|
13
|
+
* TIER NOTE (ADR-0020): the CANONICAL home of the neutral ER diagram is now the
|
|
14
|
+
* neutral docs engine — the OVERVIEW/index page (`README.md`) emitted by
|
|
15
|
+
* `docsFile()` / `meta docs` embeds the SAME `renderMermaidErBlock()` this
|
|
16
|
+
* generator's `renderMermaidModel()` reuses. This standalone Tier-1 generator is
|
|
17
|
+
* retained ONLY as a thin back-compat wrapper for adopters that already have
|
|
18
|
+
* `mermaidErDiagram` in their `meta gen` config; it adds NO ER logic of its own
|
|
19
|
+
* (no duplication) — it delegates to the shared `renderMermaidModel()` builder.
|
|
20
|
+
*
|
|
21
|
+
* @deprecated ADR-0021 D1: the ER diagram is a Tier-2 neutral artifact owned by
|
|
22
|
+
* the docs engine (ADR-0020). Use `meta docs` — it embeds the same ER block.
|
|
23
|
+
* This standalone `meta gen` generator is flagged neutral in the registry
|
|
24
|
+
* (`--list`) and is no longer part of the recommended native suite. Kept for
|
|
25
|
+
* back-compat; do not add to new gen configs.
|
|
12
26
|
*/
|
|
13
27
|
export declare const mermaidErDiagram: GeneratorFactory<MermaidErOptions>;
|
|
14
28
|
//# sourceMappingURL=mermaid-er.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-er.d.ts","sourceRoot":"","sources":["../../src/generators/mermaid-er.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGpF,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED
|
|
1
|
+
{"version":3,"file":"mermaid-er.d.ts","sourceRoot":"","sources":["../../src/generators/mermaid-er.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGpF,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,EAaxB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -4,6 +4,20 @@ import { renderMermaidModel } from "../templates/mermaid-er.js";
|
|
|
4
4
|
* Emit a single Markdown file containing a Mermaid `erDiagram` plus per-entity
|
|
5
5
|
* prose sections. The renderer walks the loaded root for all entities; the
|
|
6
6
|
* default outFile is "docs/model.md".
|
|
7
|
+
*
|
|
8
|
+
* TIER NOTE (ADR-0020): the CANONICAL home of the neutral ER diagram is now the
|
|
9
|
+
* neutral docs engine — the OVERVIEW/index page (`README.md`) emitted by
|
|
10
|
+
* `docsFile()` / `meta docs` embeds the SAME `renderMermaidErBlock()` this
|
|
11
|
+
* generator's `renderMermaidModel()` reuses. This standalone Tier-1 generator is
|
|
12
|
+
* retained ONLY as a thin back-compat wrapper for adopters that already have
|
|
13
|
+
* `mermaidErDiagram` in their `meta gen` config; it adds NO ER logic of its own
|
|
14
|
+
* (no duplication) — it delegates to the shared `renderMermaidModel()` builder.
|
|
15
|
+
*
|
|
16
|
+
* @deprecated ADR-0021 D1: the ER diagram is a Tier-2 neutral artifact owned by
|
|
17
|
+
* the docs engine (ADR-0020). Use `meta docs` — it embeds the same ER block.
|
|
18
|
+
* This standalone `meta gen` generator is flagged neutral in the registry
|
|
19
|
+
* (`--list`) and is no longer part of the recommended native suite. Kept for
|
|
20
|
+
* back-compat; do not add to new gen configs.
|
|
7
21
|
*/
|
|
8
22
|
export const mermaidErDiagram = function mermaidErDiagram(opts) {
|
|
9
23
|
const outFile = opts?.outFile ?? "docs/model.md";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-er.js","sourceRoot":"","sources":["../../src/generators/mermaid-er.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAShE
|
|
1
|
+
{"version":3,"file":"mermaid-er.js","sourceRoot":"","sources":["../../src/generators/mermaid-er.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAShE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,gBAAgB,CACvD,IAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC;IACjD,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;SAC5C,CAAC,CAAC;KACJ,CAAC;IACF,IAAI,IAAI,EAAE,MAAM;QAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-parser-file.d.ts","sourceRoot":"","sources":["../../src/generators/output-parser-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output-parser-file.d.ts","sourceRoot":"","sources":["../../src/generators/output-parser-file.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAoBpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
//
|
|
9
9
|
// Custom output directory:
|
|
10
10
|
// generators: [..., outputParser({ outDir: "src/generated/outputs" })]
|
|
11
|
-
import {
|
|
11
|
+
import { TEMPLATE_SUBTYPE_OUTPUT } from "@metaobjectsdev/metadata";
|
|
12
|
+
import { findTemplates } from "../templates/find-templates.js";
|
|
12
13
|
import { oncePerRun, } from "../generator.js";
|
|
13
14
|
import { renderOutputParser } from "../templates/output-parser.js";
|
|
14
15
|
export const outputParser = function outputParser(opts) {
|
|
@@ -16,9 +17,7 @@ export const outputParser = function outputParser(opts) {
|
|
|
16
17
|
const generator = {
|
|
17
18
|
name: "output-parser",
|
|
18
19
|
generate: oncePerRun((_entities, ctx) => {
|
|
19
|
-
const outputs = ctx.loadedRoot
|
|
20
|
-
.ownChildren()
|
|
21
|
-
.filter((c) => c.type === TYPE_TEMPLATE && c.subType === TEMPLATE_SUBTYPE_OUTPUT);
|
|
20
|
+
const outputs = findTemplates(ctx.loadedRoot, TEMPLATE_SUBTYPE_OUTPUT);
|
|
22
21
|
const files = [];
|
|
23
22
|
for (const t of outputs) {
|
|
24
23
|
files.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-parser-file.js","sourceRoot":"","sources":["../../src/generators/output-parser-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,oFAAoF;AACpF,EAAE;AACF,2CAA2C;AAC3C,sDAAsD;AACtD,EAAE;AACF,2BAA2B;AAC3B,yEAAyE;AAEzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"output-parser-file.js","sourceRoot":"","sources":["../../src/generators/output-parser-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,oFAAoF;AACpF,EAAE;AACF,2CAA2C;AAC3C,sDAAsD;AACtD,EAAE;AACF,2BAA2B;AAC3B,yEAAyE;AAEzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAIL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASnE,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,IAAuB;IACvE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;YACvE,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,YAAY;oBACvC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;iBACpD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-prompt-file.d.ts","sourceRoot":"","sources":["../../src/generators/output-prompt-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output-prompt-file.d.ts","sourceRoot":"","sources":["../../src/generators/output-prompt-file.ts"],"names":[],"mappings":"AAqBA,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EA8BpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
//
|
|
12
12
|
// Custom output directory:
|
|
13
13
|
// generators: [..., outputPrompt({ outDir: "src/generated/outputs" })]
|
|
14
|
-
import { TYPE_OBJECT, TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, } from "@metaobjectsdev/metadata";
|
|
14
|
+
import { TYPE_OBJECT, TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, refMatchesObject, } from "@metaobjectsdev/metadata";
|
|
15
15
|
import { oncePerRun, } from "../generator.js";
|
|
16
16
|
import { renderOutputPrompt, templateSupportsPrompt } from "../templates/output-prompt.js";
|
|
17
17
|
export const outputPrompt = function outputPrompt(opts) {
|
|
@@ -32,7 +32,7 @@ export const outputPrompt = function outputPrompt(opts) {
|
|
|
32
32
|
const payloadRef = t.ownAttr(TEMPLATE_ATTR_PAYLOAD_REF);
|
|
33
33
|
if (typeof payloadRef !== "string")
|
|
34
34
|
continue;
|
|
35
|
-
const vo = root.ownChildren().find((c) => c.type === TYPE_OBJECT && c
|
|
35
|
+
const vo = root.ownChildren().find((c) => c.type === TYPE_OBJECT && refMatchesObject(c, payloadRef));
|
|
36
36
|
if (!vo)
|
|
37
37
|
continue;
|
|
38
38
|
files.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-prompt-file.js","sourceRoot":"","sources":["../../src/generators/output-prompt-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,mFAAmF;AACnF,iFAAiF;AACjF,iFAAiF;AACjF,sFAAsF;AACtF,kDAAkD;AAClD,EAAE;AACF,2CAA2C;AAC3C,sEAAsE;AACtE,EAAE;AACF,2BAA2B;AAC3B,yEAAyE;AAEzE,OAAO,EACL,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"output-prompt-file.js","sourceRoot":"","sources":["../../src/generators/output-prompt-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,mFAAmF;AACnF,iFAAiF;AACjF,iFAAiF;AACjF,sFAAsF;AACtF,kDAAkD;AAClD,EAAE;AACF,2CAA2C;AAC3C,sEAAsE;AACtE,EAAE;AACF,2BAA2B;AAC3B,yEAAyE;AAEzE,OAAO,EACL,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAS3F,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,IAAuB;IACvE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI;iBACjB,WAAW,EAAE;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,CAAC;YACpF,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,0DAA0D;gBAC1D,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAAE,SAAS;gBACzC,4EAA4E;gBAC5E,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;gBACxD,IAAI,OAAO,UAAU,KAAK,QAAQ;oBAAE,SAAS;gBAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;gBACrG,IAAI,CAAC,EAAE;oBAAE,SAAS;gBAClB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,YAAY;oBACvC,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;iBAC1C,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-render-file.d.ts","sourceRoot":"","sources":["../../src/generators/prompt-render-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt-render-file.d.ts","sourceRoot":"","sources":["../../src/generators/prompt-render-file.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD,eAAO,MAAM,YAAY,EAmDpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
//
|
|
9
9
|
// Custom output path:
|
|
10
10
|
// generators: [..., promptRender({ outFile: "src/render/generated/prompts.ts" })]
|
|
11
|
-
import {
|
|
11
|
+
import { TEMPLATE_SUBTYPE_PROMPT, OBJECT_SUBTYPE_VALUE } from "@metaobjectsdev/metadata";
|
|
12
|
+
import { findTemplates } from "../templates/find-templates.js";
|
|
12
13
|
import { oncePerRun, } from "../generator.js";
|
|
13
14
|
import { generatePayloadInterfacesBatch, generateRenderHandle, } from "../payload-codegen.js";
|
|
14
15
|
import { GENERATED_HEADER } from "../constants.js";
|
|
@@ -27,9 +28,7 @@ export const promptRender = function promptRender(opts) {
|
|
|
27
28
|
name: "prompt-render",
|
|
28
29
|
generate: oncePerRun((entities, ctx) => {
|
|
29
30
|
const payloads = entities.filter((e) => e.subType === OBJECT_SUBTYPE_VALUE);
|
|
30
|
-
const prompts = ctx.loadedRoot
|
|
31
|
-
.ownChildren()
|
|
32
|
-
.filter((c) => c.type === TYPE_TEMPLATE && c.subType === TEMPLATE_SUBTYPE_PROMPT);
|
|
31
|
+
const prompts = findTemplates(ctx.loadedRoot, TEMPLATE_SUBTYPE_PROMPT);
|
|
33
32
|
if (payloads.length === 0 && prompts.length === 0) {
|
|
34
33
|
return [];
|
|
35
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-render-file.js","sourceRoot":"","sources":["../../src/generators/prompt-render-file.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,0BAA0B;AAC1B,EAAE;AACF,2CAA2C;AAC3C,sCAAsC;AACtC,EAAE;AACF,sBAAsB;AACtB,oFAAoF;AAEpF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-render-file.js","sourceRoot":"","sources":["../../src/generators/prompt-render-file.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,0BAA0B;AAC1B,EAAE;AACF,2CAA2C;AAC3C,sCAAsC;AACtC,EAAE;AACF,sBAAsB;AACtB,oFAAoF;AAEpF,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAGL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASnD,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,aAAa,GAAG,iEAAiE,CAAC;AAExF,oFAAoF;AACpF,iFAAiF;AACjF,uEAAuE;AACvE,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,IAAuB;IACvE,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,YAAY,CAAC;IAC9C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,oBAAoB,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;YAEvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,KAAK,GAAa,CAAC,MAAM,gBAAgB,iBAAiB,CAAC,CAAC;YAElE,iFAAiF;YACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5B,CAAC;YAED,oEAAoE;YACpE,wDAAwD;YACxD,MAAM,iBAAiB,GAAG,8BAA8B,CACtD,GAAG,CAAC,UAAU,EACd,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5B,CAAC;YACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChC,CAAC;YAED,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;qBACvD,KAAK,CAAC,IAAI,CAAC;qBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE;oBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAClE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,CAAC;YAED,OAAO,CAAC;oBACN,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;iBACvF,CAAC,CAAC;QACL,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries-file.d.ts","sourceRoot":"","sources":["../../src/generators/queries-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"queries-file.d.ts","sourceRoot":"","sources":["../../src/generators/queries-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD,eAAO,MAAM,WAAW,EAuBnB,gBAAgB,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { OBJECT_SUBTYPE_VALUE } from "@metaobjectsdev/metadata";
|
|
2
2
|
import { perEntity } from "../generator.js";
|
|
3
3
|
import { renderQueriesFile } from "../templates/queries-file.js";
|
|
4
|
+
import { isTphSubtype } from "../templates/zod-validators.js";
|
|
4
5
|
import { formatTs } from "../format.js";
|
|
5
6
|
import { entityOutputPath } from "../import-path.js";
|
|
6
7
|
// object.value records have no primary identity, so the rendered queries module
|
|
7
8
|
// emits findById/updateById/deleteById against a non-existent column. Skipping
|
|
8
9
|
// value subtypes is unconditional — the user-supplied filter (if any) is applied
|
|
9
10
|
// on top via boolean AND.
|
|
10
|
-
|
|
11
|
+
//
|
|
12
|
+
// FR-017 Tier 2: TPH subtypes are ALSO skipped — they emit no standalone
|
|
13
|
+
// queries file. Their per-subtype CRUD helpers live in the discriminator
|
|
14
|
+
// base's queries file (which targets the single shared table).
|
|
15
|
+
const skipNonQueryable = (e) => e.subType !== OBJECT_SUBTYPE_VALUE && !isTphSubtype(e);
|
|
11
16
|
export const queriesFile = function queriesFile(opts) {
|
|
12
17
|
const userFilter = opts?.filter;
|
|
13
18
|
const filter = userFilter
|
|
14
|
-
? (e) =>
|
|
15
|
-
:
|
|
19
|
+
? (e) => skipNonQueryable(e) && userFilter(e)
|
|
20
|
+
: skipNonQueryable;
|
|
16
21
|
const generator = {
|
|
17
22
|
name: "queries-file",
|
|
18
23
|
filter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries-file.js","sourceRoot":"","sources":["../../src/generators/queries-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAOrD,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"queries-file.js","sourceRoot":"","sources":["../../src/generators/queries-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAOrD,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,CAAC,CAAa,EAAW,EAAE,CAClD,CAAC,CAAC,OAAO,KAAK,oBAAoB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,WAAW,CAAC,IAAsB;IACpE,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,CAAC;IAChC,MAAM,MAAM,GAA+B,UAAU;QACnD,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,gBAAgB,CAAC;IAErB,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,cAAc;QACpB,MAAM;QACN,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC;gBACtG,OAAO,EAAE,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;aACtE,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAsC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-helper-file.d.ts","sourceRoot":"","sources":["../../src/generators/render-helper-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render-helper-file.d.ts","sourceRoot":"","sources":["../../src/generators/render-helper-file.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAkCpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
//
|
|
15
15
|
// Custom output directory:
|
|
16
16
|
// generators: [..., renderHelper({ outDir: "src/generated/render" })]
|
|
17
|
-
import { TYPE_OBJECT, TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, } from "@metaobjectsdev/metadata";
|
|
17
|
+
import { TYPE_OBJECT, TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, refMatchesObject, } from "@metaobjectsdev/metadata";
|
|
18
18
|
import { oncePerRun, } from "../generator.js";
|
|
19
19
|
import { projectProvider } from "../render-engine/framework-provider.js";
|
|
20
20
|
import { renderRenderHelper } from "../templates/render-helper.js";
|
|
@@ -37,7 +37,7 @@ export const renderHelper = function renderHelper(opts) {
|
|
|
37
37
|
const payloadRef = t.ownAttr(TEMPLATE_ATTR_PAYLOAD_REF);
|
|
38
38
|
if (typeof payloadRef !== "string")
|
|
39
39
|
continue;
|
|
40
|
-
const vo = root.ownChildren().find((c) => c.type === TYPE_OBJECT && c
|
|
40
|
+
const vo = root.ownChildren().find((c) => c.type === TYPE_OBJECT && refMatchesObject(c, payloadRef));
|
|
41
41
|
if (!vo)
|
|
42
42
|
continue;
|
|
43
43
|
files.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-helper-file.js","sourceRoot":"","sources":["../../src/generators/render-helper-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,2CAA2C;AAC3C,sCAAsC;AACtC,EAAE;AACF,2BAA2B;AAC3B,wEAAwE;AAExE,OAAO,EACL,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"render-helper-file.js","sourceRoot":"","sources":["../../src/generators/render-helper-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,2CAA2C;AAC3C,sCAAsC;AACtC,EAAE;AACF,2BAA2B;AAC3B,wEAAwE;AAExE,OAAO,EACL,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASnE,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,IAAuB;IACvE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC;YAC5B,2EAA2E;YAC3E,2EAA2E;YAC3E,2EAA2E;YAC3E,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI;iBACjB,WAAW,EAAE;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,CAAC;YACpF,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,4EAA4E;gBAC5E,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;gBACxD,IAAI,OAAO,UAAU,KAAK,QAAQ;oBAAE,SAAS;gBAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;gBACrG,IAAI,CAAC,EAAE;oBAAE,SAAS;gBAClB,KAAK,CAAC,IAAI,CAAC;oBACT,qEAAqE;oBACrE,iEAAiE;oBACjE,IAAI,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,YAAY;oBACvC,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC;iBACpD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file-hono.d.ts","sourceRoot":"","sources":["../../src/generators/routes-file-hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-file-hono.d.ts","sourceRoot":"","sources":["../../src/generators/routes-file-hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnF,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EA0BtB,gBAAgB,CAAC,kBAAkB,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { perEntity } from "../generator.js";
|
|
|
2
2
|
import { renderRoutesFileHono } from "../templates/routes-file-hono.js";
|
|
3
3
|
import { formatTs } from "../format.js";
|
|
4
4
|
import { entityOutputPath } from "../import-path.js";
|
|
5
|
+
import { CODEGEN_ATTR_EMIT_ROUTES } from "../constants.js";
|
|
5
6
|
/**
|
|
6
7
|
* Hono variant of routesFile() — emits `<Entity>.routes.hono.ts` mounting
|
|
7
8
|
* the same five CRUD verbs (GET list / GET :id / POST / PATCH+PUT / DELETE)
|
|
@@ -19,7 +20,10 @@ export const routesFileHono = function routesFileHono(opts) {
|
|
|
19
20
|
const userFilter = opts?.filter ?? (() => true);
|
|
20
21
|
const generator = {
|
|
21
22
|
name: "routes-file-hono",
|
|
22
|
-
|
|
23
|
+
// Marks this as the Hono routes generator so the runner can aggregate
|
|
24
|
+
// `ctx.config.includeHonoRoutes` and api-docs auto-documents the Hono surface.
|
|
25
|
+
emitsHonoRoutes: true,
|
|
26
|
+
filter: (e) => e.ownAttr(CODEGEN_ATTR_EMIT_ROUTES) !== false && userFilter(e),
|
|
23
27
|
generate: perEntity(async (entity, ctx) => {
|
|
24
28
|
if (!ctx.renderContext) {
|
|
25
29
|
throw new Error("routes-file-hono: renderContext is required (provided by runGen)");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file-hono.js","sourceRoot":"","sources":["../../src/generators/routes-file-hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-file-hono.js","sourceRoot":"","sources":["../../src/generators/routes-file-hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAO3D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,cAAc,CAAC,IAAyB;IAC7E,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,kBAAkB;QACxB,sEAAsE;QACtE,+EAA+E;QAC/E,eAAe,EAAE,IAAI;QACrB,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;QACzF,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,gBAAgB,CACpB,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EACjC,MAAM,CAAC,OAAO,EACd,GAAG,MAAM,CAAC,IAAI,iBAAiB,CAChC;gBACD,OAAO,EAAE,MAAM,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;aACzE,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAyC,CAAC"}
|
|
@@ -7,6 +7,9 @@ export interface RoutesFileOpts {
|
|
|
7
7
|
/**
|
|
8
8
|
* Per-entity opt-out via `@emitRoutes: false` is honored. If the user supplies
|
|
9
9
|
* their own filter, both must pass (AND).
|
|
10
|
+
*
|
|
11
|
+
* FR-017 Tier 2: TPH subtypes get no standalone routes file — their per-subtype
|
|
12
|
+
* route set lives in the discriminator base's routes file.
|
|
10
13
|
*/
|
|
11
14
|
export declare const routesFile: GeneratorFactory<RoutesFileOpts>;
|
|
12
15
|
//# sourceMappingURL=routes-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file.d.ts","sourceRoot":"","sources":["../../src/generators/routes-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-file.d.ts","sourceRoot":"","sources":["../../src/generators/routes-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOnF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAqBlB,gBAAgB,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { perEntity } from "../generator.js";
|
|
2
2
|
import { renderRoutesFile } from "../templates/routes-file.js";
|
|
3
|
+
import { isTphSubtype } from "../templates/zod-validators.js";
|
|
3
4
|
import { formatTs } from "../format.js";
|
|
4
5
|
import { entityOutputPath } from "../import-path.js";
|
|
6
|
+
import { CODEGEN_ATTR_EMIT_ROUTES } from "../constants.js";
|
|
5
7
|
/**
|
|
6
8
|
* Per-entity opt-out via `@emitRoutes: false` is honored. If the user supplies
|
|
7
9
|
* their own filter, both must pass (AND).
|
|
10
|
+
*
|
|
11
|
+
* FR-017 Tier 2: TPH subtypes get no standalone routes file — their per-subtype
|
|
12
|
+
* route set lives in the discriminator base's routes file.
|
|
8
13
|
*/
|
|
9
14
|
export const routesFile = function routesFile(opts) {
|
|
10
15
|
const userFilter = opts?.filter ?? (() => true);
|
|
11
16
|
const generator = {
|
|
12
17
|
name: "routes-file",
|
|
13
18
|
// Always set: AND-composes metadata opt-out with optional user filter.
|
|
14
|
-
filter: (e) => e.ownAttr(
|
|
19
|
+
filter: (e) => e.ownAttr(CODEGEN_ATTR_EMIT_ROUTES) !== false && !isTphSubtype(e) && userFilter(e),
|
|
15
20
|
generate: perEntity(async (entity, ctx) => {
|
|
16
21
|
if (!ctx.renderContext) {
|
|
17
22
|
throw new Error("routes-file: renderContext is required (provided by runGen)");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file.js","sourceRoot":"","sources":["../../src/generators/routes-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-file.js","sourceRoot":"","sources":["../../src/generators/routes-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAO3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,UAAU,CAAC,IAAqB;IACjE,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,aAAa;QACnB,uEAAuE;QACvE,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE,CACxB,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QACpF,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,YAAY,CAAC;gBACrG,OAAO,EAAE,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;aACrE,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAqC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type MetaData, type MetaRoot } from "@metaobjectsdev/metadata";
|
|
2
|
+
import type { Provider } from "@metaobjectsdev/render";
|
|
3
|
+
import type { OutputLayout } from "../import-path.js";
|
|
4
|
+
import type { TemplateDocData } from "./template-doc-data.js";
|
|
5
|
+
export interface BuildTemplateDocDataOpts {
|
|
6
|
+
/** Page-placement layout. Defaults to "flat" (back-compat: same-dir links). */
|
|
7
|
+
layout?: OutputLayout;
|
|
8
|
+
/** Root used to resolve the @payloadRef target's package for a correct
|
|
9
|
+
* cross-link in package layout. Optional: flat layout never needs it. */
|
|
10
|
+
loadedRoot?: MetaRoot;
|
|
11
|
+
/** The page provider — the SAME one the render-helper drift gate / page
|
|
12
|
+
* rendering use (e.g. `projectProvider(projectRoot)`). Used to resolve each
|
|
13
|
+
* referenced mustache's SOURCE TEXT for the "## Template source" section.
|
|
14
|
+
* Optional: when absent (or a ref doesn't resolve) the section is omitted. */
|
|
15
|
+
provider?: Provider;
|
|
16
|
+
}
|
|
17
|
+
/** Build the TemplateDocData for one `template.output` node. */
|
|
18
|
+
export declare function buildTemplateDocData(template: MetaData, opts?: BuildTemplateDocDataOpts): TemplateDocData;
|
|
19
|
+
//# sourceMappingURL=template-doc-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-doc-builder.d.ts","sourceRoot":"","sources":["../../src/generators/template-doc-builder.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAed,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AASlF,MAAM,WAAW,wBAAwB;IACvC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;8EAC0E;IAC1E,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;mFAG+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AA+CD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,wBAAwB,GAC9B,eAAe,CAkGjB"}
|