@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.
Files changed (342) hide show
  1. package/README.md +1 -1
  2. package/dist/column-mapper.d.ts +12 -6
  3. package/dist/column-mapper.d.ts.map +1 -1
  4. package/dist/column-mapper.js +68 -28
  5. package/dist/column-mapper.js.map +1 -1
  6. package/dist/constants.d.ts +8 -0
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +16 -0
  9. package/dist/constants.js.map +1 -1
  10. package/dist/docs-paths.d.ts +58 -0
  11. package/dist/docs-paths.d.ts.map +1 -0
  12. package/dist/docs-paths.js +89 -0
  13. package/dist/docs-paths.js.map +1 -0
  14. package/dist/enum-import.d.ts +14 -0
  15. package/dist/enum-import.d.ts.map +1 -0
  16. package/dist/enum-import.js +35 -0
  17. package/dist/enum-import.js.map +1 -0
  18. package/dist/enum-shared.d.ts +32 -0
  19. package/dist/enum-shared.d.ts.map +1 -0
  20. package/dist/enum-shared.js +83 -0
  21. package/dist/enum-shared.js.map +1 -0
  22. package/dist/generator-registry.d.ts +22 -0
  23. package/dist/generator-registry.d.ts.map +1 -0
  24. package/dist/generator-registry.js +161 -0
  25. package/dist/generator-registry.js.map +1 -0
  26. package/dist/generator.d.ts +6 -0
  27. package/dist/generator.d.ts.map +1 -1
  28. package/dist/generator.js.map +1 -1
  29. package/dist/generators/api-doc-render.d.ts +17 -0
  30. package/dist/generators/api-doc-render.d.ts.map +1 -0
  31. package/dist/generators/api-doc-render.js +431 -0
  32. package/dist/generators/api-doc-render.js.map +1 -0
  33. package/dist/generators/api-docs-file.d.ts +21 -0
  34. package/dist/generators/api-docs-file.d.ts.map +1 -0
  35. package/dist/generators/api-docs-file.js +112 -0
  36. package/dist/generators/api-docs-file.js.map +1 -0
  37. package/dist/generators/api-field-shape.d.ts +39 -0
  38. package/dist/generators/api-field-shape.d.ts.map +1 -0
  39. package/dist/generators/api-field-shape.js +92 -0
  40. package/dist/generators/api-field-shape.js.map +1 -0
  41. package/dist/generators/api-label.d.ts +3 -0
  42. package/dist/generators/api-label.d.ts.map +1 -0
  43. package/dist/generators/api-label.js +8 -0
  44. package/dist/generators/api-label.js.map +1 -0
  45. package/dist/generators/api-model.d.ts +122 -0
  46. package/dist/generators/api-model.d.ts.map +1 -0
  47. package/dist/generators/api-model.js +809 -0
  48. package/dist/generators/api-model.js.map +1 -0
  49. package/dist/generators/docs-data-builder.d.ts +26 -4
  50. package/dist/generators/docs-data-builder.d.ts.map +1 -1
  51. package/dist/generators/docs-data-builder.js +439 -167
  52. package/dist/generators/docs-data-builder.js.map +1 -1
  53. package/dist/generators/docs-data.d.ts +136 -27
  54. package/dist/generators/docs-data.d.ts.map +1 -1
  55. package/dist/generators/docs-data.js +1 -1
  56. package/dist/generators/docs-data.js.map +1 -1
  57. package/dist/generators/docs-file.d.ts +19 -0
  58. package/dist/generators/docs-file.d.ts.map +1 -1
  59. package/dist/generators/docs-file.js +154 -27
  60. package/dist/generators/docs-file.js.map +1 -1
  61. package/dist/generators/entity-file.d.ts.map +1 -1
  62. package/dist/generators/entity-file.js +29 -14
  63. package/dist/generators/entity-file.js.map +1 -1
  64. package/dist/generators/extractor-file.d.ts.map +1 -1
  65. package/dist/generators/extractor-file.js +2 -1
  66. package/dist/generators/extractor-file.js.map +1 -1
  67. package/dist/generators/field-anchor.d.ts +7 -0
  68. package/dist/generators/field-anchor.d.ts.map +1 -0
  69. package/dist/generators/field-anchor.js +23 -0
  70. package/dist/generators/field-anchor.js.map +1 -0
  71. package/dist/generators/index.d.ts +8 -1
  72. package/dist/generators/index.d.ts.map +1 -1
  73. package/dist/generators/index.js +6 -0
  74. package/dist/generators/index.js.map +1 -1
  75. package/dist/generators/mermaid-er.d.ts +14 -0
  76. package/dist/generators/mermaid-er.d.ts.map +1 -1
  77. package/dist/generators/mermaid-er.js +14 -0
  78. package/dist/generators/mermaid-er.js.map +1 -1
  79. package/dist/generators/output-parser-file.d.ts.map +1 -1
  80. package/dist/generators/output-parser-file.js +3 -4
  81. package/dist/generators/output-parser-file.js.map +1 -1
  82. package/dist/generators/output-prompt-file.d.ts.map +1 -1
  83. package/dist/generators/output-prompt-file.js +2 -2
  84. package/dist/generators/output-prompt-file.js.map +1 -1
  85. package/dist/generators/prompt-render-file.d.ts.map +1 -1
  86. package/dist/generators/prompt-render-file.js +3 -4
  87. package/dist/generators/prompt-render-file.js.map +1 -1
  88. package/dist/generators/queries-file.d.ts.map +1 -1
  89. package/dist/generators/queries-file.js +8 -3
  90. package/dist/generators/queries-file.js.map +1 -1
  91. package/dist/generators/render-helper-file.d.ts.map +1 -1
  92. package/dist/generators/render-helper-file.js +2 -2
  93. package/dist/generators/render-helper-file.js.map +1 -1
  94. package/dist/generators/routes-file-hono.d.ts.map +1 -1
  95. package/dist/generators/routes-file-hono.js +5 -1
  96. package/dist/generators/routes-file-hono.js.map +1 -1
  97. package/dist/generators/routes-file.d.ts +3 -0
  98. package/dist/generators/routes-file.d.ts.map +1 -1
  99. package/dist/generators/routes-file.js +6 -1
  100. package/dist/generators/routes-file.js.map +1 -1
  101. package/dist/generators/template-doc-builder.d.ts +19 -0
  102. package/dist/generators/template-doc-builder.d.ts.map +1 -0
  103. package/dist/generators/template-doc-builder.js +220 -0
  104. package/dist/generators/template-doc-builder.js.map +1 -0
  105. package/dist/generators/template-doc-data.d.ts +62 -0
  106. package/dist/generators/template-doc-data.d.ts.map +1 -0
  107. package/dist/generators/template-doc-data.js +16 -0
  108. package/dist/generators/template-doc-data.js.map +1 -0
  109. package/dist/generators/template-payload-tree.d.ts +15 -0
  110. package/dist/generators/template-payload-tree.d.ts.map +1 -0
  111. package/dist/generators/template-payload-tree.js +61 -0
  112. package/dist/generators/template-payload-tree.js.map +1 -0
  113. package/dist/generators/template-source-annotate.d.ts +74 -0
  114. package/dist/generators/template-source-annotate.d.ts.map +1 -0
  115. package/dist/generators/template-source-annotate.js +184 -0
  116. package/dist/generators/template-source-annotate.js.map +1 -0
  117. package/dist/generators/template-source-render.d.ts +24 -0
  118. package/dist/generators/template-source-render.d.ts.map +1 -0
  119. package/dist/generators/template-source-render.js +175 -0
  120. package/dist/generators/template-source-render.js.map +1 -0
  121. package/dist/generators/trace-helper-file.d.ts +9 -0
  122. package/dist/generators/trace-helper-file.d.ts.map +1 -0
  123. package/dist/generators/trace-helper-file.js +196 -0
  124. package/dist/generators/trace-helper-file.js.map +1 -0
  125. package/dist/import-path.d.ts +18 -0
  126. package/dist/import-path.d.ts.map +1 -1
  127. package/dist/import-path.js +21 -0
  128. package/dist/import-path.js.map +1 -1
  129. package/dist/index.d.ts +29 -4
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +28 -2
  132. package/dist/index.js.map +1 -1
  133. package/dist/metaobjects-config.d.ts +101 -2
  134. package/dist/metaobjects-config.d.ts.map +1 -1
  135. package/dist/metaobjects-config.js +46 -0
  136. package/dist/metaobjects-config.js.map +1 -1
  137. package/dist/naming.d.ts +39 -2
  138. package/dist/naming.d.ts.map +1 -1
  139. package/dist/naming.js +52 -3
  140. package/dist/naming.js.map +1 -1
  141. package/dist/payload-codegen.d.ts.map +1 -1
  142. package/dist/payload-codegen.js +14 -6
  143. package/dist/payload-codegen.js.map +1 -1
  144. package/dist/pk-resolver.d.ts.map +1 -1
  145. package/dist/pk-resolver.js +4 -2
  146. package/dist/pk-resolver.js.map +1 -1
  147. package/dist/projection/extract-view-spec.d.ts.map +1 -1
  148. package/dist/projection/extract-view-spec.js +52 -26
  149. package/dist/projection/extract-view-spec.js.map +1 -1
  150. package/dist/relation-resolver.d.ts +16 -0
  151. package/dist/relation-resolver.d.ts.map +1 -1
  152. package/dist/relation-resolver.js +82 -1
  153. package/dist/relation-resolver.js.map +1 -1
  154. package/dist/render-context.d.ts +25 -2
  155. package/dist/render-context.d.ts.map +1 -1
  156. package/dist/render-context.js +7 -0
  157. package/dist/render-context.js.map +1 -1
  158. package/dist/render-engine/embedded-templates.generated.d.ts +2 -0
  159. package/dist/render-engine/embedded-templates.generated.d.ts.map +1 -0
  160. package/dist/render-engine/embedded-templates.generated.js +15 -0
  161. package/dist/render-engine/embedded-templates.generated.js.map +1 -0
  162. package/dist/render-engine/framework-provider.d.ts.map +1 -1
  163. package/dist/render-engine/framework-provider.js +26 -13
  164. package/dist/render-engine/framework-provider.js.map +1 -1
  165. package/dist/runner.d.ts.map +1 -1
  166. package/dist/runner.js +20 -0
  167. package/dist/runner.js.map +1 -1
  168. package/dist/templates/docs-file.d.ts +2 -6
  169. package/dist/templates/docs-file.d.ts.map +1 -1
  170. package/dist/templates/docs-file.js +2 -5
  171. package/dist/templates/docs-file.js.map +1 -1
  172. package/dist/templates/drizzle-schema.d.ts.map +1 -1
  173. package/dist/templates/drizzle-schema.js +72 -23
  174. package/dist/templates/drizzle-schema.js.map +1 -1
  175. package/dist/templates/entity-constants.d.ts +7 -0
  176. package/dist/templates/entity-constants.d.ts.map +1 -1
  177. package/dist/templates/entity-constants.js +3 -3
  178. package/dist/templates/entity-constants.js.map +1 -1
  179. package/dist/templates/entity-file.d.ts.map +1 -1
  180. package/dist/templates/entity-file.js +16 -5
  181. package/dist/templates/entity-file.js.map +1 -1
  182. package/dist/templates/enums-file.d.ts +11 -0
  183. package/dist/templates/enums-file.d.ts.map +1 -0
  184. package/dist/templates/enums-file.js +44 -0
  185. package/dist/templates/enums-file.js.map +1 -0
  186. package/dist/templates/extract-delegate-emitter.d.ts.map +1 -1
  187. package/dist/templates/extract-delegate-emitter.js +6 -8
  188. package/dist/templates/extract-delegate-emitter.js.map +1 -1
  189. package/dist/templates/extractor.d.ts.map +1 -1
  190. package/dist/templates/extractor.js +58 -41
  191. package/dist/templates/extractor.js.map +1 -1
  192. package/dist/templates/field-meta.d.ts.map +1 -1
  193. package/dist/templates/field-meta.js +2 -6
  194. package/dist/templates/field-meta.js.map +1 -1
  195. package/dist/templates/filter-allowlist.d.ts +7 -2
  196. package/dist/templates/filter-allowlist.d.ts.map +1 -1
  197. package/dist/templates/filter-allowlist.js +18 -10
  198. package/dist/templates/filter-allowlist.js.map +1 -1
  199. package/dist/templates/filter-shared.js +2 -2
  200. package/dist/templates/filter-shared.js.map +1 -1
  201. package/dist/templates/filter-type.d.ts +7 -1
  202. package/dist/templates/filter-type.d.ts.map +1 -1
  203. package/dist/templates/filter-type.js +10 -6
  204. package/dist/templates/filter-type.js.map +1 -1
  205. package/dist/templates/find-templates.d.ts +4 -0
  206. package/dist/templates/find-templates.d.ts.map +1 -0
  207. package/dist/templates/find-templates.js +15 -0
  208. package/dist/templates/find-templates.js.map +1 -0
  209. package/dist/templates/fr010-field-mapping.d.ts +2 -0
  210. package/dist/templates/fr010-field-mapping.d.ts.map +1 -1
  211. package/dist/templates/fr010-field-mapping.js +15 -11
  212. package/dist/templates/fr010-field-mapping.js.map +1 -1
  213. package/dist/templates/inferred-types.d.ts +44 -7
  214. package/dist/templates/inferred-types.d.ts.map +1 -1
  215. package/dist/templates/inferred-types.js +121 -19
  216. package/dist/templates/inferred-types.js.map +1 -1
  217. package/dist/templates/mermaid-er.d.ts +35 -2
  218. package/dist/templates/mermaid-er.d.ts.map +1 -1
  219. package/dist/templates/mermaid-er.js +174 -7
  220. package/dist/templates/mermaid-er.js.map +1 -1
  221. package/dist/templates/output-format-spec-emitter.js +1 -1
  222. package/dist/templates/output-format-spec-emitter.js.map +1 -1
  223. package/dist/templates/output-parser.d.ts.map +1 -1
  224. package/dist/templates/output-parser.js +31 -80
  225. package/dist/templates/output-parser.js.map +1 -1
  226. package/dist/templates/output-prompt.d.ts.map +1 -1
  227. package/dist/templates/output-prompt.js +2 -2
  228. package/dist/templates/output-prompt.js.map +1 -1
  229. package/dist/templates/queries-file.d.ts.map +1 -1
  230. package/dist/templates/queries-file.js +113 -5
  231. package/dist/templates/queries-file.js.map +1 -1
  232. package/dist/templates/queries.d.ts +7 -2
  233. package/dist/templates/queries.d.ts.map +1 -1
  234. package/dist/templates/queries.js +15 -15
  235. package/dist/templates/queries.js.map +1 -1
  236. package/dist/templates/relations-block.d.ts.map +1 -1
  237. package/dist/templates/relations-block.js +12 -3
  238. package/dist/templates/relations-block.js.map +1 -1
  239. package/dist/templates/render-helper.d.ts.map +1 -1
  240. package/dist/templates/render-helper.js +5 -5
  241. package/dist/templates/render-helper.js.map +1 -1
  242. package/dist/templates/routes-file-hono.d.ts.map +1 -1
  243. package/dist/templates/routes-file-hono.js +1 -2
  244. package/dist/templates/routes-file-hono.js.map +1 -1
  245. package/dist/templates/routes-file.d.ts.map +1 -1
  246. package/dist/templates/routes-file.js +184 -7
  247. package/dist/templates/routes-file.js.map +1 -1
  248. package/dist/templates/tph-discriminator.d.ts +56 -0
  249. package/dist/templates/tph-discriminator.d.ts.map +1 -0
  250. package/dist/templates/tph-discriminator.js +180 -0
  251. package/dist/templates/tph-discriminator.js.map +1 -0
  252. package/dist/templates/value-object-file.d.ts +2 -1
  253. package/dist/templates/value-object-file.d.ts.map +1 -1
  254. package/dist/templates/value-object-file.js +33 -5
  255. package/dist/templates/value-object-file.js.map +1 -1
  256. package/dist/templates/zod-validators.d.ts +65 -2
  257. package/dist/templates/zod-validators.d.ts.map +1 -1
  258. package/dist/templates/zod-validators.js +202 -22
  259. package/dist/templates/zod-validators.js.map +1 -1
  260. package/package.json +103 -34
  261. package/src/column-mapper.ts +79 -32
  262. package/src/constants.ts +18 -0
  263. package/src/docs-paths.ts +128 -0
  264. package/src/enum-import.ts +43 -0
  265. package/src/enum-shared.ts +95 -0
  266. package/src/generator-registry.ts +204 -0
  267. package/src/generator.ts +6 -0
  268. package/src/generators/api-doc-render.ts +572 -0
  269. package/src/generators/api-docs-file.ts +146 -0
  270. package/src/generators/api-field-shape.ts +114 -0
  271. package/src/generators/api-label.ts +7 -0
  272. package/src/generators/api-model.ts +1067 -0
  273. package/src/generators/docs-data-builder.ts +483 -189
  274. package/src/generators/docs-data.ts +139 -28
  275. package/src/generators/docs-file.ts +205 -39
  276. package/src/generators/entity-file.ts +31 -15
  277. package/src/generators/extractor-file.ts +2 -1
  278. package/src/generators/field-anchor.ts +24 -0
  279. package/src/generators/index.ts +8 -1
  280. package/src/generators/mermaid-er.ts +14 -0
  281. package/src/generators/output-parser-file.ts +3 -4
  282. package/src/generators/output-prompt-file.ts +2 -1
  283. package/src/generators/prompt-render-file.ts +3 -4
  284. package/src/generators/queries-file.ts +9 -3
  285. package/src/generators/render-helper-file.ts +2 -1
  286. package/src/generators/routes-file-hono.ts +5 -1
  287. package/src/generators/routes-file.ts +7 -1
  288. package/src/generators/template-doc-builder.ts +306 -0
  289. package/src/generators/template-doc-data.ts +85 -0
  290. package/src/generators/template-payload-tree.ts +71 -0
  291. package/src/generators/template-source-annotate.ts +290 -0
  292. package/src/generators/template-source-render.ts +203 -0
  293. package/src/generators/trace-helper-file.ts +301 -0
  294. package/src/import-path.ts +28 -0
  295. package/src/index.ts +55 -4
  296. package/src/metaobjects-config.ts +146 -2
  297. package/src/naming.ts +73 -3
  298. package/src/payload-codegen.ts +16 -5
  299. package/src/pk-resolver.ts +4 -2
  300. package/src/projection/extract-view-spec.ts +50 -31
  301. package/src/relation-resolver.ts +103 -1
  302. package/src/render-context.ts +32 -2
  303. package/src/render-engine/embedded-templates.generated.ts +14 -0
  304. package/src/render-engine/framework-provider.ts +25 -11
  305. package/src/runner.ts +24 -0
  306. package/src/templates/docs-file.ts +2 -9
  307. package/src/templates/drizzle-schema.ts +80 -28
  308. package/src/templates/entity-constants.ts +3 -3
  309. package/src/templates/entity-file.ts +16 -5
  310. package/src/templates/enums-file.ts +50 -0
  311. package/src/templates/extract-delegate-emitter.ts +6 -7
  312. package/src/templates/extractor.ts +70 -40
  313. package/src/templates/field-meta.ts +1 -7
  314. package/src/templates/filter-allowlist.ts +18 -11
  315. package/src/templates/filter-shared.ts +2 -2
  316. package/src/templates/filter-type.ts +9 -7
  317. package/src/templates/find-templates.ts +15 -0
  318. package/src/templates/fr010-field-mapping.ts +15 -13
  319. package/src/templates/inferred-types.ts +122 -21
  320. package/src/templates/mermaid-er.ts +176 -8
  321. package/src/templates/output-format-spec-emitter.ts +1 -1
  322. package/src/templates/output-parser.ts +31 -80
  323. package/src/templates/output-prompt.ts +2 -1
  324. package/src/templates/queries-file.ts +133 -4
  325. package/src/templates/queries.ts +21 -15
  326. package/src/templates/relations-block.ts +19 -3
  327. package/src/templates/render-helper.ts +5 -4
  328. package/src/templates/routes-file-hono.ts +1 -2
  329. package/src/templates/routes-file.ts +234 -7
  330. package/src/templates/tph-discriminator.ts +232 -0
  331. package/src/templates/value-object-file.ts +39 -5
  332. package/src/templates/zod-validators.ts +225 -21
  333. package/templates/api/agent-api.md.mustache +30 -0
  334. package/templates/api/entity-api.md.mustache +69 -0
  335. package/templates/api/index.md.mustache +21 -0
  336. package/templates/docs/entity-page.md.mustache +33 -21
  337. package/templates/docs/template-page.md.mustache +56 -0
  338. package/dist/templates/extract-schema-emitter.d.ts +0 -8
  339. package/dist/templates/extract-schema-emitter.d.ts.map +0 -1
  340. package/dist/templates/extract-schema-emitter.js +0 -81
  341. package/dist/templates/extract-schema-emitter.js.map +0 -1
  342. package/src/templates/extract-schema-emitter.ts +0 -111
