@metaobjectsdev/metadata 0.9.0 → 0.11.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/dist/attr-schema-validate.d.ts +1 -1
  2. package/dist/attr-schema-validate.d.ts.map +1 -1
  3. package/dist/attr-schema-validate.js +96 -11
  4. package/dist/attr-schema-validate.js.map +1 -1
  5. package/dist/constraint-merge.d.ts +18 -0
  6. package/dist/constraint-merge.d.ts.map +1 -0
  7. package/dist/constraint-merge.js +0 -0
  8. package/dist/constraint-merge.js.map +1 -0
  9. package/dist/constraint-validate.d.ts +6 -0
  10. package/dist/constraint-validate.d.ts.map +1 -0
  11. package/dist/constraint-validate.js +274 -0
  12. package/dist/constraint-validate.js.map +1 -0
  13. package/dist/core/attr/attr-constants.d.ts +13 -3
  14. package/dist/core/attr/attr-constants.d.ts.map +1 -1
  15. package/dist/core/attr/attr-constants.js +11 -2
  16. package/dist/core/attr/attr-constants.js.map +1 -1
  17. package/dist/core/attr/attr-definition.embedded.d.ts +3 -0
  18. package/dist/core/attr/attr-definition.embedded.d.ts.map +1 -0
  19. package/dist/core/attr/attr-definition.embedded.js +60 -0
  20. package/dist/core/attr/attr-definition.embedded.js.map +1 -0
  21. package/dist/core/documentation/doc-constants.d.ts +3 -2
  22. package/dist/core/documentation/doc-constants.d.ts.map +1 -1
  23. package/dist/core/documentation/doc-constants.js +3 -1
  24. package/dist/core/documentation/doc-constants.js.map +1 -1
  25. package/dist/core/documentation/doc-provider.d.ts.map +1 -1
  26. package/dist/core/documentation/doc-provider.js +6 -2
  27. package/dist/core/documentation/doc-provider.js.map +1 -1
  28. package/dist/core/documentation/documentation-definition.embedded.d.ts +3 -0
  29. package/dist/core/documentation/documentation-definition.embedded.d.ts.map +1 -0
  30. package/dist/core/documentation/documentation-definition.embedded.js +79 -0
  31. package/dist/core/documentation/documentation-definition.embedded.js.map +1 -0
  32. package/dist/core/field/field-constants.d.ts +7 -4
  33. package/dist/core/field/field-constants.d.ts.map +1 -1
  34. package/dist/core/field/field-constants.js +7 -7
  35. package/dist/core/field/field-constants.js.map +1 -1
  36. package/dist/core/field/field-definition.embedded.d.ts +3 -0
  37. package/dist/core/field/field-definition.embedded.d.ts.map +1 -0
  38. package/dist/core/field/field-definition.embedded.js +236 -0
  39. package/dist/core/field/field-definition.embedded.js.map +1 -0
  40. package/dist/core/field/meta-field.d.ts.map +1 -1
  41. package/dist/core/field/meta-field.js +7 -5
  42. package/dist/core/field/meta-field.js.map +1 -1
  43. package/dist/core/identity/identity-constants.d.ts.map +1 -1
  44. package/dist/core/identity/identity-constants.js +3 -0
  45. package/dist/core/identity/identity-constants.js.map +1 -1
  46. package/dist/core/identity/identity-definition.embedded.d.ts +3 -0
  47. package/dist/core/identity/identity-definition.embedded.d.ts.map +1 -0
  48. package/dist/core/identity/identity-definition.embedded.js +93 -0
  49. package/dist/core/identity/identity-definition.embedded.js.map +1 -0
  50. package/dist/core/identity/meta-identity.d.ts.map +1 -1
  51. package/dist/core/identity/meta-identity.js +8 -1
  52. package/dist/core/identity/meta-identity.js.map +1 -1
  53. package/dist/core/identity/validate-identity-passthrough.d.ts +42 -0
  54. package/dist/core/identity/validate-identity-passthrough.d.ts.map +1 -0
  55. package/dist/core/identity/validate-identity-passthrough.js +158 -0
  56. package/dist/core/identity/validate-identity-passthrough.js.map +1 -0
  57. package/dist/core/object/object-constants.d.ts +2 -1
  58. package/dist/core/object/object-constants.d.ts.map +1 -1
  59. package/dist/core/object/object-constants.js +3 -0
  60. package/dist/core/object/object-constants.js.map +1 -1
  61. package/dist/core/object/object-definition.embedded.d.ts +3 -0
  62. package/dist/core/object/object-definition.embedded.d.ts.map +1 -0
  63. package/dist/core/object/object-definition.embedded.js +110 -0
  64. package/dist/core/object/object-definition.embedded.js.map +1 -0
  65. package/dist/core/object/validate-discriminator.d.ts.map +1 -1
  66. package/dist/core/object/validate-discriminator.js +1 -3
  67. package/dist/core/object/validate-discriminator.js.map +1 -1
  68. package/dist/core/query/query-constants.d.ts.map +1 -1
  69. package/dist/core/query/query-constants.js +5 -3
  70. package/dist/core/query/query-constants.js.map +1 -1
  71. package/dist/core/relationship/derive-m2m-fields.d.ts +26 -0
  72. package/dist/core/relationship/derive-m2m-fields.d.ts.map +1 -0
  73. package/dist/core/relationship/derive-m2m-fields.js +102 -0
  74. package/dist/core/relationship/derive-m2m-fields.js.map +1 -0
  75. package/dist/core/relationship/meta-relationship.d.ts +6 -4
  76. package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
  77. package/dist/core/relationship/meta-relationship.js +12 -8
  78. package/dist/core/relationship/meta-relationship.js.map +1 -1
  79. package/dist/core/relationship/relationship-constants.d.ts +6 -2
  80. package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
  81. package/dist/core/relationship/relationship-constants.js +6 -2
  82. package/dist/core/relationship/relationship-constants.js.map +1 -1
  83. package/dist/core/relationship/relationship-definition.embedded.d.ts +3 -0
  84. package/dist/core/relationship/relationship-definition.embedded.d.ts.map +1 -0
  85. package/dist/core/relationship/relationship-definition.embedded.js +310 -0
  86. package/dist/core/relationship/relationship-definition.embedded.js.map +1 -0
  87. package/dist/core/validator/validator-constants.d.ts +14 -1
  88. package/dist/core/validator/validator-constants.d.ts.map +1 -1
  89. package/dist/core/validator/validator-constants.js +20 -1
  90. package/dist/core/validator/validator-constants.js.map +1 -1
  91. package/dist/core/validator/validator-definition.embedded.d.ts +3 -0
  92. package/dist/core/validator/validator-definition.embedded.d.ts.map +1 -0
  93. package/dist/core/validator/validator-definition.embedded.js +255 -0
  94. package/dist/core/validator/validator-definition.embedded.js.map +1 -0
  95. package/dist/core/yaml-desugar.d.ts.map +1 -1
  96. package/dist/core/yaml-desugar.js +88 -10
  97. package/dist/core/yaml-desugar.js.map +1 -1
  98. package/dist/core-types.d.ts +5 -2
  99. package/dist/core-types.d.ts.map +1 -1
  100. package/dist/core-types.js +285 -116
  101. package/dist/core-types.js.map +1 -1
  102. package/dist/errors.d.ts +3 -3
  103. package/dist/errors.d.ts.map +1 -1
  104. package/dist/errors.js +87 -0
  105. package/dist/errors.js.map +1 -1
  106. package/dist/index.d.ts +17 -2
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +26 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/library/embedded-library.generated.d.ts +2 -0
  111. package/dist/library/embedded-library.generated.d.ts.map +1 -0
  112. package/dist/library/embedded-library.generated.js +11 -0
  113. package/dist/library/embedded-library.generated.js.map +1 -0
  114. package/dist/library/library-sources.d.ts +12 -0
  115. package/dist/library/library-sources.d.ts.map +1 -0
  116. package/dist/library/library-sources.js +88 -0
  117. package/dist/library/library-sources.js.map +1 -0
  118. package/dist/loader/meta-data-loader.d.ts +10 -2
  119. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  120. package/dist/loader/meta-data-loader.js +57 -6
  121. package/dist/loader/meta-data-loader.js.map +1 -1
  122. package/dist/loader/shortcuts.d.ts +2 -5
  123. package/dist/loader/shortcuts.d.ts.map +1 -1
  124. package/dist/loader/shortcuts.js.map +1 -1
  125. package/dist/loader/validation-passes.d.ts +3 -0
  126. package/dist/loader/validation-passes.d.ts.map +1 -1
  127. package/dist/loader/validation-passes.js +519 -34
  128. package/dist/loader/validation-passes.js.map +1 -1
  129. package/dist/loader/validation-registry.d.ts +10 -0
  130. package/dist/loader/validation-registry.d.ts.map +1 -0
  131. package/dist/loader/validation-registry.js +84 -0
  132. package/dist/loader/validation-registry.js.map +1 -0
  133. package/dist/metamodel-docs/index.d.ts +19 -0
  134. package/dist/metamodel-docs/index.d.ts.map +1 -0
  135. package/dist/metamodel-docs/index.js +37 -0
  136. package/dist/metamodel-docs/index.js.map +1 -0
  137. package/dist/metamodel-docs/provenance.d.ts +42 -0
  138. package/dist/metamodel-docs/provenance.d.ts.map +1 -0
  139. package/dist/metamodel-docs/provenance.js +148 -0
  140. package/dist/metamodel-docs/provenance.js.map +1 -0
  141. package/dist/metamodel-docs/provider-definitions.d.ts +8 -0
  142. package/dist/metamodel-docs/provider-definitions.d.ts.map +1 -0
  143. package/dist/metamodel-docs/provider-definitions.js +48 -0
  144. package/dist/metamodel-docs/provider-definitions.js.map +1 -0
  145. package/dist/metamodel-docs/render.d.ts +12 -0
  146. package/dist/metamodel-docs/render.d.ts.map +1 -0
  147. package/dist/metamodel-docs/render.js +252 -0
  148. package/dist/metamodel-docs/render.js.map +1 -0
  149. package/dist/naming-refs.d.ts +41 -0
  150. package/dist/naming-refs.d.ts.map +1 -0
  151. package/dist/naming-refs.js +144 -0
  152. package/dist/naming-refs.js.map +1 -0
  153. package/dist/naming.d.ts.map +1 -1
  154. package/dist/naming.js +10 -2
  155. package/dist/naming.js.map +1 -1
  156. package/dist/parser-core.d.ts.map +1 -1
  157. package/dist/parser-core.js +84 -9
  158. package/dist/parser-core.js.map +1 -1
  159. package/dist/persistence/db/db-constants.d.ts +10 -0
  160. package/dist/persistence/db/db-constants.d.ts.map +1 -1
  161. package/dist/persistence/db/db-constants.js +14 -0
  162. package/dist/persistence/db/db-constants.js.map +1 -1
  163. package/dist/persistence/db/db-definition.embedded.d.ts +3 -0
  164. package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -0
  165. package/dist/persistence/db/db-definition.embedded.js +227 -0
  166. package/dist/persistence/db/db-definition.embedded.js.map +1 -0
  167. package/dist/persistence/db/db-provider.d.ts.map +1 -1
  168. package/dist/persistence/db/db-provider.js +13 -18
  169. package/dist/persistence/db/db-provider.js.map +1 -1
  170. package/dist/persistence/origin/origin-definition.embedded.d.ts +3 -0
  171. package/dist/persistence/origin/origin-definition.embedded.d.ts.map +1 -0
  172. package/dist/persistence/origin/origin-definition.embedded.js +88 -0
  173. package/dist/persistence/origin/origin-definition.embedded.js.map +1 -0
  174. package/dist/persistence/source/source-definition.embedded.d.ts +3 -0
  175. package/dist/persistence/source/source-definition.embedded.d.ts.map +1 -0
  176. package/dist/persistence/source/source-definition.embedded.js +17 -0
  177. package/dist/persistence/source/source-definition.embedded.js.map +1 -0
  178. package/dist/persistence/source/validate-source-parameter-ref.d.ts.map +1 -1
  179. package/dist/persistence/source/validate-source-parameter-ref.js +7 -1
  180. package/dist/persistence/source/validate-source-parameter-ref.js.map +1 -1
  181. package/dist/persistence/source/validate-source-roles.d.ts.map +1 -1
  182. package/dist/persistence/source/validate-source-roles.js +16 -1
  183. package/dist/persistence/source/validate-source-roles.js.map +1 -1
  184. package/dist/presentation/layout/layout-definition.embedded.d.ts +3 -0
  185. package/dist/presentation/layout/layout-definition.embedded.d.ts.map +1 -0
  186. package/dist/presentation/layout/layout-definition.embedded.js +16 -0
  187. package/dist/presentation/layout/layout-definition.embedded.js.map +1 -0
  188. package/dist/presentation/ui/ui-definition.embedded.d.ts +3 -0
  189. package/dist/presentation/ui/ui-definition.embedded.d.ts.map +1 -0
  190. package/dist/presentation/ui/ui-definition.embedded.js +114 -0
  191. package/dist/presentation/ui/ui-definition.embedded.js.map +1 -0
  192. package/dist/presentation/ui/ui-provider.d.ts +3 -0
  193. package/dist/presentation/ui/ui-provider.d.ts.map +1 -0
  194. package/dist/presentation/ui/ui-provider.js +21 -0
  195. package/dist/presentation/ui/ui-provider.js.map +1 -0
  196. package/dist/presentation/view/view-definition.embedded.d.ts +3 -0
  197. package/dist/presentation/view/view-definition.embedded.d.ts.map +1 -0
  198. package/dist/presentation/view/view-definition.embedded.js +76 -0
  199. package/dist/presentation/view/view-definition.embedded.js.map +1 -0
  200. package/dist/provider-data.d.ts +184 -0
  201. package/dist/provider-data.d.ts.map +1 -0
  202. package/dist/provider-data.js +271 -0
  203. package/dist/provider-data.js.map +1 -0
  204. package/dist/provider.d.ts +3 -1
  205. package/dist/provider.d.ts.map +1 -1
  206. package/dist/provider.js +15 -1
  207. package/dist/provider.js.map +1 -1
  208. package/dist/registry-coverage.d.ts +99 -0
  209. package/dist/registry-coverage.d.ts.map +1 -0
  210. package/dist/registry-coverage.js +294 -0
  211. package/dist/registry-coverage.js.map +1 -0
  212. package/dist/registry-manifest-exclusions.d.ts +62 -0
  213. package/dist/registry-manifest-exclusions.d.ts.map +1 -0
  214. package/dist/registry-manifest-exclusions.js +163 -0
  215. package/dist/registry-manifest-exclusions.js.map +1 -0
  216. package/dist/registry-manifest.d.ts +117 -0
  217. package/dist/registry-manifest.d.ts.map +1 -0
  218. package/dist/registry-manifest.js +242 -0
  219. package/dist/registry-manifest.js.map +1 -0
  220. package/dist/registry.d.ts +76 -2
  221. package/dist/registry.d.ts.map +1 -1
  222. package/dist/registry.js +37 -1
  223. package/dist/registry.js.map +1 -1
  224. package/dist/shared/structural.d.ts +7 -0
  225. package/dist/shared/structural.d.ts.map +1 -1
  226. package/dist/shared/structural.js +7 -0
  227. package/dist/shared/structural.js.map +1 -1
  228. package/dist/subtype-rules.d.ts.map +1 -1
  229. package/dist/subtype-rules.js +97 -13
  230. package/dist/subtype-rules.js.map +1 -1
  231. package/dist/super-resolve.d.ts +49 -2
  232. package/dist/super-resolve.d.ts.map +1 -1
  233. package/dist/super-resolve.js +128 -43
  234. package/dist/super-resolve.js.map +1 -1
  235. package/dist/template/meta-template.d.ts +3 -2
  236. package/dist/template/meta-template.d.ts.map +1 -1
  237. package/dist/template/meta-template.js +3 -2
  238. package/dist/template/meta-template.js.map +1 -1
  239. package/dist/template/prompt-definition.embedded.d.ts +3 -0
  240. package/dist/template/prompt-definition.embedded.d.ts.map +1 -0
  241. package/dist/template/prompt-definition.embedded.js +368 -0
  242. package/dist/template/prompt-definition.embedded.js.map +1 -0
  243. package/dist/template/prompt-provider.d.ts +3 -0
  244. package/dist/template/prompt-provider.d.ts.map +1 -0
  245. package/dist/template/prompt-provider.js +25 -0
  246. package/dist/template/prompt-provider.js.map +1 -0
  247. package/dist/template/template-constants.d.ts +2 -0
  248. package/dist/template/template-constants.d.ts.map +1 -1
  249. package/dist/template/template-constants.js +7 -0
  250. package/dist/template/template-constants.js.map +1 -1
  251. package/dist/template/template-definition.embedded.d.ts +3 -0
  252. package/dist/template/template-definition.embedded.d.ts.map +1 -0
  253. package/dist/template/template-definition.embedded.js +30 -0
  254. package/dist/template/template-definition.embedded.js.map +1 -0
  255. package/dist/validate-max-occurs.d.ts +5 -0
  256. package/dist/validate-max-occurs.d.ts.map +1 -0
  257. package/dist/validate-max-occurs.js +28 -0
  258. package/dist/validate-max-occurs.js.map +1 -0
  259. package/dist/validation-types.d.ts +36 -0
  260. package/dist/validation-types.d.ts.map +1 -0
  261. package/dist/validation-types.js +7 -0
  262. package/dist/validation-types.js.map +1 -0
  263. package/package.json +33 -22
  264. package/src/attr-schema-validate.ts +108 -8
  265. package/src/constraint-merge.ts +0 -0
  266. package/src/constraint-validate.ts +363 -0
  267. package/src/core/attr/attr-constants.ts +15 -3
  268. package/src/core/attr/attr-definition.embedded.ts +67 -0
  269. package/src/core/documentation/doc-constants.ts +3 -1
  270. package/src/core/documentation/doc-provider.ts +6 -2
  271. package/src/core/documentation/documentation-definition.embedded.ts +86 -0
  272. package/src/core/field/field-constants.ts +8 -7
  273. package/src/core/field/field-definition.embedded.ts +243 -0
  274. package/src/core/field/meta-field.ts +6 -7
  275. package/src/core/identity/identity-constants.ts +4 -0
  276. package/src/core/identity/identity-definition.embedded.ts +100 -0
  277. package/src/core/identity/meta-identity.ts +8 -1
  278. package/src/core/identity/validate-identity-passthrough.ts +194 -0
  279. package/src/core/object/object-constants.ts +3 -0
  280. package/src/core/object/object-definition.embedded.ts +117 -0
  281. package/src/core/object/validate-discriminator.ts +0 -4
  282. package/src/core/query/query-constants.ts +5 -3
  283. package/src/core/relationship/derive-m2m-fields.ts +145 -0
  284. package/src/core/relationship/meta-relationship.ts +15 -9
  285. package/src/core/relationship/relationship-constants.ts +6 -2
  286. package/src/core/relationship/relationship-definition.embedded.ts +317 -0
  287. package/src/core/validator/validator-constants.ts +22 -1
  288. package/src/core/validator/validator-definition.embedded.ts +262 -0
  289. package/src/core/yaml-desugar.ts +96 -7
  290. package/src/core-types.ts +314 -150
  291. package/src/errors.ts +89 -2
  292. package/src/index.ts +47 -2
  293. package/src/library/embedded-library.generated.ts +10 -0
  294. package/src/library/library-sources.ts +97 -0
  295. package/src/loader/meta-data-loader.ts +78 -7
  296. package/src/loader/shortcuts.ts +2 -2
  297. package/src/loader/validation-passes.ts +690 -34
  298. package/src/loader/validation-registry.ts +93 -0
  299. package/src/metamodel-docs/index.ts +41 -0
  300. package/src/metamodel-docs/provenance.ts +187 -0
  301. package/src/metamodel-docs/provider-definitions.ts +50 -0
  302. package/src/metamodel-docs/render.ts +309 -0
  303. package/src/naming-refs.ts +162 -0
  304. package/src/naming.ts +10 -2
  305. package/src/parser-core.ts +96 -9
  306. package/src/persistence/db/db-constants.ts +16 -0
  307. package/src/persistence/db/db-definition.embedded.ts +234 -0
  308. package/src/persistence/db/db-provider.ts +13 -18
  309. package/src/persistence/origin/origin-definition.embedded.ts +95 -0
  310. package/src/persistence/source/source-definition.embedded.ts +24 -0
  311. package/src/persistence/source/validate-source-parameter-ref.ts +7 -1
  312. package/src/persistence/source/validate-source-roles.ts +22 -1
  313. package/src/presentation/layout/layout-definition.embedded.ts +23 -0
  314. package/src/presentation/ui/ui-definition.embedded.ts +121 -0
  315. package/src/presentation/ui/ui-provider.ts +25 -0
  316. package/src/presentation/view/view-definition.embedded.ts +83 -0
  317. package/src/provider-data.ts +463 -0
  318. package/src/provider.ts +18 -0
  319. package/src/registry-coverage.ts +430 -0
  320. package/src/registry-manifest-exclusions.ts +176 -0
  321. package/src/registry-manifest.ts +334 -0
  322. package/src/registry.ts +106 -3
  323. package/src/shared/structural.ts +8 -0
  324. package/src/subtype-rules.ts +135 -18
  325. package/src/super-resolve.ts +153 -43
  326. package/src/template/meta-template.ts +3 -2
  327. package/src/template/prompt-definition.embedded.ts +375 -0
  328. package/src/template/prompt-provider.ts +29 -0
  329. package/src/template/template-constants.ts +8 -0
  330. package/src/template/template-definition.embedded.ts +37 -0
  331. package/src/validate-max-occurs.ts +39 -0
  332. package/src/validation-types.ts +57 -0
  333. package/dist/core/documentation/doc-schema.d.ts +0 -8
  334. package/dist/core/documentation/doc-schema.d.ts.map +0 -1
  335. package/dist/core/documentation/doc-schema.js +0 -53
  336. package/dist/core/documentation/doc-schema.js.map +0 -1
  337. package/dist/core/field/field-schema.d.ts +0 -22
  338. package/dist/core/field/field-schema.d.ts.map +0 -1
  339. package/dist/core/field/field-schema.js +0 -171
  340. package/dist/core/field/field-schema.js.map +0 -1
  341. package/dist/core/identity/identity-schema.d.ts +0 -6
  342. package/dist/core/identity/identity-schema.d.ts.map +0 -1
  343. package/dist/core/identity/identity-schema.js +0 -55
  344. package/dist/core/identity/identity-schema.js.map +0 -1
  345. package/dist/core/object/object-schema.d.ts +0 -4
  346. package/dist/core/object/object-schema.d.ts.map +0 -1
  347. package/dist/core/object/object-schema.js +0 -28
  348. package/dist/core/object/object-schema.js.map +0 -1
  349. package/dist/core/relationship/relationship-schema.d.ts +0 -4
  350. package/dist/core/relationship/relationship-schema.d.ts.map +0 -1
  351. package/dist/core/relationship/relationship-schema.js +0 -51
  352. package/dist/core/relationship/relationship-schema.js.map +0 -1
  353. package/dist/core/validator/validator-schema.d.ts +0 -4
  354. package/dist/core/validator/validator-schema.d.ts.map +0 -1
  355. package/dist/core/validator/validator-schema.js +0 -38
  356. package/dist/core/validator/validator-schema.js.map +0 -1
  357. package/dist/persistence/db/db-schema.d.ts +0 -14
  358. package/dist/persistence/db/db-schema.d.ts.map +0 -1
  359. package/dist/persistence/db/db-schema.js +0 -35
  360. package/dist/persistence/db/db-schema.js.map +0 -1
  361. package/dist/persistence/origin/origin-schema.d.ts +0 -4
  362. package/dist/persistence/origin/origin-schema.d.ts.map +0 -1
  363. package/dist/persistence/origin/origin-schema.js +0 -59
  364. package/dist/persistence/origin/origin-schema.js.map +0 -1
  365. package/dist/persistence/source/source-schema.d.ts +0 -4
  366. package/dist/persistence/source/source-schema.d.ts.map +0 -1
  367. package/dist/persistence/source/source-schema.js +0 -98
  368. package/dist/persistence/source/source-schema.js.map +0 -1
  369. package/dist/presentation/layout/layout-schema.d.ts +0 -4
  370. package/dist/presentation/layout/layout-schema.d.ts.map +0 -1
  371. package/dist/presentation/layout/layout-schema.js +0 -46
  372. package/dist/presentation/layout/layout-schema.js.map +0 -1
  373. package/dist/presentation/view/view-schema.d.ts +0 -4
  374. package/dist/presentation/view/view-schema.d.ts.map +0 -1
  375. package/dist/presentation/view/view-schema.js +0 -15
  376. package/dist/presentation/view/view-schema.js.map +0 -1
  377. package/dist/template/template-schema.d.ts +0 -3
  378. package/dist/template/template-schema.d.ts.map +0 -1
  379. package/dist/template/template-schema.js +0 -173
  380. package/dist/template/template-schema.js.map +0 -1
  381. package/src/core/documentation/doc-schema.ts +0 -64
  382. package/src/core/field/field-schema.ts +0 -228
  383. package/src/core/identity/identity-schema.ts +0 -80
  384. package/src/core/object/object-schema.ts +0 -35
  385. package/src/core/relationship/relationship-schema.ts +0 -67
  386. package/src/core/validator/validator-schema.ts +0 -50
  387. package/src/persistence/db/db-schema.ts +0 -50
  388. package/src/persistence/origin/origin-schema.ts +0 -80
  389. package/src/persistence/source/source-schema.ts +0 -129
  390. package/src/presentation/layout/layout-schema.ts +0 -62
  391. package/src/presentation/view/view-schema.ts +0 -21
  392. package/src/template/template-schema.ts +0 -211
