@metaobjectsdev/codegen-ts 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/README.md +1 -1
  2. package/dist/column-mapper.d.ts.map +1 -1
  3. package/dist/column-mapper.js +24 -8
  4. package/dist/column-mapper.js.map +1 -1
  5. package/dist/constants.d.ts +8 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +16 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/docs-paths.d.ts +58 -0
  10. package/dist/docs-paths.d.ts.map +1 -0
  11. package/dist/docs-paths.js +89 -0
  12. package/dist/docs-paths.js.map +1 -0
  13. package/dist/enum-import.d.ts +14 -0
  14. package/dist/enum-import.d.ts.map +1 -0
  15. package/dist/enum-import.js +35 -0
  16. package/dist/enum-import.js.map +1 -0
  17. package/dist/enum-shared.d.ts +32 -0
  18. package/dist/enum-shared.d.ts.map +1 -0
  19. package/dist/enum-shared.js +83 -0
  20. package/dist/enum-shared.js.map +1 -0
  21. package/dist/generator-registry.d.ts +22 -0
  22. package/dist/generator-registry.d.ts.map +1 -0
  23. package/dist/generator-registry.js +161 -0
  24. package/dist/generator-registry.js.map +1 -0
  25. package/dist/generator.d.ts +6 -0
  26. package/dist/generator.d.ts.map +1 -1
  27. package/dist/generator.js.map +1 -1
  28. package/dist/generators/api-doc-render.d.ts +17 -0
  29. package/dist/generators/api-doc-render.d.ts.map +1 -0
  30. package/dist/generators/api-doc-render.js +431 -0
  31. package/dist/generators/api-doc-render.js.map +1 -0
  32. package/dist/generators/api-docs-file.d.ts +21 -0
  33. package/dist/generators/api-docs-file.d.ts.map +1 -0
  34. package/dist/generators/api-docs-file.js +112 -0
  35. package/dist/generators/api-docs-file.js.map +1 -0
  36. package/dist/generators/api-field-shape.d.ts +39 -0
  37. package/dist/generators/api-field-shape.d.ts.map +1 -0
  38. package/dist/generators/api-field-shape.js +92 -0
  39. package/dist/generators/api-field-shape.js.map +1 -0
  40. package/dist/generators/api-label.d.ts +3 -0
  41. package/dist/generators/api-label.d.ts.map +1 -0
  42. package/dist/generators/api-label.js +8 -0
  43. package/dist/generators/api-label.js.map +1 -0
  44. package/dist/generators/api-model.d.ts +122 -0
  45. package/dist/generators/api-model.d.ts.map +1 -0
  46. package/dist/generators/api-model.js +809 -0
  47. package/dist/generators/api-model.js.map +1 -0
  48. package/dist/generators/docs-data-builder.d.ts +26 -4
  49. package/dist/generators/docs-data-builder.d.ts.map +1 -1
  50. package/dist/generators/docs-data-builder.js +436 -164
  51. package/dist/generators/docs-data-builder.js.map +1 -1
  52. package/dist/generators/docs-data.d.ts +136 -27
  53. package/dist/generators/docs-data.d.ts.map +1 -1
  54. package/dist/generators/docs-data.js +1 -1
  55. package/dist/generators/docs-data.js.map +1 -1
  56. package/dist/generators/docs-file.d.ts +19 -0
  57. package/dist/generators/docs-file.d.ts.map +1 -1
  58. package/dist/generators/docs-file.js +154 -27
  59. package/dist/generators/docs-file.js.map +1 -1
  60. package/dist/generators/entity-file.d.ts.map +1 -1
  61. package/dist/generators/entity-file.js +29 -14
  62. package/dist/generators/entity-file.js.map +1 -1
  63. package/dist/generators/extractor-file.d.ts.map +1 -1
  64. package/dist/generators/extractor-file.js +2 -1
  65. package/dist/generators/extractor-file.js.map +1 -1
  66. package/dist/generators/field-anchor.d.ts +7 -0
  67. package/dist/generators/field-anchor.d.ts.map +1 -0
  68. package/dist/generators/field-anchor.js +23 -0
  69. package/dist/generators/field-anchor.js.map +1 -0
  70. package/dist/generators/index.d.ts +8 -1
  71. package/dist/generators/index.d.ts.map +1 -1
  72. package/dist/generators/index.js +6 -0
  73. package/dist/generators/index.js.map +1 -1
  74. package/dist/generators/mermaid-er.d.ts +14 -0
  75. package/dist/generators/mermaid-er.d.ts.map +1 -1
  76. package/dist/generators/mermaid-er.js +14 -0
  77. package/dist/generators/mermaid-er.js.map +1 -1
  78. package/dist/generators/output-parser-file.d.ts.map +1 -1
  79. package/dist/generators/output-parser-file.js +3 -4
  80. package/dist/generators/output-parser-file.js.map +1 -1
  81. package/dist/generators/output-prompt-file.d.ts.map +1 -1
  82. package/dist/generators/output-prompt-file.js +2 -2
  83. package/dist/generators/output-prompt-file.js.map +1 -1
  84. package/dist/generators/prompt-render-file.d.ts.map +1 -1
  85. package/dist/generators/prompt-render-file.js +3 -4
  86. package/dist/generators/prompt-render-file.js.map +1 -1
  87. package/dist/generators/queries-file.d.ts.map +1 -1
  88. package/dist/generators/queries-file.js +8 -3
  89. package/dist/generators/queries-file.js.map +1 -1
  90. package/dist/generators/render-helper-file.d.ts.map +1 -1
  91. package/dist/generators/render-helper-file.js +2 -2
  92. package/dist/generators/render-helper-file.js.map +1 -1
  93. package/dist/generators/routes-file-hono.d.ts.map +1 -1
  94. package/dist/generators/routes-file-hono.js +5 -1
  95. package/dist/generators/routes-file-hono.js.map +1 -1
  96. package/dist/generators/routes-file.d.ts +3 -0
  97. package/dist/generators/routes-file.d.ts.map +1 -1
  98. package/dist/generators/routes-file.js +6 -1
  99. package/dist/generators/routes-file.js.map +1 -1
  100. package/dist/generators/template-doc-builder.d.ts +19 -0
  101. package/dist/generators/template-doc-builder.d.ts.map +1 -0
  102. package/dist/generators/template-doc-builder.js +220 -0
  103. package/dist/generators/template-doc-builder.js.map +1 -0
  104. package/dist/generators/template-doc-data.d.ts +62 -0
  105. package/dist/generators/template-doc-data.d.ts.map +1 -0
  106. package/dist/generators/template-doc-data.js +16 -0
  107. package/dist/generators/template-doc-data.js.map +1 -0
  108. package/dist/generators/template-payload-tree.d.ts +15 -0
  109. package/dist/generators/template-payload-tree.d.ts.map +1 -0
  110. package/dist/generators/template-payload-tree.js +61 -0
  111. package/dist/generators/template-payload-tree.js.map +1 -0
  112. package/dist/generators/template-source-annotate.d.ts +74 -0
  113. package/dist/generators/template-source-annotate.d.ts.map +1 -0
  114. package/dist/generators/template-source-annotate.js +184 -0
  115. package/dist/generators/template-source-annotate.js.map +1 -0
  116. package/dist/generators/template-source-render.d.ts +24 -0
  117. package/dist/generators/template-source-render.d.ts.map +1 -0
  118. package/dist/generators/template-source-render.js +175 -0
  119. package/dist/generators/template-source-render.js.map +1 -0
  120. package/dist/generators/trace-helper-file.d.ts +9 -0
  121. package/dist/generators/trace-helper-file.d.ts.map +1 -0
  122. package/dist/generators/trace-helper-file.js +196 -0
  123. package/dist/generators/trace-helper-file.js.map +1 -0
  124. package/dist/index.d.ts +29 -4
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +28 -2
  127. package/dist/index.js.map +1 -1
  128. package/dist/metaobjects-config.d.ts +75 -2
  129. package/dist/metaobjects-config.d.ts.map +1 -1
  130. package/dist/metaobjects-config.js +43 -0
  131. package/dist/metaobjects-config.js.map +1 -1
  132. package/dist/naming.d.ts +19 -0
  133. package/dist/naming.d.ts.map +1 -1
  134. package/dist/naming.js +41 -0
  135. package/dist/naming.js.map +1 -1
  136. package/dist/payload-codegen.d.ts.map +1 -1
  137. package/dist/payload-codegen.js +12 -4
  138. package/dist/payload-codegen.js.map +1 -1
  139. package/dist/projection/extract-view-spec.d.ts.map +1 -1
  140. package/dist/projection/extract-view-spec.js +51 -25
  141. package/dist/projection/extract-view-spec.js.map +1 -1
  142. package/dist/relation-resolver.d.ts +16 -0
  143. package/dist/relation-resolver.d.ts.map +1 -1
  144. package/dist/relation-resolver.js +82 -1
  145. package/dist/relation-resolver.js.map +1 -1
  146. package/dist/render-context.d.ts +4 -0
  147. package/dist/render-context.d.ts.map +1 -1
  148. package/dist/render-context.js.map +1 -1
  149. package/dist/render-engine/embedded-templates.generated.d.ts +2 -0
  150. package/dist/render-engine/embedded-templates.generated.d.ts.map +1 -0
  151. package/dist/render-engine/embedded-templates.generated.js +15 -0
  152. package/dist/render-engine/embedded-templates.generated.js.map +1 -0
  153. package/dist/render-engine/framework-provider.d.ts.map +1 -1
  154. package/dist/render-engine/framework-provider.js +26 -13
  155. package/dist/render-engine/framework-provider.js.map +1 -1
  156. package/dist/runner.d.ts.map +1 -1
  157. package/dist/runner.js +17 -0
  158. package/dist/runner.js.map +1 -1
  159. package/dist/templates/docs-file.d.ts +2 -6
  160. package/dist/templates/docs-file.d.ts.map +1 -1
  161. package/dist/templates/docs-file.js +2 -5
  162. package/dist/templates/docs-file.js.map +1 -1
  163. package/dist/templates/drizzle-schema.d.ts.map +1 -1
  164. package/dist/templates/drizzle-schema.js +30 -2
  165. package/dist/templates/drizzle-schema.js.map +1 -1
  166. package/dist/templates/entity-constants.d.ts +7 -0
  167. package/dist/templates/entity-constants.d.ts.map +1 -1
  168. package/dist/templates/entity-constants.js +1 -1
  169. package/dist/templates/entity-constants.js.map +1 -1
  170. package/dist/templates/entity-file.d.ts.map +1 -1
  171. package/dist/templates/entity-file.js +16 -5
  172. package/dist/templates/entity-file.js.map +1 -1
  173. package/dist/templates/enums-file.d.ts +11 -0
  174. package/dist/templates/enums-file.d.ts.map +1 -0
  175. package/dist/templates/enums-file.js +44 -0
  176. package/dist/templates/enums-file.js.map +1 -0
  177. package/dist/templates/extract-delegate-emitter.d.ts.map +1 -1
  178. package/dist/templates/extract-delegate-emitter.js +5 -7
  179. package/dist/templates/extract-delegate-emitter.js.map +1 -1
  180. package/dist/templates/extract-schema-emitter.d.ts.map +1 -1
  181. package/dist/templates/extract-schema-emitter.js +5 -1
  182. package/dist/templates/extract-schema-emitter.js.map +1 -1
  183. package/dist/templates/extractor.d.ts.map +1 -1
  184. package/dist/templates/extractor.js +56 -39
  185. package/dist/templates/extractor.js.map +1 -1
  186. package/dist/templates/field-meta.d.ts.map +1 -1
  187. package/dist/templates/field-meta.js +1 -5
  188. package/dist/templates/field-meta.js.map +1 -1
  189. package/dist/templates/filter-allowlist.d.ts +7 -2
  190. package/dist/templates/filter-allowlist.d.ts.map +1 -1
  191. package/dist/templates/filter-allowlist.js +17 -9
  192. package/dist/templates/filter-allowlist.js.map +1 -1
  193. package/dist/templates/filter-type.d.ts +7 -1
  194. package/dist/templates/filter-type.d.ts.map +1 -1
  195. package/dist/templates/filter-type.js +9 -5
  196. package/dist/templates/filter-type.js.map +1 -1
  197. package/dist/templates/find-templates.d.ts +4 -0
  198. package/dist/templates/find-templates.d.ts.map +1 -0
  199. package/dist/templates/find-templates.js +15 -0
  200. package/dist/templates/find-templates.js.map +1 -0
  201. package/dist/templates/fr010-field-mapping.d.ts +2 -0
  202. package/dist/templates/fr010-field-mapping.d.ts.map +1 -1
  203. package/dist/templates/fr010-field-mapping.js +10 -6
  204. package/dist/templates/fr010-field-mapping.js.map +1 -1
  205. package/dist/templates/inferred-types.d.ts +44 -7
  206. package/dist/templates/inferred-types.d.ts.map +1 -1
  207. package/dist/templates/inferred-types.js +107 -16
  208. package/dist/templates/inferred-types.js.map +1 -1
  209. package/dist/templates/mermaid-er.d.ts +35 -2
  210. package/dist/templates/mermaid-er.d.ts.map +1 -1
  211. package/dist/templates/mermaid-er.js +174 -7
  212. package/dist/templates/mermaid-er.js.map +1 -1
  213. package/dist/templates/output-parser.d.ts.map +1 -1
  214. package/dist/templates/output-parser.js +30 -79
  215. package/dist/templates/output-parser.js.map +1 -1
  216. package/dist/templates/output-prompt.d.ts.map +1 -1
  217. package/dist/templates/output-prompt.js +2 -2
  218. package/dist/templates/output-prompt.js.map +1 -1
  219. package/dist/templates/queries-file.d.ts.map +1 -1
  220. package/dist/templates/queries-file.js +112 -4
  221. package/dist/templates/queries-file.js.map +1 -1
  222. package/dist/templates/queries.d.ts +5 -0
  223. package/dist/templates/queries.d.ts.map +1 -1
  224. package/dist/templates/queries.js +7 -7
  225. package/dist/templates/queries.js.map +1 -1
  226. package/dist/templates/recover-schema-emitter.d.ts +8 -0
  227. package/dist/templates/recover-schema-emitter.d.ts.map +1 -0
  228. package/dist/templates/recover-schema-emitter.js +64 -0
  229. package/dist/templates/recover-schema-emitter.js.map +1 -0
  230. package/dist/templates/relations-block.js +10 -0
  231. package/dist/templates/relations-block.js.map +1 -1
  232. package/dist/templates/render-helper.d.ts.map +1 -1
  233. package/dist/templates/render-helper.js +4 -4
  234. package/dist/templates/render-helper.js.map +1 -1
  235. package/dist/templates/routes-file.d.ts.map +1 -1
  236. package/dist/templates/routes-file.js +183 -6
  237. package/dist/templates/routes-file.js.map +1 -1
  238. package/dist/templates/tph-discriminator.d.ts +56 -0
  239. package/dist/templates/tph-discriminator.d.ts.map +1 -0
  240. package/dist/templates/tph-discriminator.js +180 -0
  241. package/dist/templates/tph-discriminator.js.map +1 -0
  242. package/dist/templates/value-object-file.d.ts +2 -1
  243. package/dist/templates/value-object-file.d.ts.map +1 -1
  244. package/dist/templates/value-object-file.js +32 -4
  245. package/dist/templates/value-object-file.js.map +1 -1
  246. package/dist/templates/zod-validators.d.ts +64 -1
  247. package/dist/templates/zod-validators.d.ts.map +1 -1
  248. package/dist/templates/zod-validators.js +181 -8
  249. package/dist/templates/zod-validators.js.map +1 -1
  250. package/package.json +103 -34
  251. package/src/column-mapper.ts +25 -8
  252. package/src/constants.ts +18 -0
  253. package/src/docs-paths.ts +128 -0
  254. package/src/enum-import.ts +43 -0
  255. package/src/enum-shared.ts +95 -0
  256. package/src/generator-registry.ts +204 -0
  257. package/src/generator.ts +6 -0
  258. package/src/generators/api-doc-render.ts +572 -0
  259. package/src/generators/api-docs-file.ts +146 -0
  260. package/src/generators/api-field-shape.ts +114 -0
  261. package/src/generators/api-label.ts +7 -0
  262. package/src/generators/api-model.ts +1067 -0
  263. package/src/generators/docs-data-builder.ts +479 -185
  264. package/src/generators/docs-data.ts +139 -28
  265. package/src/generators/docs-file.ts +205 -39
  266. package/src/generators/entity-file.ts +31 -15
  267. package/src/generators/extractor-file.ts +2 -1
  268. package/src/generators/field-anchor.ts +24 -0
  269. package/src/generators/index.ts +8 -1
  270. package/src/generators/mermaid-er.ts +14 -0
  271. package/src/generators/output-parser-file.ts +3 -4
  272. package/src/generators/output-prompt-file.ts +2 -1
  273. package/src/generators/prompt-render-file.ts +3 -4
  274. package/src/generators/queries-file.ts +9 -3
  275. package/src/generators/render-helper-file.ts +2 -1
  276. package/src/generators/routes-file-hono.ts +5 -1
  277. package/src/generators/routes-file.ts +7 -1
  278. package/src/generators/template-doc-builder.ts +306 -0
  279. package/src/generators/template-doc-data.ts +85 -0
  280. package/src/generators/template-payload-tree.ts +71 -0
  281. package/src/generators/template-source-annotate.ts +290 -0
  282. package/src/generators/template-source-render.ts +203 -0
  283. package/src/generators/trace-helper-file.ts +301 -0
  284. package/src/index.ts +55 -4
  285. package/src/metaobjects-config.ts +117 -2
  286. package/src/naming.ts +48 -0
  287. package/src/payload-codegen.ts +14 -3
  288. package/src/projection/extract-view-spec.ts +49 -30
  289. package/src/relation-resolver.ts +103 -1
  290. package/src/render-context.ts +4 -0
  291. package/src/render-engine/embedded-templates.generated.ts +14 -0
  292. package/src/render-engine/framework-provider.ts +25 -11
  293. package/src/runner.ts +21 -0
  294. package/src/templates/docs-file.ts +2 -9
  295. package/src/templates/drizzle-schema.ts +31 -1
  296. package/src/templates/entity-constants.ts +1 -1
  297. package/src/templates/entity-file.ts +16 -5
  298. package/src/templates/enums-file.ts +50 -0
  299. package/src/templates/extract-delegate-emitter.ts +5 -6
  300. package/src/templates/extractor.ts +68 -38
  301. package/src/templates/field-meta.ts +0 -6
  302. package/src/templates/filter-allowlist.ts +17 -10
  303. package/src/templates/filter-type.ts +8 -6
  304. package/src/templates/find-templates.ts +15 -0
  305. package/src/templates/fr010-field-mapping.ts +10 -8
  306. package/src/templates/inferred-types.ts +108 -18
  307. package/src/templates/mermaid-er.ts +176 -8
  308. package/src/templates/output-parser.ts +30 -79
  309. package/src/templates/output-prompt.ts +2 -1
  310. package/src/templates/queries-file.ts +132 -3
  311. package/src/templates/queries.ts +15 -7
  312. package/src/templates/relations-block.ts +17 -0
  313. package/src/templates/render-helper.ts +4 -3
  314. package/src/templates/routes-file.ts +233 -6
  315. package/src/templates/tph-discriminator.ts +232 -0
  316. package/src/templates/value-object-file.ts +38 -4
  317. package/src/templates/zod-validators.ts +204 -7
  318. package/templates/api/agent-api.md.mustache +30 -0
  319. package/templates/api/entity-api.md.mustache +69 -0
  320. package/templates/api/index.md.mustache +21 -0
  321. package/templates/docs/entity-page.md.mustache +33 -21
  322. package/templates/docs/template-page.md.mustache +56 -0
  323. package/src/templates/extract-schema-emitter.ts +0 -111
