@metaobjectsdev/codegen-ts 0.6.0-rc.1 → 0.7.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.
Files changed (50) hide show
  1. package/README.md +131 -4
  2. package/dist/column-mapper.d.ts.map +1 -1
  3. package/dist/column-mapper.js +2 -1
  4. package/dist/column-mapper.js.map +1 -1
  5. package/dist/generators/index.d.ts +2 -0
  6. package/dist/generators/index.d.ts.map +1 -1
  7. package/dist/generators/index.js +2 -0
  8. package/dist/generators/index.js.map +1 -1
  9. package/dist/generators/output-parser-file.d.ts +9 -0
  10. package/dist/generators/output-parser-file.d.ts.map +1 -0
  11. package/dist/generators/output-parser-file.js +37 -0
  12. package/dist/generators/output-parser-file.js.map +1 -0
  13. package/dist/generators/prompt-render-file.d.ts +9 -0
  14. package/dist/generators/prompt-render-file.d.ts.map +1 -0
  15. package/dist/generators/prompt-render-file.js +52 -0
  16. package/dist/generators/prompt-render-file.js.map +1 -0
  17. package/dist/metaobjects-config.d.ts +3 -1
  18. package/dist/metaobjects-config.d.ts.map +1 -1
  19. package/dist/metaobjects-config.js +2 -1
  20. package/dist/metaobjects-config.js.map +1 -1
  21. package/dist/naming.d.ts +3 -12
  22. package/dist/naming.d.ts.map +1 -1
  23. package/dist/naming.js +14 -44
  24. package/dist/naming.js.map +1 -1
  25. package/dist/projection/extract-view-spec.d.ts +1 -1
  26. package/dist/projection/extract-view-spec.js +1 -1
  27. package/dist/templates/output-parser.d.ts +8 -0
  28. package/dist/templates/output-parser.d.ts.map +1 -0
  29. package/dist/templates/output-parser.js +129 -0
  30. package/dist/templates/output-parser.js.map +1 -0
  31. package/dist/templates/projection-decl.d.ts +1 -1
  32. package/dist/templates/projection-decl.js +1 -1
  33. package/dist/templates/queries-file.d.ts.map +1 -1
  34. package/dist/templates/queries-file.js +15 -4
  35. package/dist/templates/queries-file.js.map +1 -1
  36. package/dist/templates/queries.d.ts.map +1 -1
  37. package/dist/templates/queries.js +11 -30
  38. package/dist/templates/queries.js.map +1 -1
  39. package/package.json +4 -4
  40. package/src/column-mapper.ts +2 -1
  41. package/src/generators/index.ts +2 -0
  42. package/src/generators/output-parser-file.ts +50 -0
  43. package/src/generators/prompt-render-file.ts +69 -0
  44. package/src/metaobjects-config.ts +4 -2
  45. package/src/naming.ts +22 -46
  46. package/src/projection/extract-view-spec.ts +1 -1
  47. package/src/templates/output-parser.ts +143 -0
  48. package/src/templates/projection-decl.ts +1 -1
  49. package/src/templates/queries-file.ts +18 -4
  50. package/src/templates/queries.ts +11 -33
package/README.md CHANGED
@@ -12,11 +12,13 @@ npm install @metaobjectsdev/codegen-ts @metaobjectsdev/metadata drizzle-orm zod
12
12
  ## Usage
13
13
 
