@metaobjectsdev/codegen-ts 0.7.0-rc.11 → 0.7.0-rc.12

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.
Files changed (52) hide show
  1. package/dist/generators/docs-data-builder.d.ts +16 -0
  2. package/dist/generators/docs-data-builder.d.ts.map +1 -0
  3. package/dist/generators/docs-data-builder.js +375 -0
  4. package/dist/generators/docs-data-builder.js.map +1 -0
  5. package/dist/generators/docs-data.d.ts +87 -0
  6. package/dist/generators/docs-data.d.ts.map +1 -0
  7. package/dist/generators/docs-data.js +13 -0
  8. package/dist/generators/docs-data.js.map +1 -0
  9. package/dist/generators/docs-file.d.ts +1 -1
  10. package/dist/generators/docs-file.d.ts.map +1 -1
  11. package/dist/generators/docs-file.js +50 -33
  12. package/dist/generators/docs-file.js.map +1 -1
  13. package/dist/generators/index.d.ts +3 -0
  14. package/dist/generators/index.d.ts.map +1 -1
  15. package/dist/generators/index.js +2 -0
  16. package/dist/generators/index.js.map +1 -1
  17. package/dist/generators/template-generator.d.ts +40 -0
  18. package/dist/generators/template-generator.d.ts.map +1 -0
  19. package/dist/generators/template-generator.js +43 -0
  20. package/dist/generators/template-generator.js.map +1 -0
  21. package/dist/index.d.ts +6 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +7 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/overwrite-policy.d.ts +39 -2
  26. package/dist/overwrite-policy.d.ts.map +1 -1
  27. package/dist/overwrite-policy.js +233 -13
  28. package/dist/overwrite-policy.js.map +1 -1
  29. package/dist/render-engine/framework-provider.d.ts +28 -0
  30. package/dist/render-engine/framework-provider.d.ts.map +1 -0
  31. package/dist/render-engine/framework-provider.js +99 -0
  32. package/dist/render-engine/framework-provider.js.map +1 -0
  33. package/dist/runner.d.ts +15 -1
  34. package/dist/runner.d.ts.map +1 -1
  35. package/dist/runner.js +43 -6
  36. package/dist/runner.js.map +1 -1
  37. package/dist/templates/docs-file.d.ts +5 -36
  38. package/dist/templates/docs-file.d.ts.map +1 -1
  39. package/dist/templates/docs-file.js +33 -447
  40. package/dist/templates/docs-file.js.map +1 -1
  41. package/package.json +5 -5
  42. package/src/generators/docs-data-builder.ts +467 -0
  43. package/src/generators/docs-data.ts +113 -0
  44. package/src/generators/docs-file.ts +64 -43
  45. package/src/generators/index.ts +15 -0
  46. package/src/generators/template-generator.ts +84 -0
  47. package/src/index.ts +33 -2
  48. package/src/overwrite-policy.ts +325 -14
  49. package/src/render-engine/framework-provider.ts +98 -0
  50. package/src/runner.ts +64 -6
  51. package/src/templates/docs-file.ts +36 -537
  52. package/templates/docs/entity-page.md.mustache +54 -0
@@ -1,451 +1,37 @@
1
- // Docs-file template emits a Markdown documentation page for one entity.
1
+ // Backward-compatible facade over the rc.12+ template-driven docsFile()
2
+ // implementation. The Markdown structure now lives in
3
+ // `templates/docs/entity-page.md.mustache`; this module preserves the
4
+ // `renderDocsFile()` + `DocsRenderOpts` exports so the per-section unit
5
+ // tests in `test/templates/docs-file.test.ts` keep working without
6
+ // modification.
2
7
  //