package/README.md CHANGED
@@ -198,7 +198,7 @@ if (!r.success) { /* handle r.error (a ZodError) */ } else { /* use r.data */ }
198
198
  | Field subtype | Emitted Zod |
199
199
  |---|---|
200
200
  | `field.string`, `field.class` | `z.string()` |
201
- | `field.int`, `field.long`, `field.short`, `field.byte` | `z.number().int()` |
201
+ | `field.int`, `field.long` | `z.number().int()` |
202
202
  | `field.double`, `field.float` | `z.number()` |
203
203
  | `field.boolean` | `z.boolean()` |
204
204
  | `field.object` (with `@objectRef`) | nested `z.object({ ... })` |
@@ -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;AAmC1D,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;AAgExC,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;IACzB;;;;;;;OAOG;IACH,aAAa,CAAC,EACV;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,GAC3D;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AA2DD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,oBAAqD,GAC9D,UAAU,CAqPZ"}
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;AAoC1D,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;AA+DxC,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;IACzB;;;;;;;OAOG;IACH,aAAa,CAAC,EACV;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,GAC3D;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AA2DD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,oBAAqD,GAC9D,UAAU,CAsQZ"}
@@ -1,9 +1,9 @@
1
1
  // Field-type → Drizzle column type mapping. Per design §6.
