@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,23 @@
1
+ export declare const TYPE_METADATA = "metadata";
2
+ export declare const TYPE_OBJECT = "object";
3
+ export declare const TYPE_FIELD = "field";
4
+ export declare const TYPE_ATTR = "attr";
5
+ export declare const TYPE_VALIDATOR = "validator";
6
+ export declare const TYPE_VIEW = "view";
7
+ export declare const TYPE_IDENTITY = "identity";
8
+ export declare const TYPE_RELATIONSHIP = "relationship";
9
+ export declare const TYPE_LAYOUT = "layout";
10
+ export declare const TYPE_SOURCE = "source";
11
+ export declare const TYPE_ORIGIN = "origin";
12
+ export declare const BASE_TYPES: readonly ["metadata", "object", "field", "attr", "validator", "view", "identity", "relationship", "layout", "source", "origin"];
13
+ export type BaseType = (typeof BASE_TYPES)[number];
14
+ export declare const SUBTYPE_BASE = "base";
15
+ /**
16
+ * The metadata document root subtype. The root node is `metadata.root` in the
17
+ * canonical format. (Distinct from the universal SUBTYPE_BASE — the redesigned
18
+ * format spec confirms the root subtype is `root`, not `base`.)
19
+ */
20
+ export declare const SUBTYPE_ROOT = "root";
21
+ export declare const METADATA_SUBTYPES: readonly ["root"];
22
+ export type MetadataSubType = (typeof METADATA_SUBTYPES)[number];
23
+ //# sourceMappingURL=base-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../../src/shared/base-types.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,eAAO,MAAM,UAAU,iIAYb,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAMnD,eAAO,MAAM,YAAY,SAAS,CAAC;AAMnC;;;;GAIG;AACH,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ // Base type vocabulary — the 11 registered base types + universal/metadata subtypes.
2
+ // ---------------------------------------------------------------------------
3
+ // Base type names (the 11 registered base types — Java metaobjects-core vocabulary)
4
+ // ---------------------------------------------------------------------------
5
+ export const TYPE_METADATA = "metadata";
6
+ export const TYPE_OBJECT = "object";
7
+ export const TYPE_FIELD = "field";
8
+ export const TYPE_ATTR = "attr";
9
+ export const TYPE_VALIDATOR = "validator";
10
+ export const TYPE_VIEW = "view";
11
+ export const TYPE_IDENTITY = "identity";
12
+ export const TYPE_RELATIONSHIP = "relationship";
13
+ export const TYPE_LAYOUT = "layout";
14
+ export const TYPE_SOURCE = "source";
15
+ export const TYPE_ORIGIN = "origin";
16
+ export const BASE_TYPES = [
17
+ TYPE_METADATA,
18
+ TYPE_OBJECT,
19
+ TYPE_FIELD,
20
+ TYPE_ATTR,
21
+ TYPE_VALIDATOR,
22
+ TYPE_VIEW,
23
+ TYPE_IDENTITY,
24
+ TYPE_RELATIONSHIP,
25
+ TYPE_LAYOUT,
26
+ TYPE_SOURCE,
27
+ TYPE_ORIGIN,
28
+ ];
29
+ // ---------------------------------------------------------------------------
30
+ // Universal subtype
31
+ // ---------------------------------------------------------------------------
32
+ export const SUBTYPE_BASE = "base";
33
+ // ---------------------------------------------------------------------------
34
+ // Metadata subtypes (1)
35
+ // ---------------------------------------------------------------------------
36
+ /**
37
+ * The metadata document root subtype. The root node is `metadata.root` in the
38
+ * canonical format. (Distinct from the universal SUBTYPE_BASE — the redesigned
39
+ * format spec confirms the root subtype is `root`, not `base`.)
40
+ */
41
+ export const SUBTYPE_ROOT = "root";
42
+ export const METADATA_SUBTYPES = [SUBTYPE_ROOT];
43
+ //# sourceMappingURL=base-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-types.js","sourceRoot":"","sources":["../../src/shared/base-types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,8EAA8E;AAC9E,oFAAoF;AACpF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa;IACb,WAAW;IACX,UAAU;IACV,SAAS;IACT,cAAc;IACd,SAAS;IACT,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,WAAW;IACX,WAAW;CACH,CAAC;AAGX,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,CAAU,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { TypeId } from "../registry.js";
2
+ import type { DataType } from "../data-type.js";
3
+ import type { MetaAttr } from "../core/attr/meta-attr.js";
4
+ export type AttrValue = string | number | boolean | string[] | AttrObject;
5
+ /**
6
+ * Object-shaped attr value (for `attr.filter` / `attr.properties`). Values are
7
+ * arbitrary JSON so a filter can hold nested `{ op: value }` clauses (including
8
+ * scalar arrays for `in` and `null` for `isNull`). Scalar/string[] attrs keep
9
+ * their existing arms — this arm is reached only by object-typed attr subtypes.
10
+ */
11
+ export type AttrObject = {
12
+ readonly [key: string]: AttrJson;
13
+ };
14
+ export type AttrJson = string | number | boolean | null | AttrJson[] | AttrObject;
15
+ export declare abstract class MetaData {
16
+ readonly typeId: TypeId;
17
+ readonly name: string;
18
+ package?: string;
19
+ superRef?: string;
20
+ private _superData?;
21
+ isAbstract: boolean;
22
+ isArray: boolean;
23
+ /**
24
+ * Per-node merge flag (v0.3 `merge: true` operator).
25
+ *
26
+ * When `true` on a node being parsed:
27
+ * - If an existing same-(type,name) child is found in the current parent → reuse it (merge into it).
28
+ * - If NOT found → throw: "Merge operation requested for [...] but no existing metadata found".
29
+ */
30
+ isMerge: boolean;
31
+ private _attrNodes;
32
+ private _ownValue?;
33
+ private _ownValueSet;
34
+ private _children;
35
+ private _parent?;
36
+ private _frozen;
37
+ protected _dataType?: DataType;
38
+ private readonly _cache;
39
+ constructor(typeId: TypeId, name: string);
40
+ /**
41
+ * Memoize a derived read. Only caches once the node is frozen — a value
42
+ * computed during the (mutable) load phase is never stored, so it cannot
43
+ * go stale. After freeze the tree is immutable, so a cached entry is valid
44
+ * for the node's lifetime; there is no invalidation.
45
+ */
46
+ protected cached<T>(key: string, compute: () => T): T;
47
+ get type(): string;
48
+ get subType(): string;
49
+ /** "package::name" if package is set, else just "name". Uses :: as separator (not .). */
50
+ fqn(): string;
51
+ private _assertNotFrozen;
52
+ setPackage(pkg: string): void;
53
+ /** Returns the resolved super model, or undefined if not yet resolved. */
54
+ get superData(): MetaData | undefined;
55
+ /** Temporary compatibility alias for `superData` — kept while super-resolve.ts still references this name; to be removed in a later task. */
56
+ get superResolved(): MetaData | undefined;
57
+ /**
58
+ * Sets the resolved super model. Normally called by Task 6's super resolution
59
+ * after parsing and before freezing.
60
+ */
61
+ setSuperResolved(model: MetaData): void;
62
+ setSuper(ref: string): void;
63
+ setIsArray(val: boolean): void;
64
+ /** Set the registry-supplied DataType. Called by the registry factory at
65
+ * node construction. */
66
+ setDataType(dt: DataType): void;
67
+ setIsAbstract(val: boolean): void;
68
+ setIsMerge(val: boolean): void;
69
+ setAttr(name: string, value: AttrValue): void;
70
+ /** Attach a pre-built MetaAttr instance (the parser path, which knows the
71
+ * declared subtype). Replaces any existing attr of the same name. */
72
+ setMetaAttr(node: MetaAttr): void;
73
+ /** Own (locally declared) attr value for `name`, or undefined — excludes inherited. */
74
+ ownAttr(name: string): AttrValue | undefined;
75
+ /** Own (locally declared) MetaAttr instance for `name`, or undefined. */
76
+ ownMetaAttr(name: string): MetaAttr | undefined;
77
+ /** Own MetaAttr instances, insertion-ordered, frozen; excludes inherited. */
78
+ ownMetaAttrs(): readonly MetaAttr[];
79
+ /** Own (locally declared) attr value map; excludes inherited. Cached. */
80
+ ownAttrs(): ReadonlyMap<string, AttrValue>;
81
+ /** True if `name` is an own (locally declared) attr — excludes inherited. */
82
+ ownHasAttr(name: string): boolean;
83
+ /**
84
+ * Effective attrs — own + inherited via the super chain, own winning on a key conflict; cached.
85
+ * Do not cast to `Map` and mutate — the same reference is returned on every call
86
+ * after freeze, so a mutation would corrupt subsequent reads.
87
+ */
88
+ attrs(): ReadonlyMap<string, AttrValue>;
89
+ /** Effective attr value for `name`, or undefined. */
90
+ attr(name: string): AttrValue | undefined;
91
+ /** True if `name` resolves to an effective attr (own or inherited). */
92
+ hasAttr(name: string): boolean;
93
+ addChild(child: MetaData): void;
94
+ /** The node this node was added to as a child, or undefined for the tree root. */
95
+ get parent(): MetaData | undefined;
96
+ /** Walk up to the top of the tree this node belongs to. */
97
+ root(): MetaData;
98
+ /** Own (locally declared) children — a cached frozen array; excludes children inherited via extends. */
99
+ ownChildren(): readonly MetaData[];
100
+ /** Own children whose type matches — excludes inherited. */
101
+ ownChildrenOfType(type: string): MetaData[];
102
+ /** Own children matching both type and subType — excludes inherited. */
103
+ ownChildrenOfSubType(type: string, subType: string): MetaData[];
104
+ /** First own child with matching name, or undefined — excludes inherited. */
105
+ ownChildByName(name: string): MetaData | undefined;
106
+ /** First own child matching both type and name, or undefined — excludes inherited. */
107
+ ownChildByTypeAndName(type: string, name: string): MetaData | undefined;
108
+ /** Effective children: own + inherited via the super chain, own shadowing super. Cached, frozen. */
109
+ children(): readonly MetaData[];
110
+ /** Effective children whose type matches. */
111
+ childrenOfType(type: string): MetaData[];
112
+ /** Effective children matching both type and subType. */
113
+ childrenOfSubType(type: string, subType: string): MetaData[];
114
+ /** First effective child with matching name, or undefined. */
115
+ childByName(name: string): MetaData | undefined;
116
+ /** First effective child matching both type and name, or undefined. */
117
+ childByTypeAndName(type: string, name: string): MetaData | undefined;
118
+ private _effectiveAttrs;
119
+ private _effectiveChildren;
120
+ freeze(): void;
121
+ isFrozen(): boolean;
122
+ }
123
+ //# sourceMappingURL=meta-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-data.d.ts","sourceRoot":"","sources":["../../src/shared/meta-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,365 @@
1
+ import { TypeId } from "../registry.js";
2
+ import { TYPE_ATTR } from "./base-types.js";
3
+ import { PACKAGE_SEPARATOR, RESERVED_KEY_VALUE } from "./structural.js";
4
+ import { inferAttrSubType } from "../serializer-json.js";
5
+ import { attrClassFor } from "../attr-class-map.js";
6
+ export class MetaData {
7
+ typeId;
8
+ name;
9
+ // Identity / packaging
10
+ package;
11
+ superRef; // raw super reference string, pre-resolution
12
+ _superData; // post-resolution pointer; set by setSuperResolved() after parsing
13
+ isAbstract = false;
14
+ // Native @isArray (boolean property, NOT in attrs!)
15
+ isArray = false;
16
+ /**
17
+ * Per-node merge flag (v0.3 `merge: true` operator).
18
+ *
19
+ * When `true` on a node being parsed:
20
+ * - If an existing same-(type,name) child is found in the current parent → reuse it (merge into it).
21
+ * - If NOT found → throw: "Merge operation requested for [...] but no existing metadata found".
22
+ */
23
+ isMerge = false;
24
+ // Internal storage — attributes as MetaAttr instances, name-indexed and
25
+ // insertion-ordered. NOT in _children (attrs never appear in ownChildren()).
26
+ _attrNodes = new Map();
27
+ // A MetaAttr's own scalar/array/object value is a terminal stored under the
28
+ // reserved "value" key. It is NOT materialized as a nested MetaAttr (that
29
+ // would recurse forever — every node would build a child to hold its value,
30
+ // which would build a child, ...). Read via ownAttr(RESERVED_KEY_VALUE) /
31
+ // MetaAttr.value; set via setAttr(RESERVED_KEY_VALUE, ...).
32
+ _ownValue;
33
+ _ownValueSet = false;
34
+ _children = [];
35
+ _parent;
36
+ _frozen = false;
37
+ // Registry-supplied coarse value type — set by the registry factory at node
38
+ // construction (for field/attr nodes). Read via MetaField/MetaAttr.dataType.
39
+ _dataType;
40
+ // Per-instance read cache: only populated once the node is frozen.
41
+ _cache = new Map();
42
+ constructor(typeId, name) {
43
+ this.typeId = typeId;
44
+ this.name = name;
45
+ }
46
+ // ---------------------------------------------------------------------------
47
+ // Cache helper
48
+ // ---------------------------------------------------------------------------
49
+ /**
50
+ * Memoize a derived read. Only caches once the node is frozen — a value
51
+ * computed during the (mutable) load phase is never stored, so it cannot
52
+ * go stale. After freeze the tree is immutable, so a cached entry is valid
53
+ * for the node's lifetime; there is no invalidation.
54
+ */
55
+ cached(key, compute) {
56
+ if (this._frozen && this._cache.has(key)) {
57
+ return this._cache.get(key);
58
+ }
59
+ const value = compute();
60
+ if (this._frozen)
61
+ this._cache.set(key, value);
62
+ return value;
63
+ }
64
+ // ---------------------------------------------------------------------------
65
+ // Convenience accessors
66
+ // ---------------------------------------------------------------------------
67
+ get type() {
68
+ return this.typeId.type;
69
+ }
70
+ get subType() {
71
+ return this.typeId.subType;
72
+ }
73
+ /** "package::name" if package is set, else just "name". Uses :: as separator (not .). */
74
+ fqn() {
75
+ if (this.package !== undefined) {
76
+ return `${this.package}${PACKAGE_SEPARATOR}${this.name}`;
77
+ }
78
+ return this.name;
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Freeze guard
82
+ // ---------------------------------------------------------------------------
83
+ _assertNotFrozen() {
84
+ if (this._frozen) {
85
+ throw new Error(`Cannot mutate frozen MetaData ${this.fqn()}`);
86
+ }
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // Package
90
+ // ---------------------------------------------------------------------------
91
+ setPackage(pkg) {
92
+ this._assertNotFrozen();
93
+ this.package = pkg;
94
+ }
95
+ // ---------------------------------------------------------------------------
96
+ // Super
97
+ // ---------------------------------------------------------------------------
98
+ /** Returns the resolved super model, or undefined if not yet resolved. */
99
+ get superData() {
100
+ return this._superData;
101
+ }
102
+ /** Temporary compatibility alias for `superData` — kept while super-resolve.ts still references this name; to be removed in a later task. */
103
+ get superResolved() {
104
+ return this._superData;
105
+ }
106
+ /**
107
+ * Sets the resolved super model. Normally called by Task 6's super resolution
108
+ * after parsing and before freezing.
109
+ */
110
+ setSuperResolved(model) {
111
+ this._assertNotFrozen();
112
+ this._superData = model;
113
+ }
114
+ setSuper(ref) {
115
+ this._assertNotFrozen();
116
+ this.superRef = ref;
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // isArray
120
+ // ---------------------------------------------------------------------------
121
+ setIsArray(val) {
122
+ this._assertNotFrozen();
123
+ this.isArray = val;
124
+ }
125
+ // ---------------------------------------------------------------------------
126
+ // dataType
127
+ // ---------------------------------------------------------------------------
128
+ /** Set the registry-supplied DataType. Called by the registry factory at
129
+ * node construction. */
130
+ setDataType(dt) {
131
+ this._assertNotFrozen();
132
+ this._dataType = dt;
133
+ }
134
+ // ---------------------------------------------------------------------------
135
+ // isAbstract
136
+ // ---------------------------------------------------------------------------
137
+ setIsAbstract(val) {
138
+ this._assertNotFrozen();
139
+ this.isAbstract = val;
140
+ }
141
+ // ---------------------------------------------------------------------------
142
+ // isMerge
143
+ // ---------------------------------------------------------------------------
144
+ setIsMerge(val) {
145
+ this._assertNotFrozen();
146
+ this.isMerge = val;
147
+ }
148
+ // ---------------------------------------------------------------------------
149
+ // Attributes
150
+ // ---------------------------------------------------------------------------
151
+ setAttr(name, value) {
152
+ this._assertNotFrozen();
153
+ // The reserved "value" key is a node's own terminal value (e.g. a MetaAttr's
154
+ // value). It is stored directly, never materialized as a nested MetaAttr —
155
+ // doing so would recurse forever (each node would build a child to hold its
156
+ // value). See _ownValue.
157
+ if (name === RESERVED_KEY_VALUE) {
158
+ this._ownValue = value;
159
+ this._ownValueSet = true;
160
+ return;
161
+ }
162
+ const existing = this._attrNodes.get(name);
163
+ if (existing !== undefined) {
164
+ existing.setAttr(RESERVED_KEY_VALUE, value);
165
+ return;
166
+ }
167
+ // Resolve the attr's class. A declared subtype isn't known here (this is the
168
+ // node, not the registry), so infer from the value shape — same rule the
169
+ // serializer uses. The parser, which DOES know the declared subtype, builds
170
+ // the instance directly via setMetaAttr (below).
171
+ const subType = inferAttrSubType(value);
172
+ const AttrClass = attrClassFor(subType);
173
+ const node = new AttrClass(new TypeId(TYPE_ATTR, subType), name);
174
+ node.setAttr(RESERVED_KEY_VALUE, value);
175
+ this._attrNodes.set(name, node);
176
+ }
177
+ /** Attach a pre-built MetaAttr instance (the parser path, which knows the
178
+ * declared subtype). Replaces any existing attr of the same name. */
179
+ setMetaAttr(node) {
180
+ this._assertNotFrozen();
181
+ this._attrNodes.set(node.name, node);
182
+ }
183
+ /** Own (locally declared) attr value for `name`, or undefined — excludes inherited. */
184
+ ownAttr(name) {
185
+ if (name === RESERVED_KEY_VALUE) {
186
+ return this._ownValueSet ? this._ownValue : undefined;
187
+ }
188
+ return this._attrNodes.get(name)?.value;
189
+ }
190
+ /** Own (locally declared) MetaAttr instance for `name`, or undefined. */
191
+ ownMetaAttr(name) {
192
+ return this._attrNodes.get(name);
193
+ }
194
+ /** Own MetaAttr instances, insertion-ordered, frozen; excludes inherited. */
195
+ ownMetaAttrs() {
196
+ return this.cached("ownMetaAttrs", () => Object.freeze([...this._attrNodes.values()]));
197
+ }
198
+ /** Own (locally declared) attr value map; excludes inherited. Cached. */
199
+ ownAttrs() {
200
+ return this.cached("ownAttrs", () => {
201
+ const m = new Map();
202
+ for (const [name, node] of this._attrNodes) {
203
+ if (node.value !== undefined)
204
+ m.set(name, node.value);
205
+ }
206
+ return m;
207
+ });
208
+ }
209
+ /** True if `name` is an own (locally declared) attr — excludes inherited. */
210
+ ownHasAttr(name) {
211
+ if (name === RESERVED_KEY_VALUE) {
212
+ return this._ownValueSet;
213
+ }
214
+ return this._attrNodes.has(name);
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // Effective attr accessors — the default. Own + attrs inherited via the
218
+ // super chain (own winning on a key conflict). Own-only access is the
219
+ // explicit own* opt-in above.
220
+ // ---------------------------------------------------------------------------
221
+ /**
222
+ * Effective attrs — own + inherited via the super chain, own winning on a key conflict; cached.
223
+ * Do not cast to `Map` and mutate — the same reference is returned on every call
224
+ * after freeze, so a mutation would corrupt subsequent reads.
225
+ */
226
+ attrs() {
227
+ return this.cached("attrs", () => this._effectiveAttrs(new Set([this])));
228
+ }
229
+ /** Effective attr value for `name`, or undefined. */
230
+ attr(name) {
231
+ return this.attrs().get(name);
232
+ }
233
+ /** True if `name` resolves to an effective attr (own or inherited). */
234
+ hasAttr(name) {
235
+ return this.attrs().has(name);
236
+ }
237
+ // ---------------------------------------------------------------------------
238
+ // Children
239
+ // ---------------------------------------------------------------------------
240
+ addChild(child) {
241
+ this._assertNotFrozen();
242
+ child._parent = this;
243
+ this._children.push(child);
244
+ }
245
+ /** The node this node was added to as a child, or undefined for the tree root. */
246
+ get parent() {
247
+ return this._parent;
248
+ }
249
+ /** Walk up to the top of the tree this node belongs to. */
250
+ root() {
251
+ let node = this;
252
+ while (node._parent !== undefined) {
253
+ node = node._parent;
254
+ }
255
+ return node;
256
+ }
257
+ /** Own (locally declared) children — a cached frozen array; excludes children inherited via extends. */
258
+ ownChildren() {
259
+ return this.cached("ownChildren", () => Object.freeze([...this._children]));
260
+ }
261
+ /** Own children whose type matches — excludes inherited. */
262
+ ownChildrenOfType(type) {
263
+ return this.ownChildren().filter((c) => c.type === type);
264
+ }
265
+ /** Own children matching both type and subType — excludes inherited. */
266
+ ownChildrenOfSubType(type, subType) {
267
+ return this.ownChildren().filter((c) => c.type === type && c.subType === subType);
268
+ }
269
+ /** First own child with matching name, or undefined — excludes inherited. */
270
+ ownChildByName(name) {
271
+ return this.ownChildren().find((c) => c.name === name);
272
+ }
273
+ /** First own child matching both type and name, or undefined — excludes inherited. */
274
+ ownChildByTypeAndName(type, name) {
275
+ return this.ownChildren().find((c) => c.type === type && c.name === name);
276
+ }
277
+ // ---------------------------------------------------------------------------
278
+ // Effective child accessors — the default. Own + children inherited via the
279
+ // super chain (own shadowing super on a (type, name) match). Own-only access
280
+ // is the explicit own* opt-in above.
281
+ // ---------------------------------------------------------------------------
282
+ /** Effective children: own + inherited via the super chain, own shadowing super. Cached, frozen. */
283
+ children() {
284
+ return this.cached("children", () => Object.freeze(this._effectiveChildren(new Set([this]))));
285
+ }
286
+ /** Effective children whose type matches. */
287
+ childrenOfType(type) {
288
+ return this.children().filter((c) => c.type === type);
289
+ }
290
+ /** Effective children matching both type and subType. */
291
+ childrenOfSubType(type, subType) {
292
+ return this.children().filter((c) => c.type === type && c.subType === subType);
293
+ }
294
+ /** First effective child with matching name, or undefined. */
295
+ childByName(name) {
296
+ return this.children().find((c) => c.name === name);
297
+ }
298
+ /** First effective child matching both type and name, or undefined. */
299
+ childByTypeAndName(type, name) {
300
+ return this.children().find((c) => c.type === type && c.name === name);
301
+ }
302
+ // ---------------------------------------------------------------------------
303
+ // Internal helpers for effective attr / child computation
304
+ // ---------------------------------------------------------------------------
305
+ _effectiveAttrs(visited) {
306
+ const ownValues = () => {
307
+ const m = new Map();
308
+ for (const [name, node] of this._attrNodes) {
309
+ if (node.value !== undefined)
310
+ m.set(name, node.value);
311
+ }
312
+ return m;
313
+ };
314
+ if (this._superData === undefined || visited.has(this._superData)) {
315
+ return ownValues();
316
+ }
317
+ visited.add(this._superData);
318
+ const result = this._superData._effectiveAttrs(visited);
319
+ for (const [k, v] of ownValues()) {
320
+ result.set(k, v);
321
+ }
322
+ return result;
323
+ }
324
+ _effectiveChildren(visited) {
325
+ if (this._superData === undefined || visited.has(this._superData)) {
326
+ return [...this._children];
327
+ }
328
+ visited.add(this._superData);
329
+ // Start from the super's effective children (already a copy from the recursive call).
330
+ const result = this._superData._effectiveChildren(visited);
331
+ // Track which of our own children matched (overrode) a super child position.
332
+ const appendQueue = [];
333
+ for (const ownChild of this._children) {
334
+ // Find the index in result that has the same (type, name).
335
+ const idx = result.findIndex((sc) => sc.type === ownChild.type && sc.name === ownChild.name);
336
+ if (idx !== -1) {
337
+ // Replace the super child with our own (in-place override).
338
+ result[idx] = ownChild;
339
+ }
340
+ else {
341
+ // No matching super child — will be appended at the end.
342
+ appendQueue.push(ownChild);
343
+ }
344
+ }
345
+ // Append non-overriding own children.
346
+ result.push(...appendQueue);
347
+ return result;
348
+ }
349
+ // ---------------------------------------------------------------------------
350
+ // Lifecycle
351
+ // ---------------------------------------------------------------------------
352
+ freeze() {
353
+ if (this._frozen) {
354
+ return; // Idempotent
355
+ }
356
+ this._frozen = true;
357
+ for (const child of this._children) {
358
+ child.freeze();
359
+ }
360
+ }
361
+ isFrozen() {
362
+ return this._frozen;
363
+ }
364
+ }
365
+ //# sourceMappingURL=meta-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-data.js","sourceRoot":"","sources":["../../src/shared/meta-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { MetaData } from "./meta-data.js";
2
+ import type { MetaObject } from "../core/object/meta-object.js";
3
+ import type { MetaField } from "../core/field/meta-field.js";
4
+ export declare class MetaRoot extends MetaData {
5
+ /** Object entities defined at this root level. */
6
+ objects(): MetaObject[];
7
+ /** Abstract / package-level fields defined at root (rare; e.g. shared id fields). */
8
+ fields(): MetaField[];
9
+ /** Find an object by name. */
10
+ findObject(name: string): MetaObject | undefined;
11
+ }
12
+ //# sourceMappingURL=meta-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-root.d.ts","sourceRoot":"","sources":["../../src/shared/meta-root.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,qBAAa,QAAS,SAAQ,QAAQ;IACpC,kDAAkD;IAClD,OAAO,IAAI,UAAU,EAAE;IAMvB,qFAAqF;IACrF,MAAM,IAAI,SAAS,EAAE;IAMrB,8BAA8B;IAC9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;CAMjD"}
@@ -0,0 +1,24 @@
1
+ // MetaRoot — concrete node class for the type=metadata root node.
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 "./meta-data.js";
6
+ import { TYPE_OBJECT, TYPE_FIELD } from "./base-types.js";
7
+ export class MetaRoot extends MetaData {
8
+ /** Object entities defined at this root level. */
9
+ objects() {
10
+ return this.cached("objects", () => this.ownChildren().filter((c) => c.type === TYPE_OBJECT));
11
+ }
12
+ /** Abstract / package-level fields defined at root (rare; e.g. shared id fields). */
13
+ fields() {
14
+ return this.cached("fields", () => this.ownChildren().filter((c) => c.type === TYPE_FIELD));
15
+ }
16
+ /** Find an object by name. */
17
+ findObject(name) {
18
+ return this.cached(`findObject:${name}`, () => {
19
+ const child = this.ownChildByTypeAndName(TYPE_OBJECT, name);
20
+ return child !== undefined ? child : undefined;
21
+ });
22
+ }
23
+ }
24
+ //# sourceMappingURL=meta-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-root.js","sourceRoot":"","sources":["../../src/shared/meta-root.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,wEAAwE;AACxE,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI1D,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,kDAAkD;IAClD,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CACjC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,qFAAqF;IACrF,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAChC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CACxE,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,GAAG,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAE,KAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}