@metaobjectsdev/codegen-ts 0.9.0 → 0.11.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/column-mapper.d.ts +12 -6
- package/dist/column-mapper.d.ts.map +1 -1
- package/dist/column-mapper.js +68 -28
- 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 +439 -167
- 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/import-path.d.ts +18 -0
- package/dist/import-path.d.ts.map +1 -1
- package/dist/import-path.js +21 -0
- package/dist/import-path.js.map +1 -1
- 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 +101 -2
- package/dist/metaobjects-config.d.ts.map +1 -1
- package/dist/metaobjects-config.js +46 -0
- package/dist/metaobjects-config.js.map +1 -1
- package/dist/naming.d.ts +39 -2
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +52 -3
- package/dist/naming.js.map +1 -1
- package/dist/payload-codegen.d.ts.map +1 -1
- package/dist/payload-codegen.js +14 -6
- package/dist/payload-codegen.js.map +1 -1
- package/dist/pk-resolver.d.ts.map +1 -1
- package/dist/pk-resolver.js +4 -2
- package/dist/pk-resolver.js.map +1 -1
- package/dist/projection/extract-view-spec.d.ts.map +1 -1
- package/dist/projection/extract-view-spec.js +52 -26
- 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 +25 -2
- package/dist/render-context.d.ts.map +1 -1
- package/dist/render-context.js +7 -0
- 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 +20 -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 +72 -23
- 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 +3 -3
- 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 +6 -8
- package/dist/templates/extract-delegate-emitter.js.map +1 -1
- package/dist/templates/extractor.d.ts.map +1 -1
- package/dist/templates/extractor.js +58 -41
- package/dist/templates/extractor.js.map +1 -1
- package/dist/templates/field-meta.d.ts.map +1 -1
- package/dist/templates/field-meta.js +2 -6
- 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 +18 -10
- package/dist/templates/filter-allowlist.js.map +1 -1
- package/dist/templates/filter-shared.js +2 -2
- package/dist/templates/filter-shared.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 +10 -6
- 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 +15 -11
- 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 +121 -19
- 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-format-spec-emitter.js +1 -1
- package/dist/templates/output-format-spec-emitter.js.map +1 -1
- package/dist/templates/output-parser.d.ts.map +1 -1
- package/dist/templates/output-parser.js +31 -80
- 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 +113 -5
- package/dist/templates/queries-file.js.map +1 -1
- package/dist/templates/queries.d.ts +7 -2
- package/dist/templates/queries.d.ts.map +1 -1
- package/dist/templates/queries.js +15 -15
- package/dist/templates/queries.js.map +1 -1
- package/dist/templates/relations-block.d.ts.map +1 -1
- package/dist/templates/relations-block.js +12 -3
- 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 +5 -5
- package/dist/templates/render-helper.js.map +1 -1
- package/dist/templates/routes-file-hono.d.ts.map +1 -1
- package/dist/templates/routes-file-hono.js +1 -2
- package/dist/templates/routes-file-hono.js.map +1 -1
- package/dist/templates/routes-file.d.ts.map +1 -1
- package/dist/templates/routes-file.js +184 -7
- 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 +33 -5
- package/dist/templates/value-object-file.js.map +1 -1
- package/dist/templates/zod-validators.d.ts +65 -2
- package/dist/templates/zod-validators.d.ts.map +1 -1
- package/dist/templates/zod-validators.js +202 -22
- package/dist/templates/zod-validators.js.map +1 -1
- package/package.json +103 -34
- package/src/column-mapper.ts +79 -32
- 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 +483 -189
- 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/import-path.ts +28 -0
- package/src/index.ts +55 -4
- package/src/metaobjects-config.ts +146 -2
- package/src/naming.ts +73 -3
- package/src/payload-codegen.ts +16 -5
- package/src/pk-resolver.ts +4 -2
- package/src/projection/extract-view-spec.ts +50 -31
- package/src/relation-resolver.ts +103 -1
- package/src/render-context.ts +32 -2
- package/src/render-engine/embedded-templates.generated.ts +14 -0
- package/src/render-engine/framework-provider.ts +25 -11
- package/src/runner.ts +24 -0
- package/src/templates/docs-file.ts +2 -9
- package/src/templates/drizzle-schema.ts +80 -28
- package/src/templates/entity-constants.ts +3 -3
- package/src/templates/entity-file.ts +16 -5
- package/src/templates/enums-file.ts +50 -0
- package/src/templates/extract-delegate-emitter.ts +6 -7
- package/src/templates/extractor.ts +70 -40
- package/src/templates/field-meta.ts +1 -7
- package/src/templates/filter-allowlist.ts +18 -11
- package/src/templates/filter-shared.ts +2 -2
- package/src/templates/filter-type.ts +9 -7
- package/src/templates/find-templates.ts +15 -0
- package/src/templates/fr010-field-mapping.ts +15 -13
- package/src/templates/inferred-types.ts +122 -21
- package/src/templates/mermaid-er.ts +176 -8
- package/src/templates/output-format-spec-emitter.ts +1 -1
- package/src/templates/output-parser.ts +31 -80
- package/src/templates/output-prompt.ts +2 -1
- package/src/templates/queries-file.ts +133 -4
- package/src/templates/queries.ts +21 -15
- package/src/templates/relations-block.ts +19 -3
- package/src/templates/render-helper.ts +5 -4
- package/src/templates/routes-file-hono.ts +1 -2
- package/src/templates/routes-file.ts +234 -7
- package/src/templates/tph-discriminator.ts +232 -0
- package/src/templates/value-object-file.ts +39 -5
- package/src/templates/zod-validators.ts +225 -21
- 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/dist/templates/extract-schema-emitter.d.ts +0 -8
- package/dist/templates/extract-schema-emitter.d.ts.map +0 -1
- package/dist/templates/extract-schema-emitter.js +0 -81
- package/dist/templates/extract-schema-emitter.js.map +0 -1
- package/src/templates/extract-schema-emitter.ts +0 -111
|
@@ -7,18 +7,36 @@
|
|
|
7
7
|
// optional fields (matching Zod's `.optional()` inference — `T | undefined` —
|
|
8
8
|
// without the superfluous `| null` that Drizzle nullable columns introduce).
|
|
9
9
|
import { code, imp, joinCode } from "ts-poet";
|
|
10
|
-
import { FIELD_SUBTYPE_ENUM, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_INT,
|
|
10
|
+
import { FIELD_SUBTYPE_ENUM, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_UUID, FIELD_ATTR_REQUIRED, FIELD_ATTR_OBJECT_REF, } from "@metaobjectsdev/metadata";
|
|
11
11
|
import { variableNameFromEntity, toPascalCase } from "../naming.js";
|
|
12
|
+
import { valueObjectModuleSpecifier } from "../import-path.js";
|
|
13
|
+
import { stripPackage } from "@metaobjectsdev/metadata";
|
|
12
14
|
import { enumValues } from "../enum-meta.js";
|
|
13
15
|
import { renderDocsFor } from "./jsdoc.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
import { sharedEnumForField } from "../enum-shared.js";
|
|
17
|
+
import { sharedEnumImportSpecifier, providedEnumImportSpecifier } from "../enum-import.js";
|
|
18
|
+
/**
|
|
19
|
+
* Emit Drizzle's InferSelectModel / InferInsertModel aliases for an entity.
|
|
20
|
+
*
|
|
21
|
+
* `tphBase` (FR-017): when this entity is a TPH discriminator base, the
|
|
22
|
+
* discriminated-union type (emitted by the tph-discriminator template) owns the
|
|
23
|
+
* bare `<Base>` name, so the raw single-table row type is emitted as `<Base>Row`
|
|
24
|
+
* to avoid a duplicate `export type <Base>`. Insert/Update keep their names
|
|
25
|
+
* (no collision); they describe the physical TPH table row shape.
|
|
26
|
+
*/
|
|
27
|
+
export function renderInferredTypes(entity, tphBase = false, ctx) {
|
|
28
|
+
// The inferred Row/Insert types reference the Drizzle table var, so they must
|
|
29
|
+
// resolve to the SAME (possibly overridden) collection name the schema emits.
|
|
30
|
+
// ctx is optional for bare unit-test calls — those fall back to the default
|
|
31
|
+
// always-pluralize spelling.
|
|
32
|
+
const varName = ctx ? ctx.collectionName(entity.name) : variableNameFromEntity(entity.name);
|
|
16
33
|
const selectSym = imp("InferSelectModel@drizzle-orm");
|
|
17
34
|
const insertSym = imp("InferInsertModel@drizzle-orm");
|
|
18
35
|
const docs = renderDocsFor(entity);
|
|
19
36
|
const docsPrefix = docs ? `${docs}\n` : "";
|
|
37
|
+
const rowName = tphBase ? `${entity.name}Row` : entity.name;
|
|
20
38
|
return code `
|
|
21
|
-
${docsPrefix}export type ${
|
|
39
|
+
${docsPrefix}export type ${rowName} = ${selectSym}<typeof ${varName}>;
|
|
22
40
|
export type ${entity.name}Insert = ${insertSym}<typeof ${varName}>;
|
|
23
41
|
export type ${entity.name}Update = Partial<${entity.name}Insert>;
|
|
24
42
|
`;
|
|
@@ -45,12 +63,23 @@ export function enumUnionString(values) {
|
|
|
45
63
|
return values.map((v) => JSON.stringify(v)).join(" | ");
|
|
46
64
|
}
|
|
47
65
|
/**
|
|
48
|
-
* Emit
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
66
|
+
* Emit the enum type-alias section for an entity file. Three cases per field:
|
|
67
|
+
*
|
|
68
|
+
* • inline enum (members declared directly on the field; no root-abstract super)
|
|
69
|
+
* → `export type <Entity><Field> = "A" | "B";` — UNCHANGED (byte-identical).
|
|
70
|
+
* • shared materialized enum (extends a NON-@provided root-level abstract
|
|
71
|
+
* field.enum) → re-export the materialized type from the shared `./enums`
|
|
72
|
+
* module (`export { type E } from "./enums"`) instead of redeclaring it. The
|
|
73
|
+
* type is materialized ONCE in enums.ts (FR-019).
|
|
74
|
+
* • provided enum (extends a @provided root-level abstract field.enum) →
|
|
75
|
+
* re-export the type from the configured external module
|
|
76
|
+
* (`export { type E } from "<providedEnumModule>"`); metaobjects emits no
|
|
77
|
+
* declaration for it. A missing config is a codegen-time error.
|
|
78
|
+
*
|
|
79
|
+
* `ctx` is required to compute the shared/provided import specifiers. Returns
|
|
80
|
+
* null when the entity has no enum-alias lines to emit.
|
|
52
81
|
*/
|
|
53
|
-
export function renderEnumTypeAliases(entity) {
|
|
82
|
+
export function renderEnumTypeAliases(entity, ctx) {
|
|
54
83
|
// De-duplicate by type-alias name — multiple fields can extend the same abstract enum.
|
|
55
84
|
const seen = new Set();
|
|
56
85
|
const lines = [];
|
|
@@ -64,7 +93,21 @@ export function renderEnumTypeAliases(entity) {
|
|
|
64
93
|
if (seen.has(typeName))
|
|
65
94
|
continue;
|
|
66
95
|
seen.add(typeName);
|
|
67
|
-
|
|
96
|
+
// Without a RenderContext (bare unit-test calls) the shared/provided import
|
|
97
|
+
// specifiers can't be computed — fall back to inline emission. Real runs
|
|
98
|
+
// always pass ctx (entity-file template), so shared materialization applies.
|
|
99
|
+
const shared = ctx !== undefined ? sharedEnumForField(field) : undefined;
|
|
100
|
+
if (shared === undefined) {
|
|
101
|
+
// Inline enum — emit the literal union exactly as before.
|
|
102
|
+
lines.push(`export type ${typeName} = ${enumUnionString(values)};`);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Shared / provided enum — re-export from the materialized module or the
|
|
106
|
+
// configured external module; never redeclare the union here.
|
|
107
|
+
const spec = shared.provided
|
|
108
|
+
? providedEnumImportSpecifier(ctx, shared.name)
|
|
109
|
+
: sharedEnumImportSpecifier(ctx, entity.package);
|
|
110
|
+
lines.push(`export { type ${shared.name} } from ${JSON.stringify(spec)};`);
|
|
68
111
|
}
|
|
69
112
|
return lines.length > 0 ? code `${lines.join("\n")}` : null;
|
|
70
113
|
}
|
|
@@ -73,11 +116,8 @@ export function renderEnumTypeAliases(entity) {
|
|
|
73
116
|
// ---------------------------------------------------------------------------
|
|
74
117
|
const SCALAR_TS_BY_SUBTYPE = {
|
|
75
118
|
[FIELD_SUBTYPE_STRING]: "string",
|
|
76
|
-
[FIELD_SUBTYPE_CLASS]: "string",
|
|
77
119
|
[FIELD_SUBTYPE_UUID]: "string",
|
|
78
120
|
[FIELD_SUBTYPE_INT]: "number",
|
|
79
|
-
[FIELD_SUBTYPE_SHORT]: "number",
|
|
80
|
-
[FIELD_SUBTYPE_BYTE]: "number",
|
|
81
121
|
[FIELD_SUBTYPE_LONG]: "number",
|
|
82
122
|
[FIELD_SUBTYPE_DOUBLE]: "number",
|
|
83
123
|
[FIELD_SUBTYPE_FLOAT]: "number",
|
|
@@ -91,19 +131,67 @@ const SCALAR_TS_BY_SUBTYPE = {
|
|
|
91
131
|
[FIELD_SUBTYPE_TIME]: "string",
|
|
92
132
|
[FIELD_SUBTYPE_TIMESTAMP]: "string",
|
|
93
133
|
};
|
|
134
|
+
/**
|
|
135
|
+
* The PLAIN-STRING TS type expression for a field — the SINGLE source of truth
|
|
136
|
+
* for "what TS type does the codegen give this field". `valueObjectFieldType`
|
|
137
|
+
* (which returns a `Code` so cross-module `field.object` refs hoist via
|
|
138
|
+
* `imp(...)`) makes the SAME per-branch decisions; this string form exists for
|
|
139
|
+
* consumers (the api-docs field-shape builder) that need the type name as text,
|
|
140
|
+
* not a hoisting `Code`. The branch logic MUST stay in lock-step with
|
|
141
|
+
* `valueObjectFieldType` below.
|
|
142
|
+
*
|
|
143
|
+
* • field.object → the referenced object's bare (package-stripped) name, `[]`
|
|
144
|
+
* when an array; `unknown` / `unknown[]` when the @objectRef is missing.
|
|
145
|
+
* • field.enum → the same enum-union alias `enumUnionAliasName` emits
|
|
146
|
+
* (`<Owner><Field>` or the abstract super's PascalCase), `string` fallback.
|
|
147
|
+
* • scalar → SCALAR_TS_BY_SUBTYPE (else `unknown`), `[]` when an array.
|
|
148
|
+
*/
|
|
149
|
+
export function fieldTsTypeString(ownerName, field) {
|
|
150
|
+
if (field.subType === FIELD_SUBTYPE_OBJECT) {
|
|
151
|
+
const ref = field.attr(FIELD_ATTR_OBJECT_REF);
|
|
152
|
+
if (typeof ref === "string" && ref.length > 0) {
|
|
153
|
+
const base = stripPackage(ref);
|
|
154
|
+
return field.isArray ? `${base}[]` : base;
|
|
155
|
+
}
|
|
156
|
+
return field.isArray ? "unknown[]" : "unknown";
|
|
157
|
+
}
|
|
158
|
+
if (field.subType === FIELD_SUBTYPE_ENUM) {
|
|
159
|
+
const values = enumValues(field);
|
|
160
|
+
if (values !== undefined) {
|
|
161
|
+
// The emitted TS type is an enum-union ALIAS (`<Owner><Field>`), but its
|
|
162
|
+
// definition IS this literal union — inline it so the documented shape is
|
|
163
|
+
// self-contained (an agent sees the exact allowed values, not an opaque
|
|
164
|
+
// alias name). Array enums wrap the parenthesized union: `(A | B)[]`.
|
|
165
|
+
const union = enumUnionString(values);
|
|
166
|
+
return field.isArray ? `(${union})[]` : union;
|
|
167
|
+
}
|
|
168
|
+
return field.isArray ? "string[]" : "string";
|
|
169
|
+
}
|
|
170
|
+
const scalar = SCALAR_TS_BY_SUBTYPE[field.subType] ?? "unknown";
|
|
171
|
+
return field.isArray ? `${scalar}[]` : scalar;
|
|
172
|
+
}
|
|
94
173
|
/**
|
|
95
174
|
* One-line TS type expression for a field on a value-only object.
|
|
96
175
|
* Returns a `Code` so cross-module `field.object` refs can be hoisted via
|
|
97
176
|
* ts-poet `imp(...)` — matching how the Zod emitter hoists `<Ref>InsertSchema`.
|
|
98
177
|
*/
|
|
99
|
-
function valueObjectFieldType(entity, field) {
|
|
178
|
+
function valueObjectFieldType(entity, field, ctx) {
|
|
100
179
|
// field.object: import the referenced TS interface from its sibling module
|
|
101
180
|
// so ts-poet hoists the import. Mirrors zod-validators.ts's `<Ref>InsertSchema`
|
|
102
181
|
// import strategy, just for the type alias instead of the schema constant.
|
|
103
182
|
if (field.subType === FIELD_SUBTYPE_OBJECT) {
|
|
104
|
-
const ref = field.
|
|
183
|
+
const ref = field.attr(FIELD_ATTR_OBJECT_REF);
|
|
105
184
|
if (typeof ref === "string" && ref.length > 0) {
|
|
106
|
-
|
|
185
|
+
// @objectRef may be authored fully-qualified (acme::sales::Brief) or bare; the
|
|
186
|
+
// referenced interface is named by the BARE short name. The import MODULE is
|
|
187
|
+
// resolved through the shared layout/package/extStyle-aware helper (the SAME
|
|
188
|
+
// one the Zod schema + Drizzle .$type<> use) so all three agree. Without a
|
|
189
|
+
// ctx (bare unit-test calls) fall back to the flat same-dir specifier.
|
|
190
|
+
const base = stripPackage(ref);
|
|
191
|
+
const moduleSpec = ctx
|
|
192
|
+
? valueObjectModuleSpecifier(base, ctx.packageOf, entity.package, ctx.outputLayout, ctx.extStyle)
|
|
193
|
+
: `./${base}.js`;
|
|
194
|
+
const refImp = imp(`${base}@${moduleSpec}`);
|
|
107
195
|
return field.isArray ? code `${refImp}[]` : code `${refImp}`;
|
|
108
196
|
}
|
|
109
197
|
return field.isArray ? code `unknown[]` : code `unknown`;
|
|
@@ -113,6 +201,20 @@ function valueObjectFieldType(entity, field) {
|
|
|
113
201
|
const values = enumValues(field);
|
|
114
202
|
if (values !== undefined) {
|
|
115
203
|
const alias = enumUnionAliasName(entity.name, field);
|
|
204
|
+
// FR-019: a shared/provided enum's type lives in another module (./enums or
|
|
205
|
+
// the provided module). Use imp() so ts-poet hoists `import { type E }` —
|
|
206
|
+
// the local interface can then reference E. Inline enums reference the
|
|
207
|
+
// locally-declared `<Entity><Field>` alias as before.
|
|
208
|
+
if (ctx !== undefined) {
|
|
209
|
+
const shared = sharedEnumForField(field);
|
|
210
|
+
if (shared !== undefined) {
|
|
211
|
+
const spec = shared.provided
|
|
212
|
+
? providedEnumImportSpecifier(ctx, shared.name)
|
|
213
|
+
: sharedEnumImportSpecifier(ctx, entity.package);
|
|
214
|
+
const sym = imp(`${shared.name}@${spec}`);
|
|
215
|
+
return field.isArray ? code `${sym}[]` : code `${sym}`;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
116
218
|
return field.isArray ? code `${alias}[]` : code `${alias}`;
|
|
117
219
|
}
|
|
118
220
|
return field.isArray ? code `string[]` : code `string`;
|
|
@@ -128,14 +230,14 @@ function valueObjectFieldType(entity, field) {
|
|
|
128
230
|
* trip through Drizzle nullable columns, so the null-bridge is unnecessary
|
|
129
231
|
* here — and forces consumers into a residual cast at the call site.
|
|
130
232
|
*/
|
|
131
|
-
export function renderValueObjectInterface(entity) {
|
|
233
|
+
export function renderValueObjectInterface(entity, ctx) {
|
|
132
234
|
const docs = renderDocsFor(entity);
|
|
133
235
|
const docsPrefix = docs ? `${docs}\n` : "";
|
|
134
236
|
const lines = [];
|
|
135
237
|
for (const field of entity.fields()) {
|
|
136
|
-
const required = field.
|
|
238
|
+
const required = field.attr(FIELD_ATTR_REQUIRED) === true;
|
|
137
239
|
const optional = required ? "" : "?";
|
|
138
|
-
const tsType = valueObjectFieldType(entity, field);
|
|
240
|
+
const tsType = valueObjectFieldType(entity, field, ctx);
|
|
139
241
|
lines.push(code ` ${field.name}${optional}: ${tsType};`);
|
|
140
242
|
}
|
|
141
243
|
// joinCode with "\n" interpolates each Code segment on its own line and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inferred-types.js","sourceRoot":"","sources":["../../src/templates/inferred-types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gDAAgD;AAChD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"inferred-types.js","sourceRoot":"","sources":["../../src/templates/inferred-types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gDAAgD;AAChD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAG3F;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,GAAmB;IAC1F,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,6BAA6B;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5D,OAAO,IAAI,CAAA;EACX,UAAU,eAAe,OAAO,MAAM,SAAS,WAAW,OAAO;cACrD,MAAM,CAAC,IAAI,YAAY,SAAS,WAAW,OAAO;cAClD,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,IAAI;CACvD,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAAgB;IACpE,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACxC,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB,EAAE,GAAmB;IAC3E,uFAAuF;IACvF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;YAAE,SAAS;QAEnD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QAEnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnB,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,0DAA0D;YAC1D,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,SAAS;QACX,CAAC;QACD,yEAAyE;QACzE,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,2BAA2B,CAAC,GAAI,EAAE,MAAM,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,yBAAyB,CAAC,GAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,MAAM,oBAAoB,GAA2B;IACnD,CAAC,oBAAoB,CAAC,EAAE,QAAQ;IAChC,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,iBAAiB,CAAC,EAAE,QAAQ;IAC7B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,oBAAoB,CAAC,EAAE,QAAQ;IAChC,CAAC,mBAAmB,CAAC,EAAE,QAAQ;IAC/B,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,CAAC,qBAAqB,CAAC,EAAE,QAAQ;IACjC,CAAC,sBAAsB,CAAC,EAAE,QAAQ;IAClC,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAClC,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,uBAAuB,CAAC,EAAE,QAAQ;CACpC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAgB;IACnE,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAAkB,EAAE,KAAgB,EAAE,GAAmB;IACrF,2EAA2E;IAC3E,gFAAgF;IAChF,2EAA2E;IAC3E,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,+EAA+E;YAC/E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,uEAAuE;YACvE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,GAAG;gBACpB,CAAC,CAAC,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACjG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,SAAS,CAAC;IACzD,CAAC;IAED,2EAA2E;IAC3E,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrD,4EAA4E;YAC5E,0EAA0E;YAC1E,uEAAuE;YACvE,sDAAsD;YACtD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;wBAC1B,CAAC,CAAC,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;wBAC/C,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACnD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;oBAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,GAAG,EAAE,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,KAAK,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA,QAAQ,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAkB,EAAE,GAAmB;IAChF,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;QAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,KAAK,KAAK,CAAC,IAAI,GAAG,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,wEAAwE;IACxE,sEAAsE;IACtE,OAAO,IAAI,CAAA,GAAG,UAAU,oBAAoB,MAAM,CAAC,IAAI;EACvD,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;;CAE9B,CAAC;AACF,CAAC"}
|
|
@@ -1,6 +1,39 @@
|
|
|
1
|
-
import type { MetaRoot } from "@metaobjectsdev/metadata";
|
|
1
|
+
import type { MetaObject, MetaRoot } from "@metaobjectsdev/metadata";
|
|
2
|
+
/** Render JUST the fenced ```mermaid erDiagram``` block for the whole model
|
|
3
|
+
* (entities + identity.reference relationships) — NO per-entity prose. This is
|
|
4
|
+
* the single neutral ER-diagram builder; both `renderMermaidModel()` (the
|
|
5
|
+
* standalone model.md body) AND the neutral docs OVERVIEW page (`README.md`,
|
|
6
|
+
* emitted by the Tier-2 `meta docs` engine) consume it, so there is exactly
|
|
7
|
+
* ONE place ER topology is computed — no duplicate graph logic (ADR-0020).
|
|
8
|
+
*
|
|
9
|
+
* Abstract entities are excluded — they have no physical table to put in a
|
|
10
|
+
* diagram (matches migrate-ts/expected-schema.ts's same filter). */
|
|
11
|
+
export declare function renderMermaidErBlock(root: MetaRoot): string;
|
|
2
12
|
/** Render a docs/model.md body: Mermaid erDiagram + per-entity prose. Abstract
|
|
3
13
|
* entities are excluded — they have no physical table to put in a diagram
|
|
4
|
-
* (matches migrate-ts/expected-schema.ts's same filter).
|
|
14
|
+
* (matches migrate-ts/expected-schema.ts's same filter). Reuses the shared
|
|
15
|
+
* `renderMermaidErBlock()` for the diagram so the ER logic is never duplicated. */
|
|
5
16
|
export declare function renderMermaidModel(root: MetaRoot): string;
|
|
17
|
+
/** Render a Mermaid flowchart for ONE focal entity and its direct neighbors
|
|
18
|
+
* (1-hop). Three node kinds are surfaced and styled distinctly:
|
|
19
|
+
*
|
|
20
|
+
* - **focal** — the entity this page is about (deeper blue)
|
|
21
|
+
* - **same** — entity in the focal's own package (blue)
|
|
22
|
+
* - **external** — entity in a different package (dashed gray)
|
|
23
|
+
* - **vo** — value object referenced via `field.object` (rounded
|
|
24
|
+
* purple) — composition rather than FK
|
|
25
|
+
*
|
|
26
|
+
* Every node has a Mermaid `click <node> "./<node>.md"` directive, so the
|
|
27
|
+
* rendered SVG is a true navigation surface — click any neighbor to jump to
|
|
28
|
+
* its page. Edges are labeled with the field name that connects them.
|
|
29
|
+
*
|
|
30
|
+
* This replaces the previous erDiagram-based renderer: Mermaid 10's erDiagram
|
|
31
|
+
* has near-zero styling and no click support, while flowchart supports both.
|
|
32
|
+
* The crow's-foot one-to-many notation is dropped — for a 1-hop context
|
|
33
|
+
* diagram, "what kind of node is this" matters more than ER cardinality.
|
|
34
|
+
*
|
|
35
|
+
* Returns `undefined` when the focal entity has no neighbors at all, so a
|
|
36
|
+
* template can `{{#mini}}…{{/mini}}` and skip the section cleanly. Abstract
|
|
37
|
+
* entities are excluded as neighbors (no physical rows). */
|
|
38
|
+
export declare function renderEntityNeighborhoodErBlock(focal: MetaObject, root: MetaRoot): string | undefined;
|
|
6
39
|
//# sourceMappingURL=mermaid-er.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-er.d.ts","sourceRoot":"","sources":["../../src/templates/mermaid-er.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mermaid-er.d.ts","sourceRoot":"","sources":["../../src/templates/mermaid-er.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASrE;;;;;;;;qEAQqE;AACrE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAc3D;AAED;;;oFAGoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAiBzD;AAED;;;;;;;;;;;;;;;;;;;;6DAoB6D;AAC7D,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,QAAQ,GACb,MAAM,GAAG,SAAS,CAsHpB"}
|
|
@@ -3,18 +3,22 @@
|
|
|
3
3
|
// 2. A per-entity prose section consuming the 6 user-facing doc attrs (notes excluded).
|
|
4
4
|
//
|
|
5
5
|
// D5: the notes attr is NEVER emitted. Per the Documentation Provider design.
|
|
6
|
-
import { DOC_ATTR_DESCRIPTION } from "@metaobjectsdev/metadata";
|
|
6
|
+
import { DOC_ATTR_DESCRIPTION, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, OBJECT_SUBTYPE_VALUE, } from "@metaobjectsdev/metadata";
|
|
7
7
|
import { readDocAttrs } from "./jsdoc.js";
|
|
8
|
-
/** Render
|
|
9
|
-
* entities
|
|
10
|
-
*
|
|
11
|
-
|
|
8
|
+
/** Render JUST the fenced ```mermaid erDiagram``` block for the whole model
|
|
9
|
+
* (entities + identity.reference relationships) — NO per-entity prose. This is
|
|
10
|
+
* the single neutral ER-diagram builder; both `renderMermaidModel()` (the
|
|
11
|
+
* standalone model.md body) AND the neutral docs OVERVIEW page (`README.md`,
|
|
12
|
+
* emitted by the Tier-2 `meta docs` engine) consume it, so there is exactly
|
|
13
|
+
* ONE place ER topology is computed — no duplicate graph logic (ADR-0020).
|
|
14
|
+
*
|
|
15
|
+
* Abstract entities are excluded — they have no physical table to put in a
|
|
16
|
+
* diagram (matches migrate-ts/expected-schema.ts's same filter). */
|
|
17
|
+
export function renderMermaidErBlock(root) {
|
|
12
18
|
const entities = root
|
|
13
19
|
.objects()
|
|
14
20
|
.filter((o) => o.isEntity() && !o.isAbstract);
|
|
15
21
|
const parts = [];
|
|
16
|
-
parts.push("# Data Model");
|
|
17
|
-
parts.push("");
|
|
18
22
|
parts.push("```mermaid");
|
|
19
23
|
parts.push("erDiagram");
|
|
20
24
|
for (const line of renderRelationships(entities))
|
|
@@ -25,6 +29,20 @@ export function renderMermaidModel(root) {
|
|
|
25
29
|
parts.push(` ${line}`);
|
|
26
30
|
}
|
|
27
31
|
parts.push("```");
|
|
32
|
+
return parts.join("\n");
|
|
33
|
+
}
|
|
34
|
+
/** Render a docs/model.md body: Mermaid erDiagram + per-entity prose. Abstract
|
|
35
|
+
* entities are excluded — they have no physical table to put in a diagram
|
|
36
|
+
* (matches migrate-ts/expected-schema.ts's same filter). Reuses the shared
|
|
37
|
+
* `renderMermaidErBlock()` for the diagram so the ER logic is never duplicated. */
|
|
38
|
+
export function renderMermaidModel(root) {
|
|
39
|
+
const entities = root
|
|
40
|
+
.objects()
|
|
41
|
+
.filter((o) => o.isEntity() && !o.isAbstract);
|
|
42
|
+
const parts = [];
|
|
43
|
+
parts.push("# Data Model");
|
|
44
|
+
parts.push("");
|
|
45
|
+
parts.push(renderMermaidErBlock(root));
|
|
28
46
|
parts.push("");
|
|
29
47
|
for (const entity of entities) {
|
|
30
48
|
for (const line of renderEntityProse(entity))
|
|
@@ -33,6 +51,155 @@ export function renderMermaidModel(root) {
|
|
|
33
51
|
}
|
|
34
52
|
return parts.join("\n");
|
|
35
53
|
}
|
|
54
|
+
/** Render a Mermaid flowchart for ONE focal entity and its direct neighbors
|
|
55
|
+
* (1-hop). Three node kinds are surfaced and styled distinctly:
|
|
56
|
+
*
|
|
57
|
+
* - **focal** — the entity this page is about (deeper blue)
|
|
58
|
+
* - **same** — entity in the focal's own package (blue)
|
|
59
|
+
* - **external** — entity in a different package (dashed gray)
|
|
60
|
+
* - **vo** — value object referenced via `field.object` (rounded
|
|
61
|
+
* purple) — composition rather than FK
|
|
62
|
+
*
|
|
63
|
+
* Every node has a Mermaid `click <node> "./<node>.md"` directive, so the
|
|
64
|
+
* rendered SVG is a true navigation surface — click any neighbor to jump to
|
|
65
|
+
* its page. Edges are labeled with the field name that connects them.
|
|
66
|
+
*
|
|
67
|
+
* This replaces the previous erDiagram-based renderer: Mermaid 10's erDiagram
|
|
68
|
+
* has near-zero styling and no click support, while flowchart supports both.
|
|
69
|
+
* The crow's-foot one-to-many notation is dropped — for a 1-hop context
|
|
70
|
+
* diagram, "what kind of node is this" matters more than ER cardinality.
|
|
71
|
+
*
|
|
72
|
+
* Returns `undefined` when the focal entity has no neighbors at all, so a
|
|
73
|
+
* template can `{{#mini}}…{{/mini}}` and skip the section cleanly. Abstract
|
|
74
|
+
* entities are excluded as neighbors (no physical rows). */
|
|
75
|
+
export function renderEntityNeighborhoodErBlock(focal, root) {
|
|
76
|
+
if (focal.isAbstract)
|
|
77
|
+
return undefined;
|
|
78
|
+
// Resolve neighbor kind so the flowchart can color/shape it accordingly.
|
|
79
|
+
// Same-package = focal's effective package; differing or unknown = external.
|
|
80
|
+
// Value object = object.value subtype. Aborts return classify→undefined.
|
|
81
|
+
//
|
|
82
|
+
// `node.package` is the OWN attr only — entities that take their package
|
|
83
|
+
// from the file-default (`metadata.root: { package: ... }`) leave it
|
|
84
|
+
// undefined. Use `fileDefaultPackage` as the fallback so cross-file
|
|
85
|
+
// boundary detection works in the common case where adopters set the
|
|
86
|
+
// package once at the root, not on every entity. Mirrors the same
|
|
87
|
+
// resolution rule docs-paths.ts uses for page placement.
|
|
88
|
+
const byName = new Map();
|
|
89
|
+
for (const obj of root.objects())
|
|
90
|
+
byName.set(obj.name, obj);
|
|
91
|
+
const effectivePkg = (n) => n.package ?? n.fileDefaultPackage;
|
|
92
|
+
const focalPackage = effectivePkg(focal);
|
|
93
|
+
const sameDomain = new Set();
|
|
94
|
+
const external = new Set();
|
|
95
|
+
const valueObjs = new Set();
|
|
96
|
+
function classify(name) {
|
|
97
|
+
if (name === focal.name)
|
|
98
|
+
return "same"; // self-reference (parent-id etc.)
|
|
99
|
+
const target = byName.get(name);
|
|
100
|
+
if (!target)
|
|
101
|
+
return undefined;
|
|
102
|
+
if (target.subType === OBJECT_SUBTYPE_VALUE) {
|
|
103
|
+
valueObjs.add(name);
|
|
104
|
+
return "vo";
|
|
105
|
+
}
|
|
106
|
+
if (target.isAbstract)
|
|
107
|
+
return undefined;
|
|
108
|
+
if (effectivePkg(target) === focalPackage) {
|
|
109
|
+
sameDomain.add(name);
|
|
110
|
+
return "same";
|
|
111
|
+
}
|
|
112
|
+
external.add(name);
|
|
113
|
+
return "external";
|
|
114
|
+
}
|
|
115
|
+
const edges = [];
|
|
116
|
+
// Outgoing FK — focal references other entities.
|
|
117
|
+
for (const ref of focal.referenceIdentities()) {
|
|
118
|
+
const target = ref.targetEntity;
|
|
119
|
+
const field = ref.fields[0];
|
|
120
|
+
if (typeof target !== "string" || typeof field !== "string")
|
|
121
|
+
continue;
|
|
122
|
+
const targetName = target.split("::").pop();
|
|
123
|
+
if (classify(targetName) === undefined)
|
|
124
|
+
continue;
|
|
125
|
+
edges.push({ from: focal.name, to: targetName, label: field });
|
|
126
|
+
}
|
|
127
|
+
// Incoming FK — entities that reference the focal.
|
|
128
|
+
for (const other of root.objects().filter(o => o.isEntity() && !o.isAbstract)) {
|
|
129
|
+
if (other.name === focal.name)
|
|
130
|
+
continue;
|
|
131
|
+
for (const ref of other.referenceIdentities()) {
|
|
132
|
+
const target = ref.targetEntity;
|
|
133
|
+
if (typeof target !== "string")
|
|
134
|
+
continue;
|
|
135
|
+
if (target.split("::").pop() !== focal.name)
|
|
136
|
+
continue;
|
|
137
|
+
const field = ref.fields[0];
|
|
138
|
+
if (typeof field !== "string")
|
|
139
|
+
continue;
|
|
140
|
+
if (classify(other.name) === undefined)
|
|
141
|
+
continue;
|
|
142
|
+
edges.push({ from: other.name, to: focal.name, label: field });
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Value-object composition — `field.object @objectRef ContactInfo` etc.
|
|
146
|
+
// These aren't FKs (no row-level identity); they're embedded composition.
|
|
147
|
+
// Surfaced because adopters care: "what's inside this entity's `jsonb`
|
|
148
|
+
// column?" Click-through to the VO docs answers that.
|
|
149
|
+
for (const field of focal.fields()) {
|
|
150
|
+
if (field.subType !== FIELD_SUBTYPE_OBJECT)
|
|
151
|
+
continue;
|
|
152
|
+
const ref = field.attr(FIELD_ATTR_OBJECT_REF);
|
|
153
|
+
if (typeof ref !== "string" || ref.length === 0)
|
|
154
|
+
continue;
|
|
155
|
+
const targetName = ref.split("::").pop();
|
|
156
|
+
if (classify(targetName) === undefined)
|
|
157
|
+
continue;
|
|
158
|
+
edges.push({ from: focal.name, to: targetName, label: field.name });
|
|
159
|
+
}
|
|
160
|
+
if (edges.length === 0)
|
|
161
|
+
return undefined;
|
|
162
|
+
// Build the flowchart. Nodes first (so all are declared before edges),
|
|
163
|
+
// then edges, then click directives, then classDefs + class assignments.
|
|
164
|
+
const allNodes = new Set([focal.name, ...sameDomain, ...external, ...valueObjs]);
|
|
165
|
+
const parts = ["```mermaid", "flowchart TB"];
|
|
166
|
+
for (const name of allNodes) {
|
|
167
|
+
if (valueObjs.has(name)) {
|
|
168
|
+
// Stadium (rounded-rect) shape signals composition / embedded value.
|
|
169
|
+
parts.push(` ${name}(["${name}"])`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// Sharp rectangle for entities.
|
|
173
|
+
parts.push(` ${name}["${name}"]`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
for (const { from, to, label } of edges) {
|
|
177
|
+
parts.push(` ${from} -->|"${label}"| ${to}`);
|
|
178
|
+
}
|
|
179
|
+
// Click directives — link every node (focal + neighbors) to its docs page.
|
|
180
|
+
// Flat-layout assumption: `./<Name>.md` lives next to the focal's page.
|
|
181
|
+
// Package-layout adopters can override the template; the data plumbing
|
|
182
|
+
// is identical either way.
|
|
183
|
+
for (const name of allNodes) {
|
|
184
|
+
parts.push(` click ${name} "./${name}.md"`);
|
|
185
|
+
}
|
|
186
|
+
// Visual styling: 4 node kinds, 4 classes. Color choices are deliberately
|
|
187
|
+
// muted so the diagram reads as documentation, not infographic art.
|
|
188
|
+
parts.push(" classDef focal fill:#dbeafe,stroke:#1e40af,stroke-width:2px,color:#1e293b;");
|
|
189
|
+
parts.push(" classDef same fill:#eff6ff,stroke:#3b82f6,color:#1e293b;");
|
|
190
|
+
parts.push(" classDef external fill:#f3f4f6,stroke:#9ca3af,stroke-dasharray:4 3,color:#374151;");
|
|
191
|
+
parts.push(" classDef vo fill:#faf5ff,stroke:#9333ea,color:#1e293b;");
|
|
192
|
+
parts.push(` class ${focal.name} focal;`);
|
|
193
|
+
const sameOthers = [...sameDomain].filter(n => n !== focal.name);
|
|
194
|
+
if (sameOthers.length > 0)
|
|
195
|
+
parts.push(` class ${sameOthers.join(",")} same;`);
|
|
196
|
+
if (external.size > 0)
|
|
197
|
+
parts.push(` class ${[...external].join(",")} external;`);
|
|
198
|
+
if (valueObjs.size > 0)
|
|
199
|
+
parts.push(` class ${[...valueObjs].join(",")} vo;`);
|
|
200
|
+
parts.push("```");
|
|
201
|
+
return parts.join("\n");
|
|
202
|
+
}
|
|
36
203
|
function renderRelationships(entities) {
|
|
37
204
|
const lines = [];
|
|
38
205
|
for (const entity of entities) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-er.js","sourceRoot":"","sources":["../../src/templates/mermaid-er.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,8FAA8F;AAC9F,0FAA0F;AAC1F,EAAE;AACF,8EAA8E;AAG9E,OAAO,
|
|
1
|
+
{"version":3,"file":"mermaid-er.js","sourceRoot":"","sources":["../../src/templates/mermaid-er.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ function promptFieldLiteral(field) {
|
|
|
44
44
|
const instruction = optStringAttr(field, FIELD_ATTR_INSTRUCTION);
|
|
45
45
|
if (field.subType === FIELD_SUBTYPE_ENUM) {
|
|
46
46
|
const valuesLit = stringArrayLiteral(enumValues(field));
|
|
47
|
-
const enumDocLit = propertiesMapLiteral(field.
|
|
47
|
+
const enumDocLit = propertiesMapLiteral(field.attr(FIELD_ATTR_ENUM_DOC));
|
|
48
48
|
return (`{ name: ${name}, kind: FieldKind.ENUM, required: ${required}, array: ${array}, ` +
|
|
49
49
|
`enumValues: ${valuesLit}, enumDoc: ${enumDocLit}, example: ${example}, ` +
|
|
50
50
|
`instruction: ${instruction}, nested: null }`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-format-spec-emitter.js","sourceRoot":"","sources":["../../src/templates/output-format-spec-emitter.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,0FAA0F;AAC1F,gGAAgG;AAChG,EAAE;AACF,4FAA4F;AAC5F,8FAA8F;AAC9F,uGAAuG;AAEvG,OAAO,EAEL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,oFAAoF;AACpF,MAAM,UAAU,WAAW,CAAC,EAAY,EAAE,QAAkB,EAAE,QAAgB;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrD,OAAO,CACL,aAAa,UAAU,eAAe,iBAAiB,CAAC,QAAQ,CAAC,IAAI;QACrE,UAAU,SAAS,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CACtF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB;IACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;AAC3F,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAkB;IAC5C,QAAQ,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACrD,KAAK,mBAAmB;YACtB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,yBAAyB;YAC5B,OAAO,0BAA0B,CAAC;QACpC;YACE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,kBAAkB,CAAC,KAAe;IACzC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAC3C,OAAO,CACL,WAAW,IAAI,uCAAuC,QAAQ,YAAY,KAAK,IAAI;YACnF,mFAAmF;YACnF,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IAEjE,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"output-format-spec-emitter.js","sourceRoot":"","sources":["../../src/templates/output-format-spec-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/templates/output-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/templates/output-parser.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,QAAQ,EAUd,MAAM,0BAA0B,CAAC;AAmElC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAmJ/E"}
|