2
2
  // Uses the typed MetaField.validators() accessor (effective — includes inherited) for all validator checks.
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, FIELD_SUBTYPE_UUID, VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_SUBTYPE_LENGTH, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_PRECISION, FIELD_ATTR_SCALE, FIELD_ATTR_REQUIRED, FIELD_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, FIELD_ATTR_OBJECT_REF, VALIDATOR_ATTR_MAX, FIELD_ATTR_DB_COLUMN_TYPE, DB_COLUMN_TYPE_UUID, DB_COLUMN_TYPE_JSONB, DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ, } from "@metaobjectsdev/metadata";
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_ENUM, FIELD_SUBTYPE_UUID, VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_SUBTYPE_LENGTH, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_PRECISION, FIELD_ATTR_SCALE, FIELD_ATTR_REQUIRED, FIELD_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_STORAGE, STORAGE_JSONB, VALIDATOR_ATTR_MAX, FIELD_ATTR_DB_COLUMN_TYPE, DB_COLUMN_TYPE_UUID, DB_COLUMN_TYPE_JSONB, DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ, } 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
+ import { DEFAULT_COLUMN_NAMING_STRATEGY, stripPackage } from "@metaobjectsdev/metadata";
7
7
  /**
8
8
  * Patterns recognized as SQL expressions in a default value. Anything matching
9
9
  * these is treated as a SQL expression, not a string literal. Mirrors
@@ -33,7 +33,6 @@ function sqliteJsonArrayElementTsType(subType) {
33
33
  switch (subType) {
34
34
  case FIELD_SUBTYPE_STRING:
35
35
  case FIELD_SUBTYPE_ENUM:
36
- case FIELD_SUBTYPE_CLASS:
37
36
  case FIELD_SUBTYPE_UUID:
38
37
  case FIELD_SUBTYPE_DATE:
39
38
  case FIELD_SUBTYPE_TIME:
@@ -156,13 +155,21 @@ export function mapColumnType(field, dialect, strategy = DEFAULT_COLUMN_NAMING_S
156
155
  // isn't a silent rounding hazard.
157
156
  leadingComment = "TODO: SQLite has no decimal type; stored as text. Convert at the application boundary or migrate to Postgres for native numeric.";
158
157
  break;
158
+ case FIELD_SUBTYPE_OBJECT:
159
+ // A nested object is stored as a single JSON column (the default
160
+ // single-jsonb-column storage). SQLite has no native jsonb, so the
161
+ // idiomatic Drizzle form is text(..., { mode: "json" }) — agreeing with
162
+ // migrate-ts/expected-schema, which maps field.object → { kind: "json" }
163
+ // (JSON on SQLite). @storage flattened expansion is a separate codegen
164
+ // gap; the column TYPE here is the single-column JSON representation.
165
+ fnName = "text";
166
+ fnOptions = { mode: "json" };
167
+ break;
159
168
  case FIELD_SUBTYPE_DATE:
160
169
  case FIELD_SUBTYPE_TIME:
161
170
  case FIELD_SUBTYPE_TIMESTAMP:
162
171
  case FIELD_SUBTYPE_STRING:
163
172
  case FIELD_SUBTYPE_ENUM:
164
- case FIELD_SUBTYPE_CLASS:
165
- case FIELD_SUBTYPE_OBJECT:
166
173
  case FIELD_SUBTYPE_UUID:
167
174
  // SQLite has no native uuid type; store as TEXT (string native binding).
168
175
  fnName = "text";
@@ -253,9 +260,15 @@ export function mapColumnType(field, dialect, strategy = DEFAULT_COLUMN_NAMING_S
253
260
  }
254
261
  break;
255
262
  }
256
- case FIELD_SUBTYPE_ENUM:
257
- case FIELD_SUBTYPE_CLASS:
258
263
  case FIELD_SUBTYPE_OBJECT:
264
+ // A nested object is stored as a single jsonb column (the default
265
+ // single-jsonb-column storage), matching migrate-ts/expected-schema,
266
+ // which maps field.object → { kind: "json" } → JSONB on Postgres.
267
+ // @storage flattened expansion is a separate codegen gap; the column
268
+ // TYPE here is the single-column jsonb representation.
269
+ fnName = "jsonb";
270
+ break;
271
+ case FIELD_SUBTYPE_ENUM:
259
272
  default:
260
273
  fnName = "text";
261
274
  break;
@@ -326,7 +339,10 @@ export function mapColumnType(field, dialect, strategy = DEFAULT_COLUMN_NAMING_S
326
339
  if (subType === FIELD_SUBTYPE_OBJECT) {
327
340
  const ref = field.ownAttr(FIELD_ATTR_OBJECT_REF);
328
341
  if (typeof ref === "string" && ref.length > 0) {
329
- dollarTypeRef = { kind: "objectRef", name: ref, module: `./${ref}.js` };
342
+ // @objectRef may be authored fully-qualified or bare the $type<E[]>()
343
+ // target interface + its sibling module use the BARE short name.
344
+ const base = stripPackage(ref);
345
+ dollarTypeRef = { kind: "objectRef", name: base, module: `./${base}.js` };
330
346
  }
331
347
  }
332
348
  else {
@@ -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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"}
@@ -4,4 +4,12 @@ export declare const GENERATED_HEADER = "@generated by @metaobjectsdev/codegen-t
4
4
  export declare const EXTRA_SUFFIX = ".extra";
5
5
  /** Default outDir used by tests + as a sane default for generate(). */
