@metaobjectsdev/metadata 0.5.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 (405) hide show
  1. package/LICENSE +189 -0
  2. package/README.md +29 -0
  3. package/dist/attr-class-map.d.ts +26 -0
  4. package/dist/attr-class-map.d.ts.map +1 -0
  5. package/dist/attr-class-map.js +44 -0
  6. package/dist/attr-class-map.js.map +1 -0
  7. package/dist/attr-schema-validate.d.ts +9 -0
  8. package/dist/attr-schema-validate.d.ts.map +1 -0
  9. package/dist/attr-schema-validate.js +100 -0
  10. package/dist/attr-schema-validate.js.map +1 -0
  11. package/dist/constants.d.ts +208 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/constants.js +419 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/core/attr/attr-constants.d.ts +12 -0
  16. package/dist/core/attr/attr-constants.d.ts.map +1 -0
  17. package/dist/core/attr/attr-constants.js +27 -0
  18. package/dist/core/attr/attr-constants.js.map +1 -0
  19. package/dist/core/attr/meta-attr-filter.d.ts +10 -0
  20. package/dist/core/attr/meta-attr-filter.d.ts.map +1 -0
  21. package/dist/core/attr/meta-attr-filter.js +56 -0
  22. package/dist/core/attr/meta-attr-filter.js.map +1 -0
  23. package/dist/core/attr/meta-attr-properties.d.ts +9 -0
  24. package/dist/core/attr/meta-attr-properties.d.ts.map +1 -0
  25. package/dist/core/attr/meta-attr-properties.js +22 -0
  26. package/dist/core/attr/meta-attr-properties.js.map +1 -0
  27. package/dist/core/attr/meta-attr-stringarray.d.ts +9 -0
  28. package/dist/core/attr/meta-attr-stringarray.d.ts.map +1 -0
  29. package/dist/core/attr/meta-attr-stringarray.js +29 -0
  30. package/dist/core/attr/meta-attr-stringarray.js.map +1 -0
  31. package/dist/core/attr/meta-attr.d.ts +37 -0
  32. package/dist/core/attr/meta-attr.d.ts.map +1 -0
  33. package/dist/core/attr/meta-attr.js +97 -0
  34. package/dist/core/attr/meta-attr.js.map +1 -0
  35. package/dist/core/export-json.d.ts +29 -0
  36. package/dist/core/export-json.d.ts.map +1 -0
  37. package/dist/core/export-json.js +45 -0
  38. package/dist/core/export-json.js.map +1 -0
  39. package/dist/core/field/field-constants.d.ts +40 -0
  40. package/dist/core/field/field-constants.d.ts.map +1 -0
  41. package/dist/core/field/field-constants.js +66 -0
  42. package/dist/core/field/field-constants.js.map +1 -0
  43. package/dist/core/field/field-schema.d.ts +6 -0
  44. package/dist/core/field/field-schema.d.ts.map +1 -0
  45. package/dist/core/field/field-schema.js +92 -0
  46. package/dist/core/field/field-schema.js.map +1 -0
  47. package/dist/core/field/meta-field.d.ts +50 -0
  48. package/dist/core/field/meta-field.d.ts.map +1 -0
  49. package/dist/core/field/meta-field.js +121 -0
  50. package/dist/core/field/meta-field.js.map +1 -0
  51. package/dist/core/file-meta-data-loader.d.ts +18 -0
  52. package/dist/core/file-meta-data-loader.d.ts.map +1 -0
  53. package/dist/core/file-meta-data-loader.js +81 -0
  54. package/dist/core/file-meta-data-loader.js.map +1 -0
  55. package/dist/core/file-source.d.ts +12 -0
  56. package/dist/core/file-source.d.ts.map +1 -0
  57. package/dist/core/file-source.js +46 -0
  58. package/dist/core/file-source.js.map +1 -0
  59. package/dist/core/identity/identity-constants.d.ts +19 -0
  60. package/dist/core/identity/identity-constants.d.ts.map +1 -0
  61. package/dist/core/identity/identity-constants.js +35 -0
  62. package/dist/core/identity/identity-constants.js.map +1 -0
  63. package/dist/core/identity/identity-schema.d.ts +6 -0
  64. package/dist/core/identity/identity-schema.d.ts.map +1 -0
  65. package/dist/core/identity/identity-schema.js +55 -0
  66. package/dist/core/identity/identity-schema.js.map +1 -0
  67. package/dist/core/identity/meta-identity.d.ts +71 -0
  68. package/dist/core/identity/meta-identity.d.ts.map +1 -0
  69. package/dist/core/identity/meta-identity.js +129 -0
  70. package/dist/core/identity/meta-identity.js.map +1 -0
  71. package/dist/core/index.d.ts +6 -0
  72. package/dist/core/index.d.ts.map +1 -0
  73. package/dist/core/index.js +11 -0
  74. package/dist/core/index.js.map +1 -0
  75. package/dist/core/object/meta-object.d.ts +39 -0
  76. package/dist/core/object/meta-object.d.ts.map +1 -0
  77. package/dist/core/object/meta-object.js +80 -0
  78. package/dist/core/object/meta-object.js.map +1 -0
  79. package/dist/core/object/object-constants.d.ts +5 -0
  80. package/dist/core/object/object-constants.d.ts.map +1 -0
  81. package/dist/core/object/object-constants.js +18 -0
  82. package/dist/core/object/object-constants.js.map +1 -0
  83. package/dist/core/object/object-schema.d.ts +4 -0
  84. package/dist/core/object/object-schema.d.ts.map +1 -0
  85. package/dist/core/object/object-schema.js +5 -0
  86. package/dist/core/object/object-schema.js.map +1 -0
  87. package/dist/core/parser-yaml.d.ts +3 -0
  88. package/dist/core/parser-yaml.d.ts.map +1 -0
  89. package/dist/core/parser-yaml.js +39 -0
  90. package/dist/core/parser-yaml.js.map +1 -0
  91. package/dist/core/query/query-constants.d.ts +20 -0
  92. package/dist/core/query/query-constants.d.ts.map +1 -0
  93. package/dist/core/query/query-constants.js +56 -0
  94. package/dist/core/query/query-constants.js.map +1 -0
  95. package/dist/core/relationship/find-reference.d.ts +22 -0
  96. package/dist/core/relationship/find-reference.d.ts.map +1 -0
  97. package/dist/core/relationship/find-reference.js +29 -0
  98. package/dist/core/relationship/find-reference.js.map +1 -0
  99. package/dist/core/relationship/meta-relationship.d.ts +11 -0
  100. package/dist/core/relationship/meta-relationship.d.ts.map +1 -0
  101. package/dist/core/relationship/meta-relationship.js +27 -0
  102. package/dist/core/relationship/meta-relationship.js.map +1 -0
  103. package/dist/core/relationship/relationship-constants.d.ts +14 -0
  104. package/dist/core/relationship/relationship-constants.d.ts.map +1 -0
  105. package/dist/core/relationship/relationship-constants.js +28 -0
  106. package/dist/core/relationship/relationship-constants.js.map +1 -0
  107. package/dist/core/relationship/relationship-schema.d.ts +4 -0
  108. package/dist/core/relationship/relationship-schema.d.ts.map +1 -0
  109. package/dist/core/relationship/relationship-schema.js +37 -0
  110. package/dist/core/relationship/relationship-schema.js.map +1 -0
  111. package/dist/core/validator/meta-validator.d.ts +29 -0
  112. package/dist/core/validator/meta-validator.d.ts.map +1 -0
  113. package/dist/core/validator/meta-validator.js +49 -0
  114. package/dist/core/validator/meta-validator.js.map +1 -0
  115. package/dist/core/validator/validator-constants.d.ts +11 -0
  116. package/dist/core/validator/validator-constants.d.ts.map +1 -0
  117. package/dist/core/validator/validator-constants.js +25 -0
  118. package/dist/core/validator/validator-constants.js.map +1 -0
  119. package/dist/core/validator/validator-schema.d.ts +4 -0
  120. package/dist/core/validator/validator-schema.d.ts.map +1 -0
  121. package/dist/core/validator/validator-schema.js +38 -0
  122. package/dist/core/validator/validator-schema.js.map +1 -0
  123. package/dist/core/yaml-desugar.d.ts +10 -0
  124. package/dist/core/yaml-desugar.d.ts.map +1 -0
  125. package/dist/core/yaml-desugar.js +99 -0
  126. package/dist/core/yaml-desugar.js.map +1 -0
  127. package/dist/core-attr-schemas.d.ts +22 -0
  128. package/dist/core-attr-schemas.d.ts.map +1 -0
  129. package/dist/core-attr-schemas.js +324 -0
  130. package/dist/core-attr-schemas.js.map +1 -0
  131. package/dist/core-types.d.ts +20 -0
  132. package/dist/core-types.d.ts.map +1 -0
  133. package/dist/core-types.js +225 -0
  134. package/dist/core-types.js.map +1 -0
  135. package/dist/data-converter.d.ts +17 -0
  136. package/dist/data-converter.d.ts.map +1 -0
  137. package/dist/data-converter.js +117 -0
  138. package/dist/data-converter.js.map +1 -0
  139. package/dist/data-type.d.ts +15 -0
  140. package/dist/data-type.d.ts.map +1 -0
  141. package/dist/data-type.js +25 -0
  142. package/dist/data-type.js.map +1 -0
  143. package/dist/db/db-attr-schemas.d.ts +8 -0
  144. package/dist/db/db-attr-schemas.d.ts.map +1 -0
  145. package/dist/db/db-attr-schemas.js +26 -0
  146. package/dist/db/db-attr-schemas.js.map +1 -0
  147. package/dist/db/db-provider.d.ts +3 -0
  148. package/dist/db/db-provider.d.ts.map +1 -0
  149. package/dist/db/db-provider.js +28 -0
  150. package/dist/db/db-provider.js.map +1 -0
  151. package/dist/errors.d.ts +26 -0
  152. package/dist/errors.d.ts.map +1 -0
  153. package/dist/errors.js +59 -0
  154. package/dist/errors.js.map +1 -0
  155. package/dist/index.d.ts +70 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +76 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/loader/meta-data-loader.d.ts +87 -0
  160. package/dist/loader/meta-data-loader.d.ts.map +1 -0
  161. package/dist/loader/meta-data-loader.js +232 -0
  162. package/dist/loader/meta-data-loader.js.map +1 -0
  163. package/dist/loader/meta-data-source.d.ts +23 -0
  164. package/dist/loader/meta-data-source.d.ts.map +1 -0
  165. package/dist/loader/meta-data-source.js +20 -0
  166. package/dist/loader/meta-data-source.js.map +1 -0
  167. package/dist/loader/validation-passes.d.ts +7 -0
  168. package/dist/loader/validation-passes.d.ts.map +1 -0
  169. package/dist/loader/validation-passes.js +244 -0
  170. package/dist/loader/validation-passes.js.map +1 -0
  171. package/dist/meta/find-reference.d.ts +22 -0
  172. package/dist/meta/find-reference.d.ts.map +1 -0
  173. package/dist/meta/find-reference.js +29 -0
  174. package/dist/meta/find-reference.js.map +1 -0
  175. package/dist/meta/meta-attr.d.ts +8 -0
  176. package/dist/meta/meta-attr.d.ts.map +1 -0
  177. package/dist/meta/meta-attr.js +17 -0
  178. package/dist/meta/meta-attr.js.map +1 -0
  179. package/dist/meta/meta-data.d.ts +107 -0
  180. package/dist/meta/meta-data.d.ts.map +1 -0
  181. package/dist/meta/meta-data.js +302 -0
  182. package/dist/meta/meta-data.js.map +1 -0
  183. package/dist/meta/meta-field.d.ts +48 -0
  184. package/dist/meta/meta-field.d.ts.map +1 -0
  185. package/dist/meta/meta-field.js +94 -0
  186. package/dist/meta/meta-field.js.map +1 -0
  187. package/dist/meta/meta-identity.d.ts +71 -0
  188. package/dist/meta/meta-identity.d.ts.map +1 -0
  189. package/dist/meta/meta-identity.js +129 -0
  190. package/dist/meta/meta-identity.js.map +1 -0
  191. package/dist/meta/meta-layout.d.ts +23 -0
  192. package/dist/meta/meta-layout.d.ts.map +1 -0
  193. package/dist/meta/meta-layout.js +45 -0
  194. package/dist/meta/meta-layout.js.map +1 -0
  195. package/dist/meta/meta-object.d.ts +40 -0
  196. package/dist/meta/meta-object.d.ts.map +1 -0
  197. package/dist/meta/meta-object.js +81 -0
  198. package/dist/meta/meta-object.js.map +1 -0
  199. package/dist/meta/meta-origin.d.ts +32 -0
  200. package/dist/meta/meta-origin.d.ts.map +1 -0
  201. package/dist/meta/meta-origin.js +55 -0
  202. package/dist/meta/meta-origin.js.map +1 -0
  203. package/dist/meta/meta-relationship.d.ts +11 -0
  204. package/dist/meta/meta-relationship.d.ts.map +1 -0
  205. package/dist/meta/meta-relationship.js +27 -0
  206. package/dist/meta/meta-relationship.js.map +1 -0
  207. package/dist/meta/meta-root.d.ts +12 -0
  208. package/dist/meta/meta-root.d.ts.map +1 -0
  209. package/dist/meta/meta-root.js +24 -0
  210. package/dist/meta/meta-root.js.map +1 -0
  211. package/dist/meta/meta-source.d.ts +18 -0
  212. package/dist/meta/meta-source.d.ts.map +1 -0
  213. package/dist/meta/meta-source.js +31 -0
  214. package/dist/meta/meta-source.js.map +1 -0
  215. package/dist/meta/meta-validator.d.ts +29 -0
  216. package/dist/meta/meta-validator.d.ts.map +1 -0
  217. package/dist/meta/meta-validator.js +49 -0
  218. package/dist/meta/meta-validator.js.map +1 -0
  219. package/dist/meta/meta-view.d.ts +4 -0
  220. package/dist/meta/meta-view.d.ts.map +1 -0
  221. package/dist/meta/meta-view.js +8 -0
  222. package/dist/meta/meta-view.js.map +1 -0
  223. package/dist/naming.d.ts +27 -0
  224. package/dist/naming.d.ts.map +1 -0
  225. package/dist/naming.js +72 -0
  226. package/dist/naming.js.map +1 -0
  227. package/dist/object-serializer.d.ts +10 -0
  228. package/dist/object-serializer.d.ts.map +1 -0
  229. package/dist/object-serializer.js +128 -0
  230. package/dist/object-serializer.js.map +1 -0
  231. package/dist/overlay.d.ts +2 -0
  232. package/dist/overlay.d.ts.map +1 -0
  233. package/dist/overlay.js +6 -0
  234. package/dist/overlay.js.map +1 -0
  235. package/dist/parser-core.d.ts +47 -0
  236. package/dist/parser-core.d.ts.map +1 -0
  237. package/dist/parser-core.js +516 -0
  238. package/dist/parser-core.js.map +1 -0
  239. package/dist/parser-json.d.ts +4 -0
  240. package/dist/parser-json.d.ts.map +1 -0
  241. package/dist/parser-json.js +19 -0
  242. package/dist/parser-json.js.map +1 -0
  243. package/dist/persistence/db/db-attr-schemas.d.ts +8 -0
  244. package/dist/persistence/db/db-attr-schemas.d.ts.map +1 -0
  245. package/dist/persistence/db/db-attr-schemas.js +28 -0
  246. package/dist/persistence/db/db-attr-schemas.js.map +1 -0
  247. package/dist/persistence/db/db-constants.d.ts +5 -0
  248. package/dist/persistence/db/db-constants.d.ts.map +1 -0
  249. package/dist/persistence/db/db-constants.js +6 -0
  250. package/dist/persistence/db/db-constants.js.map +1 -0
  251. package/dist/persistence/db/db-provider.d.ts +3 -0
  252. package/dist/persistence/db/db-provider.d.ts.map +1 -0
  253. package/dist/persistence/db/db-provider.js +29 -0
  254. package/dist/persistence/db/db-provider.js.map +1 -0
  255. package/dist/persistence/db/db-schema.d.ts +8 -0
  256. package/dist/persistence/db/db-schema.d.ts.map +1 -0
  257. package/dist/persistence/db/db-schema.js +27 -0
  258. package/dist/persistence/db/db-schema.js.map +1 -0
  259. package/dist/persistence/origin/meta-origin.d.ts +32 -0
  260. package/dist/persistence/origin/meta-origin.d.ts.map +1 -0
  261. package/dist/persistence/origin/meta-origin.js +55 -0
  262. package/dist/persistence/origin/meta-origin.js.map +1 -0
  263. package/dist/persistence/origin/origin-constants.d.ts +12 -0
  264. package/dist/persistence/origin/origin-constants.d.ts.map +1 -0
  265. package/dist/persistence/origin/origin-constants.js +27 -0
  266. package/dist/persistence/origin/origin-constants.js.map +1 -0
  267. package/dist/persistence/origin/origin-schema.d.ts +4 -0
  268. package/dist/persistence/origin/origin-schema.d.ts.map +1 -0
  269. package/dist/persistence/origin/origin-schema.js +49 -0
  270. package/dist/persistence/origin/origin-schema.js.map +1 -0
  271. package/dist/persistence/source/meta-source.d.ts +18 -0
  272. package/dist/persistence/source/meta-source.d.ts.map +1 -0
  273. package/dist/persistence/source/meta-source.js +31 -0
  274. package/dist/persistence/source/meta-source.js.map +1 -0
  275. package/dist/persistence/source/source-constants.d.ts +16 -0
  276. package/dist/persistence/source/source-constants.d.ts.map +1 -0
  277. package/dist/persistence/source/source-constants.js +28 -0
  278. package/dist/persistence/source/source-constants.js.map +1 -0
  279. package/dist/presentation/layout/layout-constants.d.ts +10 -0
  280. package/dist/presentation/layout/layout-constants.d.ts.map +1 -0
  281. package/dist/presentation/layout/layout-constants.js +21 -0
  282. package/dist/presentation/layout/layout-constants.js.map +1 -0
  283. package/dist/presentation/layout/layout-schema.d.ts +4 -0
  284. package/dist/presentation/layout/layout-schema.d.ts.map +1 -0
  285. package/dist/presentation/layout/layout-schema.js +46 -0
  286. package/dist/presentation/layout/layout-schema.js.map +1 -0
  287. package/dist/presentation/layout/meta-layout.d.ts +23 -0
  288. package/dist/presentation/layout/meta-layout.d.ts.map +1 -0
  289. package/dist/presentation/layout/meta-layout.js +47 -0
  290. package/dist/presentation/layout/meta-layout.js.map +1 -0
  291. package/dist/presentation/view/meta-view.d.ts +4 -0
  292. package/dist/presentation/view/meta-view.d.ts.map +1 -0
  293. package/dist/presentation/view/meta-view.js +8 -0
  294. package/dist/presentation/view/meta-view.js.map +1 -0
  295. package/dist/presentation/view/view-constants.d.ts +20 -0
  296. package/dist/presentation/view/view-constants.d.ts.map +1 -0
  297. package/dist/presentation/view/view-constants.js +47 -0
  298. package/dist/presentation/view/view-constants.js.map +1 -0
  299. package/dist/presentation/view/view-schema.d.ts +4 -0
  300. package/dist/presentation/view/view-schema.d.ts.map +1 -0
  301. package/dist/presentation/view/view-schema.js +15 -0
  302. package/dist/presentation/view/view-schema.js.map +1 -0
  303. package/dist/provider.d.ts +20 -0
  304. package/dist/provider.d.ts.map +1 -0
  305. package/dist/provider.js +58 -0
  306. package/dist/provider.js.map +1 -0
  307. package/dist/registry.d.ts +89 -0
  308. package/dist/registry.d.ts.map +1 -0
  309. package/dist/registry.js +107 -0
  310. package/dist/registry.js.map +1 -0
  311. package/dist/serializer-json.d.ts +16 -0
  312. package/dist/serializer-json.d.ts.map +1 -0
  313. package/dist/serializer-json.js +154 -0
  314. package/dist/serializer-json.js.map +1 -0
  315. package/dist/shared/base-types.d.ts +23 -0
  316. package/dist/shared/base-types.d.ts.map +1 -0
  317. package/dist/shared/base-types.js +43 -0
  318. package/dist/shared/base-types.js.map +1 -0
  319. package/dist/shared/meta-data.d.ts +123 -0
  320. package/dist/shared/meta-data.d.ts.map +1 -0
  321. package/dist/shared/meta-data.js +365 -0
  322. package/dist/shared/meta-data.js.map +1 -0
  323. package/dist/shared/meta-root.d.ts +12 -0
  324. package/dist/shared/meta-root.d.ts.map +1 -0
  325. package/dist/shared/meta-root.js +24 -0
  326. package/dist/shared/meta-root.js.map +1 -0
  327. package/dist/shared/structural.d.ts +20 -0
  328. package/dist/shared/structural.d.ts.map +1 -0
  329. package/dist/shared/structural.js +49 -0
  330. package/dist/shared/structural.js.map +1 -0
  331. package/dist/subtype-rules.d.ts +8 -0
  332. package/dist/subtype-rules.d.ts.map +1 -0
  333. package/dist/subtype-rules.js +34 -0
  334. package/dist/subtype-rules.js.map +1 -0
  335. package/dist/super-resolve.d.ts +34 -0
  336. package/dist/super-resolve.d.ts.map +1 -0
  337. package/dist/super-resolve.js +124 -0
  338. package/dist/super-resolve.js.map +1 -0
  339. package/package.json +50 -0
  340. package/src/attr-class-map.ts +64 -0
  341. package/src/attr-schema-validate.ts +134 -0
  342. package/src/core/attr/attr-constants.ts +31 -0
  343. package/src/core/attr/meta-attr-filter.ts +67 -0
  344. package/src/core/attr/meta-attr-properties.ts +26 -0
  345. package/src/core/attr/meta-attr-stringarray.ts +31 -0
  346. package/src/core/attr/meta-attr.ts +125 -0
  347. package/src/core/export-json.ts +66 -0
  348. package/src/core/field/field-constants.ts +79 -0
  349. package/src/core/field/field-schema.ts +121 -0
  350. package/src/core/field/meta-field.ts +179 -0
  351. package/src/core/file-meta-data-loader.ts +89 -0
  352. package/src/core/file-source.ts +52 -0
  353. package/src/core/identity/identity-constants.ts +44 -0
  354. package/src/core/identity/identity-schema.ts +80 -0
  355. package/src/core/identity/meta-identity.ts +148 -0
  356. package/src/core/index.ts +12 -0
  357. package/src/core/object/meta-object.ts +151 -0
  358. package/src/core/object/object-constants.ts +21 -0
  359. package/src/core/object/object-schema.ts +7 -0
  360. package/src/core/parser-yaml.ts +54 -0
  361. package/src/core/query/query-constants.ts +66 -0
  362. package/src/core/relationship/find-reference.ts +44 -0
  363. package/src/core/relationship/meta-relationship.ts +36 -0
  364. package/src/core/relationship/relationship-constants.ts +38 -0
  365. package/src/core/relationship/relationship-schema.ts +49 -0
  366. package/src/core/validator/meta-validator.ts +62 -0
  367. package/src/core/validator/validator-constants.ts +31 -0
  368. package/src/core/validator/validator-schema.ts +50 -0
  369. package/src/core/yaml-desugar.ts +145 -0
  370. package/src/core-types.ts +329 -0
  371. package/src/data-converter.ts +125 -0
  372. package/src/data-type.ts +33 -0
  373. package/src/errors.ts +68 -0
  374. package/src/index.ts +165 -0
  375. package/src/loader/meta-data-loader.ts +307 -0
  376. package/src/loader/meta-data-source.ts +35 -0
  377. package/src/loader/validation-passes.ts +370 -0
  378. package/src/naming.ts +86 -0
  379. package/src/object-serializer.ts +153 -0
  380. package/src/overlay.ts +5 -0
  381. package/src/parser-core.ts +815 -0
  382. package/src/parser-json.ts +28 -0
  383. package/src/persistence/db/db-constants.ts +6 -0
  384. package/src/persistence/db/db-provider.ts +36 -0
  385. package/src/persistence/db/db-schema.ts +40 -0
  386. package/src/persistence/origin/meta-origin.ts +67 -0
  387. package/src/persistence/origin/origin-constants.ts +35 -0
  388. package/src/persistence/origin/origin-schema.ts +66 -0
  389. package/src/persistence/source/meta-source.ts +38 -0
  390. package/src/persistence/source/source-constants.ts +35 -0
  391. package/src/presentation/layout/layout-constants.ts +27 -0
  392. package/src/presentation/layout/layout-schema.ts +62 -0
  393. package/src/presentation/layout/meta-layout.ts +61 -0
  394. package/src/presentation/view/meta-view.ts +8 -0
  395. package/src/presentation/view/view-constants.ts +53 -0
  396. package/src/presentation/view/view-schema.ts +21 -0
  397. package/src/provider.ts +85 -0
  398. package/src/registry.ts +190 -0
  399. package/src/serializer-json.ts +210 -0
  400. package/src/shared/base-types.ts +52 -0
  401. package/src/shared/meta-data.ts +443 -0
  402. package/src/shared/meta-root.ts +33 -0
  403. package/src/shared/structural.ts +62 -0
  404. package/src/subtype-rules.ts +56 -0
  405. package/src/super-resolve.ts +147 -0
