@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,121 @@
1
+ // MetaField — concrete node class for type=field nodes.
2
+ //
3
+ // Extends MetaData directly: no model wrapper, no metaOf() indirection.
4
+ // Children are already concrete typed nodes; accessors filter by type constant.
5
+ import { MetaData } from "../../shared/meta-data.js";
6
+ import { DATA_TYPE_STRING, DATA_TYPE_INT, DATA_TYPE_LONG, DATA_TYPE_DOUBLE, DATA_TYPE_BOOLEAN, DATA_TYPE_DATE, DATA_TYPE_OBJECT, } from "../../data-type.js";
7
+ import { convertToDataType } from "../../data-converter.js";
8
+ import { TYPE_VALIDATOR, TYPE_VIEW, SUBTYPE_BASE } from "../../shared/base-types.js";
9
+ import { FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_CLASS, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_SHORT, FIELD_SUBTYPE_BYTE, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_REQUIRED, FIELD_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_PRECISION, FIELD_ATTR_SCALE, FIELD_ATTR_OBJECT_REF, } from "./field-constants.js";
10
+ import { FIELD_ATTR_DB_COLUMN } from "../../persistence/db/db-constants.js";
11
+ import { VALIDATOR_SUBTYPE_REQUIRED } from "../validator/validator-constants.js";
12
+ /** Field subtype → DataType. Co-located with the class — a provider adding a
13
+ * field subtype supplies its own dataType the same way. */
14
+ const FIELD_DATA_TYPE = {
15
+ [SUBTYPE_BASE]: DATA_TYPE_STRING,
16
+ [FIELD_SUBTYPE_STRING]: DATA_TYPE_STRING,
17
+ [FIELD_SUBTYPE_CLASS]: DATA_TYPE_STRING,
18
+ [FIELD_SUBTYPE_INT]: DATA_TYPE_INT,
19
+ [FIELD_SUBTYPE_SHORT]: DATA_TYPE_INT,
20
+ [FIELD_SUBTYPE_BYTE]: DATA_TYPE_INT,
21
+ [FIELD_SUBTYPE_LONG]: DATA_TYPE_LONG,
22
+ [FIELD_SUBTYPE_CURRENCY]: DATA_TYPE_LONG,
23
+ [FIELD_SUBTYPE_DOUBLE]: DATA_TYPE_DOUBLE,
24
+ [FIELD_SUBTYPE_FLOAT]: DATA_TYPE_DOUBLE,
25
+ [FIELD_SUBTYPE_DECIMAL]: DATA_TYPE_DOUBLE,
26
+ [FIELD_SUBTYPE_BOOLEAN]: DATA_TYPE_BOOLEAN,
27
+ [FIELD_SUBTYPE_DATE]: DATA_TYPE_DATE,
28
+ [FIELD_SUBTYPE_TIME]: DATA_TYPE_DATE,
29
+ [FIELD_SUBTYPE_TIMESTAMP]: DATA_TYPE_DATE,
30
+ [FIELD_SUBTYPE_OBJECT]: DATA_TYPE_OBJECT,
31
+ };
32
+ export class MetaField extends MetaData {
33
+ /** The coarse value-type classification for this field's subtype. */
34
+ get dataType() {
35
+ return FIELD_DATA_TYPE[this.subType] ?? this._dataType ?? DATA_TYPE_STRING;
36
+ }
37
+ /** Coerce a raw value toward this field's DataType (Java DataConverter parity). */
38
+ coerce(raw) {
39
+ return convertToDataType(this.dataType, raw);
40
+ }
41
+ /** The target object name for an object-typed field (the `@objectRef` attr). */
42
+ get objectRef() {
43
+ const v = this.ownAttr(FIELD_ATTR_OBJECT_REF);
44
+ return typeof v === "string" ? v : undefined;
45
+ }
46
+ get dbColumn() {
47
+ const v = this.ownAttr(FIELD_ATTR_DB_COLUMN);
48
+ return typeof v === "string" ? v : undefined;
49
+ }
50
+ get default() {
51
+ return this.ownAttr(FIELD_ATTR_DEFAULT);
52
+ }
53
+ /**
54
+ * The default value for this field, converted to the field's own DataType.
55
+ *
56
+ * Java parity: MetaField.getDefaultValue() — reads the raw @default attr and
57
+ * converts it via DataConverter.toTypeSafe(getDataType(), raw). This ensures
58
+ * that even if the raw value was stored as a string (e.g. "@default": "false"
59
+ * in YAML or string-keyed JSON), the returned value is the correctly-typed
60
+ * boolean/number/string for this field's subtype.
61
+ *
62
+ * Returns undefined when @default is not set on this field.
63
+ * Result is cached after freeze (same pattern as validators()/views()).
64
+ */
65
+ defaultValue() {
66
+ return this.cached("defaultValue", () => {
67
+ const raw = this.ownAttr(FIELD_ATTR_DEFAULT);
68
+ if (raw === undefined)
69
+ return undefined;
70
+ return this.coerce(raw);
71
+ });
72
+ }
73
+ get maxLength() {
74
+ const v = this.ownAttr(FIELD_ATTR_MAX_LENGTH);
75
+ return typeof v === "number" ? v : undefined;
76
+ }
77
+ get precision() {
78
+ const v = this.ownAttr(FIELD_ATTR_PRECISION);
79
+ return typeof v === "number" ? v : undefined;
80
+ }
81
+ get scale() {
82
+ const v = this.ownAttr(FIELD_ATTR_SCALE);
83
+ return typeof v === "number" ? v : undefined;
84
+ }
85
+ /** True if `@unique: true` is set on the field itself (column-level unique). */
86
+ get unique() {
87
+ return this.ownAttr(FIELD_ATTR_UNIQUE) === true;
88
+ }
89
+ /**
90
+ * True if the field is required (NOT NULL).
91
+ *
92
+ * Checks both `@required: true` attr and `validator.required` children —
93
+ * matches the codegen-ts isRequired() semantics.
94
+ */
95
+ get isRequired() {
96
+ if (this.ownAttr(FIELD_ATTR_REQUIRED) === true)
97
+ return true;
98
+ return this.validators().some((v) => v.subType === VALIDATOR_SUBTYPE_REQUIRED);
99
+ }
100
+ /** All effective validators (own + inherited via extends). Java parity: MetaField.getValidators() / getChildren(MetaValidator.class, true). */
101
+ validators() {
102
+ return this.cached("validators", () => this.children().filter((c) => c.type === TYPE_VALIDATOR));
103
+ }
104
+ /** Own validators only — excludes validators inherited via extends. Java parity: getChildren(Class, false). */
105
+ ownValidators() {
106
+ return this.cached("ownValidators", () => this.ownChildren().filter((c) => c.type === TYPE_VALIDATOR));
107
+ }
108
+ /** All effective views (own + inherited via extends). Java parity: MetaField.getViews() / getChildren(MetaView.class, true). */
109
+ views() {
110
+ return this.cached("views", () => this.children().filter((c) => c.type === TYPE_VIEW));
111
+ }
112
+ /** Own views only — excludes views inherited via extends. */
113
+ ownViews() {
114
+ return this.cached("ownViews", () => this.ownChildren().filter((c) => c.type === TYPE_VIEW));
115
+ }
116
+ /** The typed supertype field if `extends:` resolved, else undefined. */
117
+ resolveSuper() {
118
+ return this.superData;
119
+ }
120
+ }
121
+ //# sourceMappingURL=meta-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-field.js","sourceRoot":"","sources":["../../../src/core/field/meta-field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { MetaDataLoader, type LoadResult } from "../loader/meta-data-loader.js";
2
+ import type { ParseOptions, ParseResult } from "../parser-core.js";
3
+ import type { MetaDataSource } from "../loader/meta-data-source.js";
4
+ export declare class FileMetaDataLoader extends MetaDataLoader {
5
+ /** Adds YAML parsing on top of the base loader's JSON-only `parseSource`. */
6
+ protected parseSource(content: string, source: MetaDataSource, parseOpts: ParseOptions): ParseResult;
7
+ /**
8
+ * Load every `.json` / `.yaml` / `.yml` file in a directory (non-recursive),
9
+ * in deterministic ordinal filename order.
10
+ * @param opts.exclude glob patterns (relative to dir) to skip — `*` / `**`.
11
+ */
12
+ loadDirectory(dir: string, opts?: {
13
+ exclude?: string[];
14
+ }): Promise<LoadResult>;
15
+ /** Load an explicit list of file paths, in order. */
16
+ loadFiles(paths: string[]): Promise<LoadResult>;
17
+ }
18
+ //# sourceMappingURL=file-meta-data-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-meta-data-loader.d.ts","sourceRoot":"","sources":["../../src/core/file-meta-data-loader.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAYpE,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,6EAA6E;cAC1D,WAAW,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,YAAY,GACtB,WAAW;IAOd;;;;OAIG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IA2CpF,qDAAqD;IAC/C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAGtD"}
@@ -0,0 +1,81 @@
1
+ // FileMetaDataLoader — discovers file-backed MetaDataSources and runs the
2
+ // MetaDataLoader pipeline over them. A UrlMetaDataLoader will slot in the
3
+ // same way later.
4
+ import { readdir, stat } from "node:fs/promises";
5
+ import { join } from "node:path";
6
+ import { MetaDataLoader } from "../loader/meta-data-loader.js";
7
+ import { FileSource } from "./file-source.js";
8
+ import { parseYaml } from "./parser-yaml.js";
9
+ /** Minimal glob matcher supporting `*` (any chars except `/`) and `**` (any chars). */
10
+ function matchSimpleGlob(pattern, value) {
11
+ const regexStr = pattern
12
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
13
+ .replace(/\*\*/g, "::DOUBLESTAR::")
14
+ .replace(/\*/g, "[^/]*")
15
+ .replace(/::DOUBLESTAR::/g, ".*");
16
+ return new RegExp(`^${regexStr}$`).test(value);
17
+ }
18
+ export class FileMetaDataLoader extends MetaDataLoader {
19
+ /** Adds YAML parsing on top of the base loader's JSON-only `parseSource`. */
20
+ parseSource(content, source, parseOpts) {
21
+ if (source.format === "yaml") {
22
+ return parseYaml(content, parseOpts);
23
+ }
24
+ return super.parseSource(content, source, parseOpts);
25
+ }
26
+ /**
27
+ * Load every `.json` / `.yaml` / `.yml` file in a directory (non-recursive),
28
+ * in deterministic ordinal filename order.
29
+ * @param opts.exclude glob patterns (relative to dir) to skip — `*` / `**`.
30
+ */
31
+ async loadDirectory(dir, opts) {
32
+ let entries;
33
+ try {
34
+ // Sorted for deterministic multi-file load order: the overlay merge is
35
+ // order-sensitive (last-writer-wins on attr conflicts), so the scan must
36
+ // not depend on filesystem readdir order. Ordinal filename sort is
37
+ // reproducible across the Java/Python/C# ports.
38
+ entries = (await readdir(dir)).sort();
39
+ }
40
+ catch (err) {
41
+ // Surface the I/O failure as a collected error via the empty-source path.
42
+ const emptyResult = await this.load([]);
43
+ return {
44
+ ...emptyResult,
45
+ errors: [
46
+ new Error(`loadDirectory: cannot read ${dir}: ${err.message}`),
47
+ ...emptyResult.errors,
48
+ ],
49
+ };
50
+ }
51
+ const excludes = opts?.exclude ?? [];
52
+ const paths = [];
53
+ for (const entry of entries) {
54
+ const lower = entry.toLowerCase();
55
+ if (!lower.endsWith(".json") && !lower.endsWith(".yaml") && !lower.endsWith(".yml")) {
56
+ continue;
57
+ }
58
+ const filePath = join(dir, entry);
59
+ let statResult;
60
+ try {
61
+ statResult = await stat(filePath);
62
+ }
63
+ catch {
64
+ // Entry vanished between readdir and stat (TOCTOU) or is not accessible.
65
+ // Skip it rather than breaking the no-throw contract of loadDirectory.
66
+ continue;
67
+ }
68
+ if (!statResult.isFile())
69
+ continue;
70
+ if (excludes.some((p) => matchSimpleGlob(p, entry)))
71
+ continue;
72
+ paths.push(filePath);
73
+ }
74
+ return this.loadFiles(paths);
75
+ }
76
+ /** Load an explicit list of file paths, in order. */
77
+ async loadFiles(paths) {
78
+ return this.load(paths.map((p) => new FileSource(p)));
79
+ }
80
+ }
81
+ //# sourceMappingURL=file-meta-data-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-meta-data-loader.js","sourceRoot":"","sources":["../../src/core/file-meta-data-loader.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,kBAAkB;AAGlB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAmB,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,uFAAuF;AACvF,SAAS,eAAe,CAAC,OAAe,EAAE,KAAa;IACrD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,MAAM,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,6EAA6E;IAC1D,WAAW,CAC5B,OAAe,EACf,MAAsB,EACtB,SAAuB;QAEvB,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,IAA6B;QAC5D,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,uEAAuE;YACvE,yEAAyE;YACzE,mEAAmE;YACnE,gDAAgD;YAChD,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO;gBACL,GAAG,WAAW;gBACd,MAAM,EAAE;oBACN,IAAI,KAAK,CAAC,8BAA8B,GAAG,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC;oBACzE,GAAG,WAAW,CAAC,MAAM;iBACtB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpF,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,UAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;gBACzE,uEAAuE;gBACvE,SAAS;YACX,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAAE,SAAS;YACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAAE,SAAS;YAC9D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,SAAS,CAAC,KAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { MetaDataFormat, MetaDataSource } from "../loader/meta-data-source.js";
2
+ /** A metadata source backed by a file on disk. */
3
+ export declare class FileSource implements MetaDataSource {
4
+ readonly id: string;
5
+ readonly format: MetaDataFormat;
6
+ private readonly _path;
7
+ constructor(path: string);
8
+ /** The absolute/relative path this source reads from. */
9
+ get path(): string;
10
+ read(): Promise<string>;
11
+ }
12
+ //# sourceMappingURL=file-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-source.d.ts","sourceRoot":"","sources":["../../src/core/file-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAwBpF,kDAAkD;AAClD,qBAAa,UAAW,YAAW,cAAc;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,IAAI,EAAE,MAAM;IAOxB,yDAAyD;IACzD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAI9B"}
@@ -0,0 +1,46 @@
1
+ // FileSource — a MetaDataSource backed by a file on disk. Server-side only
2
+ // (touches node:fs); lives under src/core/ so the browser-safe root never
3
+ // imports it.
4
+ import { basename, extname } from "node:path";
5
+ /** Infer a source format from a file extension. `.yaml`/`.yml` → "yaml";
6
+ * everything else (including `.json`) → "json", the canonical default. */
7
+ function inferFormat(path) {
8
+ const ext = extname(path).toLowerCase();
9
+ return ext === ".yaml" || ext === ".yml" ? "yaml" : "json";
10
+ }
11
+ // File reader — Bun-first (Bun.file().text()) with a Node fallback
12
+ // (node:fs/promises.readFile). Matches CLAUDE.md's Bun-first / Node-compatible policy.
13
+ let _readText;
14
+ async function getReadText() {
15
+ if (_readText !== undefined)
16
+ return _readText;
17
+ if (typeof Bun !== "undefined") {
18
+ _readText = (p) => Bun.file(p).text();
19
+ }
20
+ else {
21
+ const { readFile } = await import("node:fs/promises");
22
+ _readText = (p) => readFile(p, "utf-8");
23
+ }
24
+ return _readText;
25
+ }
26
+ /** A metadata source backed by a file on disk. */
27
+ export class FileSource {
28
+ id;
29
+ format;
30
+ _path;
31
+ constructor(path) {
32
+ this._path = path;
33
+ // basename() for readable error messages; cross-platform (handles both / and \). Full path retained for read().
34
+ this.id = basename(path);
35
+ this.format = inferFormat(path);
36
+ }
37
+ /** The absolute/relative path this source reads from. */
38
+ get path() {
39
+ return this._path;
40
+ }
41
+ async read() {
42
+ const readText = await getReadText();
43
+ return readText(this._path);
44
+ }
45
+ }
46
+ //# sourceMappingURL=file-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-source.js","sourceRoot":"","sources":["../../src/core/file-source.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0EAA0E;AAC1E,cAAc;AAEd,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG9C;2EAC2E;AAC3E,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,mEAAmE;AACnE,uFAAuF;AACvF,IAAI,SAA0D,CAAC;AAE/D,KAAK,UAAU,WAAW;IACxB,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC;QAC/B,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtD,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kDAAkD;AAClD,MAAM,OAAO,UAAU;IACZ,EAAE,CAAS;IACX,MAAM,CAAiB;IACf,KAAK,CAAS;IAE/B,YAAY,IAAY;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,gHAAgH;QAChH,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,yDAAyD;IACzD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ export declare const IDENTITY_SUBTYPE_PRIMARY = "primary";
2
+ export declare const IDENTITY_SUBTYPE_SECONDARY = "secondary";
3
+ export declare const IDENTITY_SUBTYPE_REFERENCE = "reference";
4
+ export declare const IDENTITY_SUBTYPES: readonly ["primary", "secondary", "reference"];
5
+ export type IdentitySubType = (typeof IDENTITY_SUBTYPES)[number];
6
+ export declare const IDENTITY_ATTR_FIELDS = "fields";
7
+ export declare const IDENTITY_ATTR_GENERATION = "generation";
8
+ /** On secondary identities: true → uniqueIndex; false/absent → index. Defaults to true for back-compat. */
9
+ export declare const IDENTITY_ATTR_UNIQUE = "unique";
10
+ /** Identity-reference attr: target entity (bare or dotted `Entity.field` / `Entity.fA,fB`). */
11
+ export declare const IDENTITY_REFERENCE_ATTR_REFERENCES = "references";
12
+ /** Identity-reference attr: physical-enforcement flag. Default true → hard FK constraint; false → logical-only reference. */
13
+ export declare const IDENTITY_REFERENCE_ATTR_ENFORCE = "enforce";
14
+ export declare const GENERATION_INCREMENT = "increment";
15
+ export declare const GENERATION_UUID = "uuid";
16
+ export declare const GENERATION_ASSIGNED = "assigned";
17
+ export declare const GENERATION_VALUES: readonly ["increment", "uuid", "assigned"];
18
+ export type GenerationValue = (typeof GENERATION_VALUES)[number];
19
+ //# sourceMappingURL=identity-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-constants.d.ts","sourceRoot":"","sources":["../../../src/core/identity/identity-constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,0BAA0B,cAAc,CAAC;AACtD,eAAO,MAAM,0BAA0B,cAAc,CAAC;AAEtD,eAAO,MAAM,iBAAiB,gDAIpB,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMjE,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,2GAA2G;AAC3G,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,+FAA+F;AAC/F,eAAO,MAAM,kCAAkC,eAAe,CAAC;AAC/D,6HAA6H;AAC7H,eAAO,MAAM,+BAA+B,YAAY,CAAC;AAMzD,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C,eAAO,MAAM,iBAAiB,4CAIpB,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ // Identity concern constants — subtypes, attr keys, and generation strategy values.
2
+ // ---------------------------------------------------------------------------
3
+ // Identity subtypes (3: primary, secondary, reference — NO base; Java doesn't register one)
4
+ // ---------------------------------------------------------------------------
5
+ export const IDENTITY_SUBTYPE_PRIMARY = "primary";
6
+ export const IDENTITY_SUBTYPE_SECONDARY = "secondary";
7
+ export const IDENTITY_SUBTYPE_REFERENCE = "reference";
8
+ export const IDENTITY_SUBTYPES = [
9
+ IDENTITY_SUBTYPE_PRIMARY,
10
+ IDENTITY_SUBTYPE_SECONDARY,
11
+ IDENTITY_SUBTYPE_REFERENCE,
12
+ ];
13
+ // ---------------------------------------------------------------------------
14
+ // Identity attrs
15
+ // ---------------------------------------------------------------------------
16
+ export const IDENTITY_ATTR_FIELDS = "fields";
17
+ export const IDENTITY_ATTR_GENERATION = "generation";
18
+ /** On secondary identities: true → uniqueIndex; false/absent → index. Defaults to true for back-compat. */
19
+ export const IDENTITY_ATTR_UNIQUE = "unique";
20
+ /** Identity-reference attr: target entity (bare or dotted `Entity.field` / `Entity.fA,fB`). */
21
+ export const IDENTITY_REFERENCE_ATTR_REFERENCES = "references";
22
+ /** Identity-reference attr: physical-enforcement flag. Default true → hard FK constraint; false → logical-only reference. */
23
+ export const IDENTITY_REFERENCE_ATTR_ENFORCE = "enforce";
24
+ // ---------------------------------------------------------------------------
25
+ // Identity generation strategies (values for IDENTITY_ATTR_GENERATION)
26
+ // ---------------------------------------------------------------------------
27
+ export const GENERATION_INCREMENT = "increment";
28
+ export const GENERATION_UUID = "uuid";
29
+ export const GENERATION_ASSIGNED = "assigned";
30
+ export const GENERATION_VALUES = [
31
+ GENERATION_INCREMENT,
32
+ GENERATION_UUID,
33
+ GENERATION_ASSIGNED,
34
+ ];
35
+ //# sourceMappingURL=identity-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-constants.js","sourceRoot":"","sources":["../../../src/core/identity/identity-constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,8EAA8E;AAC9E,4FAA4F;AAC5F,8EAA8E;AAE9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,wBAAwB;IACxB,0BAA0B;IAC1B,0BAA0B;CAClB,CAAC;AAGX,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC;AACrD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,kCAAkC,GAAG,YAAY,CAAC;AAC/D,6HAA6H;AAC7H,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAEzD,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,oBAAoB;IACpB,eAAe;IACf,mBAAmB;CACX,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AttrSchema } from "../../registry.js";
2
+ /** Attrs on identity.primary / identity.secondary — @fields is required. */
3
+ export declare const identityFieldsAttr: AttrSchema;
4
+ /** Attrs per identity subtype. primary adds @generation; secondary adds @unique. */
5
+ export declare const IDENTITY_ATTRS_MAP: Map<string, AttrSchema[]>;
6
+ //# sourceMappingURL=identity-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-schema.d.ts","sourceRoot":"","sources":["../../../src/core/identity/identity-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkBpD,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,UAMhC,CAAC;AA8CF,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,2BAI7B,CAAC"}
@@ -0,0 +1,55 @@
1
+ // Identity attribute schemas — per-subtype attr inventories for identity types.
2
+ // Consumed by registerCoreTypes().
3
+ import { ATTR_SUBTYPE_STRING, ATTR_SUBTYPE_BOOLEAN, ATTR_SUBTYPE_STRINGARRAY, } from "../attr/attr-constants.js";
4
+ import { IDENTITY_SUBTYPE_PRIMARY, IDENTITY_SUBTYPE_SECONDARY, IDENTITY_SUBTYPE_REFERENCE, IDENTITY_ATTR_FIELDS, IDENTITY_ATTR_GENERATION, IDENTITY_ATTR_UNIQUE, IDENTITY_REFERENCE_ATTR_REFERENCES, IDENTITY_REFERENCE_ATTR_ENFORCE, GENERATION_VALUES, } from "./identity-constants.js";
5
+ /** Attrs on identity.primary / identity.secondary — @fields is required. */
6
+ export const identityFieldsAttr = {
7
+ name: IDENTITY_ATTR_FIELDS,
8
+ valueType: ATTR_SUBTYPE_STRINGARRAY,
9
+ required: true,
10
+ description: "The field name(s) composing this identity. Single-element for a simple PK/index, multiple for a composite.",
11
+ };
12
+ const primaryIdentityAttrs = [
13
+ { ...identityFieldsAttr },
14
+ {
15
+ name: IDENTITY_ATTR_GENERATION,
16
+ valueType: ATTR_SUBTYPE_STRING,
17
+ required: false,
18
+ allowedValues: [...GENERATION_VALUES],
19
+ description: "Primary-key value generation strategy: 'increment' (auto-increment), 'uuid', or 'assigned' (caller-supplied).",
20
+ },
21
+ ];
22
+ const secondaryIdentityAttrs = [
23
+ { ...identityFieldsAttr },
24
+ {
25
+ name: IDENTITY_ATTR_UNIQUE,
26
+ valueType: ATTR_SUBTYPE_BOOLEAN,
27
+ required: false,
28
+ description: "When true (default), the secondary identity is a UNIQUE index; false makes it a plain (non-unique) index.",
29
+ },
30
+ ];
31
+ const referenceIdentityAttrs = [
32
+ { ...identityFieldsAttr },
33
+ {
34
+ name: IDENTITY_REFERENCE_ATTR_REFERENCES,
35
+ valueType: ATTR_SUBTYPE_STRING,
36
+ required: true,
37
+ description: "Target of the reference. Bare entity name (e.g. 'Program') resolves to that entity's primary identity. " +
38
+ "Dotted forms ('Program.id' or 'Program.fieldA,fieldB') target an explicit field set on the entity.",
39
+ },
40
+ {
41
+ name: IDENTITY_REFERENCE_ATTR_ENFORCE,
42
+ valueType: ATTR_SUBTYPE_BOOLEAN,
43
+ required: false,
44
+ description: "When true (default), the backend physically enforces the reference (SQL FK constraint, " +
45
+ "document validation rule, graph edge guarantee). Set false to declare a logical reference " +
46
+ "for navigation/typing/codegen only — the value may dangle at the backend level.",
47
+ },
48
+ ];
49
+ /** Attrs per identity subtype. primary adds @generation; secondary adds @unique. */
50
+ export const IDENTITY_ATTRS_MAP = new Map([
51
+ [IDENTITY_SUBTYPE_PRIMARY, [...primaryIdentityAttrs]],
52
+ [IDENTITY_SUBTYPE_SECONDARY, [...secondaryIdentityAttrs]],
53
+ [IDENTITY_SUBTYPE_REFERENCE, [...referenceIdentityAttrs]],
54
+ ]);
55
+ //# sourceMappingURL=identity-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-schema.js","sourceRoot":"","sources":["../../../src/core/identity/identity-schema.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mCAAmC;AAGnC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,+BAA+B,EAC/B,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,wBAAwB;IACnC,QAAQ,EAAE,IAAI;IACd,WAAW,EACT,4GAA4G;CAC/G,CAAC;AAEF,MAAM,oBAAoB,GAAiB;IACzC,EAAE,GAAG,kBAAkB,EAAE;IACzB;QACE,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,CAAC,GAAG,iBAAiB,CAAC;QACrC,WAAW,EACT,+GAA+G;KAClH;CACF,CAAC;AAEF,MAAM,sBAAsB,GAAiB;IAC3C,EAAE,GAAG,kBAAkB,EAAE;IACzB;QACE,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,oBAAoB;QAC/B,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,2GAA2G;KAC9G;CACF,CAAC;AAEF,MAAM,sBAAsB,GAAiB;IAC3C,EAAE,GAAG,kBAAkB,EAAE;IACzB;QACE,IAAI,EAAE,kCAAkC;QACxC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,yGAAyG;YACzG,oGAAoG;KACvG;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,SAAS,EAAE,oBAAoB;QAC/B,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,yFAAyF;YACzF,4FAA4F;YAC5F,iFAAiF;KACpF;CACF,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAuB;IAC9D,CAAC,wBAAwB,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACrD,CAAC,0BAA0B,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC;IACzD,CAAC,0BAA0B,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC;CAC1D,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { MetaData } from "../../shared/meta-data.js";
2
+ import type { MetaRoot } from "../../shared/meta-root.js";
3
+ /** Strongly-typed identity generation strategies. */
4
+ export type IdentityGeneration = "increment" | "uuid" | "assigned";
5
+ export declare class MetaIdentity extends MetaData {
6
+ get fields(): string[];
7
+ /**
8
+ * Whether the identity enforces uniqueness.
9
+ * Defaults to true; explicit `@unique: false` makes it a non-unique index.
10
+ */
11
+ get unique(): boolean;
12
+ isPrimary(): boolean;
13
+ isSecondary(): boolean;
14
+ isReference(): boolean;
15
+ isComposite(): boolean;
16
+ }
17
+ /**
18
+ * Primary identity (the entity's PK). Always unique by definition.
19
+ * Carries `@generation` (increment / uuid / assigned).
20
+ */
21
+ export declare class MetaPrimaryIdentity extends MetaIdentity {
22
+ get generation(): IdentityGeneration | undefined;
23
+ }
24
+ /**
25
+ * Secondary identity — a unique or non-unique index on one or more fields.
26
+ * `@generation` does not apply here.
27
+ */
28
+ export declare class MetaSecondaryIdentity extends MetaIdentity {
29
+ }
30
+ /**
31
+ * Reference identity — a field (or compound field set) on this entity whose
32
+ * value(s) identify an instance of another entity.
33
+ *
34
+ * Maps to: SQL foreign key, document linked reference, graph edge target,
35
+ * OO pointer/reference. Backend-agnostic at the metamodel level.
36
+ *
37
+ * Carries `@references` — either a bare entity name (defaults to that
38
+ * entity's primary identity) or a dotted `Entity.field` or
39
+ * `Entity.fieldA,fieldB` form for explicit field/compound targets.
40
+ */
41
+ export declare class MetaReferenceIdentity extends MetaIdentity {
42
+ /** Raw `@references` attr value, unparsed. */
43
+ get referencesRaw(): string | undefined;
44
+ /** Target entity name (the bit before the dot, or the whole bare value). */
45
+ get targetEntity(): string | undefined;
46
+ /**
47
+ * Whether the reference is physically enforced by the backend.
48
+ * Default true (hard FK constraint emitted). Explicit `@enforce: false`
49
+ * marks the reference as logical-only — drizzle-schema skips `.references()`
50
+ * and migrate-ts's expected schema omits the FK descriptor. relations()
51
+ * block and projection JOIN inference are unaffected.
52
+ */
53
+ get enforce(): boolean;
54
+ /**
55
+ * Target field names. Empty array means "use the target's primary identity"
56
+ * (the bare-entity form). For dotted forms, returns the field(s) after the
57
+ * dot (comma-split, trimmed).
58
+ */
59
+ get targetFields(): string[];
60
+ /**
61
+ * Resolve the target field on the referenced entity that this reference
62
+ * points at. Priority: explicit dotted-form `@references: "Entity.field"`
63
+ * override → target entity's primary identity field → "id" fallback.
64
+ *
65
+ * Returns undefined only if the target entity cannot be found in `root`.
66
+ * Centralizes the FK-target resolution rule used by projection view DDL,
67
+ * Drizzle schema emit, and migration schema comparison.
68
+ */
69
+ resolvedTargetPkField(root: MetaRoot): string | undefined;
70
+ }
71
+ //# sourceMappingURL=meta-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-identity.d.ts","sourceRoot":"","sources":["../../../src/core/identity/meta-identity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAWrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE,qBAAa,YAAa,SAAQ,QAAQ;IACxC,IAAI,MAAM,IAAI,MAAM,EAAE,CAGrB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;CAGvB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,IAAI,UAAU,IAAI,kBAAkB,GAAG,SAAS,CAG/C;CACF;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;CAAG;AAE1D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,8CAA8C;IAC9C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAGtC;IAED,4EAA4E;IAC5E,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAKrC;IAED;;;;;;OAMG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;OAIG;IACH,IAAI,YAAY,IAAI,MAAM,EAAE,CAU3B;IAED;;;;;;;;OAQG;IACH,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;CAe1D"}