6
6
  export declare const DEFAULT_OUT_DIR = "./src/db/entities";
7
+ /** `@emitTanstack: false` — skip the TanStack hooks + grid generators for an entity. */
8
+ export declare const CODEGEN_ATTR_EMIT_TANSTACK = "emitTanstack";
9
+ /** `@emitGrid: true` — opt a TPH subtype IN to its own per-subtype grid (default: the polymorphic base grid is the single source). */
10
+ export declare const CODEGEN_ATTR_EMIT_GRID = "emitGrid";
11
+ /** `@emitForm: false` — skip the React form generator for an entity. */
12
+ export declare const CODEGEN_ATTR_EMIT_FORM = "emitForm";
13
+ /** `@emitRoutes: false` — skip the Fastify routes generator for an entity. */
14
+ export declare const CODEGEN_ATTR_EMIT_ROUTES = "emitRoutes";
7
15
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,6CAA6C,CAAC;AAE3E,6EAA6E;AAC7E,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,uEAAuE;AACvE,eAAO,MAAM,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,6CAA6C,CAAC;AAE3E,6EAA6E;AAC7E,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,uEAAuE;AACvE,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAWnD,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,sIAAsI;AACtI,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,eAAe,CAAC"}
package/dist/constants.js CHANGED
@@ -5,4 +5,20 @@ export const GENERATED_HEADER = "@generated by @metaobjectsdev/codegen-ts";
5
5
  export const EXTRA_SUFFIX = ".extra";