14
14
  ```typescript
15
- import { FileMetaDataLoader } from "@metaobjectsdev/metadata/core";
15
+ import { MetaDataLoader } from "@metaobjectsdev/metadata";
16
+ import { FileSource } from "@metaobjectsdev/metadata/core";
16
17
  import { generate } from "@metaobjectsdev/codegen-ts";
17
18
 
18
- const loader = new FileMetaDataLoader();
19
- const { root } = await loader.loadFiles(["metaobjects/meta.blog.json"]);
19
+ const { root } = await new MetaDataLoader().load([
20
+ new FileSource("metaobjects/meta.blog.json"),
21
+ ]);
20
22
 
21
23
  const result = await generate({
22
24
  metadata: root,
@@ -34,7 +36,7 @@ Per entity, codegen emits **two files**:
34
36
 
35
37
  - `<Entity>.ts` — Drizzle table definition (with FK `.references()` + `relations()` blocks
36
38
  auto-emitted from metadata relationships) + Drizzle-inferred types + Zod validators
37
- - `<Entity>.queries.ts` — typed CRUD query functions with prepared statements
39
+ - `<Entity>.queries.ts` — typed CRUD query functions
38
40
  (`findPostById`, `listPosts`, `createPost`, `updatePost`, `deletePostById`)
39
41
 
40
42
  Plus a barrel `index.ts` re-exporting from each `<Entity>.ts`.
@@ -55,6 +57,14 @@ codegen-ts overwrites files with the header but refuses to touch files
55
57
  without it. Hand-customizations live in sibling `<Entity>.extra.ts` files
56
58
  (for custom queries, derived-column indexes, etc. that metadata can't express).
57
59
 
60
+ ### Consumer wiring
61
+
62
+ Generated query helpers accept a Drizzle `db` instance as their first
63
+ parameter. See [wiring-generated-queries.md](../../../../docs/recipes/wiring-generated-queries.md)
64
+ for per-dialect setup, edge (Workers / D1) examples, and a 0.6.0 → 0.7.0
65
+ migration guide. The cross-language design decision is in
66
+ [ADR-0008](../../../../spec/decisions/ADR-0008-parameter-passing-generated-repo-helpers.md).
67
+
58
68
  ## Output targets
59
69
 
60
70
  Each generator can be routed to its own output directory via a named **target**
@@ -96,6 +106,123 @@ It does **not** work on `better-sqlite3` or `bun:sqlite` (no native
96
106
  functions in the sibling `<Entity>.extra.ts` file with a non-`.returning()`
97
107
  form, or switch to a supported driver.
98
108
 
109
+ ## `outputParser()` — typed parsers for `template.output`
110
+
111
+ For every `template.output` declared in your metadata, `outputParser()` emits
112
+ `<TemplateName>.output.ts` containing a Zod schema + dual-API parser:
113
+
114
+ ```ts
115
+ // metaobjects.config.ts
116
+ import { defineConfig } from "@metaobjectsdev/cli";
117
+ import { entityFile, queriesFile, barrel, promptRender, outputParser } from "@metaobjectsdev/codegen-ts/generators";
118
+
119
+ export default defineConfig({
120
+ generators: [entityFile(), queriesFile(), barrel(), promptRender(), outputParser()],
121
+ });
122
+ ```
123
+
124
+ For a `template.output` named `NpcResponseOutput` with `@payloadRef: "NpcResponsePayload"`:
125
+
126
+ ```ts
127
+ // Generated NpcResponseOutput.output.ts — self-contained, no cross-file imports
128
+ import { z } from "zod";
129
+
130
+ const NpcResponseOutputSchema = z.object({
131
+ name: z.string(),
132
+ age: z.number().int(),
133
+ });
134
+
135
+ export type NpcResponseOutputData = z.infer<typeof NpcResponseOutputSchema>;
136
+ export type NpcResponseOutputValidationError = z.ZodError;
137
+
138
+ /** Throws ZodError on validation failure. */
139
+ export function parseNpcResponseOutput(text: string): NpcResponseOutputData { ... }
140
+
141
+ /** Result-style; never throws. */
142
+ export function safeParseNpcResponseOutput(text: string):
143
+ | { success: true; data: NpcResponseOutputData }
144
+ | { success: false; error: NpcResponseOutputValidationError } { ... }
145
+ ```
146
+
147
+ `parseXxx` and `safeParseXxx` return the local `<Name>Data` type, derived from
148
+ the schema via `z.infer<>`. It is structurally identical to the payload-VO
149
+ interface emitted by `promptRender()` (e.g., `NpcResponsePayload` in
150
+ `prompts.ts`) — consumers who wire both generators can assign back and forth
151
+ between `NpcResponseOutputData` and `NpcResponsePayload` interchangeably. The
152
+ output-parser file is intentionally self-contained so it compiles standalone
153
+ even when `promptRender()` is not wired in.
154
+
155
+ Consumer usage:
156
+
157
+ ```ts
158
+ import { parseNpcResponseOutput, safeParseNpcResponseOutput } from "./generated/NpcResponseOutput.output";
159
+
160
+ const npc = parseNpcResponseOutput(llmResponseText); // throws on bad shape
161
+
162
+ const r = safeParseNpcResponseOutput(llmResponseText);
163
+ if (!r.success) { /* handle r.error (a ZodError) */ } else { /* use r.data */ }
164
+ ```
165
+
166
+ **Field-type → Zod-type mapping:**
167
+
168
+ | Field subtype | Emitted Zod |
169
+ |---|---|
170
+ | `field.string`, `field.class` | `z.string()` |
171
+ | `field.int`, `field.long`, `field.short`, `field.byte` | `z.number().int()` |
172
+ | `field.double`, `field.float` | `z.number()` |
173
+ | `field.boolean` | `z.boolean()` |
174
+ | `field.object` (with `@objectRef`) | nested `z.object({ ... })` |
175
+ | `isArray: true` on any of the above | wrapped in `z.array(...)` |
176
+
177
+ **Options:**
178
+
179
+ ```ts
180
+ outputParser({
181
+ outDir: "src/generated/outputs", // default: emits at the target's root
182
+ target: "default", // default: "default" (the entity-module target)
183
+ })
184
+ ```
185
+
186
+ **`meta verify` integration:** when `meta verify` runs, every `template.output`'s
187
+ `@payloadRef` resolution is checked. Unresolved refs fail the build (`exit 1`)
188
+ with a `(output)` prefix on the diagnostic. See [ADR-0010](../../../../spec/decisions/ADR-0010-template-output-parser-codegen.md)
189
+ for the cross-language design rationale.
190
+
191
+ ## Naming conventions: camelCase TS ↔ snake_case SQL
192
+
193
+ `@metaobjectsdev/codegen-ts` maps `snake_case` metadata field names to
194
+ `camelCase` TS property names by default. The underlying SQL column stays
195
+ `snake_case`.
196
+
197
+ ```jsonc
198
+ // Metadata
199
+ { "field.long": { "name": "council_id" } }
200
+ ```
201
+
202
+ ```ts
203
+ // Generated TS — property is camelCase
204
+ import { councils } from "./generated/Council";
205
+ const id = council.councilId;
206
+ db.select().from(councils).where(eq(councils.councilId, "abc"));
207
+ ```
208
+
209
+ ```sql
210
+ -- Generated DDL — column stays snake_case
211
+ CREATE TABLE councils (
212
+ council_id TEXT NOT NULL PRIMARY KEY,
213
+ ...
214
+ );
215
+ ```
216
+
217
+ To override the SQL column name per-field, use `@dbColumn`:
218
+
219
+ ```jsonc
220
+ { "field.long": { "name": "councilId", "@dbColumn": "council_uuid" } }
221
+ ```
222
+
223
+ The mapping policy is project-wide via `columnNamingStrategy` in
224
+ `metaobjects.config.ts`: `snake_case` (default) | `literal` | `kebab-case`.
225
+
99
226
  ## License
100
227
 
101
228
  Apache-2.0.
@@ -1 +1 @@
1
- {"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../src/column-mapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA0B1D,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAiCxC,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuBD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,oBAAmC,GAC5C,UAAU,CAoKZ"}
1
+ {"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../src/column-mapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA2B1D,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAiCxC,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuBD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,oBAAqD,GAC9D,UAAU,CAoKZ"}
@@ -3,6 +3,7 @@
3
3
  import { FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_CLASS, FIELD_SUBTYPE_ENUM, VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_SUBTYPE_LENGTH, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_REQUIRED, FIELD_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, VALIDATOR_ATTR_MAX, } from "@metaobjectsdev/metadata";
4
4
  import { columnNameFromField } from "./naming.js";
5
5
  import { enumValues } from "./enum-meta.js";
6
+ import { DEFAULT_COLUMN_NAMING_STRATEGY } from "@metaobjectsdev/metadata";
6
7
  /**
7
8
  * Patterns recognized as SQL expressions in a default value. Anything matching
8
9
  * these is treated as a SQL expression, not a string literal. Mirrors
@@ -55,7 +56,7 @@ function isRequired(field) {
55
56
  return true;
56
57
  return field.validators().some((child) => child.subType === VALIDATOR_SUBTYPE_REQUIRED);
57
58
  }
58
- export function mapColumnType(field, dialect, strategy = "snake_case") {
59
+ export function mapColumnType(field, dialect, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
59
60
  const dbName = field.column ?? columnNameFromField(field.name, strategy);
60
61
  const importModule = dialect === "sqlite" ? "drizzle-orm/sqlite-core" : "drizzle-orm/pg-core";
61
62
  const subType = field.subType;
@@ -1 +1 @@
1
- {"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../src/column-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../src/column-mapper.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,6 @@ export { queriesFile, type QueriesFileOpts } from "./queries-file.js";
3
3
  export { routesFile, type RoutesFileOpts } from "./routes-file.js";
4
4
  export { barrel, type BarrelOpts } from "./barrel.js";
5
5
  export { mermaidErDiagram, type MermaidErOptions } from "./mermaid-er.js";
6
+ export { promptRender, type PromptRenderOpts } from "./prompt-render-file.js";
7
+ export { outputParser, type OutputParserOpts } from "./output-parser-file.js";
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -3,4 +3,6 @@ export { queriesFile } from "./queries-file.js";
3
3
  export { routesFile } from "./routes-file.js";
4
4
  export { barrel } from "./barrel.js";
5
5
  export { mermaidErDiagram } from "./mermaid-er.js";
6
+ export { promptRender } from "./prompt-render-file.js";
7
+ export { outputParser } from "./output-parser-file.js";
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type GeneratorFactory } from "../generator.js";
2
+ export interface OutputParserOpts {
3
+ /** Output directory prefix relative to the target's outDir. Default: "" (root). */
4
+ outDir?: string;
5
+ /** Optional named output target (registry key). Defaults to "default". */
6
+ target?: string;
7
+ }
8
+ export declare const outputParser: GeneratorFactory<OutputParserOpts>;
9
+ //# sourceMappingURL=output-parser-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-parser-file.d.ts","sourceRoot":"","sources":["../../src/generators/output-parser-file.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAsBpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ // server/typescript/packages/codegen-ts/src/generators/output-parser-file.ts
2
+ //
3
+ // Stock generator that emits one <TemplateName>.output.ts file per declared
4
+ // template.output node. Wraps renderOutputParser() from templates/output-parser.ts.
5
+ //
6
+ // Consumer wiring (metaobjects.config.ts):
7
+ // generators: [..., promptRender(), outputParser()]
8
+ //
9
+ // Custom output directory:
10
+ // generators: [..., outputParser({ outDir: "src/generated/outputs" })]
11
+ import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT } from "@metaobjectsdev/metadata";
12
+ import { oncePerRun, } from "../generator.js";
13
+ import { renderOutputParser } from "../templates/output-parser.js";
14
+ export const outputParser = function outputParser(opts) {
15
+ const dirPrefix = opts?.outDir ? `${opts.outDir.replace(/\/$/, "")}/` : "";
16
+ const generator = {
17
+ name: "output-parser",
18
+ generate: oncePerRun((_entities, ctx) => {
19
+ const outputs = ctx.loadedRoot
20
+ .ownChildren()
21
+ .filter((c) => c.type === TYPE_TEMPLATE && c.subType === TEMPLATE_SUBTYPE_OUTPUT);
22
+ const files = [];
23
+ for (const t of outputs) {
24
+ files.push({
25
+ path: `${dirPrefix}${t.name}.output.ts`,
26
+ content: renderOutputParser(ctx.loadedRoot, t.name),
27
+ });
28
+ }
29
+ return files;
30
+ }),
31
+ };
32
+ if (opts?.target) {
33
+ generator.target = opts.target;
34
+ }
35
+ return generator;
36
+ };
37
+ //# sourceMappingURL=output-parser-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-parser-file.js","sourceRoot":"","sources":["../../src/generators/output-parser-file.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,oFAAoF;AACpF,EAAE;AACF,2CAA2C;AAC3C,sDAAsD;AACtD,EAAE;AACF,2BAA2B;AAC3B,yEAAyE;AAEzE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAIL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASnE,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,IAAuB;IACvE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU;iBAC3B,WAAW,EAAE;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,CAAC;YACpF,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,YAAY;oBACvC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;iBACpD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type GeneratorFactory } from "../generator.js";
2
+ export interface PromptRenderOpts {
3
+ /** Output file path relative to the target's outDir. Default: "prompts.ts". */
4
+ outFile?: string;
5
+ /** Optional named output target (registry key). Defaults to "default". */
6
+ target?: string;
7
+ }
8
+ export declare const promptRender: GeneratorFactory<PromptRenderOpts>;
9
+ //# sourceMappingURL=prompt-render-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-render-file.d.ts","sourceRoot":"","sources":["../../src/generators/prompt-render-file.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAMzB,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAuCpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,52 @@
1
+ // Stock generator that wraps generatePayloadInterfaces() + generateRenderHandle()
2
+ // from payload-codegen.ts into a Generator factory. Emits ONE file aggregating
3
+ // typed payload interfaces (for object.value entities) and render handles (for
4
+ // template.prompt nodes).
5
+ //
6
+ // Consumer wiring (metaobjects.config.ts):
7
+ // generators: [..., promptRender()]
8
+ //
9
+ // Custom output path:
10
+ // generators: [..., promptRender({ outFile: "src/render/generated/prompts.ts" })]
11
+ import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, OBJECT_SUBTYPE_VALUE } from "@metaobjectsdev/metadata";
12
+ import { oncePerRun, } from "../generator.js";
13
+ import { generatePayloadInterfaces, generateRenderHandle, } from "../payload-codegen.js";
14
+ export const promptRender = function promptRender(opts) {
15
+ const outFile = opts?.outFile ?? "prompts.ts";
16
+ const generator = {
17
+ name: "prompt-render",
18
+ generate: oncePerRun((entities, ctx) => {
19
+ const payloads = entities.filter((e) => e.subType === OBJECT_SUBTYPE_VALUE);
20
+ const prompts = ctx.loadedRoot
21
+ .ownChildren()
22
+ .filter((c) => c.type === TYPE_TEMPLATE && c.subType === TEMPLATE_SUBTYPE_PROMPT);
23
+ if (payloads.length === 0 && prompts.length === 0) {
24
+ return [];
25
+ }
26
+ const parts = [];
27
+ for (const p of payloads) {
28
+ parts.push(generatePayloadInterfaces(ctx.loadedRoot, p.name));
29
+ }
30
+ // Strip the `import type { ... } from "./payloads.js"` line that
31
+ // generateRenderHandle() emits for the standalone two-file scenario.
32
+ // In the single-file output here the payload interfaces are already
33
+ // defined above, so the import is a self-reference to a non-existent module.
34
+ for (const t of prompts) {
35
+ const handle = generateRenderHandle(ctx.loadedRoot, t.name)
36
+ .split("\n")
37
+ .filter((line) => !line.startsWith("import type {") || !line.includes("./payloads.js"))
38
+ .join("\n");
39
+ parts.push(handle);
40
+ }
41
+ return [{
42
+ path: outFile,
43
+ content: parts.filter((s) => s.length > 0).map((s) => s.trimEnd()).join("\n\n") + "\n",
44
+ }];
45
+ }),
46
+ };
47
+ if (opts?.target) {
48
+ generator.target = opts.target;
49
+ }
50
+ return generator;
51
+ };
52
+ //# sourceMappingURL=prompt-render-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-render-file.js","sourceRoot":"","sources":["../../src/generators/prompt-render-file.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,0BAA0B;AAC1B,EAAE;AACF,2CAA2C;AAC3C,sCAAsC;AACtC,EAAE;AACF,sBAAsB;AACtB,oFAAoF;AAEpF,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAGL,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAS/B,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,IAAuB;IACvE,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,YAAY,CAAC;IAC9C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,oBAAoB,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU;iBAC3B,WAAW,EAAE;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,CAAC;YAEpF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,iEAAiE;YACjE,qEAAqE;YACrE,oEAAoE;YACpE,6EAA6E;YAC7E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;qBACxD,KAAK,CAAC,IAAI,CAAC;qBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;qBACtF,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,CAAC;oBACN,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;iBACvF,CAAC,CAAC;QACL,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAuC,CAAC"}
@@ -1,8 +1,10 @@
1
+ import { type ColumnNamingStrategy } from "@metaobjectsdev/metadata";
1
2
  import type { Generator } from "./generator.js";
2
3
  import type { ExtStyle } from "./render-context.js";
3
4
  import type { OutputLayout, ResolvedTarget } from "./import-path.js";
4
5
  export type Dialect = "sqlite" | "postgres";
5
- export type ColumnNamingStrategy = "snake_case" | "literal" | "kebab-case";
6
+ /** Re-exported from metadata so codegen-ts consumers see one canonical type. */
7
+ export type { ColumnNamingStrategy } from "@metaobjectsdev/metadata";
6
8
  export type { ExtStyle };
7
9
  export type { OutputLayout };
8
10
  export type { ResolvedTarget };
@@ -1 +1 @@
1
- {"version":3,"file":"metaobjects-config.d.ts","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC5C,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,kIAAkI;IAClI,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kGAAkG;IAClG,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;6CAG6C;AAC7C,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC3F,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAE/E;AAED;;kEAEkE;AAClE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAqB3F;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,8BAA8B,CAQ5F"}
1
+ {"version":3,"file":"metaobjects-config.d.ts","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC5C,gFAAgF;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,kIAAkI;IAClI,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kGAAkG;IAClG,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;6CAG6C;AAC7C,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC3F,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAE/E;AAED;;kEAEkE;AAClE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAqB3F;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,8BAA8B,CAQ5F"}
@@ -1,3 +1,4 @@
1
+ import { DEFAULT_COLUMN_NAMING_STRATEGY } from "@metaobjectsdev/metadata";
1
2
  /** The implicit target synthesized from top-level config (outDir/outputLayout/dbImport). */
2
3
  export const DEFAULT_TARGET_NAME = "default";
3
4
  /** Identity passthrough; exists for IDE type-inference + autocomplete. */
@@ -33,7 +34,7 @@ export function resolveTargets(config) {
33
34
  export function normalizeConfig(config) {
34
35
  return {
35
36
  ...config,
36
- columnNamingStrategy: config.columnNamingStrategy ?? "snake_case",
37
+ columnNamingStrategy: config.columnNamingStrategy ?? DEFAULT_COLUMN_NAMING_STRATEGY,
37
38
  apiPrefix: config.apiPrefix ?? "",
38
39
  outputLayout: config.outputLayout ?? "flat",
39
40
  targets: resolveTargets(config),
@@ -1 +1 @@
1
- {"version":3,"file":"metaobjects-config.js","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAUA,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AA2C7C,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,MAA4B;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;kEAEkE;AAClE,MAAM,UAAU,cAAc,CAAC,MAA4B;IACzD,MAAM,MAAM,GAAiB,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC;IAC3D,MAAM,GAAG,GAAmC;QAC1C,CAAC,mBAAmB,CAAC,EAAE;YACrB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,GAAG;YACV,IAAI;YACJ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,MAAM;YACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;SACxC,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,eAAe,CAAC,MAA4B;IAC1D,OAAO;QACL,GAAG,MAAM;QACT,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,YAAY;QACjE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM;QAC3C,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"metaobjects-config.js","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAA6B,MAAM,0BAA0B,CAAC;AAYrG,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AA2C7C,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,MAA4B;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;kEAEkE;AAClE,MAAM,UAAU,cAAc,CAAC,MAA4B;IACzD,MAAM,MAAM,GAAiB,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC;IAC3D,MAAM,GAAG,GAAmC;QAC1C,CAAC,mBAAmB,CAAC,EAAE;YACrB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,GAAG;YACV,IAAI;YACJ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,MAAM;YACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;SACxC,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,eAAe,CAAC,MAA4B;IAC1D,OAAO;QACL,GAAG,MAAM;QACT,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,8BAA8B;QACnF,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM;QAC3C,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC"}
package/dist/naming.d.ts CHANGED
@@ -1,9 +1,5 @@
1
- import type { ColumnNamingStrategy } from "./metaobjects-config.js";
2
- /**
3
- * Convert PascalCase or camelCase to snake_case.
4
- * Treats consecutive capitals (e.g., "APIKey") as a single word: "api_key".
5
- */
6
- export declare function toSnakeCase(s: string): string;
1
+ import { toKebabCase, type ColumnNamingStrategy } from "@metaobjectsdev/metadata";
2
+ export { pluralize, toSnakeCase } from "@metaobjectsdev/metadata";
7
3
  /**
8
4
  * Convert snake_case to camelCase. Preserves already-camelCase input.
9
5
  */
@@ -12,12 +8,6 @@ export declare function toCamelCase(s: string): string;
12
8
  * Capitalize the first character of a string (camelCase → PascalCase).
13
9
  */
14
10
  export declare function toPascalCase(s: string): string;
15
- /**
16
- * Simple English pluralization. Documented imperfection per design §13 #1:
17
- * irregular plurals (Person → Persons, not People) are not handled.
18
- * Users override via source[dbTable]@name in metadata.
19
- */
20
- export declare function pluralize(s: string): string;
21
11
  /** PascalCase entity → strategy-applied plural for DB table name. */
22
12
  export declare function tableNameFromEntity(entityName: string, strategy?: ColumnNamingStrategy): string;
23
13
  /** camelCase or PascalCase field → strategy-applied DB column name. */
@@ -30,4 +20,5 @@ export declare function columnNameFromField(fieldName: string, strategy?: Column
30
20
  export declare function viewNameFromProjection(projectionName: string, strategy: ColumnNamingStrategy): string;
31
21
  /** PascalCase entity → camelCase plural for the Drizzle table variable. */
32
22
  export declare function variableNameFromEntity(entityName: string): string;
23
+ export { toKebabCase };
33
24
  //# sourceMappingURL=naming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAgBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,oBAAmC,GAC5C,MAAM,CAER;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,oBAAmC,GAC5C,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,oBAAoB,GAC7B,MAAM,CAMR;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE"}
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,WAAW,EAEX,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,oBAAqD,GAC9D,MAAM,CAER;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,oBAAqD,GAC9D,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,oBAAoB,GAC7B,MAAM,CAGR;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAGD,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/dist/naming.js CHANGED
@@ -1,27 +1,10 @@
1
1
  // Naming helpers — case conversion + pluralization for codegen output.
2
- // All functions are pure.
3
- /**
4
- * Convert PascalCase or camelCase to snake_case.
5
- * Treats consecutive capitals (e.g., "APIKey") as a single word: "api_key".
6
- */
7
- export function toSnakeCase(s) {
8
- return s
9
- .replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
10
- .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
11
- .toLowerCase();
12
- }
13
- /** Convert PascalCase or camelCase to kebab-case. */
14
- function toKebabCase(s) {
15
- return toSnakeCase(s).replace(/_/g, "-");
16
- }
17
- /** Apply a ColumnNamingStrategy to a name. */
18
- function applyStrategy(name, strategy) {
19
- switch (strategy) {
20
- case "snake_case": return toSnakeCase(name);
21
- case "literal": return name;
22
- case "kebab-case": return toKebabCase(name);
23
- }
24
- }
2
+ // All functions are pure. The strategy primitives (toSnakeCase, toKebabCase,
3
+ // applyColumnNamingStrategy, pluralize, DEFAULT_COLUMN_NAMING_STRATEGY) are
4
+ // re-exported from @metaobjectsdev/metadata so codegen + runtime + migrate
5
+ // share a single source of truth for how field/table names lower to columns.
6
+ import { applyColumnNamingStrategy, DEFAULT_COLUMN_NAMING_STRATEGY, pluralize, toKebabCase, toSnakeCase, } from "@metaobjectsdev/metadata";
7
+ export { pluralize, toSnakeCase } from "@metaobjectsdev/metadata";
25
8
  /**
26
9
  * Convert snake_case to camelCase. Preserves already-camelCase input.
27
10
  */
@@ -34,25 +17,13 @@ export function toCamelCase(s) {
34
17
  export function toPascalCase(s) {
35
18
  return s.length > 0 ? s[0].toUpperCase() + s.slice(1) : s;
36
19
  }
37
- /**
38
- * Simple English pluralization. Documented imperfection per design §13 #1:
39
- * irregular plurals (Person → Persons, not People) are not handled.
40
- * Users override via source[dbTable]@name in metadata.
41
- */
42
- export function pluralize(s) {
43
- if (/(s|x|z|ch|sh)$/i.test(s))
44
- return s + "es";
45
- if (/[^aeiou]y$/i.test(s))
46
- return s.slice(0, -1) + "ies";
47
- return s + "s";
48
- }
49
20
  /** PascalCase entity → strategy-applied plural for DB table name. */
50
- export function tableNameFromEntity(entityName, strategy = "snake_case") {
51
- return applyStrategy(pluralize(entityName), strategy);
21
+ export function tableNameFromEntity(entityName, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
22
+ return applyColumnNamingStrategy(pluralize(entityName), strategy);
52
23
  }
53
24
  /** camelCase or PascalCase field → strategy-applied DB column name. */
54
- export function columnNameFromField(fieldName, strategy = "snake_case") {
55
- return applyStrategy(fieldName, strategy);
25
+ export function columnNameFromField(fieldName, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
26
+ return applyColumnNamingStrategy(fieldName, strategy);
56
27
  }
57
28
  /**
58
29
  * PascalCase projection name → "v_" prefix + strategy applied (not pluralized).
@@ -60,14 +31,13 @@ export function columnNameFromField(fieldName, strategy = "snake_case") {
60
31
  * With kebab-case the separator prefix is "v-" to stay consistent.
61
32
  */
62
33
  export function viewNameFromProjection(projectionName, strategy) {
63
- switch (strategy) {
64
- case "snake_case": return "v_" + toSnakeCase(projectionName);
65
- case "literal": return "v_" + projectionName;
66
- case "kebab-case": return "v-" + toKebabCase(projectionName);
67
- }
34
+ const sep = strategy === "kebab-case" ? "-" : "_";
35
+ return "v" + sep + applyColumnNamingStrategy(projectionName, strategy);
68
36
  }
69
37
  /** PascalCase entity → camelCase plural for the Drizzle table variable. */
70
38
  export function variableNameFromEntity(entityName) {
71
39
  return pluralize(toCamelCase(entityName.charAt(0).toLowerCase() + entityName.slice(1)));
72
40
  }
41
+ // Re-exported here for callers that import from codegen-ts's naming module.
42
+ export { toKebabCase };
73
43
  //# sourceMappingURL=naming.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,0BAA0B;AAI1B;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC;SACL,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,qDAAqD;AACrD,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,8CAA8C;AAC9C,SAAS,aAAa,CAAC,IAAY,EAAE,QAA8B;IACjE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,SAAS,CAAC,CAAI,OAAO,IAAI,CAAC;QAC/B,KAAK,YAAY,CAAC,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,OAAO,CAAC,GAAG,GAAG,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,WAAiC,YAAY;IAE7C,OAAO,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,WAAiC,YAAY;IAE7C,OAAO,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,QAA8B;IAE9B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7D,KAAK,SAAS,CAAC,CAAI,OAAO,IAAI,GAAG,cAAc,CAAC;QAChD,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAE7E,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,EACT,WAAW,EACX,WAAW,GAEZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,WAAiC,8BAA8B;IAE/D,OAAO,yBAAyB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,WAAiC,8BAA8B;IAE/D,OAAO,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,QAA8B;IAE9B,MAAM,GAAG,GAAG,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,OAAO,GAAG,GAAG,GAAG,GAAG,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACzE,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,4EAA4E;AAC5E,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -11,7 +11,7 @@ export interface ExtractContext {
11
11
  * and extends a writable entity).
12
12
  * @param root The loader's MetaRoot — all top-level objects are
13
13
  * direct children of root (returned by `MetaDataLoader.load()`
14
- * / `FileMetaDataLoader.loadFiles()` as `result.root`).
14
+ * or `MetaDataLoader.fromDirectory()` as `result.root`).
15
15
  * @param ctx Column naming strategy for SQL identifiers.
16
16
  */
17
17
  export declare function extractViewSpec(projection: MetaObject, root: MetaRoot, ctx: ExtractContext): ViewSpec;
@@ -255,7 +255,7 @@ function buildGroupBy(spec) {
255
255
  * and extends a writable entity).
256
256
  * @param root The loader's MetaRoot — all top-level objects are
257
257
  * direct children of root (returned by `MetaDataLoader.load()`
258
- * / `FileMetaDataLoader.loadFiles()` as `result.root`).
258
+ * or `MetaDataLoader.fromDirectory()` as `result.root`).
259
259
  * @param ctx Column naming strategy for SQL identifiers.
260
260
  */
261
261
  export function extractViewSpec(projection, root, ctx) {
@@ -0,0 +1,8 @@
1
+ import { type MetaData } from "@metaobjectsdev/metadata";
2
+ /**
3
+ * Render the full output-parser file for one `template.output` node.
4
+ * Throws if the template isn't found, isn't a template.output, or its
5
+ * @payloadRef doesn't resolve to an object.value.
6
+ */
7
+ export declare function renderOutputParser(root: MetaData, templateName: string): string;
8
+ //# sourceMappingURL=output-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/templates/output-parser.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,QAAQ,EAQd,MAAM,0BAA0B,CAAC;AAyDlC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CA6D/E"}