@metaobjectsdev/metadata 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 (392) hide show
  1. package/dist/attr-schema-validate.d.ts +1 -1
  2. package/dist/attr-schema-validate.d.ts.map +1 -1
  3. package/dist/attr-schema-validate.js +96 -11
  4. package/dist/attr-schema-validate.js.map +1 -1
  5. package/dist/constraint-merge.d.ts +18 -0
  6. package/dist/constraint-merge.d.ts.map +1 -0
  7. package/dist/constraint-merge.js +0 -0
  8. package/dist/constraint-merge.js.map +1 -0
  9. package/dist/constraint-validate.d.ts +6 -0
  10. package/dist/constraint-validate.d.ts.map +1 -0
  11. package/dist/constraint-validate.js +274 -0
  12. package/dist/constraint-validate.js.map +1 -0
  13. package/dist/core/attr/attr-constants.d.ts +13 -3
  14. package/dist/core/attr/attr-constants.d.ts.map +1 -1
  15. package/dist/core/attr/attr-constants.js +11 -2
  16. package/dist/core/attr/attr-constants.js.map +1 -1
  17. package/dist/core/attr/attr-definition.embedded.d.ts +3 -0
  18. package/dist/core/attr/attr-definition.embedded.d.ts.map +1 -0
  19. package/dist/core/attr/attr-definition.embedded.js +60 -0
  20. package/dist/core/attr/attr-definition.embedded.js.map +1 -0
  21. package/dist/core/documentation/doc-constants.d.ts +3 -2
  22. package/dist/core/documentation/doc-constants.d.ts.map +1 -1
  23. package/dist/core/documentation/doc-constants.js +3 -1
  24. package/dist/core/documentation/doc-constants.js.map +1 -1
  25. package/dist/core/documentation/doc-provider.d.ts.map +1 -1
  26. package/dist/core/documentation/doc-provider.js +6 -2
  27. package/dist/core/documentation/doc-provider.js.map +1 -1
  28. package/dist/core/documentation/documentation-definition.embedded.d.ts +3 -0
  29. package/dist/core/documentation/documentation-definition.embedded.d.ts.map +1 -0
  30. package/dist/core/documentation/documentation-definition.embedded.js +79 -0
  31. package/dist/core/documentation/documentation-definition.embedded.js.map +1 -0
  32. package/dist/core/field/field-constants.d.ts +7 -4
  33. package/dist/core/field/field-constants.d.ts.map +1 -1
  34. package/dist/core/field/field-constants.js +7 -7
  35. package/dist/core/field/field-constants.js.map +1 -1
  36. package/dist/core/field/field-definition.embedded.d.ts +3 -0
  37. package/dist/core/field/field-definition.embedded.d.ts.map +1 -0
  38. package/dist/core/field/field-definition.embedded.js +236 -0
  39. package/dist/core/field/field-definition.embedded.js.map +1 -0
  40. package/dist/core/field/meta-field.d.ts.map +1 -1
  41. package/dist/core/field/meta-field.js +7 -5
  42. package/dist/core/field/meta-field.js.map +1 -1
  43. package/dist/core/identity/identity-constants.d.ts.map +1 -1
  44. package/dist/core/identity/identity-constants.js +3 -0
  45. package/dist/core/identity/identity-constants.js.map +1 -1
  46. package/dist/core/identity/identity-definition.embedded.d.ts +3 -0
  47. package/dist/core/identity/identity-definition.embedded.d.ts.map +1 -0
  48. package/dist/core/identity/identity-definition.embedded.js +93 -0
  49. package/dist/core/identity/identity-definition.embedded.js.map +1 -0
  50. package/dist/core/identity/meta-identity.d.ts.map +1 -1
  51. package/dist/core/identity/meta-identity.js +8 -1
  52. package/dist/core/identity/meta-identity.js.map +1 -1
  53. package/dist/core/identity/validate-identity-passthrough.d.ts +42 -0
  54. package/dist/core/identity/validate-identity-passthrough.d.ts.map +1 -0
  55. package/dist/core/identity/validate-identity-passthrough.js +158 -0
  56. package/dist/core/identity/validate-identity-passthrough.js.map +1 -0
  57. package/dist/core/object/object-constants.d.ts +2 -1
  58. package/dist/core/object/object-constants.d.ts.map +1 -1
  59. package/dist/core/object/object-constants.js +3 -0
  60. package/dist/core/object/object-constants.js.map +1 -1
  61. package/dist/core/object/object-definition.embedded.d.ts +3 -0
  62. package/dist/core/object/object-definition.embedded.d.ts.map +1 -0
  63. package/dist/core/object/object-definition.embedded.js +110 -0
  64. package/dist/core/object/object-definition.embedded.js.map +1 -0
  65. package/dist/core/object/validate-discriminator.d.ts.map +1 -1
  66. package/dist/core/object/validate-discriminator.js +1 -3
  67. package/dist/core/object/validate-discriminator.js.map +1 -1
  68. package/dist/core/query/query-constants.d.ts.map +1 -1
  69. package/dist/core/query/query-constants.js +5 -3
  70. package/dist/core/query/query-constants.js.map +1 -1
  71. package/dist/core/relationship/derive-m2m-fields.d.ts +26 -0
  72. package/dist/core/relationship/derive-m2m-fields.d.ts.map +1 -0
  73. package/dist/core/relationship/derive-m2m-fields.js +102 -0
  74. package/dist/core/relationship/derive-m2m-fields.js.map +1 -0
  75. package/dist/core/relationship/meta-relationship.d.ts +6 -4
  76. package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
  77. package/dist/core/relationship/meta-relationship.js +12 -8
  78. package/dist/core/relationship/meta-relationship.js.map +1 -1
  79. package/dist/core/relationship/relationship-constants.d.ts +6 -2
  80. package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
  81. package/dist/core/relationship/relationship-constants.js +6 -2
  82. package/dist/core/relationship/relationship-constants.js.map +1 -1
  83. package/dist/core/relationship/relationship-definition.embedded.d.ts +3 -0
  84. package/dist/core/relationship/relationship-definition.embedded.d.ts.map +1 -0
  85. package/dist/core/relationship/relationship-definition.embedded.js +310 -0
  86. package/dist/core/relationship/relationship-definition.embedded.js.map +1 -0
  87. package/dist/core/validator/validator-constants.d.ts +14 -1
  88. package/dist/core/validator/validator-constants.d.ts.map +1 -1
  89. package/dist/core/validator/validator-constants.js +20 -1
  90. package/dist/core/validator/validator-constants.js.map +1 -1
  91. package/dist/core/validator/validator-definition.embedded.d.ts +3 -0
  92. package/dist/core/validator/validator-definition.embedded.d.ts.map +1 -0
  93. package/dist/core/validator/validator-definition.embedded.js +255 -0
  94. package/dist/core/validator/validator-definition.embedded.js.map +1 -0
  95. package/dist/core/yaml-desugar.d.ts.map +1 -1
  96. package/dist/core/yaml-desugar.js +88 -10
  97. package/dist/core/yaml-desugar.js.map +1 -1
  98. package/dist/core-types.d.ts +5 -2
  99. package/dist/core-types.d.ts.map +1 -1
  100. package/dist/core-types.js +285 -116
  101. package/dist/core-types.js.map +1 -1
  102. package/dist/errors.d.ts +3 -3
  103. package/dist/errors.d.ts.map +1 -1
  104. package/dist/errors.js +87 -0
  105. package/dist/errors.js.map +1 -1
  106. package/dist/index.d.ts +17 -2
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +26 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/library/embedded-library.generated.d.ts +2 -0
  111. package/dist/library/embedded-library.generated.d.ts.map +1 -0
  112. package/dist/library/embedded-library.generated.js +11 -0
  113. package/dist/library/embedded-library.generated.js.map +1 -0
  114. package/dist/library/library-sources.d.ts +12 -0
  115. package/dist/library/library-sources.d.ts.map +1 -0
  116. package/dist/library/library-sources.js +88 -0
  117. package/dist/library/library-sources.js.map +1 -0
  118. package/dist/loader/meta-data-loader.d.ts +10 -2
  119. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  120. package/dist/loader/meta-data-loader.js +57 -6
  121. package/dist/loader/meta-data-loader.js.map +1 -1
  122. package/dist/loader/shortcuts.d.ts +2 -5
  123. package/dist/loader/shortcuts.d.ts.map +1 -1
  124. package/dist/loader/shortcuts.js.map +1 -1
  125. package/dist/loader/validation-passes.d.ts +3 -0
  126. package/dist/loader/validation-passes.d.ts.map +1 -1
  127. package/dist/loader/validation-passes.js +519 -34
  128. package/dist/loader/validation-passes.js.map +1 -1
  129. package/dist/loader/validation-registry.d.ts +10 -0
  130. package/dist/loader/validation-registry.d.ts.map +1 -0
  131. package/dist/loader/validation-registry.js +84 -0
  132. package/dist/loader/validation-registry.js.map +1 -0
  133. package/dist/metamodel-docs/index.d.ts +19 -0
  134. package/dist/metamodel-docs/index.d.ts.map +1 -0
  135. package/dist/metamodel-docs/index.js +37 -0
  136. package/dist/metamodel-docs/index.js.map +1 -0
  137. package/dist/metamodel-docs/provenance.d.ts +42 -0
  138. package/dist/metamodel-docs/provenance.d.ts.map +1 -0
  139. package/dist/metamodel-docs/provenance.js +148 -0
  140. package/dist/metamodel-docs/provenance.js.map +1 -0
  141. package/dist/metamodel-docs/provider-definitions.d.ts +8 -0
  142. package/dist/metamodel-docs/provider-definitions.d.ts.map +1 -0
  143. package/dist/metamodel-docs/provider-definitions.js +48 -0
  144. package/dist/metamodel-docs/provider-definitions.js.map +1 -0
  145. package/dist/metamodel-docs/render.d.ts +12 -0
  146. package/dist/metamodel-docs/render.d.ts.map +1 -0
  147. package/dist/metamodel-docs/render.js +252 -0
  148. package/dist/metamodel-docs/render.js.map +1 -0
  149. package/dist/naming-refs.d.ts +41 -0
  150. package/dist/naming-refs.d.ts.map +1 -0
  151. package/dist/naming-refs.js +144 -0
  152. package/dist/naming-refs.js.map +1 -0
  153. package/dist/naming.d.ts.map +1 -1
  154. package/dist/naming.js +10 -2
  155. package/dist/naming.js.map +1 -1
  156. package/dist/parser-core.d.ts.map +1 -1
  157. package/dist/parser-core.js +84 -9
  158. package/dist/parser-core.js.map +1 -1
  159. package/dist/persistence/db/db-constants.d.ts +10 -0
  160. package/dist/persistence/db/db-constants.d.ts.map +1 -1
  161. package/dist/persistence/db/db-constants.js +14 -0
  162. package/dist/persistence/db/db-constants.js.map +1 -1
  163. package/dist/persistence/db/db-definition.embedded.d.ts +3 -0
  164. package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -0
  165. package/dist/persistence/db/db-definition.embedded.js +227 -0
  166. package/dist/persistence/db/db-definition.embedded.js.map +1 -0
  167. package/dist/persistence/db/db-provider.d.ts.map +1 -1
  168. package/dist/persistence/db/db-provider.js +13 -18
  169. package/dist/persistence/db/db-provider.js.map +1 -1
  170. package/dist/persistence/origin/origin-definition.embedded.d.ts +3 -0
  171. package/dist/persistence/origin/origin-definition.embedded.d.ts.map +1 -0
  172. package/dist/persistence/origin/origin-definition.embedded.js +88 -0
  173. package/dist/persistence/origin/origin-definition.embedded.js.map +1 -0
  174. package/dist/persistence/source/source-definition.embedded.d.ts +3 -0
  175. package/dist/persistence/source/source-definition.embedded.d.ts.map +1 -0
  176. package/dist/persistence/source/source-definition.embedded.js +17 -0
  177. package/dist/persistence/source/source-definition.embedded.js.map +1 -0
  178. package/dist/persistence/source/validate-source-parameter-ref.d.ts.map +1 -1
  179. package/dist/persistence/source/validate-source-parameter-ref.js +7 -1
  180. package/dist/persistence/source/validate-source-parameter-ref.js.map +1 -1
  181. package/dist/persistence/source/validate-source-roles.d.ts.map +1 -1
  182. package/dist/persistence/source/validate-source-roles.js +16 -1
  183. package/dist/persistence/source/validate-source-roles.js.map +1 -1
  184. package/dist/presentation/layout/layout-definition.embedded.d.ts +3 -0
  185. package/dist/presentation/layout/layout-definition.embedded.d.ts.map +1 -0
  186. package/dist/presentation/layout/layout-definition.embedded.js +16 -0
  187. package/dist/presentation/layout/layout-definition.embedded.js.map +1 -0
  188. package/dist/presentation/ui/ui-definition.embedded.d.ts +3 -0
  189. package/dist/presentation/ui/ui-definition.embedded.d.ts.map +1 -0
  190. package/dist/presentation/ui/ui-definition.embedded.js +114 -0
  191. package/dist/presentation/ui/ui-definition.embedded.js.map +1 -0
  192. package/dist/presentation/ui/ui-provider.d.ts +3 -0
  193. package/dist/presentation/ui/ui-provider.d.ts.map +1 -0
  194. package/dist/presentation/ui/ui-provider.js +21 -0
  195. package/dist/presentation/ui/ui-provider.js.map +1 -0
  196. package/dist/presentation/view/view-definition.embedded.d.ts +3 -0
  197. package/dist/presentation/view/view-definition.embedded.d.ts.map +1 -0
  198. package/dist/presentation/view/view-definition.embedded.js +76 -0
  199. package/dist/presentation/view/view-definition.embedded.js.map +1 -0
  200. package/dist/provider-data.d.ts +184 -0
  201. package/dist/provider-data.d.ts.map +1 -0
  202. package/dist/provider-data.js +271 -0
  203. package/dist/provider-data.js.map +1 -0
  204. package/dist/provider.d.ts +3 -1
  205. package/dist/provider.d.ts.map +1 -1
  206. package/dist/provider.js +15 -1
  207. package/dist/provider.js.map +1 -1
  208. package/dist/registry-coverage.d.ts +99 -0
  209. package/dist/registry-coverage.d.ts.map +1 -0
  210. package/dist/registry-coverage.js +294 -0
  211. package/dist/registry-coverage.js.map +1 -0
  212. package/dist/registry-manifest-exclusions.d.ts +62 -0
  213. package/dist/registry-manifest-exclusions.d.ts.map +1 -0
  214. package/dist/registry-manifest-exclusions.js +163 -0
  215. package/dist/registry-manifest-exclusions.js.map +1 -0
  216. package/dist/registry-manifest.d.ts +117 -0
  217. package/dist/registry-manifest.d.ts.map +1 -0
  218. package/dist/registry-manifest.js +242 -0
  219. package/dist/registry-manifest.js.map +1 -0
  220. package/dist/registry.d.ts +76 -2
  221. package/dist/registry.d.ts.map +1 -1
  222. package/dist/registry.js +37 -1
  223. package/dist/registry.js.map +1 -1
  224. package/dist/shared/structural.d.ts +7 -0
  225. package/dist/shared/structural.d.ts.map +1 -1
  226. package/dist/shared/structural.js +7 -0
  227. package/dist/shared/structural.js.map +1 -1
  228. package/dist/subtype-rules.d.ts.map +1 -1
  229. package/dist/subtype-rules.js +97 -13
  230. package/dist/subtype-rules.js.map +1 -1
  231. package/dist/super-resolve.d.ts +49 -2
  232. package/dist/super-resolve.d.ts.map +1 -1
  233. package/dist/super-resolve.js +128 -43
  234. package/dist/super-resolve.js.map +1 -1
  235. package/dist/template/meta-template.d.ts +3 -2
  236. package/dist/template/meta-template.d.ts.map +1 -1
  237. package/dist/template/meta-template.js +3 -2
  238. package/dist/template/meta-template.js.map +1 -1
  239. package/dist/template/prompt-definition.embedded.d.ts +3 -0
  240. package/dist/template/prompt-definition.embedded.d.ts.map +1 -0
  241. package/dist/template/prompt-definition.embedded.js +368 -0
  242. package/dist/template/prompt-definition.embedded.js.map +1 -0
  243. package/dist/template/prompt-provider.d.ts +3 -0
  244. package/dist/template/prompt-provider.d.ts.map +1 -0
  245. package/dist/template/prompt-provider.js +25 -0
  246. package/dist/template/prompt-provider.js.map +1 -0
  247. package/dist/template/template-constants.d.ts +2 -0
  248. package/dist/template/template-constants.d.ts.map +1 -1
  249. package/dist/template/template-constants.js +7 -0
  250. package/dist/template/template-constants.js.map +1 -1
  251. package/dist/template/template-definition.embedded.d.ts +3 -0
  252. package/dist/template/template-definition.embedded.d.ts.map +1 -0
  253. package/dist/template/template-definition.embedded.js +30 -0
  254. package/dist/template/template-definition.embedded.js.map +1 -0
  255. package/dist/validate-max-occurs.d.ts +5 -0
  256. package/dist/validate-max-occurs.d.ts.map +1 -0
  257. package/dist/validate-max-occurs.js +28 -0
  258. package/dist/validate-max-occurs.js.map +1 -0
  259. package/dist/validation-types.d.ts +36 -0
  260. package/dist/validation-types.d.ts.map +1 -0
  261. package/dist/validation-types.js +7 -0
  262. package/dist/validation-types.js.map +1 -0
  263. package/package.json +33 -22
  264. package/src/attr-schema-validate.ts +108 -8
  265. package/src/constraint-merge.ts +0 -0
  266. package/src/constraint-validate.ts +363 -0
  267. package/src/core/attr/attr-constants.ts +15 -3
  268. package/src/core/attr/attr-definition.embedded.ts +67 -0
  269. package/src/core/documentation/doc-constants.ts +3 -1
  270. package/src/core/documentation/doc-provider.ts +6 -2
  271. package/src/core/documentation/documentation-definition.embedded.ts +86 -0
  272. package/src/core/field/field-constants.ts +8 -7
  273. package/src/core/field/field-definition.embedded.ts +243 -0
  274. package/src/core/field/meta-field.ts +6 -7
  275. package/src/core/identity/identity-constants.ts +4 -0
  276. package/src/core/identity/identity-definition.embedded.ts +100 -0
  277. package/src/core/identity/meta-identity.ts +8 -1
  278. package/src/core/identity/validate-identity-passthrough.ts +194 -0
  279. package/src/core/object/object-constants.ts +3 -0
  280. package/src/core/object/object-definition.embedded.ts +117 -0
  281. package/src/core/object/validate-discriminator.ts +0 -4
  282. package/src/core/query/query-constants.ts +5 -3
  283. package/src/core/relationship/derive-m2m-fields.ts +145 -0
  284. package/src/core/relationship/meta-relationship.ts +15 -9
  285. package/src/core/relationship/relationship-constants.ts +6 -2
  286. package/src/core/relationship/relationship-definition.embedded.ts +317 -0
  287. package/src/core/validator/validator-constants.ts +22 -1
  288. package/src/core/validator/validator-definition.embedded.ts +262 -0
  289. package/src/core/yaml-desugar.ts +96 -7
  290. package/src/core-types.ts +314 -150
  291. package/src/errors.ts +89 -2
  292. package/src/index.ts +47 -2
  293. package/src/library/embedded-library.generated.ts +10 -0
  294. package/src/library/library-sources.ts +97 -0
  295. package/src/loader/meta-data-loader.ts +78 -7
  296. package/src/loader/shortcuts.ts +2 -2
  297. package/src/loader/validation-passes.ts +690 -34
  298. package/src/loader/validation-registry.ts +93 -0
  299. package/src/metamodel-docs/index.ts +41 -0
  300. package/src/metamodel-docs/provenance.ts +187 -0
  301. package/src/metamodel-docs/provider-definitions.ts +50 -0
  302. package/src/metamodel-docs/render.ts +309 -0
  303. package/src/naming-refs.ts +162 -0
  304. package/src/naming.ts +10 -2
  305. package/src/parser-core.ts +96 -9
  306. package/src/persistence/db/db-constants.ts +16 -0
  307. package/src/persistence/db/db-definition.embedded.ts +234 -0
  308. package/src/persistence/db/db-provider.ts +13 -18
  309. package/src/persistence/origin/origin-definition.embedded.ts +95 -0
  310. package/src/persistence/source/source-definition.embedded.ts +24 -0
  311. package/src/persistence/source/validate-source-parameter-ref.ts +7 -1
  312. package/src/persistence/source/validate-source-roles.ts +22 -1
  313. package/src/presentation/layout/layout-definition.embedded.ts +23 -0
  314. package/src/presentation/ui/ui-definition.embedded.ts +121 -0
  315. package/src/presentation/ui/ui-provider.ts +25 -0
  316. package/src/presentation/view/view-definition.embedded.ts +83 -0
  317. package/src/provider-data.ts +463 -0
  318. package/src/provider.ts +18 -0
  319. package/src/registry-coverage.ts +430 -0
  320. package/src/registry-manifest-exclusions.ts +176 -0
  321. package/src/registry-manifest.ts +334 -0
  322. package/src/registry.ts +106 -3
  323. package/src/shared/structural.ts +8 -0
  324. package/src/subtype-rules.ts +135 -18
  325. package/src/super-resolve.ts +153 -43
  326. package/src/template/meta-template.ts +3 -2
  327. package/src/template/prompt-definition.embedded.ts +375 -0
  328. package/src/template/prompt-provider.ts +29 -0
  329. package/src/template/template-constants.ts +8 -0
  330. package/src/template/template-definition.embedded.ts +37 -0
  331. package/src/validate-max-occurs.ts +39 -0
  332. package/src/validation-types.ts +57 -0
  333. package/dist/core/documentation/doc-schema.d.ts +0 -8
  334. package/dist/core/documentation/doc-schema.d.ts.map +0 -1
  335. package/dist/core/documentation/doc-schema.js +0 -53
  336. package/dist/core/documentation/doc-schema.js.map +0 -1
  337. package/dist/core/field/field-schema.d.ts +0 -22
  338. package/dist/core/field/field-schema.d.ts.map +0 -1
  339. package/dist/core/field/field-schema.js +0 -171
  340. package/dist/core/field/field-schema.js.map +0 -1
  341. package/dist/core/identity/identity-schema.d.ts +0 -6
  342. package/dist/core/identity/identity-schema.d.ts.map +0 -1
  343. package/dist/core/identity/identity-schema.js +0 -55
  344. package/dist/core/identity/identity-schema.js.map +0 -1
  345. package/dist/core/object/object-schema.d.ts +0 -4
  346. package/dist/core/object/object-schema.d.ts.map +0 -1
  347. package/dist/core/object/object-schema.js +0 -28
  348. package/dist/core/object/object-schema.js.map +0 -1
  349. package/dist/core/relationship/relationship-schema.d.ts +0 -4
  350. package/dist/core/relationship/relationship-schema.d.ts.map +0 -1
  351. package/dist/core/relationship/relationship-schema.js +0 -51
  352. package/dist/core/relationship/relationship-schema.js.map +0 -1
  353. package/dist/core/validator/validator-schema.d.ts +0 -4
  354. package/dist/core/validator/validator-schema.d.ts.map +0 -1
  355. package/dist/core/validator/validator-schema.js +0 -38
  356. package/dist/core/validator/validator-schema.js.map +0 -1
  357. package/dist/persistence/db/db-schema.d.ts +0 -14
  358. package/dist/persistence/db/db-schema.d.ts.map +0 -1
  359. package/dist/persistence/db/db-schema.js +0 -35
  360. package/dist/persistence/db/db-schema.js.map +0 -1
  361. package/dist/persistence/origin/origin-schema.d.ts +0 -4
  362. package/dist/persistence/origin/origin-schema.d.ts.map +0 -1
  363. package/dist/persistence/origin/origin-schema.js +0 -59
  364. package/dist/persistence/origin/origin-schema.js.map +0 -1
  365. package/dist/persistence/source/source-schema.d.ts +0 -4
  366. package/dist/persistence/source/source-schema.d.ts.map +0 -1
  367. package/dist/persistence/source/source-schema.js +0 -98
  368. package/dist/persistence/source/source-schema.js.map +0 -1
  369. package/dist/presentation/layout/layout-schema.d.ts +0 -4
  370. package/dist/presentation/layout/layout-schema.d.ts.map +0 -1
  371. package/dist/presentation/layout/layout-schema.js +0 -46
  372. package/dist/presentation/layout/layout-schema.js.map +0 -1
  373. package/dist/presentation/view/view-schema.d.ts +0 -4
  374. package/dist/presentation/view/view-schema.d.ts.map +0 -1
  375. package/dist/presentation/view/view-schema.js +0 -15
  376. package/dist/presentation/view/view-schema.js.map +0 -1
  377. package/dist/template/template-schema.d.ts +0 -3
  378. package/dist/template/template-schema.d.ts.map +0 -1
  379. package/dist/template/template-schema.js +0 -173
  380. package/dist/template/template-schema.js.map +0 -1
  381. package/src/core/documentation/doc-schema.ts +0 -64
  382. package/src/core/field/field-schema.ts +0 -228
  383. package/src/core/identity/identity-schema.ts +0 -80
  384. package/src/core/object/object-schema.ts +0 -35
  385. package/src/core/relationship/relationship-schema.ts +0 -67
  386. package/src/core/validator/validator-schema.ts +0 -50
  387. package/src/persistence/db/db-schema.ts +0 -50
  388. package/src/persistence/origin/origin-schema.ts +0 -80
  389. package/src/persistence/source/source-schema.ts +0 -129
  390. package/src/presentation/layout/layout-schema.ts +0 -62
  391. package/src/presentation/view/view-schema.ts +0 -21
  392. package/src/template/template-schema.ts +0 -211