@@ -5,5 +5,5 @@ export interface AttrSchemaValidationResult {
5
5
  errors: ParseError[];
6
6
  warnings: string[];
7
7
  }
8
- export declare function validateAttrSchema(root: MetaData, registry: TypeRegistry): AttrSchemaValidationResult;
8
+ export declare function validateAttrSchema(root: MetaData, registry: TypeRegistry, strict?: boolean): AttrSchemaValidationResult;
9
9
  //# sourceMappingURL=attr-schema-validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attr-schema-validate.d.ts","sourceRoot":"","sources":["../src/attr-schema-validate.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,eAAe,CAAC;AAgB9D,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,GACrB,0BAA0B,CAQ5B"}
1
+ {"version":3,"file":"attr-schema-validate.d.ts","sourceRoot":"","sources":["../src/attr-schema-validate.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,eAAe,CAAC;AAkB9D,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,EAKtB,MAAM,UAAQ,GACb,0BAA0B,CAQ5B"}
@@ -12,7 +12,21 @@
12
12
  // MetaAttr instance's own validateValue.
13
13
  // 3. allowedValues honored — declared attrs with a non-empty
14
14
  // allowedValues set must hold a member value.
15
- // 4. Undeclared attrs — NOT an error, NOT a warning (open policy).
15
+ // 4. Undeclared attrs — under strict load (ADR-0023) an own
16
+ // @-attr that matches NO per-type attr
17
+ // schema AND NO commonAttr is an
18
+ // ERR_UNKNOWN_ATTR. In lax mode (strict
19
+ // false) it stays the legacy open policy:
20
+ // NOT an error, NOT a warning. Own-only,
21
+ // so an inherited/overlaid declared attr
22
+ // (validated on its declaring node) is fine.
23
+ // 5. Structural-child placement — FR-033: under strict load a STRUCTURAL
24
+ // (Check 0b) child (field/identity/source/… — not an
25
+ // attr) not admitted by the parent's
26
+ // registered childRules is ERR_CHILD_NOT_
27
+ // ALLOWED (the structural analogue of #4). A
28
+ // no-op under today's wildcard childRules —
29
+ // the rail strict per-subtype rules use in S1.
16
30
  //
17
31
  // `default` values are NOT auto-applied — A3 is pure validation, not mutation.
18
32
  //
@@ -27,25 +41,32 @@
27
41
  // Modeled on src/subtype-rules.ts: a recursive walk producing an
28
42
  // { errors, warnings } result. All A3 findings are ERRORS; warnings stays [].
29
43
  import { ParseError } from "./errors.js";
44
+ import { childRuleMatches } from "./registry.js";
30
45
  import { TYPE_FIELD } from "./shared/base-types.js";
46
+ import { ATTR_SUBTYPE_PROPERTIES } from "./core/attr/attr-constants.js";
31
47
  import { FIELD_SUBTYPE_ENUM, FIELD_ATTR_VALUES, FIELD_ATTR_COERCE_DEFAULT, FIELD_ATTR_DEFAULT, ENUM_MEMBER_PATTERN, } from "./core/field/field-constants.js";
32
48
  import { FIELD_ATTR_DB_COLUMN_TYPE, DB_COLUMN_TYPE_VALUES, DB_COLUMN_TYPE_LEGAL_SUBTYPES, } from "./persistence/db/db-constants.js";
33
49
  // ---------------------------------------------------------------------------
34
50
  // Public entry point
35
51
  // ---------------------------------------------------------------------------
36
- export function validateAttrSchema(root, registry) {
52
+ export function validateAttrSchema(root, registry,
53
+ // ADR-0023 — strict load closes the open-attr policy: an own @-attr matching
54
+ // no per-type schema and no commonAttr → ERR_UNKNOWN_ATTR. Defaults false so
55
+ // existing lax callers keep the legacy open policy; the library's own loader
56
+ // (and the conformance runner) load strict.
57
+ strict = false) {
37
58
  const errors = [];
38
59
  // Tracks (type.subType) pairs for which ERR_PROVIDER_ATTR_CONFLICT has already
39
60
  // been emitted. The conflict is a registry-state condition, not a per-node
40
61
  // condition — emit it once per (type, subType), not once per node instance.
41
62
  const reportedConflicts = new Set();
42
- walk(root, registry, errors, reportedConflicts);
63
+ walk(root, registry, errors, reportedConflicts, strict);
43
64
  return { errors, warnings: [] };
44
65
  }
45
- function walk(node, registry, errors, reportedConflicts) {
46
- validateNode(node, registry, errors, reportedConflicts);
66
+ function walk(node, registry, errors, reportedConflicts, strict) {
67
+ validateNode(node, registry, errors, reportedConflicts, strict);
47
68
  for (const child of node.ownChildren()) {
48
- walk(child, registry, errors, reportedConflicts);
69
+ walk(child, registry, errors, reportedConflicts, strict);
49
70
  }
50
71
  }
51
72
  /** A node label for error messages, e.g. `origin.aggregate 'weekCount'`. */
@@ -53,7 +74,7 @@ function nodeLabel(node) {
53
74
  const head = `${node.type}.${node.subType}`;
54
75
  return node.name !== "" ? `${head} '${node.name}'` : head;
55
76
  }
56
- function validateNode(node, registry, errors, reportedConflicts) {
77
+ function validateNode(node, registry, errors, reportedConflicts, strict) {
57
78
  // Build the effective schema in a single pass: per-type attrs win on name
58
79
  // collision; common attrs fill in for unclaimed names. Surface common-vs-per-type
59
80
  // collisions in the same pass — a name in both lists means a provider tried to
@@ -75,6 +96,62 @@ function validateNode(node, registry, errors, reportedConflicts) {
75
96
  }
76
97
  byName.set(ca.name, ca);
77
98
  }
99
+ // --- Check 0 (ADR-0023): strict-load undeclared-attr rejection ---
100
+ //
101
+ // Runs BEFORE the byName.size early-return: a node type with no per-type
102
+ // schema and no common attrs (byName empty) must still reject an authored
103
+ // @-attr under strict. Own-attrs only — an inherited/overlaid declared attr
104
+ // was validated on its declaring node and never appears in ownMetaAttrs().
105
+ // An own attr matching neither a per-type schema entry nor a commonAttr is
106
+ // a made-up attribute → ERR_UNKNOWN_ATTR (closing the open policy). In lax
107
+ // mode this stays a no-op (legacy open-attr behavior).
108
+ if (strict) {
109
+ for (const inst of node.ownMetaAttrs()) {
110
+ // attr.properties is a first-class, registered, canonical attr subtype
111
+ // whose designed purpose is an arbitrary-named structural property bag
112
+ // (its NAME is intentionally not declared by any per-type schema). It is
113
+ // sanctioned vocabulary, not a made-up attribute, so strict-attr exempts
114
+ // a materialized properties-attr from ERR_UNKNOWN_ATTR. (A typo'd plain
115
+ // @-attr still fails — only the `properties` subtype is exempt.)
116
+ if (inst.subType === ATTR_SUBTYPE_PROPERTIES)
117
+ continue;
118
+ if (!byName.has(inst.name)) {
119
+ errors.push(new ParseError(`Unknown attribute '@${inst.name}' on ${nodeLabel(node)} — ` +
120
+ `not declared by any registered provider for ${typeKey}`, { code: "ERR_UNKNOWN_ATTR", source: node.source }));
121
+ }
122
+ }
123
+ }
124
+ // --- Check 0b (FR-033): strict-load structural-child placement ---
125
+ //
126
+ // The structural analogue of Check 0. A STRUCTURAL child (field/identity/
127
+ // source/validator/… — attrs never appear in ownChildren()) must be admitted
128
+ // by the parent's registered childRules under the same wildcard match
129
+ // semantics used everywhere (childType/childSubType/childName may be "*", and
130
+ // childSubType may be a list). A child the rules do not admit → ERR_CHILD_NOT_
131
+ // ALLOWED. A NO-OP today: every parent carries wildcard structural childRules
132
+ // (e.g. field.* / validator.*) that admit everything — the rail strict
133
+ // per-subtype rules will use in S1. Lax mode keeps the legacy open policy.
134
+ //
135
+ // An UNREGISTERED parent (no def) cannot be judged here (ERR_UNKNOWN_TYPE /
136
+ // ERR_UNKNOWN_SUBTYPE is reported elsewhere); skip so we never double-report.
137
+ if (strict) {
138
+ const parentDef = registry.find(node.type, node.subType);
139
+ if (parentDef !== undefined) {
140
+ const rules = parentDef.childRules;
141
+ for (const child of node.ownChildren()) {
142
+ const admitted = rules.some((r) => childRuleMatches(r, {
143
+ type: child.type,
144
+ subType: child.subType,
145
+ name: child.name,
146
+ }));
147
+ if (!admitted) {
148
+ errors.push(new ParseError(`Child ${nodeLabel(child)} is not allowed under ${nodeLabel(node)} — ` +
149
+ `no registered child rule for ${typeKey} admits ` +
150
+ `(type='${child.type}', subType='${child.subType}', name='${child.name}')`, { code: "ERR_CHILD_NOT_ALLOWED", source: node.source }));
151
+ }
152
+ }
153
+ }
154
+ }
78
155
  if (byName.size === 0)
79
156
  return;
80
157
  // --- Check 1: required attrs present ---
@@ -110,12 +187,20 @@ function validateNode(node, registry, errors, reportedConflicts) {
110
187
  continue; // type wrong → skip allowedValues
111
188
  }
112
189
  }
113
- // Check 3: allowedValues membership (unchanged).
190
+ // Check 3: allowedValues membership. For an isArray attr the value is an array,
191
+ // so each ELEMENT must be a member (not the array as a whole); a scalar attr
192
+ // checks the value directly.
114
193
  if (spec.allowedValues !== undefined && spec.allowedValues.length > 0) {
115
- if (!spec.allowedValues.includes(value)) {
194
+ const allowed = spec.allowedValues;
195
+ const offenders = Array.isArray(value)
196
+ ? value.filter((v) => !allowed.includes(v))
197
+ : allowed.includes(value)
198
+ ? []
199
+ : [value];
200
+ for (const bad of offenders) {
116
201
  errors.push(new ParseError(`${nodeLabel(node)} attribute '@${inst.name}' has value ` +
117
- `'${String(value)}' which is not one of the allowed values: ` +
118
- `${spec.allowedValues.map((v) => String(v)).join(", ")}`, { code: "ERR_BAD_ATTR_VALUE", source: node.source }));
202
+ `'${String(bad)}' which is not one of the allowed values: ` +
203
+ `${allowed.map((v) => String(v)).join(", ")}`, { code: "ERR_BAD_ATTR_VALUE", source: node.source }));
119
204
  }
120
205
  }
121
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"attr-schema-validate.js","sourceRoot":"","sources":["../src/attr-schema-validate.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,+DAA+D;AAC/D,sEAAsE;AACtE,oCAAoC;AACpC,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,iFAAiF;AACjF,0EAA0E;AAC1E,8EAA8E;AAC9E,sEAAsE;AACtE,mFAAmF;AACnF,iFAAiF;AACjF,EAAE;AACF,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,uBAAuB;AACvB,EAAE;AACF,iEAAiE;AACjE,8EAA8E;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,6BAA6B,GAE9B,MAAM,kCAAkC,CAAC;AAO1C,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAChC,IAAc,EACd,QAAsB;IAEtB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,+EAA+E;IAC/E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,IAAI,CACX,IAAc,EACd,QAAsB,EACtB,MAAoB,EACpB,iBAA8B;IAE9B,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CACnB,IAAc,EACd,QAAsB,EACtB,MAAoB,EACpB,iBAA8B;IAE9B,0EAA0E;IAC1E,kFAAkF;IAClF,+EAA+E;IAC/E,8EAA8E;IAC9E,uEAAuE;IACvE,6EAA6E;IAC7E,uFAAuF;IACvF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,gBAAgB,EAAE,CAAC,IAAI,qCAAqC,OAAO,EAAE,EACrE,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAC5D,CACF,CAAC;gBACF,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,SAAS,CAAC,gBAAgB;QAC5B,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE9B,0CAA0C;IAC1C,EAAE;IACF,oEAAoE;IACpE,+EAA+E;IAC/E,+EAA+E;IAC/E,gFAAgF;IAChF,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,IAAI,GAAG,EAClE,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAC3D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,yCAAyC;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAElC,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACvH,CAAC;gBACD,SAAS,CAAC,kCAAkC;YAC9C,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,cAAc;oBACvD,IAAI,MAAM,CAAC,KAAK,CAAC,4CAA4C;oBAC7D,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1D,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,EAAE;IACF,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,yCAAyC,iBAAiB,IAAI,EAChF,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,wEAAwE;gBACxE,qEAAqE;gBACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC/B,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACtC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,aAAa,MAAM,IAAI;4BACxE,yCAAyC,mBAAmB,CAAC,MAAM,KAAK;4BACxE,+EAA+E,EACjF,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;oBACJ,CAAC;yBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,2BAA2B,MAAM,IAAI,EACxF,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,EAAE;QACF,iFAAiF;QACjF,2EAA2E;QAC3E,8EAA8E;QAC9E,8EAA8E;QAC9E,6EAA6E;QAC7E,4DAA4D;QAC5D,EAAE;QACF,2EAA2E;QAC3E,gFAAgF;QAChF,6EAA6E;QAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtE,KAAK,MAAM,QAAQ,IAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChE,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,QAAQ,UAAU;wBAClD,IAAI,QAAQ,qBAAqB,iBAAiB,KAAK;wBACvD,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC1B,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,EAAE;IACF,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,gFAAgF;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,qEAAqE;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAChE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,aAAa,GAAI,qBAA2C,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnF,CAAC,CAAC,6BAA6B,CAAC,QAA6B,CAAC;gBAC9D,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzE,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,yBAAyB,UAAU;oBACnE,IAAI,QAAQ,2BAA2B,IAAI,CAAC,OAAO,IAAI;oBACvD,UAAU,yBAAyB,aAAa;oBAChD,GAAG,qBAAqB,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACjB,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"attr-schema-validate.js","sourceRoot":"","sources":["../src/attr-schema-validate.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,+DAA+D;AAC/D,sEAAsE;AACtE,oCAAoC;AACpC,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,iFAAiF;AACjF,0EAA0E;AAC1E,8EAA8E;AAC9E,sEAAsE;AACtE,mFAAmF;AACnF,0EAA0E;AAC1E,4EAA4E;AAC5E,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,kFAAkF;AAClF,8EAA8E;AAC9E,gFAAgF;AAChF,0EAA0E;AAC1E,+EAA+E;AAC/E,kFAAkF;AAClF,iFAAiF;AACjF,oFAAoF;AACpF,EAAE;AACF,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,uBAAuB;AACvB,EAAE;AACF,iEAAiE;AACjE,8EAA8E;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,6BAA6B,GAE9B,MAAM,kCAAkC,CAAC;AAO1C,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAChC,IAAc,EACd,QAAsB;AACtB,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,4CAA4C;AAC5C,MAAM,GAAG,KAAK;IAEd,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,+EAA+E;IAC/E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,IAAI,CACX,IAAc,EACd,QAAsB,EACtB,MAAoB,EACpB,iBAA8B,EAC9B,MAAe;IAEf,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CACnB,IAAc,EACd,QAAsB,EACtB,MAAoB,EACpB,iBAA8B,EAC9B,MAAe;IAEf,0EAA0E;IAC1E,kFAAkF;IAClF,+EAA+E;IAC/E,8EAA8E;IAC9E,uEAAuE;IACvE,6EAA6E;IAC7E,uFAAuF;IACvF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,gBAAgB,EAAE,CAAC,IAAI,qCAAqC,OAAO,EAAE,EACrE,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAC5D,CACF,CAAC;gBACF,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,SAAS,CAAC,gBAAgB;QAC5B,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,oEAAoE;IACpE,EAAE;IACF,yEAAyE;IACzE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,uDAAuD;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACvC,uEAAuE;YACvE,uEAAuE;YACvE,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,iEAAiE;YACjE,IAAI,IAAI,CAAC,OAAO,KAAK,uBAAuB;gBAAE,SAAS;YACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,uBAAuB,IAAI,CAAC,IAAI,QAAQ,SAAS,CAAC,IAAI,CAAC,KAAK;oBAC1D,+CAA+C,OAAO,EAAE,EAC1D,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAClD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,EAAE;IACF,0EAA0E;IAC1E,6EAA6E;IAC7E,sEAAsE;IACtE,8EAA8E;IAC9E,+EAA+E;IAC/E,8EAA8E;IAC9E,uEAAuE;IACvE,2EAA2E;IAC3E,EAAE;IACF,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,gBAAgB,CAAC,CAAC,EAAE;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CACH,CAAC;gBACF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,SAAS,SAAS,CAAC,KAAK,CAAC,yBAAyB,SAAS,CAAC,IAAI,CAAC,KAAK;wBACpE,gCAAgC,OAAO,UAAU;wBACjD,UAAU,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,IAAI,IAAI,EAC5E,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACvD,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE9B,0CAA0C;IAC1C,EAAE;IACF,oEAAoE;IACpE,+EAA+E;IAC/E,+EAA+E;IAC/E,gFAAgF;IAChF,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,IAAI,GAAG,EAClE,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAC3D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,yCAAyC;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAElC,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACvH,CAAC;gBACD,SAAS,CAAC,kCAAkC;YAC9C,CAAC;QACH,CAAC;QAED,gFAAgF;QAChF,6EAA6E;QAC7E,6BAA6B;QAC7B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACnC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,cAAc;oBACvD,IAAI,MAAM,CAAC,GAAG,CAAC,4CAA4C;oBAC3D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC/C,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,EAAE;IACF,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,yCAAyC,iBAAiB,IAAI,EAChF,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,wEAAwE;gBACxE,qEAAqE;gBACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC/B,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACtC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,aAAa,MAAM,IAAI;4BACxE,yCAAyC,mBAAmB,CAAC,MAAM,KAAK;4BACxE,+EAA+E,EACjF,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;oBACJ,CAAC;yBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,2BAA2B,MAAM,IAAI,EACxF,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,EAAE;QACF,iFAAiF;QACjF,2EAA2E;QAC3E,8EAA8E;QAC9E,8EAA8E;QAC9E,6EAA6E;QAC7E,4DAA4D;QAC5D,EAAE;QACF,2EAA2E;QAC3E,gFAAgF;QAChF,6EAA6E;QAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtE,KAAK,MAAM,QAAQ,IAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChE,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,QAAQ,UAAU;wBAClD,IAAI,QAAQ,qBAAqB,iBAAiB,KAAK;wBACvD,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC1B,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,EAAE;IACF,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,gFAAgF;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,qEAAqE;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAChE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,aAAa,GAAI,qBAA2C,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnF,CAAC,CAAC,6BAA6B,CAAC,QAA6B,CAAC;gBAC9D,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzE,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,yBAAyB,UAAU;oBACnE,IAAI,QAAQ,2BAA2B,IAAI,CAAC,OAAO,IAAI;oBACvD,UAAU,yBAAyB,aAAa;oBAChD,GAAG,qBAAqB,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACjB,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACpD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AttrSchema, ChildRule, TypeRegistry } from "./registry.js";
2
+ /** The merged, effective constraints for one `type.subType`. */
3
+ export interface EffectiveConstraints {
4
+ /** Effective structural children (own ∪ inherited ∪ child-side `parents` claims). */
5
+ children: ChildRule[];
6
+ /** Effective parents (own `parents` ∪ inherited). */
7
+ parents: string[];
8
+ /** Effective attributes (own ∪ inherited). */
9
+ attributes: AttrSchema[];
10
+ }
11
+ /**
12
+ * Compute the effective constraint set for every registered `type.subType`.
13
+ *
14
+ * Returns a Map keyed by `"type.subType"`, with keys in sorted order (Map
15
+ * preserves insertion order; we insert sorted) so the result is deterministic.
16
+ */
17
+ export declare function mergeConstraints(registry: TypeRegistry): Map<string, EffectiveConstraints>;
18
+ //# sourceMappingURL=constraint-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-merge.d.ts","sourceRoot":"","sources":["../src/constraint-merge.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8CAA8C;IAC9C,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B;AAyDD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,GACrB,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CA6EnC"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-merge.js","sourceRoot":"","sources":["../src/constraint-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { TypeRegistry } from "./registry.js";
2
+ import { MetaModelError } from "./errors.js";
3
+ import type { EffectiveConstraints } from "./constraint-merge.js";
4
+ /** Run the six contradiction checks; one MetaModelError per contradiction. */
5
+ export declare function validateConstraints(effective: Map<string, EffectiveConstraints>, registry: TypeRegistry): MetaModelError[];
6
+ //# sourceMappingURL=constraint-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-validate.d.ts","sourceRoot":"","sources":["../src/constraint-validate.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGV,YAAY,EAEb,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIlE,8EAA8E;AAC9E,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,YAAY,GACrB,cAAc,EAAE,CAkDlB"}
@@ -0,0 +1,274 @@
1
+ // FR-033 — the metamodel contradiction validator (spec §3.1, the six checks).
2
+ //
3
+ // `validateConstraints(effective, registry)` runs the six contradiction checks over
4
+ // the merged constraint graph and returns one MetaModelError per contradiction
5
+ // (code ERR_INVALID_METAMODEL_CONSTRAINT). It is the cross-validation pass: the merge
6
+ // (constraint-merge.ts) is purely additive, so this pass is the ONLY place a bad
7
+ // provider set is rejected. Wired into composeRegistry's seal-time bootstrap so a
8
+ // contradictory library provider set fails fast (mirrors ADR-0023 strictness).
9
+ //
10
+ // The six checks (spec §3.1):
11
+ // 1. Dangling ref — a parents/children rule references an unregistered type.subType.
12
+ // 2. Unsatisfiable req. — a required child (min>=1) whose concrete type.subType is
13
+ // not admitted under that parent (after merge).
14
+ // 3. Bad cardinality — min>max (max non-null), max:0 with min>=1, or min<0.
15
+ // 4. Closed-set clash — child C claims parent P via `parents`, but P's OWN children
16
+ // is a CLOSED set (no `*` wildcard) that does not admit C.
17
+ // 5. Required-child cycle— following required (min>=1) child edges forms a cycle.
18
+ // 6. Conflicting attr — same attr name contributed twice (across providers or the
19
+ // extends chain) with a conflicting valueType/required/default.
20
+ import { childRuleMatches } from "./registry.js";
21
+ import { CHILD_RULE_WILDCARD } from "./shared/structural.js";
22
+ import { SUBTYPE_BASE } from "./shared/base-types.js";
23
+ import { MetaModelError } from "./errors.js";
24
+ const CODE = "ERR_INVALID_METAMODEL_CONSTRAINT";
25
+ /** Run the six contradiction checks; one MetaModelError per contradiction. */
26
+ export function validateConstraints(effective, registry) {
27
+ const errors = [];
28
+ const registered = new Set(registry.allTypes().map((id) => `${id.type}.${id.subType}`));
29
+ const sortedKeys = [...effective.keys()].sort();
30
+ for (const k of sortedKeys) {
31
+ const eff = effective.get(k);
32
+ // --- #1 dangling ref (children) + #3 bad cardinality.
33
+ for (const rule of eff.children) {
34
+ checkDangling(k, rule, registered, errors);
35
+ checkCardinality(k, rule, errors);
36
+ }
37
+ // --- #1 dangling ref (parents).
38
+ for (const parent of eff.parents) {
39
+ if (!registered.has(parent)) {
40
+ errors.push(err(`dangling: type "${k}" claims parent "${parent}", which is not registered.`));
41
+ }
42
+ }
43
+ // --- #2 unsatisfiable required child.
44
+ for (const rule of eff.children) {
45
+ checkUnsatisfiable(k, rule, registered, errors);
46
+ }
47
+ }
48
+ // --- #4 closed-set clash: a child's `parents` claim vs the parent's OWN children.
49
+ for (const id of registry.allTypes()) {
50
+ const childKey = `${id.type}.${id.subType}`;
51
+ const def = registry.find(id.type, id.subType);
52
+ for (const parent of def?.parents ?? []) {
53
+ checkClosedSetClash(childKey, id.type, id.subType, parent, registry, errors);
54
+ }
55
+ }
56
+ // --- #5 required-child cycle.
57
+ checkRequiredCycles(effective, sortedKeys, errors);
58
+ // --- #6 conflicting attr redefinition (across the extends chain + providers).
59
+ for (const id of registry.allTypes()) {
60
+ checkAttrConflicts(id.type, id.subType, registry, registered, errors);
61
+ }
62
+ return errors;
63
+ }
64
+ function err(detail) {
65
+ return new MetaModelError(`Invalid metamodel constraint — ${detail}`, { code: CODE });
66
+ }
67
+ /** #1 — a concrete (non-wildcard) child rule whose type.subType is unregistered. */
68
+ function checkDangling(parentKey, rule, registered, errors) {
69
+ if (rule.childType === CHILD_RULE_WILDCARD)
70
+ return; // a wildcard names nothing
71
+ const subTypes = subTypesOf(rule);
72
+ for (const sub of subTypes) {
73
+ if (sub === CHILD_RULE_WILDCARD)
74
+ continue; // wildcard subtype names nothing
75
+ const refKey = `${rule.childType}.${sub}`;
76
+ if (!registered.has(refKey)) {
77
+ errors.push(err(`dangling: child rule on "${parentKey}" references "${refKey}", which is not registered.`));
78
+ }
79
+ }
80
+ }
81
+ /** #3 — min<0, min>max (max non-null), or max:0 with min>=1. */
82
+ function checkCardinality(parentKey, rule, errors) {
83
+ const min = rule.min ?? 0;
84
+ const max = rule.max ?? null;
85
+ const label = describeRule(rule);
86
+ if (min < 0) {
87
+ errors.push(err(`bad cardinality on "${parentKey}" (${label}): min ${min} < 0.`));
88
+ return;
89
+ }
90
+ if (max !== null && max < min) {
91
+ errors.push(err(`bad cardinality on "${parentKey}" (${label}): min ${min} > max ${max}.`));
92
+ return;
93
+ }
94
+ if (max === 0 && min >= 1) {
95
+ errors.push(err(`bad cardinality on "${parentKey}" (${label}): max 0 with min ${min} >= 1.`));
96
+ }
97
+ }
98
+ /**
99
+ * #2 — a required child rule (min>=1) naming concrete subtype(s) where NONE of the
100
+ * named type.subTypes is admitted under this parent (after merge). A required rule
101
+ * with a wildcard type is always satisfiable; a required rule naming a concrete
102
+ * subtype that is registered AND covered by an admitting rule (the rule itself, or
103
+ * another rule) is satisfiable. Unsatisfiable iff the required child cannot be placed.
104
+ */
105
+ function checkUnsatisfiable(parentKey, rule, registered, errors) {
106
+ const min = rule.min ?? 0;
107
+ if (min < 1)
108
+ return; // optional → nothing to satisfy
109
+ if (rule.childType === CHILD_RULE_WILDCARD)
110
+ return; // any child satisfies it
111
+ // A required rule must name at least one concrete, REGISTERED subtype that some
112
+ // rule (incl. itself) admits. If none of its named subtypes is registered, the
113
+ // required child can never be instantiated → unsatisfiable.
114
+ const subTypes = subTypesOf(rule);
115
+ const concrete = subTypes.filter((s) => s !== CHILD_RULE_WILDCARD);
116
+ if (concrete.length === 0)
117
+ return; // required of `type.*` — any registered subtype satisfies
118
+ const anyRegistered = concrete.some((s) => registered.has(`${rule.childType}.${s}`));
119
+ if (!anyRegistered) {
120
+ errors.push(err(`unsatisfiable required child on "${parentKey}" (${describeRule(rule)}): ` +
121
+ `min ${min} but no named subtype of "${rule.childType}" is registered.`));
122
+ }
123
+ }
124
+ /**
125
+ * #4 — child C declares parent P via `parents`, but P's OWN children is a CLOSED set
126
+ * (no `*` wildcard rule) that does not admit C. An OPEN parent (any `*` rule) admits
127
+ * anything → no clash.
128
+ */
129
+ function checkClosedSetClash(childKey, childType, childSubType, parentKey, registry, errors) {
130
+ const parentDef = lookup(parentKey, registry);
131
+ if (parentDef === undefined)
132
+ return; // dangling parent — reported by #1
133
+ const ownRules = parentDef.childRules;
134
+ const isOpen = ownRules.some((r) => isWildcardRule(r));
135
+ if (isOpen)
136
+ return; // open parent admits anything
137
+ const admits = ownRules.some((r) => childRuleMatches(r, { type: childType, subType: childSubType, name: CHILD_RULE_WILDCARD }));
138
+ if (!admits) {
139
+ errors.push(err(`closed-set clash: child "${childKey}" claims parent "${parentKey}", but ` +
140
+ `"${parentKey}"'s children is a closed set (no wildcard) that does not admit it.`));
141
+ }
142
+ }
143
+ /**
144
+ * #5 — required-child cycle: following required (min>=1) child edges forms a cycle.
145
+ * An edge A→B exists when A has a required rule naming a concrete subtype B. A cycle
146
+ * with no non-required escape can never bottom out (A requires B requires A).
147
+ */
148
+ function checkRequiredCycles(effective, sortedKeys, errors) {
149
+ // Build the required-edge adjacency: A → each concrete required child subtype.
150
+ const edges = new Map();
151
+ for (const k of sortedKeys) {
152
+ const targets = [];
153
+ for (const rule of effective.get(k).children) {
154
+ if ((rule.min ?? 0) < 1)
155
+ continue;
156
+ if (rule.childType === CHILD_RULE_WILDCARD)
157
+ continue;
158
+ for (const sub of subTypesOf(rule)) {
159
+ if (sub === CHILD_RULE_WILDCARD)
160
+ continue;
161
+ targets.push(`${rule.childType}.${sub}`);
162
+ }
163
+ }
164
+ edges.set(k, targets);
165
+ }
166
+ // DFS for back-edges; report each distinct cycle once (keyed by its sorted node set).
167
+ const WHITE = 0, GRAY = 1, BLACK = 2;
168
+ const color = new Map();
169
+ const reported = new Set();
170
+ const stack = [];
171
+ const visit = (node) => {
172
+ color.set(node, GRAY);
173
+ stack.push(node);
174
+ for (const next of edges.get(node) ?? []) {
175
+ if (!edges.has(next))
176
+ continue; // unregistered target — #1/#2 handles it
177
+ const c = color.get(next) ?? WHITE;
178
+ if (c === GRAY) {
179
+ // Back-edge → cycle. Extract the cycle slice from the stack.
180
+ const idx = stack.indexOf(next);
181
+ const cycle = stack.slice(idx);
182
+ const sig = [...cycle].sort().join(",");
183
+ if (!reported.has(sig)) {
184
+ reported.add(sig);
185
+ errors.push(err(`required-child cycle that cannot bottom out: ${cycle.concat(next).join(" -> ")}.`));
186
+ }
187
+ }
188
+ else if (c === WHITE) {
189
+ visit(next);
190
+ }
191
+ }
192
+ stack.pop();
193
+ color.set(node, BLACK);
194
+ };
195
+ for (const k of sortedKeys) {
196
+ if ((color.get(k) ?? WHITE) === WHITE)
197
+ visit(k);
198
+ }
199
+ }
200
+ /**
201
+ * #6 — the same attr name contributed twice (across providers, or down the extends
202
+ * chain) with a CONFLICTING valueType / required / default. Walks each type's own
203
+ * attrs + its derived super (`<type>.base`) chain and compares same-name pairs.
204
+ */
205
+ function checkAttrConflicts(type, subType, registry, registered, errors) {
206
+ // Collect (attr, source-key) along the own → super chain.
207
+ const seen = new Map();
208
+ const reported = new Set();
209
+ let curType = type;
210
+ let curSub = subType;
211
+ const guard = new Set();
212
+ while (curType !== undefined && curSub !== undefined) {
213
+ const k = `${curType}.${curSub}`;
214
+ if (guard.has(k))
215
+ break;
216
+ guard.add(k);
217
+ const def = registry.find(curType, curSub);
218
+ if (def !== undefined) {
219
+ for (const attr of def.attributes) {
220
+ const prior = seen.get(attr.name);
221
+ if (prior === undefined) {
222
+ seen.set(attr.name, { attr, from: k });
223
+ }
224
+ else if (attrsConflict(prior.attr, attr)) {
225
+ const sig = `${attr.name}|${prior.from}|${k}`;
226
+ if (!reported.has(sig)) {
227
+ reported.add(sig);
228
+ errors.push(err(`conflicting attr redefinition: attr "${attr.name}" is declared on ` +
229
+ `"${prior.from}" and "${k}" with a conflicting valueType/required/default.`));
230
+ }
231
+ }
232
+ }
233
+ }
234
+ // Advance up the derived super chain (`<type>.base`).
235
+ if (curSub === SUBTYPE_BASE)
236
+ break;
237
+ const baseKey = `${curType}.${SUBTYPE_BASE}`;
238
+ if (!registered.has(baseKey))
239
+ break;
240
+ curSub = SUBTYPE_BASE;
241
+ }
242
+ }
243
+ /** Two same-name attrs conflict iff valueType, required, or default differ. */
244
+ function attrsConflict(a, b) {
245
+ return (a.valueType !== b.valueType ||
246
+ a.required !== b.required ||
247
+ !Object.is(a.default, b.default));
248
+ }
249
+ // --- helpers ---------------------------------------------------------------
250
+ function subTypesOf(rule) {
251
+ const s = rule.childSubType;
252
+ return typeof s === "string" ? [s] : [...s];
253
+ }
254
+ function isWildcardRule(rule) {
255
+ // An OPEN hook is a TYPE-wildcard rule (`*.*` / `*` of any subType) — it admits a
256
+ // child of any type, so a new type can land under this parent. A `field.*` rule is
257
+ // NOT open in this sense: it admits any field SUBTYPE but no other type, so a
258
+ // `policy` child still clashes. Per spec §3.1 #4, the open escape is a `*` (type)
259
+ // wildcard rule.
260
+ return rule.childType === CHILD_RULE_WILDCARD;
261
+ }
262
+ function describeRule(rule) {
263
+ const sub = Array.isArray(rule.childSubType)
264
+ ? `[${rule.childSubType.join(",")}]`
265
+ : rule.childSubType;
266
+ return `${rule.childType}.${sub} ${rule.childName}`;
267
+ }
268
+ function lookup(key, registry) {
269
+ const dot = key.indexOf(".");
270
+ if (dot < 0)
271
+ return undefined;
272
+ return registry.find(key.slice(0, dot), key.slice(dot + 1));
273
+ }
274
+ //# sourceMappingURL=constraint-validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-validate.js","sourceRoot":"","sources":["../src/constraint-validate.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,18 @@ export declare const ATTR_SUBTYPE_DOUBLE = "double";
5
5
  export declare const ATTR_SUBTYPE_BOOLEAN = "boolean";
6
6
  export declare const ATTR_SUBTYPE_CLASS = "class";
7
7
  export declare const ATTR_SUBTYPE_PROPERTIES = "properties";
8
- export declare const ATTR_SUBTYPE_STRINGARRAY = "stringarray";
9
8
  export declare const ATTR_SUBTYPE_FILTER = "filter";
10
- export declare const ATTR_SUBTYPES: readonly ["base", "string", "int", "long", "double", "boolean", "class", "properties", "stringarray", "filter"];
11
- export type AttrSubType = (typeof ATTR_SUBTYPES)[number];
9
+ /**
10
+ * The retired `stringarray` array attr subtype. It is NO LONGER a registered
11
+ * `(attr, subType)` — array-ness is modeled as a `string` attr with the
12
+ * orthogonal `isArray` flag (matching Java's `StringAttribute + @isArray`), so
13
+ * `stringarray` never appears in the registry manifest. The constant survives
14
+ * ONLY as the key into the attr-class-map for the array-coercion class
15
+ * (`StringArrayAttr`, the bare-string → one-element-array coercion), which the
16
+ * loader resolves for any `isArray`-flagged attr. It is intentionally NOT in
17
+ * `ATTR_SUBTYPES`.
18
+ */
19
+ export declare const ATTR_SUBTYPE_STRINGARRAY = "stringarray";
20
+ export declare const ATTR_SUBTYPES: readonly ["base", "string", "int", "long", "double", "boolean", "class", "properties", "filter"];
21
+ export type AttrSubType = (typeof ATTR_SUBTYPES)[number] | typeof ATTR_SUBTYPE_STRINGARRAY;
12
22
  //# sourceMappingURL=attr-constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attr-constants.d.ts","sourceRoot":"","sources":["../../../src/core/attr/attr-constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,eAAe,CAAC;AACpD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AACtD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,eAAO,MAAM,aAAa,iHAWhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"attr-constants.d.ts","sourceRoot":"","sources":["../../../src/core/attr/attr-constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,eAAe,CAAC;AACpD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,eAAO,MAAM,aAAa,kGAUhB,CAAC;AACX,MAAM,MAAM,WAAW,GACnB,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,GAC9B,OAAO,wBAAwB,CAAC"}
@@ -10,8 +10,18 @@ export const ATTR_SUBTYPE_DOUBLE = "double";
10
10
  export const ATTR_SUBTYPE_BOOLEAN = "boolean";
11
11
  export const ATTR_SUBTYPE_CLASS = "class";
12
12
  export const ATTR_SUBTYPE_PROPERTIES = "properties";
13
- export const ATTR_SUBTYPE_STRINGARRAY = "stringarray";
14
13
  export const ATTR_SUBTYPE_FILTER = "filter";
14
+ /**
15
+ * The retired `stringarray` array attr subtype. It is NO LONGER a registered
16
+ * `(attr, subType)` — array-ness is modeled as a `string` attr with the
17
+ * orthogonal `isArray` flag (matching Java's `StringAttribute + @isArray`), so
18
+ * `stringarray` never appears in the registry manifest. The constant survives
19
+ * ONLY as the key into the attr-class-map for the array-coercion class
20
+ * (`StringArrayAttr`, the bare-string → one-element-array coercion), which the
21
+ * loader resolves for any `isArray`-flagged attr. It is intentionally NOT in
22
+ * `ATTR_SUBTYPES`.
23
+ */
24
+ export const ATTR_SUBTYPE_STRINGARRAY = "stringarray";
15
25
  export const ATTR_SUBTYPES = [
16
26
  SUBTYPE_BASE,
17
27
  ATTR_SUBTYPE_STRING,
@@ -21,7 +31,6 @@ export const ATTR_SUBTYPES = [
21
31
  ATTR_SUBTYPE_BOOLEAN,
22
32
  ATTR_SUBTYPE_CLASS,
23
33
  ATTR_SUBTYPE_PROPERTIES,
24
- ATTR_SUBTYPE_STRINGARRAY,
25
34
  ATTR_SUBTYPE_FILTER,
26
35
  ];
27
36
  //# sourceMappingURL=attr-constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attr-constants.js","sourceRoot":"","sources":["../../../src/core/attr/attr-constants.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAC;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;IACxB,mBAAmB;CACX,CAAC"}
1
+ {"version":3,"file":"attr-constants.js","sourceRoot":"","sources":["../../../src/core/attr/attr-constants.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,uBAAuB;IACvB,mBAAmB;CACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProviderDefinition } from "../../provider-data.js";
2
+ export declare const ATTR_DEFINITION: ProviderDefinition;
3
+ //# sourceMappingURL=attr-definition.embedded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attr-definition.embedded.d.ts","sourceRoot":"","sources":["../../../src/core/attr/attr-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,eAAe,EAAE,kBA0D7B,CAAC"}