@@ -7,6 +7,24 @@ export declare function entityOutputPath(layout: OutputLayout, pkg: string | und
7
7
  /** Module specifier to import `toEntity` (in `toPkg`) from a file in `fromPkg`.
8
8
  * Flat → always "./<toEntity>". */
9
9
  export declare function crossEntitySpecifier(layout: OutputLayout, fromPkg: string | undefined, toPkg: string | undefined, toEntity: string, extStyle: ExtStyle): string;
10
+ /**
11
+ * Module specifier to import a value-object's emitted module (`<VO>.ts`) from a
12
+ * file that lives in `fromPkg`. Value objects are emitted by the entity-file
13
+ * generator into the SAME target as entities, so this is the same same-target,
14
+ * package- + extStyle-aware resolution that FK references use.
15
+ *
16
+ * This is the SINGLE source of truth shared by the three places that reference a
17
+ * VO — the field's TS type (inferred-types), its runtime Zod schema
18
+ * (zod-validators), and its Drizzle `.$type<>()` (drizzle-schema). They MUST
19
+ * resolve a given VO to the identical module or they would import two distinct
20
+ * symbols; routing all three through this function makes divergence impossible.
21
+ *
22
+ * `voPkg` is looked up from `packageOf` (which includes `object.value` nodes —
23
+ * `root.objects()` returns every `TYPE_OBJECT` child). An unknown VO falls back
24
+ * to `fromPkg`, yielding a same-dir `./<VO>` specifier (correct for flat layout
25
+ * and for a same-package reference).
26
+ */
27
+ export declare function valueObjectModuleSpecifier(voName: string, packageOf: ReadonlyMap<string, string | undefined>, fromPkg: string | undefined, layout: OutputLayout, extStyle: ExtStyle): string;
10
28
  /** Barrel (at outDir root) re-export specifier for an entity.
11
29
  * Equivalent to crossEntitySpecifier with fromPkg=undefined (barrel is always at root). */
12
30
  export declare function barrelEntrySpecifier(layout: OutputLayout, pkg: string | undefined, entity: string, extStyle: ExtStyle): string;
@@ -1 +1 @@
1
- {"version":3,"file":"import-path.d.ts","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9C,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR;AAWD;oCACoC;AACpC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAIR;AAED;4FAC4F;AAC5F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;;;oBAIoB;AACpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAED;sCACsC;AACtC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;mEAC+D;IAC/D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmBD;;yEAEyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR;AAED;8CAC8C;AAC9C,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;sCAEsC;AACtC,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR"}
1
+ {"version":3,"file":"import-path.d.ts","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9C,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR;AAWD;oCACoC;AACpC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAIR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAClD,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAGR;AAED;4FAC4F;AAC5F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;;;oBAIoB;AACpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAED;sCACsC;AACtC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;mEAC+D;IAC/D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmBD;;yEAEyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR;AAED;8CAC8C;AAC9C,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;sCAEsC;AACtC,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR"}
@@ -36,6 +36,27 @@ export function crossEntitySpecifier(layout, fromPkg, toPkg, toEntity, extStyle)
36
36
  const prefix = relativeDirPrefix(packageToPath(fromPkg), packageToPath(toPkg));
37
37
  return withExt(`${prefix}${toEntity}`, extStyle);
38
38
  }