3
- // One `<Entity>.md` file per object.entity / object.value. Documents:
4
- // - Description / type / source / package preamble
5
- // - Storage table (writable source.rdb only): per-field TypeScript type, SQL
6
- // column expression, and constraints
7
- // - Identity (primary, secondary, reference)
8
- // - Relationships (own composition / aggregation / association children, plus
9
- // incoming reference identities)
10
- // - Validation entry points (Zod schemas exported from <Entity>.ts)
11
- // - "Used by" any template.* node whose @payloadRef points at this entity
12
- // - Generated-code surface (which sibling files codegen produces)
13
- //
14
- // All output is plain Markdown; no ts-poet involvement. Byte-stable: identical
15
- // metadata input always produces identical output (the conformance runner
16
- // asserts byte equality against `expected/<Entity>.md`).
17
- //
18
- // Skipped sections on object.value: Storage / Identity / Relationships.
19
- import { TYPE_TEMPLATE, TEMPLATE_ATTR_PAYLOAD_REF, OBJECT_SUBTYPE_VALUE, IDENTITY_SUBTYPE_PRIMARY, IDENTITY_SUBTYPE_SECONDARY, IDENTITY_SUBTYPE_REFERENCE, IDENTITY_ATTR_GENERATION, RELATIONSHIP_ATTR_CARDINALITY, RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_SUBTYPE_COMPOSITION, RELATIONSHIP_SUBTYPE_AGGREGATION, RELATIONSHIP_SUBTYPE_ASSOCIATION, FIELD_SUBTYPE_ENUM, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_CLASS, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_SHORT, FIELD_SUBTYPE_BYTE, 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_ATTR_REQUIRED, FIELD_ATTR_UNIQUE, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_DEFAULT, VALIDATOR_SUBTYPE_LENGTH, VALIDATOR_SUBTYPE_REGEX, VALIDATOR_SUBTYPE_NUMERIC, VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_ATTR_PATTERN, VALIDATOR_ATTR_MIN, VALIDATOR_ATTR_MAX, DOC_ATTR_DESCRIPTION, stripPackage, } from "@metaobjectsdev/metadata";
20
- import { mapColumnType } from "../column-mapper.js";
21
- import { toPascalCase } from "../naming.js";
22
- import { enumValues } from "../enum-meta.js";
23
- import { hasWritableRdbSource } from "../source-detect.js";
24
- import { GENERATED_HEADER } from "../constants.js";
25
- /** Scalar field.subType → TypeScript scalar mapping. Mirrors inferred-types.ts. */
26
- const SCALAR_TS_BY_SUBTYPE = {
27
- [FIELD_SUBTYPE_STRING]: "string",
28
- [FIELD_SUBTYPE_CLASS]: "string",
29
- [FIELD_SUBTYPE_INT]: "number",
30
- [FIELD_SUBTYPE_SHORT]: "number",
31
- [FIELD_SUBTYPE_BYTE]: "number",
32
- [FIELD_SUBTYPE_LONG]: "number",
33
- [FIELD_SUBTYPE_DOUBLE]: "number",
34
- [FIELD_SUBTYPE_FLOAT]: "number",
35
- [FIELD_SUBTYPE_DECIMAL]: "number",
36
- [FIELD_SUBTYPE_CURRENCY]: "number",
37
- [FIELD_SUBTYPE_BOOLEAN]: "boolean",
38
- [FIELD_SUBTYPE_DATE]: "string",
39
- [FIELD_SUBTYPE_TIME]: "string",
40
- [FIELD_SUBTYPE_TIMESTAMP]: "string",
41
- };
42
- /** Mirror inferred-types.ts's enumTypeAliasName. */
43
- function enumTypeAliasName(entity, field) {
44
- const superField = field.resolveSuper();
45
- return superField !== undefined
46
- ? toPascalCase(superField.name)
47
- : `${entity.name}${toPascalCase(field.name)}`;
48
- }
49
- /**
50
- * The TS type column shown in the Storage table — equivalent to what
51
- * `InferSelectModel<typeof <table>>` produces. For required (or PK) → bare;
52
- * for optional → `T | null` (Drizzle nullable columns surface as `null`, not
53
- * `undefined`, on select).
54
- */
55
- function tsTypeForStorage(entity, field, pkFieldNames) {
56
- let base;
57
- if (field.subType === FIELD_SUBTYPE_ENUM) {
58
- const values = enumValues(field);
59
- if (values !== undefined && values.length > 0) {
60
- // For storage we show the literal union directly (matches what Drizzle
61
- // infers via `text(..., { enum: [...] as const })` on a single-column).
62
- // For arrays we use the alias name to keep the table tidy.
63
- if (field.isArray) {
64
- base = `${enumTypeAliasName(entity, field)}[]`;
65
- }
66
- else {
67
- base = values.map((v) => JSON.stringify(v)).join(" | ");
68
- }
69
- }
70
- else {
71
- base = field.isArray ? "string[]" : "string";
72
- }
73
- }
74
- else if (field.subType === FIELD_SUBTYPE_OBJECT) {
75
- const ref = field.ownAttr(FIELD_ATTR_OBJECT_REF);
76
- const refName = typeof ref === "string" && ref.length > 0 ? ref : "unknown";
77
- base = field.isArray ? `${refName}[]` : refName;
78
- }
79
- else {
80
- const scalar = SCALAR_TS_BY_SUBTYPE[field.subType] ?? "unknown";
81
- base = field.isArray ? `${scalar}[]` : scalar;
82
- }
83
- // Primary-key columns are always NOT NULL on the select side regardless of
84
- // an explicit @required attr; Drizzle's `.primaryKey()` implies notNull.
85
- // Required fields likewise come through as bare T. Optional → T | null.
86
- const required = pkFieldNames.has(field.name) || isFieldRequired(field);
87
- return required ? base : `${base} | null`;
88
- }
89
- /** True iff the field is required (own @required or validator.required, effective). */
90
- function isFieldRequired(field) {
91
- if (field.ownAttr(FIELD_ATTR_REQUIRED) === true)
92
- return true;
93
- return field.validators().some((v) => v.subType === VALIDATOR_SUBTYPE_REQUIRED);
94
- }
95
- /**
96
- * The SQL column column — the literal Drizzle call (function + args).
97
- * Mirrors what `mapColumnType()` + `renderColumn()` emit, minus the chain
98
- * modifiers (those land in Constraints).
99
- */
100
- function sqlColumnExpr(spec) {
101
- const dbName = JSON.stringify(spec.dbName);
102
- if (spec.fnOptions !== undefined && Object.keys(spec.fnOptions).length > 0) {
103
- const parts = [];
104
- for (const [k, v] of Object.entries(spec.fnOptions)) {
105
- const lit = JSON.stringify(v);
106
- if (Array.isArray(v)) {
107
- parts.push(`${k}: ${lit} as const`);
108
- }
109
- else {
110
- parts.push(`${k}: ${lit}`);
111
- }
112
- }
113
- return `${spec.fnName}(${dbName}, { ${parts.join(", ")} })`;
114
- }
115
- return `${spec.fnName}(${dbName})`;
116
- }
117
- /**
118
- * Build the Constraints cell text for one field. Pure description — not
119
- * exhaustive of every Drizzle modifier emitted, but covers the contract-level
120
- * shape (required / optional, PK, JSON, CHECK, regex, length, numeric bounds,
121
- * FK references, extends:).
122
- */
123
- function constraintsCell(entity, field, pkFieldNames, fkMap) {
124
- const parts = [];
125
- if (pkFieldNames.has(field.name)) {
126
- parts.push("primary key");
127
- const primary = entity.primaryIdentity();
128
- const gen = primary?.ownAttr(IDENTITY_ATTR_GENERATION);
129
- if (typeof gen === "string") {
130
- parts.push(`generation: \`${gen}\``);
131
- }
132
- }
133
- else if (isFieldRequired(field)) {
134
- parts.push("required");
135
- }
136
- else {
137
- parts.push("optional");
138
- }
139
- if (field.ownAttr(FIELD_ATTR_UNIQUE) === true) {
140
- parts.push("unique");
141
- }
142
- if (field.isArray) {
143
- parts.push("JSON column");
144
- }
145
- // Enum CHECK predicate.
146
- if (field.subType === FIELD_SUBTYPE_ENUM && !field.isArray) {
147
- const values = enumValues(field);
148
- if (values !== undefined && values.length > 0) {
149
- const list = values.map((v) => `'${v.replace(/'/g, "''")}'`).join(", ");
150
- // Use the strategy-mapped column name to mirror the emitted CHECK constraint.
151
- parts.push(`CHECK \`${field.column ?? field.name} IN (${list})\``);
152
- }
153
- }
154
- // Regex pattern.
155
- for (const v of field.validators()) {
156
- if (v.subType === VALIDATOR_SUBTYPE_REGEX) {
157
- const pattern = v.ownAttr(VALIDATOR_ATTR_PATTERN);
158
- if (typeof pattern === "string" && pattern.length > 0) {
159
- parts.push(`pattern \`${pattern}\``);
160
- }
161
- }
162
- }
163
- // Length bounds (validator.length / @maxLength).
164
- const maxLenAttr = field.ownAttr(FIELD_ATTR_MAX_LENGTH);
165
- if (typeof maxLenAttr === "number") {
166
- parts.push(`maxLength: ${maxLenAttr}`);
167
- }
168
- for (const v of field.validators()) {
169
- if (v.subType === VALIDATOR_SUBTYPE_LENGTH) {
170
- const min = v.ownAttr(VALIDATOR_ATTR_MIN);
171
- const max = v.ownAttr(VALIDATOR_ATTR_MAX);
172
- if (typeof min === "number")
173
- parts.push(`minLength: ${min}`);
174
- if (typeof max === "number" && typeof maxLenAttr !== "number")
175
- parts.push(`maxLength: ${max}`);
176
- }
177
- }
178
- // Numeric bounds.
179
- for (const v of field.validators()) {
180
- if (v.subType === VALIDATOR_SUBTYPE_NUMERIC) {
181
- const min = v.ownAttr(VALIDATOR_ATTR_MIN);
182
- const max = v.ownAttr(VALIDATOR_ATTR_MAX);
183
- if (typeof min === "number")
184
- parts.push(`min: ${min}`);
185
- if (typeof max === "number")
186
- parts.push(`max: ${max}`);
187
- }
188
- }
189
- // Foreign key (incoming side via reference identity).
190
- const fk = fkMap.get(field.name);
191
- if (fk !== undefined) {
192
- parts.push(`references \`${fk.targetEntity}.${fk.targetField}\``);
193
- }
194
- // Default expression — the actual literal/sql shape is implementation detail;
195
- // surface the raw declared default so the reader can see "what's the default."
196
- const def = field.ownAttr(FIELD_ATTR_DEFAULT);
197
- if (def !== undefined) {
198
- parts.push(`default: \`${String(def)}\``);
199
- }
200
- // Extends: surface the abstract super field name for traceability.
201
- const sup = field.resolveSuper();
202
- if (sup !== undefined) {
203
- parts.push(`extends \`${sup.name}\``);
204
- }
205
- return parts.join(", ");
206
- }
207
- /** Build the FK lookup for the entity's own reference identities. */
208
- function buildFkMap(entity, root) {
209
- const out = new Map();
210
- for (const ref of entity.referenceIdentities()) {
211
- const fkField = ref.fields[0];
212
- const targetEntity = ref.targetEntity;
213
- if (fkField === undefined || targetEntity === undefined)
214
- continue;
215
- const targetField = ref.resolvedTargetPkField(root) ?? "id";
216
- out.set(fkField, { targetEntity: stripPackage(targetEntity), targetField });
217
- }
218
- return out;
219
- }
220
- /** Resolve provenance from the node's source envelope — best-effort. */
221
- function sourceLine(entity) {
222
- const src = entity.source;
223
- if (!src)
224
- return undefined;
225
- if ("files" in src && src.files.length > 0) {
226
- // Mention the first file. Use the path verbatim — node IDs from
227
- // InMemoryStringSource (e.g. "meta.blog.json") or file system paths
228
- // (e.g. "metaobjects/meta-author.yaml") both read naturally here.
229
- return src.files[0];
230
- }
231
- if (src.format === "code") {
232
- return src.caller !== undefined ? `(code) ${src.caller}` : "(code)";
233
- }
234
- return undefined;
235
- }
236
- /** Description from the entity's @description doc-attr (effective). */
237
- function entityDescription(entity) {
238
- const v = entity.attr(DOC_ATTR_DESCRIPTION);
239
- return typeof v === "string" && v.length > 0 ? v : undefined;
240
- }
241
- /** Render the Storage section (a markdown table). */
242
- function renderStorageSection(entity, opts) {
243
- const strategy = opts.columnNamingStrategy ?? "snake_case";
244
- const primary = entity.primaryIdentity();
245
- const pkFields = primary?.fields ?? [];
246
- const pkFieldNames = new Set(pkFields);
247
- const fkMap = buildFkMap(entity, opts.loadedRoot);
248
- const rows = [];
249
- rows.push("| Field | TypeScript type | SQL column | Constraints |");
250
- rows.push("|---|---|---|---|");
251
- for (const field of entity.fields()) {
252
- const spec = mapColumnType(field, opts.dialect, strategy);
253
- const tsType = tsTypeForStorage(entity, field, pkFieldNames);
254
- const sqlExpr = sqlColumnExpr(spec);
255
- const cons = constraintsCell(entity, field, pkFieldNames, fkMap);
256
- // Wrap each cell in backticks where appropriate to keep table alignment
257
- // readable. The pipe character is escaped so Drizzle's `text(..., { enum: [...] })`
258
- // and TS literal unions ("a" | "b") render cleanly inside one cell.
259
- const tsTypeCell = tsType.split("|").map((s) => s.trim()).join(" \\| ");
260
- const sqlCell = `\`${sqlExpr}\``;
261
- rows.push(`| \`${field.name}\` | \`${tsTypeCell}\` | ${sqlCell} | ${cons} |`);
262
- }
263
- return `## Storage\n\n${rows.join("\n")}`;
264
- }
265
- /** Render the Identity section as bullets. */
266
- function renderIdentitySection(entity) {
267
- const ids = entity.identities();
268
- if (ids.length === 0)
269
- return undefined;
270
- const bullets = [];
271
- for (const id of ids) {
272
- bullets.push(`- ${describeIdentity(id)}`);
273
- }
274
- return `## Identity\n\n${bullets.join("\n")}`;
275
- }
276
- function describeIdentity(id) {
277
- const fields = id.fields;
278
- const fieldList = fields.length === 1
279
- ? `\`${fields[0]}\``
280
- : `(${fields.map((f) => `\`${f}\``).join(", ")})`;
281
- if (id.subType === IDENTITY_SUBTYPE_PRIMARY) {
282
- const gen = id.ownAttr(IDENTITY_ATTR_GENERATION);
283
- const genSuffix = typeof gen === "string" ? ` — generation: \`${gen}\`` : "";
284
- return `**Primary key:** ${fieldList}${genSuffix}`;
285
- }
286
- if (id.subType === IDENTITY_SUBTYPE_SECONDARY) {
287
- const uniqueText = id.unique ? "unique" : "non-unique";
288
- return `**Secondary index:** ${fieldList} — ${uniqueText}`;
289
- }
290
- if (id.subType === IDENTITY_SUBTYPE_REFERENCE) {
291
- // Reference identity carries @references = "TargetEntity[.field]"
292
- const refIdent = id;
293
- const raw = refIdent.referencesRaw;
294
- if (typeof raw === "string" && raw.length > 0) {
295
- return `**Reference:** ${fieldList} → \`${raw}\``;
296
- }
297
- return `**Reference:** ${fieldList}`;
298
- }
299
- return `**Identity (${id.subType}):** ${fieldList}`;
300
- }
301
- /** Render the Relationships section as bullets. */
302
- function renderRelationshipsSection(entity) {
303
- const rels = entity.relationships();
304
- if (rels.length === 0)
305
- return undefined;
306
- const bullets = [];
307
- for (const r of rels) {
308
- const cardinality = r.ownAttr(RELATIONSHIP_ATTR_CARDINALITY);
309
- const card = typeof cardinality === "string" ? cardinality : "?";
310
- const targetRaw = r.ownAttr(RELATIONSHIP_ATTR_OBJECT_REF);
311
- const target = typeof targetRaw === "string" ? stripPackage(targetRaw) : "?";
312
- const subtype = r.subType;
313
- let label;
314
- switch (subtype) {
315
- case RELATIONSHIP_SUBTYPE_COMPOSITION:
316
- label = "composition";
317
- break;
318
- case RELATIONSHIP_SUBTYPE_AGGREGATION:
319
- label = "aggregation";
320
- break;
321
- case RELATIONSHIP_SUBTYPE_ASSOCIATION:
322
- label = "association";
323
- break;
324
- default:
325
- label = subtype;
326
- }
327
- bullets.push(`- \`${r.name}\` — ${card} → \`${target}\` (${label})`);
328
- }
329
- return `## Relationships\n\n${bullets.join("\n")}`;
330
- }
331
- /** Render the Validation section — pointers at the Zod schemas. */
332
- function renderValidationSection(entity) {
333
- const lower = entity.name.charAt(0).toLowerCase() + entity.name.slice(1);
334
- const lines = [
335
- `- \`${entity.name}InsertSchema\` (Zod) — for creating new ${lower}s.`,
336
- `- \`${entity.name}UpdateSchema\` (Zod) — for partial updates.`,
337
- `- See \`${entity.name}.ts\` for the exported schemas.`,
338
- ];
339
- return `## Validation\n\n${lines.join("\n")}`;
340
- }
341
- /** Render the "Used by" section — templates that declare @payloadRef → this entity. */
342
- function renderUsedBySection(entity, root) {
343
- const matches = [];
344
- for (const child of root.ownChildren()) {
345
- if (child.type !== TYPE_TEMPLATE)
346
- continue;
347
- const ref = child.ownAttr(TEMPLATE_ATTR_PAYLOAD_REF);
348
- if (typeof ref !== "string")
349
- continue;
350
- if (stripPackage(ref) !== entity.name)
351
- continue;
352
- matches.push(`- \`template.${child.subType} ${child.name}\` — uses \`${entity.name}\` as \`@payloadRef\``);
353
- }
354
- if (matches.length === 0)
355
- return undefined;
356
- return `## Used by\n\n${matches.join("\n")}`;
357
- }
358
- /** Render the Generated-code section — sibling files this entity produces. */
359
- function renderGeneratedCodeSection(entity, opts) {
360
- const gens = opts.generatorNames ?? new Set();
361
- const isValue = entity.subType === OBJECT_SUBTYPE_VALUE;
362
- const lower = entity.name.charAt(0).toLowerCase() + entity.name.slice(1);
363
- const lines = [];
364
- lines.push(`- \`${entity.name}.ts\` — Drizzle table, Zod schemas, type aliases, enum literal unions.`);
365
- // Queries are only emitted for non-value entities (queriesFile() unconditionally
366
- // skips object.value).
367
- if (gens.has("queries-file") && !isValue) {
368
- lines.push(`- \`${entity.name}.queries.ts\` — typed CRUD helpers (find / list / create / update / delete; takes \`db\` as first param per ADR-0008).`);
369
- }
370
- if (gens.has("routes-file") && !isValue) {
371
- lines.push(`- \`${entity.name}.routes.ts\` — Fastify CRUD-5 route registration (\`register${entity.name}Routes\`).`);
372
- }
373
- if (gens.has("routes-file-hono") && !isValue) {
374
- lines.push(`- \`${entity.name}.routes.hono.ts\` — Hono CRUD-5 route registration (\`register${entity.name}Routes\`).`);
375
- }
376
- // Silence the unused `lower` warning — kept for future expansion.
377
- void lower;
378
- return `## Generated code\n\n${lines.join("\n")}`;
379
- }
380
- /**
381
- * Top-level: render the full markdown page for one entity / value object.
382
- *
383
- * Sections (object.entity with source.rdb):
384
- * # <Name>
385
- * > <description>?
386
- * **Type:** ...
387
- * **Source:** ...
388
- * **Package:** ...
389
- *
390
- * ## Storage
391
- * ## Identity
392
- * ## Relationships (when present)
393
- * ## Validation
394
- * ## Used by (when present)
395
- * ## Generated code
396
- *
397
- * Sections (object.value, or any object lacking source.rdb):
398
- * # <Name>
399
- * > <description>?
400
- * **Type:** ...
401
- * **Source:** ...
402
- * **Package:** ...
403
- *
404
- * ## Validation
405
- * ## Used by (when present)
406
- * ## Generated code
407
- */
8
+ // Adopters writing custom docs templates should import the public surface
9
+ // from `@metaobjectsdev/codegen-ts/generators` instead:
10
+ // - `buildEntityDocData(entity, opts)` for the typed data dict
11
+ // - `templateGenerator({ template: "docs/entity-page.md", ... })` for the
12
+ // standard end-to-end generator
13
+ import { render } from "@metaobjectsdev/render";
14
+ import { buildEntityDocData } from "../generators/docs-data-builder.js";
15
+ import { frameworkTemplatesProvider } from "../render-engine/framework-provider.js";
16
+ /** Backward-compatible entry point: builds the EntityDocData payload and
17
+ * renders it via the framework template. Byte-identical to the hand-coded
18
+ * rc.11 output (gated by `docs-file-conformance.test.ts`). */
408
19
  export function renderDocsFile(entity, opts) {
409
- const parts = [];
410
- // HTML comment header carrying the @generated marker — drives the
411
- // overwrite-policy so subsequent `meta gen` runs can refresh the file
412
- // without confirmation. Hidden in rendered markdown (HTML comments don't
413
- // surface in GitHub / VS Code / mdBook output) but visible in raw source.
414
- parts.push(`<!-- ${GENERATED_HEADER} — DO NOT EDIT. -->`);
415
- parts.push(`# ${entity.name}`);
416
- const desc = entityDescription(entity);
417
- if (desc !== undefined) {
418
- // Each non-empty line of the description becomes a quote line — keeps
419
- // multi-paragraph descriptions readable.
420
- const lines = desc.split("\n");
421
- parts.push(lines.map((l) => `> ${l}`.trimEnd()).join("\n"));
422
- }
423
- const headerLines = [];
424
- headerLines.push(`**Type:** \`${entity.type}.${entity.subType}\``);
425
- const src = sourceLine(entity);
426
- if (src !== undefined) {
427
- headerLines.push(`**Source:** \`${src}\``);
428
- }
429
- if (entity.package !== undefined && entity.package !== "") {
430
- headerLines.push(`**Package:** \`${entity.package}\``);
431
- }
432
- parts.push(headerLines.join("\n"));
433
- const hasStorage = entity.subType !== OBJECT_SUBTYPE_VALUE && hasWritableRdbSource(entity);
434
- if (hasStorage) {
435
- parts.push(renderStorageSection(entity, opts));
436
- const id = renderIdentitySection(entity);
437
- if (id !== undefined)
438
- parts.push(id);
439
- const rel = renderRelationshipsSection(entity);
440
- if (rel !== undefined)
441
- parts.push(rel);
442
- }
443
- parts.push(renderValidationSection(entity));
444
- const usedBy = renderUsedBySection(entity, opts.loadedRoot);
445
- if (usedBy !== undefined)
446
- parts.push(usedBy);
447
- parts.push(renderGeneratedCodeSection(entity, opts));
448
- // Join sections with a blank line, single trailing newline.
449
- return parts.map((s) => s.trimEnd()).join("\n\n") + "\n";
20
+ const data = buildEntityDocData(entity, {
21
+ dialect: opts.dialect,
22
+ ...(opts.columnNamingStrategy !== undefined
23
+ ? { columnNamingStrategy: opts.columnNamingStrategy }
24
+ : {}),
25
+ loadedRoot: opts.loadedRoot,
26
+ ...(opts.generatorNames !== undefined
27
+ ? { generatorNames: opts.generatorNames }
28
+ : {}),
29
+ });
30
+ return render({
31
+ ref: "docs/entity-page.md",
32
+ payload: data,
33
+ provider: frameworkTemplatesProvider,
34
+ format: "markdown",
35
+ });
450
36
  }