@@ -0,0 +1,14 @@
1
+ export declare const RELATIONSHIP_SUBTYPE_ASSOCIATION = "association";
2
+ export declare const RELATIONSHIP_SUBTYPE_AGGREGATION = "aggregation";
3
+ export declare const RELATIONSHIP_SUBTYPE_COMPOSITION = "composition";
4
+ export declare const RELATIONSHIP_SUBTYPES: readonly ["base", "association", "aggregation", "composition"];
5
+ export type RelationshipSubType = (typeof RELATIONSHIP_SUBTYPES)[number];
6
+ export declare const RELATIONSHIP_ATTR_CARDINALITY = "cardinality";
7
+ export declare const RELATIONSHIP_ATTR_OBJECT_REF = "objectRef";
8
+ export declare const RELATIONSHIP_ATTR_JOIN_ENTITY = "joinEntity";
9
+ export declare const RELATIONSHIP_ATTR_JOIN_FIELDS = "joinFields";
10
+ export declare const CARDINALITY_ONE = "one";
11
+ export declare const CARDINALITY_MANY = "many";
12
+ export declare const CARDINALITY_VALUES: readonly ["one", "many"];
13
+ export type CardinalityValue = (typeof CARDINALITY_VALUES)[number];
14
+ //# sourceMappingURL=relationship-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-constants.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/relationship-constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAC9D,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAC9D,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAE9D,eAAO,MAAM,qBAAqB,gEAKxB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMzE,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAC3D,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAC1D,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAM1D,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,eAAO,MAAM,kBAAkB,0BAA+C,CAAC;AAC/E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ // Relationship concern constants — subtypes, attr keys, and cardinality values.
2
+ import { SUBTYPE_BASE } from "../../shared/base-types.js";
3
+ // ---------------------------------------------------------------------------
4
+ // Relationship subtypes (4)
5
+ // ---------------------------------------------------------------------------
6
+ export const RELATIONSHIP_SUBTYPE_ASSOCIATION = "association";
7
+ export const RELATIONSHIP_SUBTYPE_AGGREGATION = "aggregation";
8
+ export const RELATIONSHIP_SUBTYPE_COMPOSITION = "composition";
9
+ export const RELATIONSHIP_SUBTYPES = [
10
+ SUBTYPE_BASE,
11
+ RELATIONSHIP_SUBTYPE_ASSOCIATION,
12
+ RELATIONSHIP_SUBTYPE_AGGREGATION,
13
+ RELATIONSHIP_SUBTYPE_COMPOSITION,
14
+ ];
15
+ // ---------------------------------------------------------------------------
16
+ // Relationship attrs
17
+ // ---------------------------------------------------------------------------
18
+ export const RELATIONSHIP_ATTR_CARDINALITY = "cardinality";
19
+ export const RELATIONSHIP_ATTR_OBJECT_REF = "objectRef";
20
+ export const RELATIONSHIP_ATTR_JOIN_ENTITY = "joinEntity"; // N:M cardinality
21
+ export const RELATIONSHIP_ATTR_JOIN_FIELDS = "joinFields"; // N:M cardinality
22
+ // ---------------------------------------------------------------------------
23
+ // Relationship cardinality values (for RELATIONSHIP_ATTR_CARDINALITY)
24
+ // ---------------------------------------------------------------------------
25
+ export const CARDINALITY_ONE = "one";
26
+ export const CARDINALITY_MANY = "many";
27
+ export const CARDINALITY_VALUES = [CARDINALITY_ONE, CARDINALITY_MANY];
28
+ //# sourceMappingURL=relationship-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-constants.js","sourceRoot":"","sources":["../../../src/core/relationship/relationship-constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAC9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAC9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY;IACZ,gCAAgC;IAChC,gCAAgC;IAChC,gCAAgC;CACxB,CAAC;AAGX,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAC3D,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAI,kBAAkB;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAI,kBAAkB;AAEhF,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AttrSchema } from "../../registry.js";
2
+ /** Attrs common to every relationship subtype. */
3
+ export declare const relationshipAttrs: AttrSchema[];
4
+ //# sourceMappingURL=relationship-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-schema.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/relationship-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAYpD,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,EAAE,UAAU,EAgCzC,CAAC"}
@@ -0,0 +1,37 @@
1
+ // Relationship attribute schemas — attrs common to every relationship subtype.
2
+ // Consumed by registerCoreTypes().
3
+ import { ATTR_SUBTYPE_STRING, ATTR_SUBTYPE_STRINGARRAY, } from "../attr/attr-constants.js";
4
+ import { RELATIONSHIP_ATTR_CARDINALITY, RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_ATTR_JOIN_ENTITY, RELATIONSHIP_ATTR_JOIN_FIELDS, } from "./relationship-constants.js";
5
+ /** Attrs common to every relationship subtype. */
6
+ export const relationshipAttrs = [
7
+ {
8
+ name: RELATIONSHIP_ATTR_CARDINALITY,
9
+ valueType: ATTR_SUBTYPE_STRING,
10
+ required: false,
11
+ // No allowedValues: @cardinality is an open string at the metamodel level
12
+ // (MetaRelationship.cardinality returns `string | undefined`). The Java
13
+ // canonical fixtures use composite forms such as "many-to-one"; the
14
+ // CARDINALITY_VALUES ("one"/"many") constant is a TS codegen convenience,
15
+ // NOT a closed metamodel enum. A3 must not reject the Java-canonical values.
16
+ description: "Cardinality of the relationship target (e.g. 'one', 'many', 'many-to-one').",
17
+ },
18
+ {
19
+ name: RELATIONSHIP_ATTR_OBJECT_REF,
20
+ valueType: ATTR_SUBTYPE_STRING,
21
+ required: false,
22
+ description: "Name or fully-qualified name of the target object the relationship points to (e.g. 'Week' or 'acme::vehicle::Car').",
23
+ },
24
+ {
25
+ name: RELATIONSHIP_ATTR_JOIN_ENTITY,
26
+ valueType: ATTR_SUBTYPE_STRING,
27
+ required: false,
28
+ description: "Join-table entity name for N:M relationships.",
29
+ },
30
+ {
31
+ name: RELATIONSHIP_ATTR_JOIN_FIELDS,
32
+ valueType: ATTR_SUBTYPE_STRINGARRAY,
33
+ required: false,
34
+ description: "Join-table column names for N:M relationships.",
35
+ },
36
+ ];
37
+ //# sourceMappingURL=relationship-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-schema.js","sourceRoot":"","sources":["../../../src/core/relationship/relationship-schema.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mCAAmC;AAGnC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,6BAA6B,CAAC;AAErC,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C;QACE,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,0EAA0E;QAC1E,wEAAwE;QACxE,oEAAoE;QACpE,0EAA0E;QAC1E,6EAA6E;QAC7E,WAAW,EACT,6EAA6E;KAChF;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,qHAAqH;KACxH;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,wBAAwB;QACnC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,gDAAgD;KAC9D;CACF,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { MetaData } from "../../shared/meta-data.js";
2
+ export declare class MetaValidator extends MetaData {
3
+ /**
4
+ * Numeric range — shared by length, numeric, and array validators.
5
+ * (Pattern moves to MetaRegexValidator; required validators have no extra attrs.)
6
+ */
7
+ get min(): number | undefined;
8
+ get max(): number | undefined;
9
+ isRequired(): boolean;
10
+ isLength(): boolean;
11
+ isRegex(): boolean;
12
+ }
13
+ /** Required validator (no extra attrs; subtype class exists for instanceof narrowing). */
14
+ export declare class MetaRequiredValidator extends MetaValidator {
15
+ }
16
+ /** Length validator: min/max are string/array length bounds. */
17
+ export declare class MetaLengthValidator extends MetaValidator {
18
+ }
19
+ /** Regex validator: carries the pattern. */
20
+ export declare class MetaRegexValidator extends MetaValidator {
21
+ get pattern(): string | undefined;
22
+ }
23
+ /** Numeric validator: min/max are value bounds. */
24
+ export declare class MetaNumericValidator extends MetaValidator {
25
+ }
26
+ /** Array validator: min/max are element-count bounds. */
27
+ export declare class MetaArrayValidator extends MetaValidator {
28
+ }
29
+ //# sourceMappingURL=meta-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validator/meta-validator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAUrD,qBAAa,aAAc,SAAQ,QAAQ;IACzC;;;OAGG;IACH,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;IAED,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,OAAO;IAInB,OAAO,IAAI,OAAO;CAGnB;AAED,0FAA0F;AAC1F,qBAAa,qBAAsB,SAAQ,aAAa;CAAG;AAE3D,gEAAgE;AAChE,qBAAa,mBAAoB,SAAQ,aAAa;CAAG;AAEzD,4CAA4C;AAC5C,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAGhC;CACF;AAED,mDAAmD;AACnD,qBAAa,oBAAqB,SAAQ,aAAa;CAAG;AAE1D,yDAAyD;AACzD,qBAAa,kBAAmB,SAAQ,aAAa;CAAG"}
@@ -0,0 +1,49 @@
1
+ // MetaValidator — concrete node class for type=validator nodes.
2
+ // Subtype classes (Required, Length, Regex, Numeric, Array) are co-located.
3
+ //
4
+ // Extends MetaData directly: no model wrapper, no metaOf() indirection.
5
+ import { MetaData } from "../../shared/meta-data.js";
6
+ import { VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_SUBTYPE_LENGTH, VALIDATOR_SUBTYPE_REGEX, VALIDATOR_ATTR_PATTERN, VALIDATOR_ATTR_MIN, VALIDATOR_ATTR_MAX, } from "./validator-constants.js";
7
+ export class MetaValidator extends MetaData {
8
+ /**
9
+ * Numeric range — shared by length, numeric, and array validators.
10
+ * (Pattern moves to MetaRegexValidator; required validators have no extra attrs.)
11
+ */
12
+ get min() {
13
+ const v = this.ownAttr(VALIDATOR_ATTR_MIN);
14
+ return typeof v === "number" ? v : undefined;
15
+ }
16
+ get max() {
17
+ const v = this.ownAttr(VALIDATOR_ATTR_MAX);
18
+ return typeof v === "number" ? v : undefined;
19
+ }
20
+ isRequired() {
21
+ return this.subType === VALIDATOR_SUBTYPE_REQUIRED;
22
+ }
23
+ isLength() {
24
+ return this.subType === VALIDATOR_SUBTYPE_LENGTH;
25
+ }
26
+ isRegex() {
27
+ return this.subType === VALIDATOR_SUBTYPE_REGEX;
28
+ }
29
+ }
30
+ /** Required validator (no extra attrs; subtype class exists for instanceof narrowing). */
31
+ export class MetaRequiredValidator extends MetaValidator {
32
+ }
33
+ /** Length validator: min/max are string/array length bounds. */
34
+ export class MetaLengthValidator extends MetaValidator {
35
+ }
36
+ /** Regex validator: carries the pattern. */
37
+ export class MetaRegexValidator extends MetaValidator {
38
+ get pattern() {
39
+ const v = this.ownAttr(VALIDATOR_ATTR_PATTERN);
40
+ return typeof v === "string" ? v : undefined;
41
+ }
42
+ }
43
+ /** Numeric validator: min/max are value bounds. */
44
+ export class MetaNumericValidator extends MetaValidator {
45
+ }
46
+ /** Array validator: min/max are element-count bounds. */
47
+ export class MetaArrayValidator extends MetaValidator {
48
+ }
49
+ //# sourceMappingURL=meta-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-validator.js","sourceRoot":"","sources":["../../../src/core/validator/meta-validator.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,4EAA4E;AAC5E,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC;;;OAGG;IACH,IAAI,GAAG;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,IAAI,GAAG;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,KAAK,0BAA0B,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,KAAK,wBAAwB,CAAC;IACnD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,KAAK,uBAAuB,CAAC;IAClD,CAAC;CACF;AAED,0FAA0F;AAC1F,MAAM,OAAO,qBAAsB,SAAQ,aAAa;CAAG;AAE3D,gEAAgE;AAChE,MAAM,OAAO,mBAAoB,SAAQ,aAAa;CAAG;AAEzD,4CAA4C;AAC5C,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACnD,IAAI,OAAO;QACT,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF;AAED,mDAAmD;AACnD,MAAM,OAAO,oBAAqB,SAAQ,aAAa;CAAG;AAE1D,yDAAyD;AACzD,MAAM,OAAO,kBAAmB,SAAQ,aAAa;CAAG"}
@@ -0,0 +1,11 @@
1
+ export declare const VALIDATOR_SUBTYPE_REQUIRED = "required";
2
+ export declare const VALIDATOR_SUBTYPE_LENGTH = "length";
3
+ export declare const VALIDATOR_SUBTYPE_REGEX = "regex";
4
+ export declare const VALIDATOR_SUBTYPE_NUMERIC = "numeric";
5
+ export declare const VALIDATOR_SUBTYPE_ARRAY = "array";
6
+ export declare const VALIDATOR_SUBTYPES: readonly ["base", "required", "length", "regex", "numeric", "array"];
7
+ export type ValidatorSubType = (typeof VALIDATOR_SUBTYPES)[number];
8
+ export declare const VALIDATOR_ATTR_PATTERN = "pattern";
9
+ export declare const VALIDATOR_ATTR_MIN = "min";
10
+ export declare const VALIDATOR_ATTR_MAX = "max";
11
+ //# sourceMappingURL=validator-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-constants.d.ts","sourceRoot":"","sources":["../../../src/core/validator/validator-constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,0BAA0B,aAAa,CAAC;AACrD,eAAO,MAAM,wBAAwB,WAAW,CAAC;AACjD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,eAAO,MAAM,yBAAyB,YAAY,CAAC;AACnD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,eAAO,MAAM,kBAAkB,sEAOrB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMnE,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAChD,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,kBAAkB,QAAQ,CAAC"}
@@ -0,0 +1,25 @@
1
+ // Validator concern constants — subtypes and attr keys for the validator.* type family.
2
+ import { SUBTYPE_BASE } from "../../shared/base-types.js";
3
+ // ---------------------------------------------------------------------------
4
+ // Validator subtypes (6)
5
+ // ---------------------------------------------------------------------------
6
+ export const VALIDATOR_SUBTYPE_REQUIRED = "required";
7
+ export const VALIDATOR_SUBTYPE_LENGTH = "length";
8
+ export const VALIDATOR_SUBTYPE_REGEX = "regex";
9
+ export const VALIDATOR_SUBTYPE_NUMERIC = "numeric";
10
+ export const VALIDATOR_SUBTYPE_ARRAY = "array";
11
+ export const VALIDATOR_SUBTYPES = [
12
+ SUBTYPE_BASE,
13
+ VALIDATOR_SUBTYPE_REQUIRED,
14
+ VALIDATOR_SUBTYPE_LENGTH,
15
+ VALIDATOR_SUBTYPE_REGEX,
16
+ VALIDATOR_SUBTYPE_NUMERIC,
17
+ VALIDATOR_SUBTYPE_ARRAY,
18
+ ];
19
+ // ---------------------------------------------------------------------------
20
+ // Validator attr keys (used by codegen-ts when reading validator children)
21
+ // ---------------------------------------------------------------------------
22
+ export const VALIDATOR_ATTR_PATTERN = "pattern";
23
+ export const VALIDATOR_ATTR_MIN = "min";
24
+ export const VALIDATOR_ATTR_MAX = "max";
25
+ //# sourceMappingURL=validator-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-constants.js","sourceRoot":"","sources":["../../../src/core/validator/validator-constants.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;AACrD,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAC/C,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,YAAY;IACZ,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,yBAAyB;IACzB,uBAAuB;CACf,CAAC;AAGX,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AttrSchema } from "../../registry.js";
2
+ /** Attrs per validator subtype. Required uses none; regex adds @pattern. */
3
+ export declare const VALIDATOR_ATTRS_MAP: Map<string, AttrSchema[]>;
4
+ //# sourceMappingURL=validator-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-schema.d.ts","sourceRoot":"","sources":["../../../src/core/validator/validator-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA8BpD,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,2BAe9B,CAAC"}
@@ -0,0 +1,38 @@
1
+ // Validator attribute schemas — per-subtype attr inventories for validator types.
2
+ // Consumed by registerCoreTypes().
3
+ import { ATTR_SUBTYPE_INT, ATTR_SUBTYPE_STRING } from "../attr/attr-constants.js";
4
+ import { SUBTYPE_BASE } from "../../shared/base-types.js";
5
+ import { VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_SUBTYPE_LENGTH, VALIDATOR_SUBTYPE_REGEX, VALIDATOR_SUBTYPE_NUMERIC, VALIDATOR_SUBTYPE_ARRAY, VALIDATOR_ATTR_PATTERN, VALIDATOR_ATTR_MIN, VALIDATOR_ATTR_MAX, } from "./validator-constants.js";
6
+ /** @min / @max shared by length, numeric, array, and the base validator. */
7
+ const minMaxValidatorAttrs = [
8
+ {
9
+ name: VALIDATOR_ATTR_MIN,
10
+ valueType: ATTR_SUBTYPE_INT,
11
+ required: false,
12
+ description: "Minimum allowed value (length, numeric value, or array element count depending on the validator subtype).",
13
+ },
14
+ {
15
+ name: VALIDATOR_ATTR_MAX,
16
+ valueType: ATTR_SUBTYPE_INT,
17
+ required: false,
18
+ description: "Maximum allowed value (length, numeric value, or array element count depending on the validator subtype).",
19
+ },
20
+ ];
21
+ /** Attrs per validator subtype. Required uses none; regex adds @pattern. */
22
+ export const VALIDATOR_ATTRS_MAP = new Map([
23
+ [SUBTYPE_BASE, [...minMaxValidatorAttrs]],
24
+ [VALIDATOR_SUBTYPE_REQUIRED, []],
25
+ [VALIDATOR_SUBTYPE_LENGTH, [...minMaxValidatorAttrs]],
26
+ [VALIDATOR_SUBTYPE_REGEX, [
27
+ ...minMaxValidatorAttrs,
28
+ {
29
+ name: VALIDATOR_ATTR_PATTERN,
30
+ valueType: ATTR_SUBTYPE_STRING,
31
+ required: false,
32
+ description: "Regular expression the value must match.",
33
+ },
34
+ ]],
35
+ [VALIDATOR_SUBTYPE_NUMERIC, [...minMaxValidatorAttrs]],
36
+ [VALIDATOR_SUBTYPE_ARRAY, [...minMaxValidatorAttrs]],
37
+ ]);
38
+ //# sourceMappingURL=validator-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-schema.js","sourceRoot":"","sources":["../../../src/core/validator/validator-schema.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,mCAAmC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,4EAA4E;AAC5E,MAAM,oBAAoB,GAAiB;IACzC;QACE,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,2GAA2G;KACzH;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,2GAA2G;KACzH;CACF,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAuB;IAC/D,CAAC,YAAY,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACzC,CAAC,0BAA0B,EAAE,EAAE,CAAC;IAChC,CAAC,wBAAwB,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACrD,CAAC,uBAAuB,EAAE;YACxB,GAAG,oBAAoB;YACvB;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,mBAAmB;gBAC9B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,0CAA0C;aACxD;SACF,CAAC;IACF,CAAC,yBAAyB,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACtD,CAAC,uBAAuB,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC;CACrD,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { TypeRegistry } from "../registry.js";
2
+ export interface DesugarResult {
3
+ /** The canonical-shaped object; `{}` when the document was unusable. */
4
+ canonical: Record<string, unknown>;
5
+ /** Collected desugar problems (never thrown). */
6
+ errors: string[];
7
+ }
8
+ /** Desugar a parsed-YAML authoring document into a canonical-shaped object. */
9
+ export declare function desugar(input: unknown, registry: TypeRegistry): DesugarResult;
10
+ //# sourceMappingURL=yaml-desugar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-desugar.d.ts","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUnD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,CAI7E"}
@@ -0,0 +1,99 @@
1
+ // YAML authoring → canonical desugar.
2
+ //
3
+ // desugar() turns the sugared authoring object (from yaml.parse) into the
4
+ // canonical-shaped object that buildTree (parser-core.ts) consumes. It applies
5
+ // the four format-spec sugar rules:
6
+ // 1. Fused key, subType omittable — a bare `type` key resolves to the type's
7
+ // registry default subType.
8
+ // 2. Scalar-or-map body — a scalar body becomes { name: <scalar> }.
9
+ // 3. Omit empties — absent keys stay absent; the desugar invents nothing.
10
+ // 4. `[]` arrays — a trailing `[]` on the key strips to isArray: true.
11
+ //
12
+ // Pure and total: it never throws. Malformed fragments are collected as error
13
+ // strings and a safe placeholder is substituted so buildTree does not
14
+ // double-report.
15
+ import { RESERVED_KEY_CHILDREN, RESERVED_KEY_NAME, RESERVED_KEY_IS_ARRAY, TYPE_SUBTYPE_SEPARATOR, } from "../shared/structural.js";
16
+ const ARRAY_SUFFIX = "[]";
17
+ /** Desugar a parsed-YAML authoring document into a canonical-shaped object. */
18
+ export function desugar(input, registry) {
19
+ const errors = [];
20
+ const node = desugarNode(input, registry, errors, "<root>");
21
+ return { canonical: node ?? {}, errors };
22
+ }
23
+ // Desugar one node — a single-key mapping { "type.subType": body }.
24
+ // Returns the canonical node object, or undefined if `input` is not a usable
25
+ // node (the caller substitutes a placeholder).
26
+ function desugarNode(input, registry, errors, path) {
27
+ if (typeof input !== "object" || input === null || Array.isArray(input)) {
28
+ errors.push(`Node at ${path} must be a mapping with one type key`);
29
+ return undefined;
30
+ }
31
+ const entries = Object.keys(input);
32
+ if (entries.length !== 1) {
33
+ errors.push(`Node at ${path} must have exactly one type key (found: ${entries.length === 0 ? "none" : entries.join(", ")})`);
34
+ return undefined;
35
+ }
36
+ const rawKey = entries[0];
37
+ const rawBody = input[rawKey];
38
+ // Rule 4: a trailing "[]" on the key → isArray.
39
+ let key = rawKey;
40
+ let isArray = false;
41
+ if (key.endsWith(ARRAY_SUFFIX)) {
42
+ key = key.slice(0, -ARRAY_SUFFIX.length);
43
+ isArray = true;
44
+ }
45
+ // Rule 1: a bare `type` key → the type's registry default subType.
46
+ const canonicalKey = resolveKey(key, registry, errors, path);
47
+ // Rule 2: a scalar body → { name: <scalar> }.
48
+ const body = desugarBody(rawBody, errors, path);
49
+ // Rule 4 (cont.): stamp isArray onto the canonical body.
50
+ if (isArray)
51
+ body[RESERVED_KEY_IS_ARRAY] = true;
52
+ // Recurse into children.
53
+ const rawChildren = body[RESERVED_KEY_CHILDREN];
54
+ if (Array.isArray(rawChildren)) {
55
+ const children = [];
56
+ for (let i = 0; i < rawChildren.length; i++) {
57
+ const childPath = `${path}.${RESERVED_KEY_CHILDREN}[${i}]`;
58
+ const child = desugarNode(rawChildren[i], registry, errors, childPath);
59
+ // On a bad child keep an empty-object placeholder so sibling indices
60
+ // stay stable; the error is already collected.
61
+ children.push(child ?? {});
62
+ }
63
+ body[RESERVED_KEY_CHILDREN] = children;
64
+ }
65
+ // A non-array `children` value is left untouched — buildTree reports it.
66
+ return { [canonicalKey]: body };
67
+ }
68
+ // Rule 1 — resolve a possibly-bare key to a fused `type.subType` token.
69
+ function resolveKey(key, registry, errors, path) {
70
+ if (key.includes(TYPE_SUBTYPE_SEPARATOR))
71
+ return key; // already fused
72
+ const subType = registry.defaultSubTypeOf(key);
73
+ if (subType === undefined) {
74
+ errors.push(`Cannot resolve subType for bare type key '${key}' at ${path} — ` +
75
+ `type '${key}' has no default subType; write the full 'type.subType'`);
76
+ return key; // pass through; buildTree reports the unknown type
77
+ }
78
+ return `${key}${TYPE_SUBTYPE_SEPARATOR}${subType}`;
79
+ }
80
+ // Rule 2 — normalize a node body into a canonical mapping.
81
+ function desugarBody(rawBody, errors, path) {
82
+ if (typeof rawBody === "string" ||
83
+ typeof rawBody === "number" ||
84
+ typeof rawBody === "boolean") {
85
+ return { [RESERVED_KEY_NAME]: rawBody };
86
+ }
87
+ if (rawBody === null || rawBody === undefined) {
88
+ // An empty body (`field.string:` with nothing after) → an empty node.
89
+ return {};
90
+ }
91
+ if (Array.isArray(rawBody)) {
92
+ errors.push(`Node body at ${path} must be a scalar or mapping, not a list`);
93
+ return {};
94
+ }
95
+ // A mapping — shallow-copy so isArray / children replacement do not mutate
96
+ // the caller's parsed-YAML object.
97
+ return { ...rawBody };
98
+ }
99
+ //# sourceMappingURL=yaml-desugar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-desugar.js","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AttrSchema } from "./registry.js";
2
+ /** Attrs common to every field subtype (codegen-ts column mapper + Project D filter/sort). */
3
+ export declare const commonFieldAttrs: AttrSchema[];
4
+ /** The @currency attr — only on field.currency. */
5
+ export declare const currencyFieldAttr: AttrSchema;
6
+ /** Attrs on view.currency. */
7
+ export declare const currencyViewAttrs: AttrSchema[];
8
+ /** Attrs common to every object subtype. */
9
+ export declare const objectAttrs: AttrSchema[];
10
+ /** Attrs common to every relationship subtype. */
11
+ export declare const relationshipAttrs: AttrSchema[];
12
+ /** Attrs on identity.primary / identity.secondary — @fields is required. */
13
+ export declare const identityFieldsAttr: AttrSchema;
14
+ /** Attrs on layout.dataGrid. */
15
+ export declare const dataGridLayoutAttrs: AttrSchema[];
16
+ /** Attrs per origin subtype. base has none; passthrough and aggregate carry their respective attrs. */
17
+ export declare const ORIGIN_ATTRS_MAP: Map<string, AttrSchema[]>;
18
+ /** Attrs per identity subtype. primary adds @generation; secondary adds @unique. */
19
+ export declare const IDENTITY_ATTRS_MAP: Map<string, AttrSchema[]>;
20
+ /** Attrs per validator subtype. Required uses none; regex adds @pattern. */
21
+ export declare const VALIDATOR_ATTRS_MAP: Map<string, AttrSchema[]>;
22
+ //# sourceMappingURL=core-attr-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-attr-schemas.d.ts","sourceRoot":"","sources":["../src/core-attr-schemas.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAiEhD,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,EAAE,UAAU,EAkFxC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,EAAE,UAO/B,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,iBAAiB,EAAE,UAAU,EASzC,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,WAAW,EAAE,UAAU,EASnC,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,EAAE,UAAU,EAgCzC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,UAMhC,CAAC;AAyFF,gCAAgC;AAChC,eAAO,MAAM,mBAAmB,EAAE,UAAU,EAuC3C,CAAC;AAkBF,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,2BAI3B,CAAC;AAEH,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,2BAI7B,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,2BAe9B,CAAC"}