39
+ /**
40
+ * Module specifier to import a value-object's emitted module (`<VO>.ts`) from a
41
+ * file that lives in `fromPkg`. Value objects are emitted by the entity-file
42
+ * generator into the SAME target as entities, so this is the same same-target,
43
+ * package- + extStyle-aware resolution that FK references use.
44
+ *
45
+ * This is the SINGLE source of truth shared by the three places that reference a
46
+ * VO — the field's TS type (inferred-types), its runtime Zod schema
47
+ * (zod-validators), and its Drizzle `.$type<>()` (drizzle-schema). They MUST
48
+ * resolve a given VO to the identical module or they would import two distinct
49
+ * symbols; routing all three through this function makes divergence impossible.
50
+ *
51
+ * `voPkg` is looked up from `packageOf` (which includes `object.value` nodes —
52
+ * `root.objects()` returns every `TYPE_OBJECT` child). An unknown VO falls back
53
+ * to `fromPkg`, yielding a same-dir `./<VO>` specifier (correct for flat layout
54
+ * and for a same-package reference).
55
+ */
56
+ export function valueObjectModuleSpecifier(voName, packageOf, fromPkg, layout, extStyle) {
57
+ const voPkg = packageOf.has(voName) ? packageOf.get(voName) : fromPkg;
58
+ return crossEntitySpecifier(layout, fromPkg, voPkg, voName, extStyle);
59
+ }
39
60
  /** Barrel (at outDir root) re-export specifier for an entity.
40
61
  * Equivalent to crossEntitySpecifier with fromPkg=undefined (barrel is always at root). */