6
6
  /** Default outDir used by tests + as a sane default for generate(). */
7
7
  export const DEFAULT_OUT_DIR = "./src/db/entities";
8
+ // ---------------------------------------------------------------------------
9
+ // Codegen-control attributes.
10
+ //
11
+ // These are per-entity opt-in/opt-out flags read by generators (NOT metamodel
12
+ // vocabulary — they tune codegen, not the model). Named here so the literals
13
+ // aren't scattered as magic strings across the generator packages (compile-time
14
+ // typo safety), matching the metadata package's constants discipline.
15
+ // ---------------------------------------------------------------------------
16
+ /** `@emitTanstack: false` — skip the TanStack hooks + grid generators for an entity. */
17
+ export const CODEGEN_ATTR_EMIT_TANSTACK = "emitTanstack";
18
+ /** `@emitGrid: true` — opt a TPH subtype IN to its own per-subtype grid (default: the polymorphic base grid is the single source). */
19
+ export const CODEGEN_ATTR_EMIT_GRID = "emitGrid";
20
+ /** `@emitForm: false` — skip the React form generator for an entity. */
21
+ export const CODEGEN_ATTR_EMIT_FORM = "emitForm";
22
+ /** `@emitRoutes: false` — skip the Fastify routes generator for an entity. */
23
+ export const CODEGEN_ATTR_EMIT_ROUTES = "emitRoutes";
8
24
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,0CAA0C,CAAC;AAE3E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,0CAA0C,CAAC;AAE3E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAEnD,8EAA8E;AAC9E,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,sEAAsE;AACtE,8EAA8E;AAE9E,wFAAwF;AACxF,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AACzD,sIAAsI;AACtI,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;AACjD,wEAAwE;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;AACjD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { type OutputLayout } from "./import-path.js";
2
+ /** The minimal shape needed to place a docs page / compute a link to it: a
3
+ * short name and its EFFECTIVE package. Build one from a metadata node via
4
+ * `docPageNode()`. */
5
+ export interface DocPageNode {
6
+ readonly name: string;
7
+ readonly package?: string | undefined;
8
+ }
9
+ /** A metadata node enough to derive page placement. `resolutionKey()` carries
10
+ * the EFFECTIVE package (own package OR the file-default captured at parse
11
+ * time) folded as `<pkg>::<name>` — `.package` alone is often undefined for
12
+ * objects (FR5d keeps object fqn() bare), so we read placement off the
13
+ * resolution key instead. */
14
+ interface PlaceableNode {
15
+ readonly name: string;
16
+ resolutionKey(): string;
17
+ }
18
+ /** Effective package of a placeable node: the prefix of `resolutionKey()`
19
+ * before the trailing `::<name>`, or undefined when the node is package-less. */
20
+ export declare function effectivePackage(node: PlaceableNode): string | undefined;
21
+ /** Build a placement node ({name, effective package}) from a metadata node. The
22
+ * single bridge from a loaded node to the path/href helpers — so file location
23
+ * and link href derive from the SAME effective package. */
24
+ export declare function docPageNode(node: PlaceableNode): DocPageNode;
25
+ /** Output path (relative to the docs out dir) for a node's `.md` page.
26
+ * Flat → `<name>.md` (today's value, byte-identical). Package → folded under
27
+ * the package path (`acme/sales/Order.md`); a package-less node stays at root. */
28
+ export declare function docPageOutputPath(layout: OutputLayout, node: DocPageNode): string;
29
+ /** Relative href FROM `fromNode`'s page TO `toNode`'s page. Derived from the
30
+ * same `docPageOutputPath()` placement, so a link always points at the file's
31
+ * real location in BOTH layouts. Flat → `./<to>.md`; package → a correct
32
+ * relative path (e.g. `../comms/OrderEmail.md`). */
33
+ export declare function docPageHref(layout: OutputLayout, fromNode: DocPageNode, toNode: DocPageNode): string;
34
+ /** Relative href between two doc pages whose output paths (relative to the shared
35
+ * docs outDir) may sit under different surface sub-roots — e.g. model `Order.md`
36
+ * and api `api/Order.md`. The shared relative-path rule, over raw paths;
37
+ * docPageHref delegates its package-layout branch here. */
38
+ export declare function surfaceCrossHref(fromOutputPath: string, toOutputPath: string): string;
39
+ /** Href FROM a page (at `fromOutputPath`, relative to the docs root) TO a page
40
+ * (`page`, relative to the surface's own root) in an api surface. Relative via
41
+ * `surfaceCrossHref` when the surface is in the same tree; absolute `baseUrl/page`
42
+ * when the surface declares a baseUrl (federated / separate repo). */
43
+ export declare function apiSurfaceHref(fromOutputPath: string, surface: {
44
+ subDir: string;
45
+ baseUrl?: string;
46
+ }, page: string): string;
47
+ /** A page about to be emitted, paired with the FQN of the node that produced it
48
+ * (for a precise collision diagnostic). */
49
+ export interface DocPagePlacement {
50
+ path: string;
51
+ fqn: string;
52
+ }
53
+ /** Hard backstop against silent overwrite (ALL layouts): if two placements
54
+ * resolve to the SAME output path, THROW naming both colliding node FQNs and
55
+ * the path. Guarantees a docs run never silently drops a page. */
56
+ export declare function assertNoDuplicateDocPaths(placements: DocPagePlacement[]): void;
57
+ export {};
58
+ //# sourceMappingURL=docs-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-paths.d.ts","sourceRoot":"","sources":["../src/docs-paths.ts"],"names":[],"mappings":"AAaA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;uBAEuB;AACvB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;8BAI8B;AAC9B,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,aAAa,IAAI,MAAM,CAAC;CACzB;AAED;kFACkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CASxE;AAED;;4DAE4D;AAC5D,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,CAE5D;AAED;;mFAEmF;AACnF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAKjF;AAED;;;qDAGqD;AACrD,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,WAAW,GAClB,MAAM,CAMR;AAED;;;4DAG4D;AAC5D,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED;;;uEAGuE;AACvE,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAED;4CAC4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;mEAEmE;AACnE,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAa9E"}
@@ -0,0 +1,89 @@
1
+ // docs-paths.ts — the SINGLE source of truth for where a docs page is written
2
+ // AND how one page links to another. The file location and every inbound link
3
+ // href are derived from the SAME functions here, so they can never diverge.
4
+ //
5
+ // Why this matters: pages are placed by short name. In "flat" layout two nodes
6
+ // that share a short name across different packages (e.g. `acme::sales::Order`
7
+ // and `acme::billing::Order`) would both want `Order.md` and one would silently
8
+ // overwrite the other. `assertNoDuplicateDocPaths()` is the hard backstop that
9
+ // turns that data-loss into a clear error; "package" layout folds pages under
10
+ // package-path subdirs (`acme/sales/Order.md`) so multi-package models work.
11
+ import { PACKAGE_SEPARATOR } from "@metaobjectsdev/metadata";
12
+ import { relative as posixRelative } from "node:path/posix";
13
+ import { packageToPath } from "./import-path.js";
14
+ /** Effective package of a placeable node: the prefix of `resolutionKey()`
15
+ * before the trailing `::<name>`, or undefined when the node is package-less. */
16
+ export function effectivePackage(node) {
17
+ const key = node.resolutionKey();
18
+ const suffix = `${PACKAGE_SEPARATOR}${node.name}`;
19
+ if (key === node.name)
20
+ return undefined;
21
+ if (key.endsWith(suffix)) {
22
+ const pkg = key.slice(0, key.length - suffix.length);
23
+ return pkg === "" ? undefined : pkg;
24
+ }
25
+ return undefined;
26
+ }
27
+ /** Build a placement node ({name, effective package}) from a metadata node. The
28
+ * single bridge from a loaded node to the path/href helpers — so file location
29
+ * and link href derive from the SAME effective package. */
30
+ export function docPageNode(node) {
31
+ return { name: node.name, package: effectivePackage(node) };
32
+ }
33
+ /** Output path (relative to the docs out dir) for a node's `.md` page.
34
+ * Flat → `<name>.md` (today's value, byte-identical). Package → folded under
35
+ * the package path (`acme/sales/Order.md`); a package-less node stays at root. */
36
+ export function docPageOutputPath(layout, node) {
37
+ const filename = `${node.name}.md`;
38
+ if (layout === "flat")
39
+ return filename;
40
+ const dir = packageToPath(node.package);
41
+ return dir === "" ? filename : `${dir}/${filename}`;
42
+ }
43
+ /** Relative href FROM `fromNode`'s page TO `toNode`'s page. Derived from the
44
+ * same `docPageOutputPath()` placement, so a link always points at the file's
45
+ * real location in BOTH layouts. Flat → `./<to>.md`; package → a correct
46
+ * relative path (e.g. `../comms/OrderEmail.md`). */
47
+ export function docPageHref(layout, fromNode, toNode) {
48
+ const toPath = docPageOutputPath(layout, toNode);
49
+ if (layout === "flat")
50
+ return `./${toPath}`;
51
+ // Relative path from the FROM page's directory to the TO page — the same
52
+ // raw-path rule surfaceCrossHref uses, so the two can never diverge.
53
+ return surfaceCrossHref(docPageOutputPath(layout, fromNode), toPath);
54
+ }
55
+ /** Relative href between two doc pages whose output paths (relative to the shared
56
+ * docs outDir) may sit under different surface sub-roots — e.g. model `Order.md`
57
+ * and api `api/Order.md`. The shared relative-path rule, over raw paths;
58
+ * docPageHref delegates its package-layout branch here. */
59
+ export function surfaceCrossHref(fromOutputPath, toOutputPath) {
60
+ const fromDir = fromOutputPath.includes("/") ? fromOutputPath.slice(0, fromOutputPath.lastIndexOf("/")) : "";
61
+ const rel = posixRelative(fromDir, toOutputPath);
62
+ return rel.startsWith(".") ? rel : `./${rel}`;
63
+ }
64
+ /** Href FROM a page (at `fromOutputPath`, relative to the docs root) TO a page
65
+ * (`page`, relative to the surface's own root) in an api surface. Relative via
66
+ * `surfaceCrossHref` when the surface is in the same tree; absolute `baseUrl/page`
67
+ * when the surface declares a baseUrl (federated / separate repo). */
68
+ export function apiSurfaceHref(fromOutputPath, surface, page) {
69
+ if (surface.baseUrl !== undefined && surface.baseUrl !== "") {
70
+ return `${surface.baseUrl.replace(/\/$/, "")}/${page}`;
71
+ }
72
+ return surfaceCrossHref(fromOutputPath, `${surface.subDir}/${page}`);
73
+ }
74
+ /** Hard backstop against silent overwrite (ALL layouts): if two placements
75
+ * resolve to the SAME output path, THROW naming both colliding node FQNs and
76
+ * the path. Guarantees a docs run never silently drops a page. */
77
+ export function assertNoDuplicateDocPaths(placements) {
78
+ const seen = new Map();
79
+ for (const { path, fqn } of placements) {
80
+ const prior = seen.get(path);
81
+ if (prior !== undefined) {
82
+ throw new Error(`docs: duplicate output path "${path}" from nodes ${prior} and ${fqn} — ` +
83
+ `use package layout (outputLayout: "package" / meta docs --layout package) ` +
84
+ `to disambiguate.`);
85
+ }
86
+ seen.set(path, fqn);
87
+ }
88
+ }
89
+ //# sourceMappingURL=docs-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-paths.js","sourceRoot":"","sources":["../src/docs-paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { RenderContext } from "./render-context.js";
2
+ /**
3
+ * Specifier to import a MATERIALIZED shared enum into an entity file in
4
+ * `entityPkg`. The shared module sits at the entity-module target root; in
5
+ * package layout the entity may be nested, so the `./enums` base is adjusted by
6
+ * package depth.
7
+ */
8
+ export declare function sharedEnumImportSpecifier(ctx: RenderContext, entityPkg: string | undefined): string;
9
+ /**
10
+ * Specifier to import an externally-PROVIDED enum. Resolved from codegen config
11
+ * (`providedEnumModule`); throws a clear codegen-time error when unset.
12
+ */
13
+ export declare function providedEnumImportSpecifier(ctx: RenderContext, enumName: string): string;
14
+ //# sourceMappingURL=enum-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-import.d.ts","sourceRoot":"","sources":["../src/enum-import.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUxF"}
@@ -0,0 +1,35 @@
1
+ // FR-019 — import-specifier resolution for shared + provided enums.
2
+ //
3
+ // A consuming entity file references a shared enum `E` by importing it:
4
+ // • materialized (non-@provided) → from the generated shared enums module
5
+ // (`./enums`, at the entity-module target root, package-layout-aware).
6
+ // • @provided → from the per-port-configured module
7
+ // (`ctx.providedEnumModule`). Missing config ⇒ a codegen-time error naming
8
+ // the enum + the config key (ADR-0026: namespace is config, not metadata).
9
+ import { withExt } from "./render-context.js";
10
+ import { relativeModuleSpecifier } from "./import-path.js";
11
+ import { SHARED_ENUMS_BASENAME } from "./templates/enums-file.js";
12
+ /**
13
+ * Specifier to import a MATERIALIZED shared enum into an entity file in
14
+ * `entityPkg`. The shared module sits at the entity-module target root; in
15
+ * package layout the entity may be nested, so the `./enums` base is adjusted by
16
+ * package depth.
17
+ */
18
+ export function sharedEnumImportSpecifier(ctx, entityPkg) {
19
+ const base = withExt(`./${SHARED_ENUMS_BASENAME}`, ctx.extStyle);
20
+ return relativeModuleSpecifier(ctx.selfTarget.outputLayout, entityPkg, base);
21
+ }
22
+ /**
23
+ * Specifier to import an externally-PROVIDED enum. Resolved from codegen config
24
+ * (`providedEnumModule`); throws a clear codegen-time error when unset.
25
+ */
26
+ export function providedEnumImportSpecifier(ctx, enumName) {
27
+ const mod = ctx.providedEnumModule;
28
+ if (mod === undefined || mod === "") {
29
+ throw new Error(`provided enum "${enumName}" is marked @provided but no module is configured ` +
30
+ `to import it from. Set "providedEnumModule" in your codegen config (e.g. ` +
31
+ `providedEnumModule: "@your-app/enums") so the generated code can reference "${enumName}".`);
32
+ }
33
+ return mod;
34
+ }
35
+ //# sourceMappingURL=enum-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-import.js","sourceRoot":"","sources":["../src/enum-import.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAkB,EAClB,SAA6B;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,qBAAqB,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjE,OAAO,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAkB,EAAE,QAAgB;IAC9E,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,oDAAoD;YAC9E,2EAA2E;YAC3E,+EAA+E,QAAQ,IAAI,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { MetaField, MetaRoot } from "@metaobjectsdev/metadata";
2
+ /** A shared (root-level abstract) enum declaration the codegen must reason about. */
3
+ export interface SharedEnum {
4
+ /** The materialized type name — the abstract declaration's PascalCase name (cross-port identity). */
5
+ readonly name: string;
6
+ /** Member symbols (the @values SSOT). */
7
+ readonly values: string[];
8
+ /** True when the declaration carries `@provided: true` (reference, don't materialize). */
9
+ readonly provided: boolean;
10
+ }
11
+ /**
12
+ * The root-level abstract `field.enum` a concrete enum field resolves to via
13
+ * `extends`, or undefined when the field is an inline enum (no root-abstract
14
+ * super). A super qualifies only when it is (a) an abstract field, AND (b) a
15
+ * direct child of the metadata root (a package-level declaration) — NOT an
16
+ * abstract field nested inside another object.
17
+ */
18
+ export declare function resolveSharedEnumDecl(field: MetaField): MetaField | undefined;
19
+ /** The shared-enum descriptor a field resolves to, or undefined for inline enums. */
20
+ export declare function sharedEnumForField(field: MetaField): SharedEnum | undefined;
21
+ /**
22
+ * All shared (root-level abstract) enum declarations in the loaded root that are
23
+ * actually CONSUMED by at least one concrete entity field — keyed by the
24
+ * materialized type name. A declaration nobody extends is not materialized (no
25
+ * dangling type). Deterministic order: first-consumption order across entities.
26
+ */
27
+ export declare function collectSharedEnums(root: MetaRoot): Map<string, SharedEnum>;
28
+ /** The shared enums that metaobjects MATERIALIZES (non-@provided, consumed). */
29
+ export declare function materializedSharedEnums(root: MetaRoot): SharedEnum[];
30
+ /** Whether any shared enum (materialized or provided) is consumed in the model. */
31
+ export declare function hasSharedEnums(root: MetaRoot): boolean;
32
+ //# sourceMappingURL=enum-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-shared.d.ts","sourceRoot":"","sources":["../src/enum-shared.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASpE,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,qGAAqG;IACrG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAU7E;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAU3E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAU1E;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAEpE;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,83 @@
1
+ // FR-019 — shared + externally-provided enum resolution.
2
+ //
3
+ // A reusable enum is a ROOT/package-level abstract `field.enum` (a sibling of
4
+ // object.entity) that concrete entity fields `extends`. Per ADR-0026 such a
5
+ // declaration is materialized ONCE per port and referenced, instead of being
6
+ // redeclared inline in every consuming entity file.
7
+ //
8
+ // Two cases on the abstract declaration:
9
+ // • non-@provided → metaobjects MATERIALIZES the type once (a shared module),
10
+ // and consuming fields reference it.
11
+ // • @provided: true → metaobjects emits NOTHING for the type; consuming fields
12
+ // reference an existing hand-written/third-party type, resolved via per-port
13
+ // codegen config (the namespace/module never lives in metadata — ADR-0001).
14
+ //
15
+ // The common inline case (a concrete `field.enum` with @values declared directly,
16
+ // no root-extends) is UNCHANGED — it stays a per-entity `<Entity><Field>` union.
17
+ import { FIELD_SUBTYPE_ENUM, FIELD_ATTR_PROVIDED, TYPE_METADATA, } from "@metaobjectsdev/metadata";
18
+ import { toPascalCase } from "./naming.js";
19
+ import { enumValues } from "./enum-meta.js";
20
+ /**
21
+ * The root-level abstract `field.enum` a concrete enum field resolves to via
22
+ * `extends`, or undefined when the field is an inline enum (no root-abstract
23
+ * super). A super qualifies only when it is (a) an abstract field, AND (b) a
24
+ * direct child of the metadata root (a package-level declaration) — NOT an
25
+ * abstract field nested inside another object.
26
+ */
27
+ export function resolveSharedEnumDecl(field) {
28
+ if (field.subType !== FIELD_SUBTYPE_ENUM)
29
+ return undefined;
30
+ const sup = field.resolveSuper();
31
+ if (sup === undefined)
32
+ return undefined;
33
+ if (!sup.isAbstract)
34
+ return undefined;
35
+ // The declaration must sit at the package/root level (sibling of object.entity),
36
+ // i.e. its parent node is the metadata root.
37
+ const parent = sup.parent;
38
+ if (parent === undefined || parent.type !== TYPE_METADATA)
39
+ return undefined;
40
+ return sup;
41
+ }
42
+ /** The shared-enum descriptor a field resolves to, or undefined for inline enums. */
43
+ export function sharedEnumForField(field) {
44
+ const decl = resolveSharedEnumDecl(field);
45
+ if (decl === undefined)
46
+ return undefined;
47
+ const values = enumValues(field);
48
+ if (values === undefined)
49
+ return undefined;
50
+ return {
51
+ name: toPascalCase(decl.name),
52
+ values,
53
+ provided: decl.ownAttr(FIELD_ATTR_PROVIDED) === true,
54
+ };
55
+ }
56
+ /**
57
+ * All shared (root-level abstract) enum declarations in the loaded root that are
58
+ * actually CONSUMED by at least one concrete entity field — keyed by the
59
+ * materialized type name. A declaration nobody extends is not materialized (no
60
+ * dangling type). Deterministic order: first-consumption order across entities.
61
+ */
62
+ export function collectSharedEnums(root) {
63
+ const out = new Map();
64
+ for (const entity of root.objects()) {
65
+ for (const field of entity.fields()) {
66
+ const shared = sharedEnumForField(field);
67
+ if (shared === undefined)
68
+ continue;
69
+ if (!out.has(shared.name))
70
+ out.set(shared.name, shared);
71
+ }
72
+ }
73
+ return out;
74
+ }
75
+ /** The shared enums that metaobjects MATERIALIZES (non-@provided, consumed). */
76
+ export function materializedSharedEnums(root) {
77
+ return [...collectSharedEnums(root).values()].filter((e) => !e.provided);
78
+ }
79
+ /** Whether any shared enum (materialized or provided) is consumed in the model. */
80
+ export function hasSharedEnums(root) {
81
+ return collectSharedEnums(root).size > 0;
82
+ }
83
+ //# sourceMappingURL=enum-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-shared.js","sourceRoot":"","sources":["../src/enum-shared.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,oDAAoD;AACpD,EAAE;AACF,yCAAyC;AACzC,gFAAgF;AAChF,yCAAyC;AACzC,iFAAiF;AACjF,iFAAiF;AACjF,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AAGjF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAY5C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAgB;IACpD,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACjC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IACtC,iFAAiF;IACjF,6CAA6C;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI;KACrD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS;YACnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,uBAAuB,CAAC,IAAc;IACpD,OAAO,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Generator } from "./generator.js";
2
+ export type GeneratorTier = "native" | "neutral";
3
+ export interface GeneratorRegistryEntry {
4
+ /** Stable, cross-port-consistent id. Equals the registry map key. */
5
+ name: string;
6
+ /** One-line (no newline) human description for `--list`. */
7
+ description: string;
8
+ /** "native" = recommended `meta gen` suite; "neutral" = `meta docs`-owned. */
9
+ tier: GeneratorTier;
10
+ /** Constructs the generator with sensible defaults. Calling it must not throw. */
11
+ factory: () => Generator;
12
+ /** Optional one-line options summary for `--list`. */
13
+ options?: string;
14
+ /** Optional note — used to point neutral entries at their canonical door. */
15
+ note?: string;
16
+ }
17
+ export declare const generatorRegistry: Record<string, GeneratorRegistryEntry>;
18
+ /** All registry entries, native first then neutral, alphabetical within tier. */
19
+ export declare function listGenerators(): GeneratorRegistryEntry[];
20
+ /** Resolve a generator entry by its stable id, or undefined if unknown. */
21
+ export declare function getGenerator(id: string): GeneratorRegistryEntry | undefined;
22
+ //# sourceMappingURL=generator-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-registry.d.ts","sourceRoot":"","sources":["../src/generator-registry.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoBhD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,IAAI,EAAE,aAAa,CAAC;IACpB,kFAAkF;IAClF,OAAO,EAAE,MAAM,SAAS,CAAC;IACzB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAeD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAsHpE,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,cAAc,IAAI,sBAAsB,EAAE,CAQzD;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAE3E"}