451
37
  //# sourceMappingURL=docs-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs-file.js","sourceRoot":"","sources":["../../src/templates/docs-file.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,sEAAsE;AACtE,qDAAqD;AACrD,+EAA+E;AAC/E,yCAAyC;AACzC,+CAA+C;AAC/C,gFAAgF;AAChF,qCAAqC;AACrC,sEAAsE;AACtE,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,yDAAyD;AACzD,EAAE;AACF,wEAAwE;AAExE,OAAO,EAKL,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAkBnD,mFAAmF;AACnF,MAAM,oBAAoB,GAA2B;IACnD,CAAC,oBAAoB,CAAC,EAAE,QAAQ;IAChC,CAAC,mBAAmB,CAAC,EAAE,QAAQ;IAC/B,CAAC,iBAAiB,CAAC,EAAE,QAAQ;IAC7B,CAAC,mBAAmB,CAAC,EAAE,QAAQ;IAC/B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,oBAAoB,CAAC,EAAE,QAAQ;IAChC,CAAC,mBAAmB,CAAC,EAAE,QAAQ;IAC/B,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,oDAAoD;AACpD,SAAS,iBAAiB,CAAC,MAAkB,EAAE,KAAgB;IAC7D,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,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,MAAkB,EAClB,KAAgB,EAChB,YAAiC;IAEjC,IAAI,IAAY,CAAC;IAEjB,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,uEAAuE;YACvE,wEAAwE;YACxE,2DAA2D;YAC3D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,GAAG,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAChE,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAChD,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC;AAC5C,CAAC;AAED,uFAAuF;AACvF,SAAS,eAAe,CAAC,KAAgB;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,0BAA0B,CAAC,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAsC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,MAAkB,EAClB,KAAgB,EAChB,YAAyB,EACzB,KAAiE;IAEjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,8EAA8E;YAC9E,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAClD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;YAC7D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,yBAAyB,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YACvD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,8EAA8E;IAC9E,+EAA+E;IAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,mEAAmE;IACnE,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACjC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,qEAAqE;AACrE,SAAS,UAAU,CACjB,MAAkB,EAClB,IAAc;IAEd,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyD,CAAC;IAC7E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QACtC,IAAI,OAAO,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;YAAE,SAAS;QAClE,MAAM,WAAW,GAAG,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAC5D,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,SAAS,UAAU,CAAC,MAAkB;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,gEAAgE;QAChE,oEAAoE;QACpE,kEAAkE;QAClE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uEAAuE;AACvE,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,qDAAqD;AACrD,SAAS,oBAAoB,CAC3B,MAAkB,EAClB,IAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,IAAI,YAAY,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAElD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACpE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACjE,wEAAwE;QACxE,oFAAoF;QACpF,oEAAoE;QACpE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,KAAK,OAAO,IAAI,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,UAAU,UAAU,QAAQ,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,8CAA8C;AAC9C,SAAS,qBAAqB,CAAC,MAAkB;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAgB;IACxC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACzB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;QACnC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI;QACpB,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAEpD,IAAI,EAAE,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,oBAAoB,SAAS,GAAG,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,KAAK,0BAA0B,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;QACvD,OAAO,wBAAwB,SAAS,MAAM,UAAU,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,KAAK,0BAA0B,EAAE,CAAC;QAC9C,kEAAkE;QAClE,MAAM,QAAQ,GAAG,EAA2C,CAAC;QAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,kBAAkB,SAAS,QAAQ,GAAG,IAAI,CAAC;QACpD,CAAC;QACD,OAAO,kBAAkB,SAAS,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,eAAe,EAAE,CAAC,OAAO,QAAQ,SAAS,EAAE,CAAC;AACtD,CAAC;AAED,mDAAmD;AACnD,SAAS,0BAA0B,CAAC,MAAkB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAExC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,KAAa,CAAC;QAClB,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,gCAAgC;gBACnC,KAAK,GAAG,aAAa,CAAC;gBACtB,MAAM;YACR,KAAK,gCAAgC;gBACnC,KAAK,GAAG,aAAa,CAAC;gBACtB,MAAM;YACR,KAAK,gCAAgC;gBACnC,KAAK,GAAG,aAAa,CAAC;gBACtB,MAAM;YACR;gBACE,KAAK,GAAG,OAAO,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,IAAI,QAAQ,MAAM,OAAO,KAAK,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,mEAAmE;AACnE,SAAS,uBAAuB,CAAC,MAAkB;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG;QACZ,OAAO,MAAM,CAAC,IAAI,2CAA2C,KAAK,IAAI;QACtE,OAAO,MAAM,CAAC,IAAI,6CAA6C;QAC/D,WAAW,MAAM,CAAC,IAAI,iCAAiC;KACxD,CAAC;IACF,OAAO,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,uFAAuF;AACvF,SAAS,mBAAmB,CAAC,MAAkB,EAAE,IAAc;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,SAAS;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,SAAS;QACtC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI;YAAE,SAAS;QAChD,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,eAAe,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,SAAS,0BAA0B,CAAC,MAAkB,EAAE,IAAoB;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,GAAG,EAAU,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,oBAAoB,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,wEAAwE,CAAC,CAAC;IACvG,iFAAiF;IACjF,uBAAuB;IACvB,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,wHAAwH,CAAC,CAAC;IACzJ,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,+DAA+D,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,iEAAiE,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC;IACzH,CAAC;IACD,kEAAkE;IAClE,KAAK,KAAK,CAAC;IACX,OAAO,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,IAAoB;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kEAAkE;IAClE,sEAAsE;IACtE,yEAAyE;IACzE,0EAA0E;IAC1E,KAAK,CAAC,IAAI,CAAC,QAAQ,gBAAgB,qBAAqB,CAAC,CAAC;IAE1D,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,sEAAsE;QACtE,yCAAyC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,WAAW,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;QAC1D,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,KAAK,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE3F,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,EAAE,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7C,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAErD,4DAA4D;IAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"docs-file.js","sourceRoot":"","sources":["../../src/templates/docs-file.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,sDAAsD;AACtD,sEAAsE;AACtE,wEAAwE;AACxE,mEAAmE;AACnE,gBAAgB;AAChB,EAAE;AACF,0EAA0E;AAC1E,wDAAwD;AACxD,iEAAiE;AACjE,4EAA4E;AAC5E,oCAAoC;AAKpC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAYpF;;+DAE+D;AAC/D,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,IAAoB;IACrE,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,CAAC,IAAI,CAAC,oBAAoB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;QACZ,GAAG,EAAE,qBAAqB;QAC1B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/codegen-ts",