41
62
  export function barrelEntrySpecifier(layout, pkg, entity, extStyle) {
@@ -1 +1 @@
1
- {"version":3,"file":"import-path.js","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-path.js","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,11 @@ export { runGen } from "./runner.js";
2
2
  export type { RunGenOpts, RunGenResult } from "./runner.js";
3
3
  export type { Generator, GenContext, EmittedFile, GeneratorFactory } from "./generator.js";
4
4
  export { perEntity, oncePerRun } from "./generator.js";
5
- export type { MetaobjectsGenConfig, NormalizedMetaobjectsGenConfig, ResolvedGenConfig, Dialect, ExtStyle, ColumnNamingStrategy, MetaDataTypeProvider } from "./metaobjects-config.js";
6
- export { defineConfig, normalizeConfig } from "./metaobjects-config.js";
5
+ export { generatorRegistry, listGenerators, getGenerator, } from "./generator-registry.js";
6
+ export type { GeneratorRegistryEntry, GeneratorTier } from "./generator-registry.js";
7
+ export type { MetaobjectsGenConfig, NormalizedMetaobjectsGenConfig, ResolvedGenConfig, Dialect, ExtStyle, ColumnNamingStrategy, MetaDataTypeProvider, GeneratorSpec, DocsConfig, ResolvedDocsConfig, DocsSurface, ApiSurface } from "./metaobjects-config.js";
8
+ export { defineConfig, normalizeConfig, resolveGenerators, resolveDocsConfig } from "./metaobjects-config.js";
9
+ export { apiLabel } from "./generators/api-label.js";
7
10
  export type { ColumnSpec, DefaultExpr } from "./column-mapper.js";
8
11
  export { mapColumnType } from "./column-mapper.js";
9
12
  export type { PkInfo } from "./pk-resolver.js";
@@ -15,13 +18,33 @@ export { makeRenderContext } from "./render-context.js";
15
18
  export type { WriteStatus, WriteResult, MergeStrategy, BaselineMode, DecideAndWriteOpts, } from "./overwrite-policy.js";
16
19
  export { decideAndWrite, GitMissingError } from "./overwrite-policy.js";
17
20
  export { CodegenError } from "./errors.js";
18
- export { GENERATED_HEADER, EXTRA_SUFFIX, DEFAULT_OUT_DIR } from "./constants.js";
21
+ export { GENERATED_HEADER, EXTRA_SUFFIX, DEFAULT_OUT_DIR, CODEGEN_ATTR_EMIT_TANSTACK, CODEGEN_ATTR_EMIT_GRID, CODEGEN_ATTR_EMIT_FORM, CODEGEN_ATTR_EMIT_ROUTES } from "./constants.js";
19
22
  export { formatTs } from "./format.js";
20
23
  export { pluralize, columnNameFromField, tableNameFromEntity, viewNameFromProjection } from "./naming.js";
21
24
  export { packageToPath, entityOutputPath, crossEntitySpecifier, barrelEntrySpecifier, relativeModuleSpecifier, entityModuleSpecifier, siblingSpecifier, barrelModuleSpecifier } from "./import-path.js";
22
25
  export type { OutputLayout, ResolvedTarget } from "./import-path.js";
26
+ export { docPageOutputPath, docPageHref, docPageNode, effectivePackage, assertNoDuplicateDocPaths, } from "./docs-paths.js";
27
+ export type { DocPageNode, DocPagePlacement } from "./docs-paths.js";
23
28
  export { isProjection, isWriteThrough } from "./projection/projection-detector.js";
24
29
  export { isAbstract, emitsInstanceArtifacts, emitsWriteArtifacts } from "./instance-artifacts.js";
30
+ export { isTphDiscriminatorBase, tphConcreteSubtypes, collectTphSubtypeFields, tphPlan, tphRouteSegment } from "./templates/tph-discriminator.js";
31
+ export type { TphPlan, TphSubtypePlan } from "./templates/tph-discriminator.js";
32
+ export { isTphSubtype, tphDiscriminatorPin } from "./templates/zod-validators.js";
33
+ export { renderEntityFile } from "./templates/entity-file.js";
34
+ export type { RenderEntityFileOpts } from "./templates/entity-file.js";
35
+ export { renderZodValidators } from "./templates/zod-validators.js";
36
+ export { renderDrizzleSchema } from "./templates/drizzle-schema.js";
37
+ export { renderInferredTypes, renderEnumTypeAliases, renderValueObjectInterface, enumUnionAliasName, enumUnionString, } from "./templates/inferred-types.js";
38
+ export { renderBarrel } from "./templates/barrel.js";
39
+ export type { BarrelEntry } from "./templates/barrel.js";
40
+ export { renderFilterType } from "./templates/filter-type.js";
41
+ export { renderFilterAllowlist, renderSortAllowlist } from "./templates/filter-allowlist.js";
42
+ export { renderEntityConstants, resourcePath } from "./templates/entity-constants.js";
43
+ export { renderQueriesFile } from "./templates/queries-file.js";
44
+ export { renderRoutesFile } from "./templates/routes-file.js";
45
+ export { renderValueObjectFile } from "./templates/value-object-file.js";
46
+ export { renderProjectionDecl } from "./templates/projection-decl.js";
47
+ export type { ProjectionDeclOpts } from "./templates/projection-decl.js";
25
48
  export { extractViewSpec } from "./projection/extract-view-spec.js";
26
49
  export type { ExtractContext } from "./projection/extract-view-spec.js";
27
50
  export { emitViewDdl } from "./projection/view-ddl-emit.js";
@@ -30,6 +53,8 @@ export type { JoinNode, JoinTree, SelectColumn, SelectSpec, ViewSpec } from "./p
30
53
  export { generatePayloadInterfaces, generatePayloadInterfacesBatch, generateRenderHandle } from "./payload-codegen.js";
31
54
  export { templateGenerator, type TemplateGeneratorOpts, type TemplateWalkResult, type TemplateFormat, } from "./generators/template-generator.js";
32
55
  export { FileSystemProvider, ProviderChain, frameworkTemplatesProvider, projectProvider, } from "./render-engine/framework-provider.js";
33
- export type { EntityDocData, StorageFieldDoc, IdentityDoc, RelationshipDoc, UsedByDoc, GeneratedFileDoc, } from "./generators/docs-data.js";
56
+ export type { EntityDocData, StorageFieldDoc, IdentityDoc, RelationshipDoc, UsedByDoc, ConstraintRow, } from "./generators/docs-data.js";
34
57
  export { buildEntityDocData } from "./generators/docs-data-builder.js";
58
+ export type { TemplateDocData, TemplateOutputPart } from "./generators/template-doc-data.js";
59
+ export { buildTemplateDocData } from "./generators/template-doc-builder.js";
35
60
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,19 +4,44 @@
4
4
  // See docs/superpowers/specs/2026-05-12-pluggable-generators-design.md.
5
5
  export { runGen } from "./runner.js";
6
6
  export { perEntity, oncePerRun } from "./generator.js";
7
- export { defineConfig, normalizeConfig } from "./metaobjects-config.js";
7
+ // ADR-0021 D3 stable-name generator registry + discoverability surface.
8
+ export { generatorRegistry, listGenerators, getGenerator, } from "./generator-registry.js";
9
+ export { defineConfig, normalizeConfig, resolveGenerators, resolveDocsConfig } from "./metaobjects-config.js";
10
+ export { apiLabel } from "./generators/api-label.js";
8
11
  export { mapColumnType } from "./column-mapper.js";
9
12
  export { buildPkMap } from "./pk-resolver.js";
10
13
  export { buildRelationMap } from "./relation-resolver.js";
11
14
  export { makeRenderContext } from "./render-context.js";
12
15
  export { decideAndWrite, GitMissingError } from "./overwrite-policy.js";
13
16
  export { CodegenError } from "./errors.js";
14
- export { GENERATED_HEADER, EXTRA_SUFFIX, DEFAULT_OUT_DIR } from "./constants.js";
17
+ export { GENERATED_HEADER, EXTRA_SUFFIX, DEFAULT_OUT_DIR, CODEGEN_ATTR_EMIT_TANSTACK, CODEGEN_ATTR_EMIT_GRID, CODEGEN_ATTR_EMIT_FORM, CODEGEN_ATTR_EMIT_ROUTES } from "./constants.js";
15
18
  export { formatTs } from "./format.js";
16
19
  export { pluralize, columnNameFromField, tableNameFromEntity, viewNameFromProjection } from "./naming.js";
17
20
  export { packageToPath, entityOutputPath, crossEntitySpecifier, barrelEntrySpecifier, relativeModuleSpecifier, entityModuleSpecifier, siblingSpecifier, barrelModuleSpecifier } from "./import-path.js";
21
+ export { docPageOutputPath, docPageHref, docPageNode, effectivePackage, assertNoDuplicateDocPaths, } from "./docs-paths.js";
18
22
  export { isProjection, isWriteThrough } from "./projection/projection-detector.js";
19
23
  export { isAbstract, emitsInstanceArtifacts, emitsWriteArtifacts } from "./instance-artifacts.js";
24
+ // FR-017 TPH helpers — used by the per-framework codegen packages (tanstack,
25
+ // react) to dispatch polymorphic/per-subtype emission and skip subtype files.
26
+ export { isTphDiscriminatorBase, tphConcreteSubtypes, collectTphSubtypeFields, tphPlan, tphRouteSegment } from "./templates/tph-discriminator.js";
27
+ export { isTphSubtype, tphDiscriminatorPin } from "./templates/zod-validators.js";
28
+ // Built-in template render functions — the composition seam for adopters who
29
+ // want to call a built-in template, then post-process / append to its output
30
+ // from their own Generator (added to `generators: [...]`) WITHOUT forking the
31
+ // template. Mirrors the `renderZodValidators` export. Each is also reachable via
32
+ // a dedicated subpath (e.g. `@metaobjectsdev/codegen-ts/templates/entity-file`).
33
+ export { renderEntityFile } from "./templates/entity-file.js";
34
+ export { renderZodValidators } from "./templates/zod-validators.js";
35
+ export { renderDrizzleSchema } from "./templates/drizzle-schema.js";
36
+ export { renderInferredTypes, renderEnumTypeAliases, renderValueObjectInterface, enumUnionAliasName, enumUnionString, } from "./templates/inferred-types.js";
37
+ export { renderBarrel } from "./templates/barrel.js";
38
+ export { renderFilterType } from "./templates/filter-type.js";
39
+ export { renderFilterAllowlist, renderSortAllowlist } from "./templates/filter-allowlist.js";
40
+ export { renderEntityConstants, resourcePath } from "./templates/entity-constants.js";
41
+ export { renderQueriesFile } from "./templates/queries-file.js";
42
+ export { renderRoutesFile } from "./templates/routes-file.js";
43
+ export { renderValueObjectFile } from "./templates/value-object-file.js";
44
+ export { renderProjectionDecl } from "./templates/projection-decl.js";
20
45
  export { extractViewSpec } from "./projection/extract-view-spec.js";
21
46
  export { emitViewDdl } from "./projection/view-ddl-emit.js";
22
47
  // Prompt construction (FR-004): typed payload + render-handle codegen.
@@ -27,4 +52,5 @@ export { generatePayloadInterfaces, generatePayloadInterfacesBatch, generateRend
27
52
  export { templateGenerator, } from "./generators/template-generator.js";
28
53
  export { FileSystemProvider, ProviderChain, frameworkTemplatesProvider, projectProvider, } from "./render-engine/framework-provider.js";
29
54
  export { buildEntityDocData } from "./generators/docs-data-builder.js";
55
+ export { buildTemplateDocData } from "./generators/template-doc-builder.js";
30
56
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,yCAAyC;AACzC,wEAAwE;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASxD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1G,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGxM,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,uEAAuE;AACvE,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEvH,6EAA6E;AAC7E,sEAAsE;AACtE,mCAAmC;AACnC,OAAO,EACL,iBAAiB,GAIlB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAS/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,yCAAyC;AACzC,wEAAwE;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEvD,0EAA0E;AAC1E,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASxD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEvL,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1G,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAExM,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClG,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAElJ,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAElF,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,uEAAuE;AACvE,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEvH,6EAA6E;AAC7E,sEAAsE;AACtE,mCAAmC;AACnC,OAAO,EACL,iBAAiB,GAIlB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAS/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC"}
@@ -2,6 +2,17 @@ import { type ColumnNamingStrategy, type MetaDataTypeProvider } from "@metaobjec
2
2
  import type { Generator } from "./generator.js";
3
3
  import type { ExtStyle } from "./render-context.js";
4
4
  import type { OutputLayout, ResolvedTarget } from "./import-path.js";
5
+ /**
6
+ * A config `generators` entry. Either a typed generator (the primary, fully
7
+ * typed form — `entityFile()`) OR a STABLE-NAME STRING resolved via the
8
+ * {@link generatorRegistry} (e.g. `"entity"`). The string form is the
9
+ * cross-port-consistent selection mechanism (matches C#/Python
10
+ * `--generators entity,routes`); it always uses the generator's DEFAULT
11
+ * options. Adopters needing options use the factory form.
12
+ *
13
+ * ADR-0021 #1 (TS parity).
14
+ */
15
+ export type GeneratorSpec = Generator | string;
5
16
  export type Dialect = "sqlite" | "postgres";
6
17
  /** Re-exported from metadata so codegen-ts consumers see one canonical type. */
7
18
  export type { ColumnNamingStrategy, MetaDataTypeProvider } from "@metaobjectsdev/metadata";
@@ -25,11 +36,54 @@ export interface ResolvedGenConfig {
25
36
  dialect: Dialect;
26
37
  /** "flat" (default) — all files in outDir; "package" — files placed in a sub-path derived from each entity's metadata package. */
27
38
  outputLayout?: OutputLayout;
39
+ /** Whether the OPT-IN Hono routes generator (routesFileHono) is active in the
40
+ * run — aggregated by the runner from the suite's `emitsHonoRoutes` markers.
41
+ * api-docs reads this to AUTO-DETECT whether to document the Hono CRUD surface
42
+ * (it otherwise mirrors the default Fastify-only suite). Undefined ⇒ false. */
43
+ includeHonoRoutes?: boolean;
44
+ /**
45
+ * FR-019 / ADR-0026: the module specifier from which an externally-PROVIDED
46
+ * shared enum (`@provided: true` on an abstract package-level `field.enum`) is
47
+ * imported. metaobjects emits NO type for a provided enum — consuming entity
48
+ * files `import { <EnumName> } from "<providedEnumModule>"`. The per-port
49
+ * namespace/module is codegen config, never a metadata attr (ADR-0001). A model
50
+ * that references a provided enum without this set is a codegen-time error.
51
+ */
52
+ providedEnumModule?: string;
28
53
  }
29
54
  export interface MetaobjectsGenConfig extends ResolvedGenConfig {
30
- generators: Generator[];
55
+ /**
56
+ * Generators to run. Each entry is either a typed generator factory result
57
+ * (`entityFile()`) or a stable-name string (`"entity"`) resolved via the
58
+ * registry. Mixed arrays are allowed (`["entity", routesFile()]`). String
59
+ * entries use the generator's default options. ADR-0021 #1.
60
+ */
61
+ generators: GeneratorSpec[];
31
62
  /** How field names map to DB column names when @dbColumn is omitted. Defaults to "snake_case". */
32
63
  columnNamingStrategy?: ColumnNamingStrategy;
64
+ /**
65
+ * Auto-pluralize the Drizzle collection (table) variable name derived from
66
+ * each entity (`AgentConfig` → `agentConfigs`). Defaults to `true`. Set
67
+ * `false` to keep collection vars singular. Per-entity exceptions go in
68
+ * {@link collectionNameOverrides}. Naming is a per-port codegen concern
69
+ * (ADR-0001), so this is config — not a metadata attribute — and carries no
70
+ * cross-port conformance cost.
71
+ */
72
+ pluralizeCollections?: boolean;
73
+ /**
74
+ * Per-entity exact collection-var-name overrides, keyed by the bare entity
75
+ * name. Wins over {@link pluralizeCollections} — the escape hatch for the
76
+ * handful of tables a global rule gets wrong
77
+ * (e.g. `{ AuditLog: "auditLog", LlmTierConfig: "llmTierConfig" }`).
78
+ */
79
+ collectionNameOverrides?: Record<string, string>;
80
+ /**
81
+ * Drizzle timestamp column mode. "string" (default) types timestamp columns as
82
+ * ISO-8601 strings (matches the generated Zod + cross-port wire contract); "date"
83
+ * uses drizzle's native JS-Date mode (for consumers whose hand-written code works
84
+ * with `Date`).
85
+ */
86
+ timestampMode?: "date" | "string";
33
87
  /** Path prefix applied to generated route registrations + hook fetch URLs. Defaults to "". */
34
88
  apiPrefix?: string;
35
89
  /**
@@ -41,6 +95,8 @@ export interface MetaobjectsGenConfig extends ResolvedGenConfig {
41
95
  * governs the shape, mirroring the cross-port `emitAbstractShapes` option.
42
96
  */
43
97
  emitAbstractShapes?: boolean;
98
+ /** Docs-output config consumed by the `meta docs` door. See {@link DocsConfig}. */
99
+ docs?: DocsConfig;
44
100
  /** Named output destinations. Generators reference one via `target`. */
45
101
  targets?: Record<string, TargetConfig>;
46
102
  /** importBase for the default target (top-level outDir). */
@@ -57,19 +113,62 @@ export interface MetaobjectsGenConfig extends ResolvedGenConfig {
57
113
  * `targets` is Omitted from the base so it can narrow from the user-facing
58
114
  * TargetConfig to the fully-resolved ResolvedTarget (incompatible under
59
115
  * exactOptionalPropertyTypes otherwise). */
60
- export interface NormalizedMetaobjectsGenConfig extends Omit<MetaobjectsGenConfig, "targets"> {
116
+ export interface NormalizedMetaobjectsGenConfig extends Omit<MetaobjectsGenConfig, "targets" | "generators"> {
117
+ /** Fully resolved — every string spec has been mapped to its factory result. */
118
+ generators: Generator[];
61
119
  columnNamingStrategy: ColumnNamingStrategy;
120
+ pluralizeCollections: boolean;
121
+ collectionNameOverrides: Record<string, string>;
122
+ timestampMode: "date" | "string";
62
123
  apiPrefix: string;
63
124
  emitAbstractShapes: boolean;
64
125
  outputLayout: OutputLayout;
65
126
  targets: Record<string, ResolvedTarget>;
66
127
  }
128
+ export type DocsSurface = "model" | "api";
129
+ export interface ApiSurface {
130
+ lang: string;
131
+ subDir: string;
132
+ baseUrl?: string;
133
+ }
134
+ /** The single docs-output config: where ALL doc surfaces go, how pages are laid
135
+ * out, and which surfaces to emit. Read by the `meta docs` door (and, when the
136
+ * api surface fans out, by each port's docs command). */
137
+ export interface DocsConfig {
138
+ outDir?: string;
139
+ layout?: OutputLayout;
140
+ baseUrl?: string;
141
+ surfaces?: DocsSurface[];
142
+ apiSurfaces?: ApiSurface[];
143
+ }
144
+ export interface ResolvedDocsConfig {
145
+ outDir: string;
146
+ layout: OutputLayout;
147
+ baseUrl: string;
148
+ surfaces: DocsSurface[];
149
+ apiSurfaces: ApiSurface[];
150
+ }
151
+ /** Merge the config `docs:` block with CLI overrides over documented defaults.
152
+ * `fallbackLayout` is the project's `outputLayout` so docs default to the same
153
+ * page placement as codegen when `docs.layout` is unset. */
154
+ export declare function resolveDocsConfig(block: DocsConfig | undefined, cli: Partial<ResolvedDocsConfig>, fallbackLayout: OutputLayout): ResolvedDocsConfig;
67
155
  /** Identity passthrough; exists for IDE type-inference + autocomplete. */
68
156
  export declare function defineConfig(config: MetaobjectsGenConfig): MetaobjectsGenConfig;
69
157
  /** Synthesize the implicit "default" target from top-level fields and resolve
70
158
  * each named target (outputLayout + dbImport fall back to top-level;
71
159
  * importBase does NOT inherit — it is a per-target identity). */
72
160
  export declare function resolveTargets(config: MetaobjectsGenConfig): Record<string, ResolvedTarget>;
161
+ /**
162
+ * Materialize the config `generators` array: pass typed generators through
163
+ * untouched and resolve each stable-name string via the {@link generatorRegistry}
164
+ * to its factory result (default options). ADR-0021 #1.
165
+ *
166
+ * Errors:
167
+ * - a NEUTRAL name (`docs`, `mermaid-er`) is owned by `meta docs` (ADR-0021 D1)
168
+ * and is not selectable in the gen suite.
169
+ * - an UNKNOWN name throws listing the available NATIVE names.
170
+ */
171
+ export declare function resolveGenerators(specs: readonly GeneratorSpec[]): Generator[];
73
172
  /** Apply defaults to a MetaobjectsGenConfig, returning a NormalizedMetaobjectsGenConfig. */
74
173
  export declare function normalizeConfig(config: MetaobjectsGenConfig): NormalizedMetaobjectsGenConfig;
75
174
  //# sourceMappingURL=metaobjects-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metaobjects-config.d.ts","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChI,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,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,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;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC7C;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,kBAAkB,EAAE,OAAO,CAAC;IAC5B,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,CAS5F"}
1
+ {"version":3,"file":"metaobjects-config.d.ts","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,19 @@
1
1
  import { DEFAULT_COLUMN_NAMING_STRATEGY } from "@metaobjectsdev/metadata";
2
+ import { generatorRegistry } from "./generator-registry.js";
2
3
  /** The implicit target synthesized from top-level config (outDir/outputLayout/dbImport). */
3
4
  export const DEFAULT_TARGET_NAME = "default";
5
+ /** Merge the config `docs:` block with CLI overrides over documented defaults.
6
+ * `fallbackLayout` is the project's `outputLayout` so docs default to the same
7
+ * page placement as codegen when `docs.layout` is unset. */
8
+ export function resolveDocsConfig(block, cli, fallbackLayout) {
9
+ return {
10
+ outDir: cli.outDir ?? block?.outDir ?? "./docs",
11
+ layout: cli.layout ?? block?.layout ?? fallbackLayout,
12
+ baseUrl: cli.baseUrl ?? block?.baseUrl ?? "",
13
+ surfaces: cli.surfaces ?? block?.surfaces ?? ["model", "api"],
14
+ apiSurfaces: cli.apiSurfaces ?? block?.apiSurfaces ?? [{ lang: "ts", subDir: "api" }],
15
+ };
16
+ }
4
17
  /** Identity passthrough; exists for IDE type-inference + autocomplete. */
5
18
  export function defineConfig(config) {
6
19
  return config;
@@ -30,11 +43,44 @@ export function resolveTargets(config) {
30
43
  }
31
44
  return out;
32
45
  }
46
+ /**
47
+ * Materialize the config `generators` array: pass typed generators through
48
+ * untouched and resolve each stable-name string via the {@link generatorRegistry}
49
+ * to its factory result (default options). ADR-0021 #1.
50
+ *
51
+ * Errors:
52
+ * - a NEUTRAL name (`docs`, `mermaid-er`) is owned by `meta docs` (ADR-0021 D1)
53
+ * and is not selectable in the gen suite.
54
+ * - an UNKNOWN name throws listing the available NATIVE names.
55
+ */
56
+ export function resolveGenerators(specs) {
57
+ return specs.map((spec) => {
58
+ if (typeof spec !== "string")
59
+ return spec;
60
+ const entry = generatorRegistry[spec];
61
+ if (entry === undefined) {
62
+ const native = Object.values(generatorRegistry)
63
+ .filter((e) => e.tier === "native")
64
+ .map((e) => e.name)
65
+ .sort();
66
+ throw new Error(`unknown generator "${spec}". Available native generators: ${native.join(", ")}.`);
67
+ }
68
+ if (entry.tier !== "native") {
69
+ throw new Error(`generator "${spec}" is neutral (owned by 'meta docs'); ` +
70
+ `not selectable in the gen suite.`);
71
+ }
72
+ return entry.factory();
73
+ });
74
+ }
33
75
  /** Apply defaults to a MetaobjectsGenConfig, returning a NormalizedMetaobjectsGenConfig. */
34
76
  export function normalizeConfig(config) {
35
77
  return {
36
78
  ...config,
79
+ generators: resolveGenerators(config.generators),
37
80
  columnNamingStrategy: config.columnNamingStrategy ?? DEFAULT_COLUMN_NAMING_STRATEGY,
81
+ pluralizeCollections: config.pluralizeCollections ?? true,
82
+ collectionNameOverrides: config.collectionNameOverrides ?? {},
83
+ timestampMode: config.timestampMode ?? "string",
38
84
  apiPrefix: config.apiPrefix ?? "",
39
85
  emitAbstractShapes: config.emitAbstractShapes ?? true,
40
86
  outputLayout: config.outputLayout ?? "flat",
@@ -1 +1 @@
1
- {"version":3,"file":"metaobjects-config.js","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAwD,MAAM,0BAA0B,CAAC;AAYhI,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AA4D7C,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,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;QACrD,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":"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"}
package/dist/naming.d.ts CHANGED
@@ -18,7 +18,44 @@ export declare function columnNameFromField(fieldName: string, strategy?: Column
18
18
  * With kebab-case the separator prefix is "v-" to stay consistent.
19
19
  */
20
20
  export declare function viewNameFromProjection(projectionName: string, strategy: ColumnNamingStrategy): string;
21
- /** PascalCase entity camelCase plural for the Drizzle table variable. */
22
- export declare function variableNameFromEntity(entityName: string): string;
21
+ /** Codegen control over how an entity name lowers to its collection (table)
22
+ * variable name. Both knobs are project-level codegen config (ADR-0001
23
+ * naming is a per-port codegen concern, NOT a metadata attribute), so they
24
+ * carry no cross-port conformance cost. */
25
+ export interface CollectionNameOptions {
26
+ /** Auto-pluralize the camelCase entity name. Default `true` (e.g.
27
+ * `AgentConfig` → `agentConfigs`). Set `false` to keep it singular
28
+ * (`agentConfig`). */
29
+ pluralize?: boolean;
30
+ /** Per-entity exact var-name overrides, keyed by the bare entity name. Wins
31
+ * over `pluralize` — the escape hatch for the handful of tables a global
32
+ * rule gets wrong (e.g. `{ AuditLog: "auditLog", LlmTierConfig: "llmTierConfig" }`). */
33
+ overrides?: Record<string, string>;
34
+ }
35
+ /** PascalCase entity → camelCase Drizzle table variable. Auto-pluralizes by
36
+ * default; `opts` lets a project turn pluralization off globally and/or pin
37
+ * exact names per entity. With no `opts` the behavior is the historical
38
+ * always-pluralize (callers like the relation-resolver that only need the
39
+ * cosmetic query-API member name pass nothing). */
40
+ export declare function variableNameFromEntity(entityName: string, opts?: CollectionNameOptions): string;
41
+ /** Generated read-by-PK helper name: `find<Entity>ById`. */
42
+ export declare function findByIdFnName(entityName: string): string;
43
+ /** Generated list helper name: `list<Plural>` (PascalCase plural). */
44
+ export declare function listFnName(entityName: string): string;
45
+ /** Generated create helper name: `create<Entity>`. */
46
+ export declare function createFnName(entityName: string): string;
47
+ /** Generated update helper name: `update<Entity>`. */
48
+ export declare function updateFnName(entityName: string): string;
49
+ /** Generated delete-by-PK helper name: `delete<Entity>ById`. */
50
+ export declare function deleteByIdFnName(entityName: string): string;
51
+ /**
52
+ * Generated Fastify route-registrar name: camelCase `<entity>Routes`. The routes
53
+ * generator (templates/routes-file.ts) emits a single exported
54
+ * `export async function <entity>Routes(fastify)` that mounts the entity's CRUD
55
+ * verb set — this is the symbol an adopter imports to wire the endpoints. Kept
56
+ * here as the single source of truth so the routes template and the api-docs
57
+ * ApiModel builder derive the exact same spelling (no drift).
58
+ */
59
+ export declare function routesHandlerName(entityName: string): string;
23
60
  export { toKebabCase };
24
61
  //# sourceMappingURL=naming.d.ts.map
@@ -1 +1 @@
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"}
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;;;4CAG4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC;;2BAEuB;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;6FAEyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;oDAIoD;AACpD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAK/F;AAaD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAGD,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/dist/naming.js CHANGED
@@ -34,9 +34,58 @@ export function viewNameFromProjection(projectionName, strategy) {
34
34
  const sep = strategy === "kebab-case" ? "-" : "_";
35
35
  return "v" + sep + applyColumnNamingStrategy(projectionName, strategy);
36
36
  }
37
- /** PascalCase entity → camelCase plural for the Drizzle table variable. */
38
- export function variableNameFromEntity(entityName) {
39
- return pluralize(toCamelCase(entityName.charAt(0).toLowerCase() + entityName.slice(1)));
37
+ /** PascalCase entity → camelCase Drizzle table variable. Auto-pluralizes by
38
+ * default; `opts` lets a project turn pluralization off globally and/or pin
39
+ * exact names per entity. With no `opts` the behavior is the historical
40
+ * always-pluralize (callers like the relation-resolver that only need the
41
+ * cosmetic query-API member name pass nothing). */
42
+ export function variableNameFromEntity(entityName, opts) {
43
+ const override = opts?.overrides?.[entityName];
44
+ if (override !== undefined && override.length > 0)
45
+ return override;
46
+ const camel = toCamelCase(entityName.charAt(0).toLowerCase() + entityName.slice(1));
47
+ return opts?.pluralize === false ? camel : pluralize(camel);
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Generated CRUD-helper symbol names (single source of truth).
51
+ //
52
+ // The queries generator (templates/queries.ts) emits one exported async function
53
+ // per CRUD verb whose NAME is derived purely from the entity name. These helpers
54
+ // are the canonical spelling of those names so anything that needs to REFER to a
55
+ // generated symbol (e.g. the api-docs ApiModel builder) derives the exact same
56
+ // string the generator emits — no drift, no invented names. The queries template
57
+ // itself uses these so the two can never disagree.
58
+ // ---------------------------------------------------------------------------
59
+ /** Generated read-by-PK helper name: `find<Entity>ById`. */
60
+ export function findByIdFnName(entityName) {
61
+ return `find${entityName}ById`;
62
+ }
63
+ /** Generated list helper name: `list<Plural>` (PascalCase plural). */
64
+ export function listFnName(entityName) {
65
+ return `list${pluralize(entityName)}`;
66
+ }
67
+ /** Generated create helper name: `create<Entity>`. */
68
+ export function createFnName(entityName) {
69
+ return `create${entityName}`;
70
+ }
71
+ /** Generated update helper name: `update<Entity>`. */
72
+ export function updateFnName(entityName) {
73
+ return `update${entityName}`;
74
+ }
75
+ /** Generated delete-by-PK helper name: `delete<Entity>ById`. */
76
+ export function deleteByIdFnName(entityName) {
77
+ return `delete${entityName}ById`;
78
+ }
79
+ /**
80
+ * Generated Fastify route-registrar name: camelCase `<entity>Routes`. The routes
81
+ * generator (templates/routes-file.ts) emits a single exported
82
+ * `export async function <entity>Routes(fastify)` that mounts the entity's CRUD
83
+ * verb set — this is the symbol an adopter imports to wire the endpoints. Kept
84
+ * here as the single source of truth so the routes template and the api-docs
85
+ * ApiModel builder derive the exact same spelling (no drift).
86
+ */
87
+ export function routesHandlerName(entityName) {
88
+ return `${entityName.charAt(0).toLowerCase()}${entityName.slice(1)}Routes`;
40
89
  }
41
90
  // Re-exported here for callers that import from codegen-ts's naming module.
42
91
  export { toKebabCase };
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"payload-codegen.d.ts","sourceRoot":"","sources":["../src/payload-codegen.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,QAAQ,EAYd,MAAM,0BAA0B,CAAC;AA+GlC,kGAAkG;AAClG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASjG;AAMD,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAgBjF"}
1
+ {"version":3,"file":"payload-codegen.d.ts","sourceRoot":"","sources":["../src/payload-codegen.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,QAAQ,EAcd,MAAM,0BAA0B,CAAC;AAiHlC,kGAAkG;AAClG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASjG;AAMD,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAuBjF"}