@@ -0,0 +1,184 @@
1
+ import type { AttrSchema, TypeDefinition, TypeRegistry } from "./registry.js";
2
+ import { TypeId } from "./registry.js";
3
+ import type { MetaData } from "./shared/meta-data.js";
4
+ /**
5
+ * A UNIFIED child requirement (spec §3.1). Every constraint on a type — both its
6
+ * structural children AND its attributes — is one of these entries in a single
7
+ * `children` list, distinguished by `type`:
8
+ *
9
+ * - an **attribute** is a `{ type: "attr", … }` entry. Its `subType` is the
10
+ * attr's value-type (a single subtype — never a list), `max` is always 1
11
+ * (single-valued; a list-valued attr sets `isArray: true`), and it carries the
12
+ * attr-only facets `default` / `allowedValues` / `isArray`.
13
+ * - a **structural child** (`field`/`identity`/`source`/`validator`/…) carries
14
+ * full cardinality (`min`/`max`, `max: null` = unbounded) and may admit any of
15
+ * several subtypes via a `subType` list.
16
+ *
17
+ * `type` / `subType` / `name` accept the `"*"` wildcard.
18
+ */
19
+ export interface ChildDef {
20
+ /** Child type, or `"*"` for any. For attrs this is the literal `"attr"`. */
21
+ type: string;
22
+ /**
23
+ * Child subtype: a single subtype, a list of admitted subtypes, or `"*"`.
24
+ * For an `attr` entry this is the attr's value-type and MUST be a single
25
+ * subtype (a list is invalid for attrs). Optional on an `attr` entry: an
26
+ * omitted `subType` declares a polymorphic/untyped attr (e.g. `@default`,
27
+ * whose value-type follows the owning field's subtype). A structural child
28
+ * always supplies a `subType` (or `"*"`).
29
+ */
30
+ subType?: string | readonly string[];
31
+ /** Child name, or `"*"` for any. */
32
+ name: string;
33
+ /** Cardinality lower bound. An attr is required iff `min >= 1`. */
34
+ min: number;
35
+ /** Cardinality upper bound; `null` = unbounded. For an attr this is 1. */
36
+ max: number | null;
37
+ /** Whether the child must carry an explicit name. */
38
+ named?: boolean;
39
+ description?: string;
40
+ /** Prose documenting the complex rules enforced in code. */
41
+ rules?: string;
42
+ /** An example value/usage, shown only in the provider detail page. */
43
+ example?: string;
44
+ /** Guidance on when to reach for this child/attr. */
45
+ whenToUse?: string;
46
+ /** Default value applied when the attr is absent. */
47
+ default?: unknown;
48
+ /** Closed enum of allowed values. */
49
+ allowedValues?: readonly unknown[];
50
+ /** Whether the attr is array-valued (the only way an attr's `max` may be > 1). */
51
+ isArray?: boolean;
52
+ }
53
+ /**
54
+ * A declarative type/subtype definition (spec §3). The `factory` is NOT here — it
55
+ * is code, supplied via the `FactoryMap`. An attribute is a `type: "attr"` entry
56
+ * inside `children`; structural children are the non-`"attr"` entries.
57
+ */
58
+ export interface TypeDef {
59
+ type: string;
60
+ subType: string;
61
+ description: string;
62
+ dataType?: string;
63
+ rules?: string;
64
+ example?: string;
65
+ whenToUse?: string;
66
+ /** Unified children list: attrs (`type: "attr"`) + structural children. */
67
+ children?: ChildDef[];
68
+ /** Child-side placement: the `type.subType`s under which this type is allowed. */
69
+ parents?: readonly string[];
70
+ /**
71
+ * FR-033 base-composition opt-in. When `true` (and this is a non-base subtype),
72
+ * the subtype additively inherits its `<type>.base`'s attrs (dedup by name) and
73
+ * childRules (dedup structurally) — letting the JSON declare per-type-universal
74
+ * rules once on `base`. Default/absent = OFF, so a subtype that deliberately
75
+ * declares FEWER attrs than base (e.g. `validator.required`, which wants no
76
+ * `min`/`max`) is never silently widened. Opted in per-subtype in S1; inert (no
77
+ * registered output change) under S0.
78
+ */
79
+ extendsBase?: boolean;
80
+ /**
81
+ * Max number of children of this `type.subType` permitted under one parent.
82
+ * `1` marks a singleton child (e.g. `identity.primary` — one per entity). The
83
+ * loader enforces it. A singleton is the ONLY place a static `defaultName` is
84
+ * safe (no sibling can collide), so `defaultName` is honored only when
85
+ * `maxOccurs === 1`. Absent = unbounded.
86
+ */
87
+ maxOccurs?: number;
88
+ /**
89
+ * Author-omittable name for a singleton child. When a node of this type is
90
+ * declared with no `name` AND `maxOccurs === 1`, the loader assigns
91
+ * `defaultName` (e.g. `identity.primary` → `"primary"`). Keeps the one-and-only
92
+ * node addressable (`Entity.primary`) without forcing a hand-written name.
93
+ */
94
+ defaultName?: string;
95
+ }
96
+ /**
97
+ * FR-033 S1.5 — a declarative `registry.extend` directive. A **concern** provider
98
+ * (db / ui / prompt) does NOT register new `type.subType`s; it ADDS attrs to types
99
+ * an upstream provider (core) already registered. This entry is the data form of a
100
+ * `registry.extend(type, sub, { attributes })` call: `subType` selects the target
101
+ * subtype(s) and `children` are the `type: "attr"` entries (→ `AttrSchema`) to add.
102
+ */
103
+ export interface ExtendDef {
104
+ /** Target type whose subtype(s) are extended (e.g. `"field"`, `"source"`). */
105
+ type: string;
106
+ /**
107
+ * Target subtype(s): a single subtype name, a LIST of subtype names, or the
108
+ * `"*"` wildcard (= every currently-registered subtype of `type`). Resolved at
109
+ * apply time against the registry.
110
+ */
111
+ subType: string | readonly string[];
112
+ /**
113
+ * Attrs to add to each resolved target. Concern providers add attrs only — these
114
+ * must all be `type: "attr"` entries (lowered via `toAttrSchema`). A structural
115
+ * child here is rejected (concern providers do not contribute child rules).
116
+ */
117
+ children: ChildDef[];
118
+ }
119
+ export interface ProviderDefinition {
120
+ /** Owning provider id (groups doc pages). */
121
+ provider: string;
122
+ /**
123
+ * The provider's type definitions. ONE entry may be the **universal** `*.*`
124
+ * entry (`type: "*", subType: "*"`): it is NOT a registered type — its named
125
+ * `attr` children are COMMON attributes (accepted on every node, registered via
126
+ * `registry.registerCommonAttrs`). Every other entry is a real `type.subType`.
127
+ * Optional — a concern (extends-only) provider declares no new types and may
128
+ * omit this entirely (it carries only `extends`).
129
+ */
130
+ types?: TypeDef[];
131
+ /**
132
+ * FR-033 S1.5 — DATA-DRIVEN `registry.extend` directives. A **concern** provider
133
+ * (db / ui / prompt) declares no new types; it reads its attrs from data and ADDS
134
+ * them to already-registered types via these entries. Applied AFTER `types` in
135
+ * `applyProviderDefinition`. Optional — a provider with only `types` is unaffected.
136
+ */
137
+ extends?: ExtendDef[];
138
+ }
139
+ /**
140
+ * The code half of the data/code boundary: a `"<type>.<subType>"` → factory map.
141
+ * The factory constructs the node instance; it stays code (behavior).
142
+ */
143
+ export type FactoryMap = Record<string, (typeId: TypeId, name: string) => MetaData>;
144
+ /**
145
+ * Turn a declarative `ProviderDefinition` + a code-supplied factory map into the
146
+ * `TypeDefinition`s a provider passes to `registry.register()`.
147
+ *
148
+ * For each real `TypeDef` (every entry EXCEPT the universal `*.*` entry, which
149
+ * carries common attrs and is handled by `applyProviderDefinition`): look up its
150
+ * factory (throws if missing); fan its `children` out so `type: "attr"` entries
151
+ * become `AttrSchema`s and structural entries become `ChildRule`s; carry `parents`
152
+ * and the optional `rules`/`example`/`whenToUse` doc fields through onto the
153
+ * returned `TypeDefinition`.
154
+ *
155
+ * BASE-COMPOSITION (FR-033): a non-base subtype that opts in via
156
+ * `extendsBase: true` additively inherits its `<type>.base`'s `attributes` (dedup
157
+ * by name) and `childRules` (dedup structurally) — letting a JSON declare
158
+ * universal-per-type rules once on `base`. Purely additive (a subtype's own
159
+ * declarations win on a name/shape collision). OFF by default so a subtype that
160
+ * deliberately declares fewer attrs than base is never widened — inert under S0
161
+ * (no provider opts in yet), the rail S1 will use.
162
+ *
163
+ * Builder-local validation (cheap, structural): an attr entry must be
164
+ * single-valued (`max === 1`) unless `isArray`; an attr entry's `subType` must be
165
+ * a single subtype (not a list); every child must have `min >= 0` and
166
+ * (`max === null || max >= min`).
167
+ */
168
+ export declare function defineProviderFromData(data: ProviderDefinition, factories: FactoryMap): TypeDefinition[];
169
+ /**
170
+ * Apply a `ProviderDefinition` to a registry via the ONE uniform path: register
171
+ * every real `type.subType` (with base-composition) AND register the universal
172
+ * `*.*` entry's named `attr` children as COMMON attrs. This replaces the bespoke
173
+ * `commonAttrs` helper — documentation rides the same mechanism as every other
174
+ * provider.
175
+ */
176
+ export declare function applyProviderDefinition(registry: TypeRegistry, data: ProviderDefinition, factories: FactoryMap): void;
177
+ /**
178
+ * Lower the universal `*.*` entry's named `attr` children into `AttrSchema[]` for
179
+ * `registry.registerCommonAttrs(...)`. Returns `[]` when no `*.*` entry is present.
180
+ * Same field mapping as `toAttrSchema`. Exported for callers that register common
181
+ * attrs themselves; `applyProviderDefinition` is the usual door.
182
+ */
183
+ export declare function universalCommonAttrs(data: ProviderDefinition): AttrSchema[];
184
+ //# sourceMappingURL=provider-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-data.d.ts","sourceRoot":"","sources":["../src/provider-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ // FR-033 — provider definitions as declarative data.
2
+ //
3
+ // A provider's *declarative* metamodel definition (vocabulary + attr constraints
4
+ // + child cardinality + descriptions + rule prose) lives as data; the factory
5
+ // (behavior) is supplied separately. `defineProviderFromData` turns that data +
6
+ // a code-supplied factory map into the `TypeDefinition`s a provider passes to
7
+ // `registry.register()`. This is the data/code boundary: declarative facts and
8
+ // rule *prose* are data; factories, imperative validation, and codegen stay code.
9
+ //
10
+ // See spec/superpowers/specs/2026-06-13-metamodel-self-description-design.md §3 +
11
+ // §3.1 (the constraint model). This module implements Plan Task 1, Task 2, and
12
+ // the format half of Task 7.
13
+ import { TypeId } from "./registry.js";
14
+ import { CHILD_RULE_WILDCARD } from "./shared/structural.js";
15
+ import { SUBTYPE_BASE } from "./shared/base-types.js";
16
+ const ATTR_CHILD_TYPE = "attr";
17
+ /** Whether a `ChildDef` declares an attribute (vs a structural child). */
18
+ function isAttrChild(child) {
19
+ return child.type === ATTR_CHILD_TYPE;
20
+ }
21
+ /**
22
+ * Whether a `TypeDef` is the UNIVERSAL `*.*` entry — the carrier for COMMON
23
+ * attributes (attrs accepted on EVERY node). It is NOT a real registered type;
24
+ * its named `attr` children are routed to `registry.registerCommonAttrs(...)` by
25
+ * the unified apply path. Documentation uses this; ordinary providers do not.
26
+ */
27
+ function isUniversalEntry(t) {
28
+ return t.type === CHILD_RULE_WILDCARD && t.subType === CHILD_RULE_WILDCARD;
29
+ }
30
+ /**
31
+ * Turn a declarative `ProviderDefinition` + a code-supplied factory map into the
32
+ * `TypeDefinition`s a provider passes to `registry.register()`.
33
+ *
34
+ * For each real `TypeDef` (every entry EXCEPT the universal `*.*` entry, which
35
+ * carries common attrs and is handled by `applyProviderDefinition`): look up its
36
+ * factory (throws if missing); fan its `children` out so `type: "attr"` entries
37
+ * become `AttrSchema`s and structural entries become `ChildRule`s; carry `parents`
38
+ * and the optional `rules`/`example`/`whenToUse` doc fields through onto the
39
+ * returned `TypeDefinition`.
40
+ *
41
+ * BASE-COMPOSITION (FR-033): a non-base subtype that opts in via
42
+ * `extendsBase: true` additively inherits its `<type>.base`'s `attributes` (dedup
43
+ * by name) and `childRules` (dedup structurally) — letting a JSON declare
44
+ * universal-per-type rules once on `base`. Purely additive (a subtype's own
45
+ * declarations win on a name/shape collision). OFF by default so a subtype that
46
+ * deliberately declares fewer attrs than base is never widened — inert under S0
47
+ * (no provider opts in yet), the rail S1 will use.
48
+ *
49
+ * Builder-local validation (cheap, structural): an attr entry must be
50
+ * single-valued (`max === 1`) unless `isArray`; an attr entry's `subType` must be
51
+ * a single subtype (not a list); every child must have `min >= 0` and
52
+ * (`max === null || max >= min`).
53
+ */
54
+ export function defineProviderFromData(data, factories) {
55
+ // Pre-compute each type's OWN lowered attrs + childRules, keyed by "type.subType",
56
+ // so base-composition can fold a base's contributions into its subtypes. A
57
+ // concern (extends-only) provider may omit `types` entirely.
58
+ const realTypes = (data.types ?? []).filter((t) => !isUniversalEntry(t));
59
+ const lowered = new Map();
60
+ for (const t of realTypes) {
61
+ const key = `${t.type}.${t.subType}`;
62
+ const attributes = [];
63
+ const childRules = [];
64
+ for (const child of t.children ?? []) {
65
+ validateCardinality(data.provider, key, child);
66
+ if (isAttrChild(child)) {
67
+ attributes.push(toAttrSchema(data.provider, key, child));
68
+ }
69
+ else {
70
+ childRules.push(toChildRule(child));
71
+ }
72
+ }
73
+ lowered.set(key, { attributes, childRules });
74
+ }
75
+ return realTypes.map((t) => {
76
+ const key = `${t.type}.${t.subType}`;
77
+ const factory = factories[key];
78
+ if (factory === undefined) {
79
+ throw new Error(`defineProviderFromData(${data.provider}): no factory for "${key}"`);
80
+ }
81
+ const self = lowered.get(key);
82
+ const { attributes, childRules } = composeWithBase(t, self, lowered);
83
+ return {
84
+ typeId: new TypeId(t.type, t.subType),
85
+ description: t.description,
86
+ factory,
87
+ childRules,
88
+ attributes,
89
+ ...(t.dataType !== undefined ? { dataType: t.dataType } : {}),
90
+ ...(t.parents !== undefined ? { parents: t.parents } : {}),
91
+ ...(t.rules !== undefined ? { rules: t.rules } : {}),
92
+ ...(t.example !== undefined ? { example: t.example } : {}),
93
+ ...(t.whenToUse !== undefined ? { whenToUse: t.whenToUse } : {}),
94
+ ...(t.maxOccurs !== undefined ? { maxOccurs: t.maxOccurs } : {}),
95
+ ...(t.defaultName !== undefined ? { defaultName: t.defaultName } : {}),
96
+ };
97
+ });
98
+ }
99
+ /**
100
+ * Apply a `ProviderDefinition` to a registry via the ONE uniform path: register
101
+ * every real `type.subType` (with base-composition) AND register the universal
102
+ * `*.*` entry's named `attr` children as COMMON attrs. This replaces the bespoke
103
+ * `commonAttrs` helper — documentation rides the same mechanism as every other
104
+ * provider.
105
+ */
106
+ export function applyProviderDefinition(registry, data, factories) {
107
+ for (const def of defineProviderFromData(data, factories)) {
108
+ registry.register(def);
109
+ }
110
+ const commonAttrs = universalCommonAttrs(data);
111
+ if (commonAttrs.length > 0) {
112
+ registry.registerCommonAttrs(commonAttrs);
113
+ }
114
+ applyExtends(registry, data);
115
+ }
116
+ /**
117
+ * Apply a definition's `extends` directives (FR-033 S1.5) via `registry.extend`.
118
+ * For each directive: resolve the target subtypes (`"*"` → every registered subtype
119
+ * of the type; a list → each named subtype; a string → that one), lower its `attr`
120
+ * children to `AttrSchema[]`, and `registry.extend(type, sub, { attributes })`.
121
+ * Concern providers contribute attrs only — a non-`attr` child is rejected.
122
+ */
123
+ function applyExtends(registry, data) {
124
+ for (const ext of data.extends ?? []) {
125
+ const attributes = [];
126
+ for (const child of ext.children) {
127
+ if (!isAttrChild(child)) {
128
+ throw new Error(`applyProviderDefinition(${data.provider}): extends "${ext.type}" may only carry attr ` +
129
+ `children; found a structural child "${child.type}".`);
130
+ }
131
+ validateCardinality(data.provider, ext.type, child);
132
+ attributes.push(toAttrSchema(data.provider, ext.type, child));
133
+ }
134
+ for (const subType of resolveExtendSubTypes(registry, ext)) {
135
+ registry.extend(ext.type, subType, { attributes });
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * Resolve an `ExtendDef`'s `subType` selector to concrete subtype names:
141
+ * - `"*"` → every currently-registered subtype of `ext.type`;
142
+ * - a list → each named subtype, in declared order;
143
+ * - a single string → that one subtype.
144
+ */
145
+ function resolveExtendSubTypes(registry, ext) {
146
+ if (ext.subType === CHILD_RULE_WILDCARD) {
147
+ return registry.allSubTypesOf(ext.type);
148
+ }
149
+ return Array.isArray(ext.subType) ? ext.subType : [ext.subType];
150
+ }
151
+ /**
152
+ * Lower the universal `*.*` entry's named `attr` children into `AttrSchema[]` for
153
+ * `registry.registerCommonAttrs(...)`. Returns `[]` when no `*.*` entry is present.
154
+ * Same field mapping as `toAttrSchema`. Exported for callers that register common
155
+ * attrs themselves; `applyProviderDefinition` is the usual door.
156
+ */
157
+ export function universalCommonAttrs(data) {
158
+ const universal = (data.types ?? []).find(isUniversalEntry);
159
+ if (universal === undefined)
160
+ return [];
161
+ const key = `${universal.type}.${universal.subType}`;
162
+ const out = [];
163
+ for (const child of universal.children ?? []) {
164
+ if (!isAttrChild(child)) {
165
+ throw new Error(`applyProviderDefinition(${data.provider}): the universal "${key}" entry may only ` +
166
+ `carry attr children (common attrs); found a structural child "${child.type}".`);
167
+ }
168
+ validateCardinality(data.provider, key, child);
169
+ out.push(toAttrSchema(data.provider, key, child));
170
+ }
171
+ return out;
172
+ }
173
+ /**
174
+ * Fold a real `TypeDef`'s OWN lowered attrs/childRules with its `<type>.base`'s
175
+ * (when the definition declares one and this subtype is not itself `base`).
176
+ * Additive: own entries win on a name (attr) / structural-shape (rule) collision;
177
+ * base entries the subtype lacks are appended. A NO-OP when there is no base in
178
+ * THIS definition, or when the subtype already declares the full base set.
179
+ */
180
+ function composeWithBase(t, self, lowered) {
181
+ // OFF by default (S0): a subtype inherits its base only when it opts in via
182
+ // `extendsBase: true`. Keeps the current canonical byte-identical — no provider
183
+ // sets it yet — while the rail is in place for S1.
184
+ if (t.extendsBase !== true)
185
+ return self;
186
+ if (t.subType === SUBTYPE_BASE)
187
+ return self;
188
+ const base = lowered.get(`${t.type}.${SUBTYPE_BASE}`);
189
+ if (base === undefined)
190
+ return self;
191
+ const attributes = [...self.attributes];
192
+ const haveAttr = new Set(attributes.map((a) => a.name));
193
+ for (const baseAttr of base.attributes) {
194
+ if (!haveAttr.has(baseAttr.name)) {
195
+ attributes.push(baseAttr);
196
+ haveAttr.add(baseAttr.name);
197
+ }
198
+ }
199
+ const childRules = [...self.childRules];
200
+ const haveRule = new Set(childRules.map(childRuleId));
201
+ for (const baseRule of base.childRules) {
202
+ const id = childRuleId(baseRule);
203
+ if (!haveRule.has(id)) {
204
+ childRules.push(baseRule);
205
+ haveRule.add(id);
206
+ }
207
+ }
208
+ return { attributes, childRules };
209
+ }
210
+ /** A stable structural identity for a ChildRule (base-composition dedup). */
211
+ function childRuleId(rule) {
212
+ const sub = typeof rule.childSubType === "string"
213
+ ? rule.childSubType
214
+ : [...rule.childSubType].sort().join("|");
215
+ return [
216
+ rule.childType,
217
+ sub,
218
+ rule.childName,
219
+ rule.min ?? "",
220
+ rule.max === null ? "null" : (rule.max ?? ""),
221
+ rule.named ?? "",
222
+ ].join(" ");
223
+ }
224
+ /** Validate the min/max axis (and attr single-valuedness) for one child entry. */
225
+ function validateCardinality(provider, typeKey, child) {
226
+ if (child.min < 0) {
227
+ throw new Error(`defineProviderFromData(${provider}): child "${child.name}" on "${typeKey}" has min ${child.min} < 0.`);
228
+ }
229
+ if (child.max !== null && child.max < child.min) {
230
+ throw new Error(`defineProviderFromData(${provider}): child "${child.name}" on "${typeKey}" has max ${child.max} < min ${child.min}.`);
231
+ }
232
+ if (isAttrChild(child) && child.max !== 1 && child.isArray !== true) {
233
+ throw new Error(`defineProviderFromData(${provider}): attr "${child.name}" on "${typeKey}" is single-valued ` +
234
+ `(max must be 1; a list-valued attr sets isArray: true).`);
235
+ }
236
+ }
237
+ /** An `type: "attr"` child entry IS an `AttrSchema`. */
238
+ function toAttrSchema(provider, typeKey, child) {
239
+ if (Array.isArray(child.subType)) {
240
+ throw new Error(`defineProviderFromData(${provider}): attr "${child.name}" on "${typeKey}" declares a list subType ` +
241
+ `— an attr's value-type is a single subtype.`);
242
+ }
243
+ return {
244
+ name: child.name,
245
+ ...(child.subType !== undefined ? { valueType: child.subType } : {}),
246
+ ...(child.isArray !== undefined ? { isArray: child.isArray } : {}),
247
+ required: child.min >= 1,
248
+ ...(child.default !== undefined ? { default: child.default } : {}),
249
+ ...(child.allowedValues !== undefined
250
+ ? { allowedValues: child.allowedValues }
251
+ : {}),
252
+ description: child.description ?? "",
253
+ ...(child.rules !== undefined ? { rules: child.rules } : {}),
254
+ ...(child.example !== undefined ? { example: child.example } : {}),
255
+ ...(child.whenToUse !== undefined ? { whenToUse: child.whenToUse } : {}),
256
+ };
257
+ }
258
+ /** A structural (`type !== "attr"`) child entry IS a `ChildRule`. */
259
+ function toChildRule(child) {
260
+ return {
261
+ childType: child.type,
262
+ // A structural child always supplies a subType; default to the `"*"`
263
+ // wildcard if (unusually) omitted, so the rule stays well-formed.
264
+ childSubType: child.subType ?? CHILD_RULE_WILDCARD,
265
+ childName: child.name,
266
+ min: child.min,
267
+ max: child.max,
268
+ ...(child.named !== undefined ? { named: child.named } : {}),
269
+ };
270
+ }
271
+ //# sourceMappingURL=provider-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-data.js","sourceRoot":"","sources":["../src/provider-data.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,7 @@ export interface MetaDataTypeProvider {
16
16
  * ordering constraint between them keep input order. Throws on a duplicate
17
17
  * provider id, a missing dependency, or a dependency cycle.
18
18
  */
19
- export declare function composeRegistry(providers: readonly MetaDataTypeProvider[]): TypeRegistry;
19
+ export declare function composeRegistry(providers: readonly MetaDataTypeProvider[], opts?: {
20
+ validate?: boolean;
21
+ }): TypeRegistry;
20
22
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,YAAY,CAOd"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,YAAY,CAsBd"}
package/dist/provider.js CHANGED
@@ -6,18 +6,32 @@
6
6
  // composeRegistry. See docs/superpowers/specs/2026-05-17-type-provider-model-design.md.
7
7
  import { TypeRegistry } from "./registry.js";
8
8
  import { MetaModelError } from "./errors.js";
9
+ import { mergeConstraints } from "./constraint-merge.js";
10
+ import { validateConstraints } from "./constraint-validate.js";
9
11
  /**
10
12
  * Build a TypeRegistry by composing providers. Providers are topologically
11
13
  * sorted by their `dependencies`; the sort is stable — providers with no
12
14
  * ordering constraint between them keep input order. Throws on a duplicate
13
15
  * provider id, a missing dependency, or a dependency cycle.
14
16
  */
15
- export function composeRegistry(providers) {
17
+ export function composeRegistry(providers, opts) {
16
18
  const ordered = topoSortProviders(providers);
17
19
  const registry = new TypeRegistry();
18
20
  for (const provider of ordered) {
19
21
  provider.registerTypes(registry);
20
22
  }
23
+ // FR-033 — opt-in metamodel contradiction gate. The library bootstrap (the
24
+ // loader's default registry) sets validate:true so a contradictory provider set
25
+ // fails fast at bootstrap (mirrors ADR-0023 strictness). Off by default so
26
+ // synthetic/partial registries (tests, incremental composition) are unaffected.
27
+ if (opts?.validate === true) {
28
+ const contradictions = validateConstraints(mergeConstraints(registry), registry);
29
+ if (contradictions.length > 0) {
30
+ throw new MetaModelError(`composeRegistry: the provider set has ${contradictions.length} metamodel ` +
31
+ `constraint contradiction(s) (FR-033):\n` +
32
+ contradictions.map((e) => ` - ${e.message}`).join("\n"), { code: "ERR_INVALID_METAMODEL_CONSTRAINT" });
33
+ }
34
+ }
21
35
  return registry;
22
36
  }
23
37
  function topoSortProviders(providers) {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,oEAAoE;AACpE,wFAAwF;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAc7C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,SAA0C;IAE1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,SAA0C;IAE1C,sBAAsB;IACtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,2CAA2C,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACtH,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,cAAc,CACtB,8BAA8B,CAAC,CAAC,EAAE,iBAAiB,GAAG,qCAAqC,EAC3F,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAC5C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,OAAO,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,SAAS;iBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,IAAI,cAAc,CACtB,sDAAsD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACzE,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAC1C,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /** One attr in the registry manifest. */
2
+ export interface ManifestAttr {
3
+ name: string;
4
+ valueType: string | null;
5
+ required: boolean;
6
+ }
7
+ /** One registered (type, subType) with its declared attrs. */
8
+ export interface ManifestType {
9
+ type: string;
10
+ subType: string;
11
+ attrs: ManifestAttr[];
12
+ }
13
+ /** The canonical registry manifest (expected-registry.json). */
14
+ export interface RegistryManifest {
15
+ types: ManifestType[];
16
+ commonAttrs: ManifestAttr[];
17
+ defaultSubTypes: Record<string, string>;
18
+ }
19
+ /** Per-subtype attr coverage: which declared attrs no fixture sets. */
20
+ export interface UntestedAttrs {
21
+ /** The `"<type>.<subType>"` key. */
22
+ key: string;
23
+ /** Sorted attr names declared on this subtype that NO fixture exercises. */
24
+ untestedAttrs: string[];
25
+ }
26
+ /** The full coverage report — all collections sorted for determinism. */
27
+ export interface CoverageReport {
28
+ /** Total registered `(type, subType)` keys. */
29
+ registeredSubTypeCount: number;
30
+ /** Registered keys at least one fixture exercises. */
31
+ exercisedSubTypeCount: number;
32
+ /** Sorted registered keys NO fixture exercises (the valuable backlog). */
33
+ untestedSubTypes: string[];
34
+ /**
35
+ * Per EXERCISED subtype, the declared attrs no fixture sets. Only includes
36
+ * subtypes that ARE exercised (an untested subtype's attrs are all untested
37
+ * by definition — listing them would be noise). Sorted by key; only entries
38
+ * with a non-empty `untestedAttrs` list are included.
39
+ */
40
+ untestedAttrsByExercisedSubType: UntestedAttrs[];
41
+ }
42
+ /** The snapshot written to disk — a stable, diffable subset of the report. */
43
+ export interface CoverageSnapshot {
44
+ registeredSubTypeCount: number;
45
+ exercisedSubTypeCount: number;
46
+ untestedSubTypes: string[];
47
+ untestedAttrsByExercisedSubType: UntestedAttrs[];
48
+ }
49
+ /** What a single fixture corpus exercises. */
50
+ interface Usage {
51
+ /** Set of `"<type>.<subType>"` keys seen in any fixture node. */
52
+ subTypes: Set<string>;
53
+ /** key → set of attr names (sans `@` prefix) set on a node of that subtype. */
54
+ attrsByKey: Map<string, Set<string>>;
55
+ }
56
+ /** Scan a set of corpus roots, unioning vocabulary usage across all of them. */
57
+ export declare function scanFixtureUsage(roots: readonly string[]): Usage;
58
+ /**
59
+ * Compute the untested-vocabulary coverage report.
60
+ *
61
+ * @param manifest the parsed registry manifest (the registered vocabulary)
62
+ * @param roots fixture-corpus directory roots to scan for usage
63
+ */
64
+ export declare function computeCoverage(manifest: RegistryManifest, roots: readonly string[]): CoverageReport;
65
+ /** Project a report into the stable, diffable snapshot shape. */
66
+ export declare function toSnapshot(report: CoverageReport): CoverageSnapshot;
67
+ /** Serialize a snapshot as byte-stable JSON (2-space indent, trailing newline). */
68
+ export declare function emitSnapshot(snapshot: CoverageSnapshot): string;
69
+ /** One named coverage regression — an item that became unexercised. */
70
+ export interface CoverageRegression {
71
+ /** "subtype" — a registered (type, subType) no longer exercised; or "attr". */
72
+ kind: "subtype" | "attr";
73
+ /** The `"<type>.<subType>"` key that regressed. */
74
+ key: string;
75
+ /** For an attr regression: the attr name that became untested (else undefined). */
76
+ attr?: string;
77
+ }
78
+ /** The ratchet verdict: ok=true when live coverage is no worse than baseline. */
79
+ export interface RatchetResult {
80
+ ok: boolean;
81
+ /** Every named regression (empty when ok). Sorted for determinism. */
82
+ regressions: CoverageRegression[];
83
+ }
84
+ /**
85
+ * Compare a live coverage snapshot against a committed baseline and report any
86
+ * REGRESSION (an item the baseline had exercised that the live run no longer
87
+ * exercises). Improvements (items that left an untested set) are NOT regressions.
88
+ *
89
+ * - subtype regression: a key in `live.untestedSubTypes` not in baseline's set.
90
+ * - attr regression: an attr in a live subtype's `untestedAttrs` not in the
91
+ * baseline's untested-attrs set for that SAME key. (A subtype that newly became
92
+ * untested is reported once as a subtype regression — its attrs are not double-
93
+ * reported, since an untested subtype has no per-attr entry by construction.)
94
+ */
95
+ export declare function checkRatchet(baseline: CoverageSnapshot, live: CoverageSnapshot): RatchetResult;
96
+ /** Render the regressions into an actionable, human-readable failure message. */
97
+ export declare function formatRatchetFailure(result: RatchetResult): string;
98
+ export {};
99
+ //# sourceMappingURL=registry-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-coverage.d.ts","sourceRoot":"","sources":["../src/registry-coverage.ts"],"names":[],"mappings":"AA8BA,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAMD,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sDAAsD;IACtD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,+BAA+B,EAAE,aAAa,EAAE,CAAC;CAClD;AAED,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,+BAA+B,EAAE,aAAa,EAAE,CAAC;CAClD;AAMD,8CAA8C;AAC9C,UAAU,KAAK;IACb,iEAAiE;IACjE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,+EAA+E;IAC/E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACtC;AA0HD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,CAchE;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,cAAc,CAoChB;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAOnE;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAE/D;AAmBD,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,sEAAsE;IACtE,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,gBAAgB,GACrB,aAAa,CA6Cf;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsBlE"}