3
- "version": "0.7.0-rc.11",
3
+ "version": "0.7.0-rc.12",
4
4
  "description": "TypeScript codegen engine for MetaObjects — emits Drizzle, Zod, and Fastify artifacts.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "default": "./dist/generators/index.js"
18
18
  }
19
19
  },
20
- "files": ["dist", "src", "README.md", "LICENSE"],
20
+ "files": ["dist", "src", "templates", "README.md", "LICENSE"],
21
21
  "scripts": {
22
22
  "build": "tsc -p .",
23
23
  "typecheck": "tsc -p tsconfig.typecheck.json"
@@ -38,7 +38,8 @@
38
38
  "access": "public"
39
39
  },
40
40
  "dependencies": {
41
- "@metaobjectsdev/metadata": "0.7.0-rc.11",
41
+ "@metaobjectsdev/metadata": "0.7.0-rc.12",
42
+ "@metaobjectsdev/render": "0.7.0-rc.12",
42
43
  "@biomejs/js-api": "^0.7.0",
43
44
  "@biomejs/wasm-nodejs": "^1.9.4",
44
45
  "ts-poet": "^6.10.0"
@@ -49,8 +50,7 @@
49
50
  },
50
51
  "devDependencies": {
51
52
  "@biomejs/biome": "^1.9.0",
52
- "@metaobjectsdev/codegen-ts-react": "0.7.0-rc.11",
53
- "@metaobjectsdev/render": "0.7.0-rc.11",
53
+ "@metaobjectsdev/codegen-ts-react": "0.7.0-rc.12",
54
54
  "bun-types": "latest",
55
55
  "drizzle-orm": "^0.36.0",
56
56
  "hono": "^4.6.0",