@astrale-os/kernel-dsl 0.1.5 → 0.2.0-beta.10

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 (701) hide show
  1. package/dist/index.d.ts +1 -57
  2. package/dist/index.js +1 -31
  3. package/dist/upgrade/contract.d.ts +31 -0
  4. package/dist/upgrade/contract.js +1 -0
  5. package/dist/upgrade/index.d.ts +1 -0
  6. package/dist/upgrade/index.js +1 -0
  7. package/dist/v1/addressing/class-key.d.ts +12 -0
  8. package/dist/v1/addressing/class-key.js +39 -0
  9. package/dist/v1/addressing/definition-ref.d.ts +28 -0
  10. package/dist/v1/addressing/definition-ref.js +63 -0
  11. package/dist/v1/addressing/domain-dependency.d.ts +18 -0
  12. package/dist/v1/addressing/domain-dependency.js +6 -0
  13. package/dist/v1/addressing/index.d.ts +12 -0
  14. package/dist/v1/addressing/index.js +7 -0
  15. package/dist/v1/addressing/key.d.ts +19 -0
  16. package/dist/v1/addressing/key.js +39 -0
  17. package/dist/v1/addressing/method-address.d.ts +9 -0
  18. package/dist/v1/addressing/method-address.js +1 -0
  19. package/dist/v1/addressing/method-key.d.ts +15 -0
  20. package/dist/v1/addressing/method-key.js +60 -0
  21. package/dist/v1/addressing/ordering.d.ts +6 -0
  22. package/dist/v1/addressing/ordering.js +20 -0
  23. package/dist/v1/addressing/patterns.d.ts +27 -0
  24. package/dist/v1/addressing/patterns.js +29 -0
  25. package/dist/v1/addressing/property-key.d.ts +13 -0
  26. package/dist/v1/addressing/property-key.js +39 -0
  27. package/dist/v1/addressing/revision.d.ts +8 -0
  28. package/dist/v1/addressing/revision.js +8 -0
  29. package/dist/v1/builder/callable/authoring.d.ts +117 -0
  30. package/dist/v1/builder/callable/authoring.js +67 -0
  31. package/dist/v1/builder/class/authoring.d.ts +367 -0
  32. package/dist/v1/builder/class/authoring.js +134 -0
  33. package/dist/v1/builder/class/property.d.ts +52 -0
  34. package/dist/v1/builder/class/property.js +49 -0
  35. package/dist/v1/builder/core/authoring.d.ts +42 -0
  36. package/dist/v1/builder/core/authoring.js +39 -0
  37. package/dist/v1/builder/index.d.ts +26 -0
  38. package/dist/v1/builder/index.js +11 -0
  39. package/dist/v1/builder/lowering/callable.d.ts +24 -0
  40. package/dist/v1/builder/lowering/callable.js +135 -0
  41. package/dist/v1/builder/lowering/class.d.ts +22 -0
  42. package/dist/v1/builder/lowering/class.js +129 -0
  43. package/dist/v1/builder/lowering/core-properties.d.ts +10 -0
  44. package/dist/v1/builder/lowering/core-properties.js +76 -0
  45. package/dist/v1/builder/lowering/core.d.ts +22 -0
  46. package/dist/v1/builder/lowering/core.js +50 -0
  47. package/dist/v1/builder/lowering/policy.d.ts +16 -0
  48. package/dist/v1/builder/lowering/policy.js +59 -0
  49. package/dist/v1/builder/lowering/schema/capture.d.ts +4 -0
  50. package/dist/v1/builder/lowering/schema/capture.js +70 -0
  51. package/dist/v1/builder/lowering/schema/compile.d.ts +10 -0
  52. package/dist/v1/builder/lowering/schema/compile.js +80 -0
  53. package/dist/v1/builder/lowering/schema/context.d.ts +44 -0
  54. package/dist/v1/builder/lowering/schema/context.js +247 -0
  55. package/dist/v1/builder/lowering/schema/ownership.d.ts +8 -0
  56. package/dist/v1/builder/lowering/schema/ownership.js +29 -0
  57. package/dist/v1/builder/lowering/value/compile.d.ts +15 -0
  58. package/dist/v1/builder/lowering/value/compile.js +136 -0
  59. package/dist/v1/builder/lowering/value/path.d.ts +3 -0
  60. package/dist/v1/builder/lowering/value/path.js +20 -0
  61. package/dist/v1/builder/lowering/value/zod.d.ts +32 -0
  62. package/dist/v1/builder/lowering/value/zod.js +342 -0
  63. package/dist/v1/builder/lowering/view.d.ts +11 -0
  64. package/dist/v1/builder/lowering/view.js +27 -0
  65. package/dist/v1/builder/policy/authoring.d.ts +52 -0
  66. package/dist/v1/builder/policy/authoring.js +90 -0
  67. package/dist/v1/builder/schema/define.d.ts +11 -0
  68. package/dist/v1/builder/schema/define.js +5 -0
  69. package/dist/v1/builder/schema/diagnostic.d.ts +16 -0
  70. package/dist/v1/builder/schema/diagnostic.js +31 -0
  71. package/dist/v1/builder/schema/handle.d.ts +7 -0
  72. package/dist/v1/builder/schema/handle.js +14 -0
  73. package/dist/v1/builder/schema/input.d.ts +15 -0
  74. package/dist/v1/builder/schema/input.js +1 -0
  75. package/dist/v1/builder/schema/lazy.d.ts +2 -0
  76. package/dist/v1/builder/schema/lazy.js +13 -0
  77. package/dist/v1/builder/schema/projection.d.ts +364 -0
  78. package/dist/v1/builder/schema/projection.js +1 -0
  79. package/dist/v1/builder/value/full-match.d.ts +4 -0
  80. package/dist/v1/builder/value/full-match.js +11 -0
  81. package/dist/v1/builder/value/path-metadata.d.ts +4 -0
  82. package/dist/v1/builder/value/path-metadata.js +7 -0
  83. package/dist/v1/builder/value/path.d.ts +8 -0
  84. package/dist/v1/builder/value/path.js +11 -0
  85. package/dist/v1/builder/value/schema.d.ts +16 -0
  86. package/dist/v1/builder/value/schema.js +10 -0
  87. package/dist/v1/builder/view/authoring.d.ts +17 -0
  88. package/dist/v1/builder/view/authoring.js +16 -0
  89. package/dist/v1/bundle/codec.d.ts +5 -0
  90. package/dist/v1/bundle/codec.js +168 -0
  91. package/dist/v1/bundle/create.d.ts +3 -0
  92. package/dist/v1/bundle/create.js +5 -0
  93. package/dist/v1/bundle/diagnostic.d.ts +10 -0
  94. package/dist/v1/bundle/diagnostic.js +17 -0
  95. package/dist/v1/bundle/index.d.ts +18 -0
  96. package/dist/v1/bundle/index.js +20 -0
  97. package/dist/v1/bundle/model.d.ts +16 -0
  98. package/dist/v1/bundle/model.js +11 -0
  99. package/dist/v1/bundle/structure.d.ts +7 -0
  100. package/dist/v1/bundle/structure.js +71 -0
  101. package/dist/v1/bundle/transport.d.ts +8 -0
  102. package/dist/v1/bundle/transport.js +7 -0
  103. package/dist/v1/compiled/admission/accept.d.ts +3 -0
  104. package/dist/v1/compiled/admission/accept.js +881 -0
  105. package/dist/v1/compiled/admission/revision.d.ts +4 -0
  106. package/dist/v1/compiled/admission/revision.js +73 -0
  107. package/dist/v1/compiled/admission/semantics.d.ts +7 -0
  108. package/dist/v1/compiled/admission/semantics.js +1091 -0
  109. package/dist/v1/compiled/codec/json.d.ts +3 -0
  110. package/dist/v1/compiled/codec/json.js +9 -0
  111. package/dist/v1/compiled/compiler/compile.d.ts +4 -0
  112. package/dist/v1/compiled/compiler/compile.js +113 -0
  113. package/dist/v1/compiled/diagnostic.d.ts +11 -0
  114. package/dist/v1/compiled/diagnostic.js +13 -0
  115. package/dist/v1/compiled/index.d.ts +7 -0
  116. package/dist/v1/compiled/index.js +5 -0
  117. package/dist/v1/compiled/loader/index.d.ts +1 -0
  118. package/dist/v1/compiled/loader/index.js +1 -0
  119. package/dist/v1/compiled/loader/load.d.ts +4 -0
  120. package/dist/v1/compiled/loader/load.js +141 -0
  121. package/dist/v1/compiled/model/schema.d.ts +73 -0
  122. package/dist/v1/compiled/model/schema.js +1 -0
  123. package/dist/v1/domain/create.d.ts +8 -0
  124. package/dist/v1/domain/create.js +264 -0
  125. package/dist/v1/domain/index.d.ts +2 -0
  126. package/dist/v1/domain/index.js +1 -0
  127. package/dist/v1/domain/model/domain.d.ts +59 -0
  128. package/dist/v1/domain/model/domain.js +1 -0
  129. package/dist/v1/domain/model/input.d.ts +31 -0
  130. package/dist/v1/domain/model/input.js +1 -0
  131. package/dist/v1/domain/namespace/member-collection.d.ts +5 -0
  132. package/dist/v1/domain/namespace/member-collection.js +81 -0
  133. package/dist/v1/domain/projection/classes.d.ts +4 -0
  134. package/dist/v1/domain/projection/classes.js +200 -0
  135. package/dist/v1/domain/validation/create.d.ts +18 -0
  136. package/dist/v1/domain/validation/create.js +75 -0
  137. package/dist/v1/index.d.ts +16 -0
  138. package/dist/v1/index.js +8 -0
  139. package/dist/v1/language/callable/index.d.ts +2 -0
  140. package/dist/v1/language/callable/index.js +1 -0
  141. package/dist/v1/language/callable/model/callable.d.ts +33 -0
  142. package/dist/v1/language/callable/model/callable.js +1 -0
  143. package/dist/v1/language/callable/resolved.d.ts +68 -0
  144. package/dist/v1/language/callable/resolved.js +1 -0
  145. package/dist/v1/language/class/facets.d.ts +58 -0
  146. package/dist/v1/language/class/facets.js +1 -0
  147. package/dist/v1/language/class/index.d.ts +8 -0
  148. package/dist/v1/language/class/index.js +1 -0
  149. package/dist/v1/language/class/model/class.d.ts +36 -0
  150. package/dist/v1/language/class/model/class.js +1 -0
  151. package/dist/v1/language/class/model/data.d.ts +11 -0
  152. package/dist/v1/language/class/model/data.js +2 -0
  153. package/dist/v1/language/class/model/edge.d.ts +38 -0
  154. package/dist/v1/language/class/model/edge.js +1 -0
  155. package/dist/v1/language/class/model/property.d.ts +18 -0
  156. package/dist/v1/language/class/model/property.js +1 -0
  157. package/dist/v1/language/class/property-values.d.ts +15 -0
  158. package/dist/v1/language/class/property-values.js +30 -0
  159. package/dist/v1/language/class/resolved.d.ts +123 -0
  160. package/dist/v1/language/class/resolved.js +1 -0
  161. package/dist/v1/language/core/index.d.ts +2 -0
  162. package/dist/v1/language/core/index.js +1 -0
  163. package/dist/v1/language/core/model/core.d.ts +20 -0
  164. package/dist/v1/language/core/model/core.js +1 -0
  165. package/dist/v1/language/core/resolved.d.ts +21 -0
  166. package/dist/v1/language/core/resolved.js +1 -0
  167. package/dist/v1/language/definition/metadata.d.ts +12 -0
  168. package/dist/v1/language/definition/metadata.js +12 -0
  169. package/dist/v1/language/definition.d.ts +7 -0
  170. package/dist/v1/language/definition.js +1 -0
  171. package/dist/v1/language/index.d.ts +23 -0
  172. package/dist/v1/language/index.js +1 -0
  173. package/dist/v1/language/policy/analysis/branches.d.ts +19 -0
  174. package/dist/v1/language/policy/analysis/branches.js +132 -0
  175. package/dist/v1/language/policy/analysis/budgets.d.ts +16 -0
  176. package/dist/v1/language/policy/analysis/budgets.js +25 -0
  177. package/dist/v1/language/policy/index.d.ts +3 -0
  178. package/dist/v1/language/policy/index.js +1 -0
  179. package/dist/v1/language/policy/model/policy.d.ts +77 -0
  180. package/dist/v1/language/policy/model/policy.js +1 -0
  181. package/dist/v1/language/policy/normalization/normalize.d.ts +4 -0
  182. package/dist/v1/language/policy/normalization/normalize.js +226 -0
  183. package/dist/v1/language/policy/resolved.d.ts +9 -0
  184. package/dist/v1/language/policy/resolved.js +1 -0
  185. package/dist/v1/language/resolved.d.ts +10 -0
  186. package/dist/v1/language/resolved.js +1 -0
  187. package/dist/v1/language/validation/diagnostic.d.ts +8 -0
  188. package/dist/v1/language/validation/diagnostic.js +3 -0
  189. package/dist/v1/language/value/compile/fields.d.ts +3 -0
  190. package/dist/v1/language/value/compile/fields.js +60 -0
  191. package/dist/v1/language/value/compile/load.d.ts +4 -0
  192. package/dist/v1/language/value/compile/load.js +41 -0
  193. package/dist/v1/language/value/compile/model.d.ts +27 -0
  194. package/dist/v1/language/value/compile/model.js +1 -0
  195. package/dist/v1/language/value/evaluate/assertions.d.ts +6 -0
  196. package/dist/v1/language/value/evaluate/assertions.js +58 -0
  197. package/dist/v1/language/value/evaluate/evaluator.d.ts +4 -0
  198. package/dist/v1/language/value/evaluate/evaluator.js +361 -0
  199. package/dist/v1/language/value/evaluate/preparation.d.ts +13 -0
  200. package/dist/v1/language/value/evaluate/preparation.js +135 -0
  201. package/dist/v1/language/value/evaluate/program.d.ts +3 -0
  202. package/dist/v1/language/value/evaluate/program.js +16 -0
  203. package/dist/v1/language/value/evaluate/types.d.ts +36 -0
  204. package/dist/v1/language/value/evaluate/types.js +9 -0
  205. package/dist/v1/language/value/evaluate/validate.d.ts +12 -0
  206. package/dist/v1/language/value/evaluate/validate.js +43 -0
  207. package/dist/v1/language/value/index.d.ts +11 -0
  208. package/dist/v1/language/value/index.js +8 -0
  209. package/dist/v1/language/value/model/instant.d.ts +9 -0
  210. package/dist/v1/language/value/model/instant.js +37 -0
  211. package/dist/v1/language/value/model/object.d.ts +5 -0
  212. package/dist/v1/language/value/model/object.js +3 -0
  213. package/dist/v1/language/value/model/schema.d.ts +25 -0
  214. package/dist/v1/language/value/model/schema.js +11 -0
  215. package/dist/v1/language/value/ordering.d.ts +13 -0
  216. package/dist/v1/language/value/ordering.js +174 -0
  217. package/dist/v1/language/value/profile/canonicalize.d.ts +4 -0
  218. package/dist/v1/language/value/profile/canonicalize.js +130 -0
  219. package/dist/v1/language/value/profile/json.validate.d.ts +2 -0
  220. package/dist/v1/language/value/profile/json.validate.js +14 -0
  221. package/dist/v1/language/value/profile/meta-schema.compiled.d.ts +78 -0
  222. package/dist/v1/language/value/profile/meta-schema.compiled.js +2079 -0
  223. package/dist/v1/language/value/profile/meta-schema.d.ts +4 -0
  224. package/dist/v1/language/value/profile/meta-schema.js +19 -0
  225. package/dist/v1/language/value/profile/rules.d.ts +3 -0
  226. package/dist/v1/language/value/profile/rules.js +109 -0
  227. package/dist/v1/language/value/profile/validate.d.ts +4 -0
  228. package/dist/v1/language/value/profile/validate.js +39 -0
  229. package/dist/v1/language/value/profile/vocabulary.d.ts +2 -0
  230. package/dist/v1/language/value/profile/vocabulary.js +68 -0
  231. package/dist/v1/language/value/reference/closure.d.ts +11 -0
  232. package/dist/v1/language/value/reference/closure.js +51 -0
  233. package/dist/v1/language/value/reference/recursion.d.ts +5 -0
  234. package/dist/v1/language/value/reference/recursion.js +95 -0
  235. package/dist/v1/language/value/reference/references.d.ts +17 -0
  236. package/dist/v1/language/value/reference/references.js +45 -0
  237. package/dist/v1/language/value/reference/registry.d.ts +24 -0
  238. package/dist/v1/language/value/reference/registry.index.d.ts +14 -0
  239. package/dist/v1/language/value/reference/registry.index.js +76 -0
  240. package/dist/v1/language/value/reference/registry.js +1 -0
  241. package/dist/v1/language/value/regexp/ast.d.ts +21 -0
  242. package/dist/v1/language/value/regexp/ast.js +326 -0
  243. package/dist/v1/language/value/regexp/compile.d.ts +3 -0
  244. package/dist/v1/language/value/regexp/compile.js +96 -0
  245. package/dist/v1/language/value/regexp/lower.d.ts +3 -0
  246. package/dist/v1/language/value/regexp/lower.js +26 -0
  247. package/dist/v1/language/value/regexp/matcher.d.ts +7 -0
  248. package/dist/v1/language/value/regexp/matcher.js +50 -0
  249. package/dist/v1/language/value/regexp/pattern.d.ts +2 -0
  250. package/dist/v1/language/value/regexp/pattern.js +38 -0
  251. package/dist/v1/language/value/regexp/syntax.d.ts +2 -0
  252. package/dist/v1/language/value/regexp/syntax.js +5 -0
  253. package/dist/v1/language/value/syntax/full-match.d.ts +6 -0
  254. package/dist/v1/language/value/syntax/full-match.js +20 -0
  255. package/dist/v1/language/value/syntax/keywords.d.ts +3 -0
  256. package/dist/v1/language/value/syntax/keywords.js +20 -0
  257. package/dist/v1/language/value/syntax/node-path/schema.d.ts +5 -0
  258. package/dist/v1/language/value/syntax/node-path/schema.js +18 -0
  259. package/dist/v1/language/value/syntax/node-path/validate.d.ts +4 -0
  260. package/dist/v1/language/value/syntax/node-path/validate.js +80 -0
  261. package/dist/v1/language/value/syntax/pointer.d.ts +4 -0
  262. package/dist/v1/language/value/syntax/pointer.js +49 -0
  263. package/dist/v1/language/value/syntax/walk.d.ts +10 -0
  264. package/dist/v1/language/value/syntax/walk.js +53 -0
  265. package/dist/v1/language/view/index.d.ts +2 -0
  266. package/dist/v1/language/view/index.js +1 -0
  267. package/dist/v1/language/view/model/view.d.ts +11 -0
  268. package/dist/v1/language/view/model/view.js +1 -0
  269. package/dist/v1/language/view/resolved.d.ts +9 -0
  270. package/dist/v1/language/view/resolved.js +1 -0
  271. package/dist/v1/schema/admission/accept.d.ts +3 -0
  272. package/dist/v1/schema/admission/accept.js +26 -0
  273. package/dist/v1/schema/analysis/class.d.ts +41 -0
  274. package/dist/v1/schema/analysis/class.js +181 -0
  275. package/dist/v1/schema/canonical/domain.d.ts +3 -0
  276. package/dist/v1/schema/canonical/domain.digest.d.ts +3 -0
  277. package/dist/v1/schema/canonical/domain.digest.js +5 -0
  278. package/dist/v1/schema/canonical/domain.js +5 -0
  279. package/dist/v1/schema/canonical/freeze.d.ts +1 -0
  280. package/dist/v1/schema/canonical/freeze.js +9 -0
  281. package/dist/v1/schema/canonical/revision.d.ts +11 -0
  282. package/dist/v1/schema/canonical/revision.js +17 -0
  283. package/dist/v1/schema/codec/header.d.ts +17 -0
  284. package/dist/v1/schema/codec/header.js +26 -0
  285. package/dist/v1/schema/codec/schema.d.ts +5 -0
  286. package/dist/v1/schema/codec/schema.js +21 -0
  287. package/dist/v1/schema/compatibility/meaning.d.ts +29 -0
  288. package/dist/v1/schema/compatibility/meaning.js +605 -0
  289. package/dist/v1/schema/dependency/lookup.d.ts +18 -0
  290. package/dist/v1/schema/dependency/lookup.js +31 -0
  291. package/dist/v1/schema/diagnostic.d.ts +12 -0
  292. package/dist/v1/schema/diagnostic.js +21 -0
  293. package/dist/v1/schema/index.d.ts +26 -0
  294. package/dist/v1/schema/index.js +13 -0
  295. package/dist/v1/schema/model/format.d.ts +2 -0
  296. package/dist/v1/schema/model/format.js +2 -0
  297. package/dist/v1/schema/model/schema.d.ts +30 -0
  298. package/dist/v1/schema/model/schema.js +4 -0
  299. package/dist/v1/schema/normalization/domain.d.ts +2 -0
  300. package/dist/v1/schema/normalization/domain.js +207 -0
  301. package/dist/v1/schema/resolution/closure.d.ts +9 -0
  302. package/dist/v1/schema/resolution/closure.js +49 -0
  303. package/dist/v1/schema/resolution/context.d.ts +17 -0
  304. package/dist/v1/schema/resolution/context.js +158 -0
  305. package/dist/v1/schema/resolution/definition.index.d.ts +21 -0
  306. package/dist/v1/schema/resolution/definition.index.js +17 -0
  307. package/dist/v1/schema/resolution/domain.d.ts +4 -0
  308. package/dist/v1/schema/resolution/domain.js +112 -0
  309. package/dist/v1/schema/resolution/origins.d.ts +14 -0
  310. package/dist/v1/schema/resolution/origins.js +121 -0
  311. package/dist/v1/schema/resolution/value.registry.d.ts +7 -0
  312. package/dist/v1/schema/resolution/value.registry.js +39 -0
  313. package/dist/v1/schema/revision.d.ts +1 -0
  314. package/dist/v1/schema/revision.js +1 -0
  315. package/dist/v1/schema/validation/class.d.ts +5 -0
  316. package/dist/v1/schema/validation/class.js +208 -0
  317. package/dist/v1/schema/validation/core.d.ts +5 -0
  318. package/dist/v1/schema/validation/core.js +264 -0
  319. package/dist/v1/schema/validation/domain.d.ts +11 -0
  320. package/dist/v1/schema/validation/domain.js +36 -0
  321. package/dist/v1/schema/validation/domain.route.d.ts +4 -0
  322. package/dist/v1/schema/validation/domain.route.js +32 -0
  323. package/dist/v1/schema/validation/domain.structure.d.ts +4 -0
  324. package/dist/v1/schema/validation/domain.structure.js +427 -0
  325. package/dist/v1/schema/validation/policy/budgets.d.ts +4 -0
  326. package/dist/v1/schema/validation/policy/budgets.js +102 -0
  327. package/dist/v1/schema/validation/policy/context.d.ts +28 -0
  328. package/dist/v1/schema/validation/policy/context.js +89 -0
  329. package/dist/v1/schema/validation/policy/references.d.ts +2 -0
  330. package/dist/v1/schema/validation/policy/references.js +143 -0
  331. package/dist/v1/schema/validation/policy/typing.d.ts +19 -0
  332. package/dist/v1/schema/validation/policy/typing.js +318 -0
  333. package/dist/v1/schema/validation/policy/uses.d.ts +5 -0
  334. package/dist/v1/schema/validation/policy/uses.js +258 -0
  335. package/dist/v1/schema/validation/policy/validate.d.ts +11 -0
  336. package/dist/v1/schema/validation/policy/validate.js +23 -0
  337. package/dist/v1/schema/validation/value-api.d.ts +13 -0
  338. package/dist/v1/schema/validation/value-api.js +23 -0
  339. package/dist/v1/schema/validation/value.d.ts +4 -0
  340. package/dist/v1/schema/validation/value.js +39 -0
  341. package/dist/v1/schema/validation/view.d.ts +3 -0
  342. package/dist/v1/schema/validation/view.js +29 -0
  343. package/dist/v1/value/full-match.d.ts +2 -0
  344. package/dist/v1/value/full-match.js +2 -0
  345. package/dist/v1.d.ts +2 -0
  346. package/dist/v1.js +2 -0
  347. package/dist/value/accept.d.ts +8 -0
  348. package/dist/value/accept.js +132 -0
  349. package/dist/value/canonical.d.ts +4 -0
  350. package/dist/value/canonical.js +41 -0
  351. package/dist/value/decode.d.ts +4 -0
  352. package/dist/value/decode.js +108 -0
  353. package/dist/value/equal.d.ts +3 -0
  354. package/dist/value/equal.js +5 -0
  355. package/dist/value/error.d.ts +12 -0
  356. package/dist/value/error.js +21 -0
  357. package/dist/value/index.d.ts +9 -0
  358. package/dist/value/index.js +6 -0
  359. package/dist/value/json.d.ts +3 -0
  360. package/dist/value/json.js +3 -0
  361. package/dist/value/limits.d.ts +21 -0
  362. package/dist/value/limits.js +15 -0
  363. package/dist/value/types.d.ts +6 -0
  364. package/dist/value/types.js +1 -0
  365. package/dist/value/unicode.d.ts +4 -0
  366. package/dist/value/unicode.js +64 -0
  367. package/dist/version/dispatch.d.ts +24 -0
  368. package/dist/version/dispatch.js +47 -0
  369. package/dist/version/index.d.ts +2 -0
  370. package/dist/version/index.js +1 -0
  371. package/package.json +75 -15
  372. package/dist/builders/bitmask.d.ts +0 -5
  373. package/dist/builders/bitmask.d.ts.map +0 -1
  374. package/dist/builders/bitmask.js +0 -12
  375. package/dist/builders/bitmask.js.map +0 -1
  376. package/dist/builders/data.d.ts +0 -7
  377. package/dist/builders/data.d.ts.map +0 -1
  378. package/dist/builders/data.js +0 -18
  379. package/dist/builders/data.js.map +0 -1
  380. package/dist/builders/definition/base.d.ts +0 -13
  381. package/dist/builders/definition/base.d.ts.map +0 -1
  382. package/dist/builders/definition/base.js +0 -24
  383. package/dist/builders/definition/base.js.map +0 -1
  384. package/dist/builders/definition/edge-class.d.ts +0 -8
  385. package/dist/builders/definition/edge-class.d.ts.map +0 -1
  386. package/dist/builders/definition/edge-class.js +0 -9
  387. package/dist/builders/definition/edge-class.js.map +0 -1
  388. package/dist/builders/definition/edge-interface.d.ts +0 -8
  389. package/dist/builders/definition/edge-interface.d.ts.map +0 -1
  390. package/dist/builders/definition/edge-interface.js +0 -9
  391. package/dist/builders/definition/edge-interface.js.map +0 -1
  392. package/dist/builders/definition/node-class.d.ts +0 -7
  393. package/dist/builders/definition/node-class.d.ts.map +0 -1
  394. package/dist/builders/definition/node-class.js +0 -9
  395. package/dist/builders/definition/node-class.js.map +0 -1
  396. package/dist/builders/definition/node-interface.d.ts +0 -7
  397. package/dist/builders/definition/node-interface.d.ts.map +0 -1
  398. package/dist/builders/definition/node-interface.js +0 -9
  399. package/dist/builders/definition/node-interface.js.map +0 -1
  400. package/dist/builders/function.d.ts +0 -34
  401. package/dist/builders/function.d.ts.map +0 -1
  402. package/dist/builders/function.js +0 -8
  403. package/dist/builders/function.js.map +0 -1
  404. package/dist/builders/policy.d.ts +0 -10
  405. package/dist/builders/policy.d.ts.map +0 -1
  406. package/dist/builders/policy.js +0 -28
  407. package/dist/builders/policy.js.map +0 -1
  408. package/dist/builders/prop.d.ts +0 -7
  409. package/dist/builders/prop.d.ts.map +0 -1
  410. package/dist/builders/prop.js +0 -9
  411. package/dist/builders/prop.js.map +0 -1
  412. package/dist/builders/ref.d.ts +0 -12
  413. package/dist/builders/ref.d.ts.map +0 -1
  414. package/dist/builders/ref.js +0 -27
  415. package/dist/builders/ref.js.map +0 -1
  416. package/dist/grammar/definition/base.d.ts +0 -13
  417. package/dist/grammar/definition/base.d.ts.map +0 -1
  418. package/dist/grammar/definition/base.js +0 -2
  419. package/dist/grammar/definition/base.js.map +0 -1
  420. package/dist/grammar/definition/discriminants.d.ts +0 -31
  421. package/dist/grammar/definition/discriminants.d.ts.map +0 -1
  422. package/dist/grammar/definition/discriminants.js +0 -33
  423. package/dist/grammar/definition/discriminants.js.map +0 -1
  424. package/dist/grammar/definition/edge-class.d.ts +0 -19
  425. package/dist/grammar/definition/edge-class.d.ts.map +0 -1
  426. package/dist/grammar/definition/edge-class.js +0 -2
  427. package/dist/grammar/definition/edge-class.js.map +0 -1
  428. package/dist/grammar/definition/edge-interface.d.ts +0 -18
  429. package/dist/grammar/definition/edge-interface.d.ts.map +0 -1
  430. package/dist/grammar/definition/edge-interface.js +0 -2
  431. package/dist/grammar/definition/edge-interface.js.map +0 -1
  432. package/dist/grammar/definition/node-class.d.ts +0 -26
  433. package/dist/grammar/definition/node-class.d.ts.map +0 -1
  434. package/dist/grammar/definition/node-class.js +0 -2
  435. package/dist/grammar/definition/node-class.js.map +0 -1
  436. package/dist/grammar/definition/node-interface.d.ts +0 -14
  437. package/dist/grammar/definition/node-interface.d.ts.map +0 -1
  438. package/dist/grammar/definition/node-interface.js +0 -2
  439. package/dist/grammar/definition/node-interface.js.map +0 -1
  440. package/dist/grammar/facets/constraints.d.ts +0 -8
  441. package/dist/grammar/facets/constraints.d.ts.map +0 -1
  442. package/dist/grammar/facets/constraints.js +0 -2
  443. package/dist/grammar/facets/constraints.js.map +0 -1
  444. package/dist/grammar/facets/content.d.ts +0 -4
  445. package/dist/grammar/facets/content.d.ts.map +0 -1
  446. package/dist/grammar/facets/content.js +0 -2
  447. package/dist/grammar/facets/content.js.map +0 -1
  448. package/dist/grammar/facets/endpoints.d.ts +0 -14
  449. package/dist/grammar/facets/endpoints.d.ts.map +0 -1
  450. package/dist/grammar/facets/endpoints.js +0 -3
  451. package/dist/grammar/facets/endpoints.js.map +0 -1
  452. package/dist/grammar/facets/indexes.d.ts +0 -12
  453. package/dist/grammar/facets/indexes.d.ts.map +0 -1
  454. package/dist/grammar/facets/indexes.js +0 -9
  455. package/dist/grammar/facets/indexes.js.map +0 -1
  456. package/dist/grammar/facets/properties.d.ts +0 -26
  457. package/dist/grammar/facets/properties.d.ts.map +0 -1
  458. package/dist/grammar/facets/properties.js +0 -45
  459. package/dist/grammar/facets/properties.js.map +0 -1
  460. package/dist/grammar/function/config.d.ts +0 -16
  461. package/dist/grammar/function/config.d.ts.map +0 -1
  462. package/dist/grammar/function/config.js +0 -2
  463. package/dist/grammar/function/config.js.map +0 -1
  464. package/dist/grammar/function/def.d.ts +0 -58
  465. package/dist/grammar/function/def.d.ts.map +0 -1
  466. package/dist/grammar/function/def.js +0 -2
  467. package/dist/grammar/function/def.js.map +0 -1
  468. package/dist/grammar/function/inheritance.d.ts +0 -3
  469. package/dist/grammar/function/inheritance.d.ts.map +0 -1
  470. package/dist/grammar/function/inheritance.js +0 -2
  471. package/dist/grammar/function/inheritance.js.map +0 -1
  472. package/dist/grammar/function/output.d.ts +0 -3
  473. package/dist/grammar/function/output.d.ts.map +0 -1
  474. package/dist/grammar/function/output.js +0 -2
  475. package/dist/grammar/function/output.js.map +0 -1
  476. package/dist/grammar/policy/callable.d.ts +0 -40
  477. package/dist/grammar/policy/callable.d.ts.map +0 -1
  478. package/dist/grammar/policy/callable.js +0 -2
  479. package/dist/grammar/policy/callable.js.map +0 -1
  480. package/dist/grammar/policy/def.d.ts +0 -27
  481. package/dist/grammar/policy/def.d.ts.map +0 -1
  482. package/dist/grammar/policy/def.js +0 -2
  483. package/dist/grammar/policy/def.js.map +0 -1
  484. package/dist/grammar/policy/pattern.d.ts +0 -34
  485. package/dist/grammar/policy/pattern.d.ts.map +0 -1
  486. package/dist/grammar/policy/pattern.js +0 -2
  487. package/dist/grammar/policy/pattern.js.map +0 -1
  488. package/dist/grammar/values/bitmask.d.ts +0 -7
  489. package/dist/grammar/values/bitmask.d.ts.map +0 -1
  490. package/dist/grammar/values/bitmask.js +0 -2
  491. package/dist/grammar/values/bitmask.js.map +0 -1
  492. package/dist/grammar/values/data.d.ts +0 -30
  493. package/dist/grammar/values/data.d.ts.map +0 -1
  494. package/dist/grammar/values/data.js +0 -2
  495. package/dist/grammar/values/data.js.map +0 -1
  496. package/dist/grammar/values/ref.d.ts +0 -26
  497. package/dist/grammar/values/ref.d.ts.map +0 -1
  498. package/dist/grammar/values/ref.js +0 -2
  499. package/dist/grammar/values/ref.js.map +0 -1
  500. package/dist/grammar/values/self.d.ts +0 -12
  501. package/dist/grammar/values/self.d.ts.map +0 -1
  502. package/dist/grammar/values/self.js +0 -6
  503. package/dist/grammar/values/self.js.map +0 -1
  504. package/dist/index.d.ts.map +0 -1
  505. package/dist/index.js.map +0 -1
  506. package/dist/inference/content.d.ts +0 -27
  507. package/dist/inference/content.d.ts.map +0 -1
  508. package/dist/inference/content.js +0 -2
  509. package/dist/inference/content.js.map +0 -1
  510. package/dist/inference/index.d.ts +0 -7
  511. package/dist/inference/index.d.ts.map +0 -1
  512. package/dist/inference/index.js +0 -2
  513. package/dist/inference/index.js.map +0 -1
  514. package/dist/inference/inheritance.d.ts +0 -48
  515. package/dist/inference/inheritance.d.ts.map +0 -1
  516. package/dist/inference/inheritance.js +0 -2
  517. package/dist/inference/inheritance.js.map +0 -1
  518. package/dist/inference/input.d.ts +0 -30
  519. package/dist/inference/input.d.ts.map +0 -1
  520. package/dist/inference/input.js +0 -2
  521. package/dist/inference/input.js.map +0 -1
  522. package/dist/inference/methods.d.ts +0 -69
  523. package/dist/inference/methods.d.ts.map +0 -1
  524. package/dist/inference/methods.js +0 -2
  525. package/dist/inference/methods.js.map +0 -1
  526. package/dist/inference/properties.d.ts +0 -37
  527. package/dist/inference/properties.d.ts.map +0 -1
  528. package/dist/inference/properties.js +0 -2
  529. package/dist/inference/properties.js.map +0 -1
  530. package/dist/inference/schema.d.ts +0 -37
  531. package/dist/inference/schema.d.ts.map +0 -1
  532. package/dist/inference/schema.js +0 -2
  533. package/dist/inference/schema.js.map +0 -1
  534. package/dist/instance/core/define.d.ts +0 -13
  535. package/dist/instance/core/define.d.ts.map +0 -1
  536. package/dist/instance/core/define.js +0 -63
  537. package/dist/instance/core/define.js.map +0 -1
  538. package/dist/instance/core/edge.d.ts +0 -9
  539. package/dist/instance/core/edge.d.ts.map +0 -1
  540. package/dist/instance/core/edge.js +0 -11
  541. package/dist/instance/core/edge.js.map +0 -1
  542. package/dist/instance/core/endpoint.d.ts +0 -11
  543. package/dist/instance/core/endpoint.d.ts.map +0 -1
  544. package/dist/instance/core/endpoint.js +0 -19
  545. package/dist/instance/core/endpoint.js.map +0 -1
  546. package/dist/instance/core/node.d.ts +0 -7
  547. package/dist/instance/core/node.d.ts.map +0 -1
  548. package/dist/instance/core/node.js +0 -9
  549. package/dist/instance/core/node.js.map +0 -1
  550. package/dist/instance/core/path.d.ts +0 -21
  551. package/dist/instance/core/path.d.ts.map +0 -1
  552. package/dist/instance/core/path.js +0 -21
  553. package/dist/instance/core/path.js.map +0 -1
  554. package/dist/instance/core/self.d.ts +0 -15
  555. package/dist/instance/core/self.d.ts.map +0 -1
  556. package/dist/instance/core/self.js +0 -8
  557. package/dist/instance/core/self.js.map +0 -1
  558. package/dist/instance/core/types.d.ts +0 -45
  559. package/dist/instance/core/types.d.ts.map +0 -1
  560. package/dist/instance/core/types.js +0 -2
  561. package/dist/instance/core/types.js.map +0 -1
  562. package/dist/instance/seed/define.d.ts +0 -12
  563. package/dist/instance/seed/define.d.ts.map +0 -1
  564. package/dist/instance/seed/define.js +0 -34
  565. package/dist/instance/seed/define.js.map +0 -1
  566. package/dist/instance/seed/types.d.ts +0 -12
  567. package/dist/instance/seed/types.d.ts.map +0 -1
  568. package/dist/instance/seed/types.js +0 -2
  569. package/dist/instance/seed/types.js.map +0 -1
  570. package/dist/ir/classes.d.ts +0 -78
  571. package/dist/ir/classes.d.ts.map +0 -1
  572. package/dist/ir/classes.js +0 -2
  573. package/dist/ir/classes.js.map +0 -1
  574. package/dist/ir/domain.d.ts +0 -13
  575. package/dist/ir/domain.d.ts.map +0 -1
  576. package/dist/ir/domain.js +0 -2
  577. package/dist/ir/domain.js.map +0 -1
  578. package/dist/ir/endpoints.d.ts +0 -27
  579. package/dist/ir/endpoints.d.ts.map +0 -1
  580. package/dist/ir/endpoints.js +0 -2
  581. package/dist/ir/endpoints.js.map +0 -1
  582. package/dist/ir/functions.d.ts +0 -34
  583. package/dist/ir/functions.d.ts.map +0 -1
  584. package/dist/ir/functions.js +0 -2
  585. package/dist/ir/functions.js.map +0 -1
  586. package/dist/ir/index.d.ts +0 -9
  587. package/dist/ir/index.d.ts.map +0 -1
  588. package/dist/ir/index.js +0 -2
  589. package/dist/ir/index.js.map +0 -1
  590. package/dist/ir/ir.d.ts +0 -75
  591. package/dist/ir/ir.d.ts.map +0 -1
  592. package/dist/ir/ir.js +0 -5
  593. package/dist/ir/ir.js.map +0 -1
  594. package/dist/ir/json-schema.d.ts +0 -20
  595. package/dist/ir/json-schema.d.ts.map +0 -1
  596. package/dist/ir/json-schema.js +0 -2
  597. package/dist/ir/json-schema.js.map +0 -1
  598. package/dist/ir/policies.d.ts +0 -74
  599. package/dist/ir/policies.d.ts.map +0 -1
  600. package/dist/ir/policies.js +0 -2
  601. package/dist/ir/policies.js.map +0 -1
  602. package/dist/schema/classify.d.ts +0 -8
  603. package/dist/schema/classify.d.ts.map +0 -1
  604. package/dist/schema/classify.js +0 -20
  605. package/dist/schema/classify.js.map +0 -1
  606. package/dist/schema/define.d.ts +0 -23
  607. package/dist/schema/define.d.ts.map +0 -1
  608. package/dist/schema/define.js +0 -58
  609. package/dist/schema/define.js.map +0 -1
  610. package/dist/schema/error.d.ts +0 -8
  611. package/dist/schema/error.d.ts.map +0 -1
  612. package/dist/schema/error.js +0 -14
  613. package/dist/schema/error.js.map +0 -1
  614. package/dist/schema/refs.d.ts +0 -77
  615. package/dist/schema/refs.d.ts.map +0 -1
  616. package/dist/schema/refs.js +0 -100
  617. package/dist/schema/refs.js.map +0 -1
  618. package/dist/schema/resolve/index.d.ts +0 -5
  619. package/dist/schema/resolve/index.d.ts.map +0 -1
  620. package/dist/schema/resolve/index.js +0 -5
  621. package/dist/schema/resolve/index.js.map +0 -1
  622. package/dist/schema/resolve/methods.d.ts +0 -8
  623. package/dist/schema/resolve/methods.d.ts.map +0 -1
  624. package/dist/schema/resolve/methods.js +0 -18
  625. package/dist/schema/resolve/methods.js.map +0 -1
  626. package/dist/schema/resolve/properties.d.ts +0 -13
  627. package/dist/schema/resolve/properties.d.ts.map +0 -1
  628. package/dist/schema/resolve/properties.js +0 -37
  629. package/dist/schema/resolve/properties.js.map +0 -1
  630. package/dist/schema/resolve/self.d.ts +0 -7
  631. package/dist/schema/resolve/self.d.ts.map +0 -1
  632. package/dist/schema/resolve/self.js +0 -33
  633. package/dist/schema/resolve/self.js.map +0 -1
  634. package/dist/schema/resolve/thunks.d.ts +0 -12
  635. package/dist/schema/resolve/thunks.d.ts.map +0 -1
  636. package/dist/schema/resolve/thunks.js +0 -37
  637. package/dist/schema/resolve/thunks.js.map +0 -1
  638. package/dist/schema/schema.d.ts +0 -25
  639. package/dist/schema/schema.d.ts.map +0 -1
  640. package/dist/schema/schema.js +0 -2
  641. package/dist/schema/schema.js.map +0 -1
  642. package/dist/schema/validators/context.d.ts +0 -17
  643. package/dist/schema/validators/context.d.ts.map +0 -1
  644. package/dist/schema/validators/context.js +0 -2
  645. package/dist/schema/validators/context.js.map +0 -1
  646. package/dist/schema/validators/endpoints.d.ts +0 -4
  647. package/dist/schema/validators/endpoints.d.ts.map +0 -1
  648. package/dist/schema/validators/endpoints.js +0 -27
  649. package/dist/schema/validators/endpoints.js.map +0 -1
  650. package/dist/schema/validators/index.d.ts +0 -12
  651. package/dist/schema/validators/index.d.ts.map +0 -1
  652. package/dist/schema/validators/index.js +0 -25
  653. package/dist/schema/validators/index.js.map +0 -1
  654. package/dist/schema/validators/indexes.d.ts +0 -4
  655. package/dist/schema/validators/indexes.d.ts.map +0 -1
  656. package/dist/schema/validators/indexes.js +0 -19
  657. package/dist/schema/validators/indexes.js.map +0 -1
  658. package/dist/schema/validators/inheritance.d.ts +0 -4
  659. package/dist/schema/validators/inheritance.d.ts.map +0 -1
  660. package/dist/schema/validators/inheritance.js +0 -27
  661. package/dist/schema/validators/inheritance.js.map +0 -1
  662. package/dist/schema/validators/methods.d.ts +0 -9
  663. package/dist/schema/validators/methods.d.ts.map +0 -1
  664. package/dist/schema/validators/methods.js +0 -44
  665. package/dist/schema/validators/methods.js.map +0 -1
  666. package/dist/schema/validators/names.d.ts +0 -4
  667. package/dist/schema/validators/names.d.ts.map +0 -1
  668. package/dist/schema/validators/names.js +0 -19
  669. package/dist/schema/validators/names.js.map +0 -1
  670. package/dist/schema/validators/policies.d.ts +0 -4
  671. package/dist/schema/validators/policies.d.ts.map +0 -1
  672. package/dist/schema/validators/policies.js +0 -61
  673. package/dist/schema/validators/policies.js.map +0 -1
  674. package/dist/schema/validators/ref-targets.d.ts +0 -4
  675. package/dist/schema/validators/ref-targets.d.ts.map +0 -1
  676. package/dist/schema/validators/ref-targets.js +0 -54
  677. package/dist/schema/validators/ref-targets.js.map +0 -1
  678. package/dist/serializer/context.d.ts +0 -35
  679. package/dist/serializer/context.d.ts.map +0 -1
  680. package/dist/serializer/context.js +0 -359
  681. package/dist/serializer/context.js.map +0 -1
  682. package/dist/serializer/helpers.d.ts +0 -34
  683. package/dist/serializer/helpers.d.ts.map +0 -1
  684. package/dist/serializer/helpers.js +0 -116
  685. package/dist/serializer/helpers.js.map +0 -1
  686. package/dist/serializer/index.d.ts +0 -2
  687. package/dist/serializer/index.d.ts.map +0 -1
  688. package/dist/serializer/index.js +0 -2
  689. package/dist/serializer/index.js.map +0 -1
  690. package/dist/serializer/policies.d.ts +0 -34
  691. package/dist/serializer/policies.d.ts.map +0 -1
  692. package/dist/serializer/policies.js +0 -837
  693. package/dist/serializer/policies.js.map +0 -1
  694. package/dist/serializer/policy-typing.d.ts +0 -56
  695. package/dist/serializer/policy-typing.d.ts.map +0 -1
  696. package/dist/serializer/policy-typing.js +0 -490
  697. package/dist/serializer/policy-typing.js.map +0 -1
  698. package/dist/serializer/serialize.d.ts +0 -12
  699. package/dist/serializer/serialize.d.ts.map +0 -1
  700. package/dist/serializer/serialize.js +0 -6
  701. package/dist/serializer/serialize.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ import type { Diagnostic } from '../../validation/diagnostic.js';
2
+ import type { JsonSchema } from '../model/schema.js';
3
+ /** Validate untrusted value-schema structure with the pinned generated meta-schema validator. */
4
+ export declare function validateValueSchemaMetaSchema(schema: JsonSchema, pointer: string): readonly Diagnostic[];
@@ -0,0 +1,19 @@
1
+ import { diagnostic } from '../../validation/diagnostic.js';
2
+ import validateMetaSchema from './meta-schema.compiled.js';
3
+ const validate = validateMetaSchema;
4
+ /** Validate untrusted value-schema structure with the pinned generated meta-schema validator. */
5
+ export function validateValueSchemaMetaSchema(schema, pointer) {
6
+ try {
7
+ if (validate(schema))
8
+ return [];
9
+ return (validate.errors ?? []).map((error) => diagnostic('VS_META_SCHEMA', `${pointer}${error.instancePath}`, `Astrale V1 value-schema meta-schema rejected the schema: ${error.message ?? error.keyword}.`));
10
+ }
11
+ catch (error) {
12
+ return [
13
+ diagnostic('VS_META_SCHEMA', pointer, `Astrale V1 value-schema meta-schema validation failed closed: ${errorMessage(error)}.`),
14
+ ];
15
+ }
16
+ }
17
+ function errorMessage(error) {
18
+ return error instanceof Error ? error.message : String(error);
19
+ }
@@ -0,0 +1,3 @@
1
+ import type { Diagnostic } from '../../validation/diagnostic.js';
2
+ import type { JsonSchema, ValueSchemaContext } from '../model/schema.js';
3
+ export declare function validateSchemaProfile(schema: JsonSchema, context: ValueSchemaContext, pointer: string): readonly Diagnostic[];
@@ -0,0 +1,109 @@
1
+ import { json } from '@astrale-os/kernel-dsl/value';
2
+ import { diagnostic } from '../../validation/diagnostic.js';
3
+ import { isValueObject as isJsonObject } from '../model/object.js';
4
+ import { VALUE_SCHEMA_DIALECT } from '../model/schema.js';
5
+ import { isIRegexp } from '../regexp/syntax.js';
6
+ import { walkSchema } from '../syntax/walk.js';
7
+ import { FORBIDDEN_DYNAMIC_KEYWORDS, STANDARD_SCHEMA_KEYWORDS } from './vocabulary.js';
8
+ export function validateSchemaProfile(schema, context, pointer) {
9
+ const diagnostics = [];
10
+ walkSchema(schema, (location) => {
11
+ if (!isJsonObject(location.schema))
12
+ return;
13
+ const currentPointer = `${pointer}${location.pointer}`;
14
+ for (const keyword of Object.keys(location.schema)) {
15
+ if (!STANDARD_SCHEMA_KEYWORDS.has(keyword)) {
16
+ diagnostics.push(diagnostic('VS_KEYWORD_CLOSED', `${currentPointer}/${escapeToken(keyword)}`, `Keyword ${keyword} is outside the closed V1 Draft 2020-12 vocabulary.`));
17
+ }
18
+ if (FORBIDDEN_DYNAMIC_KEYWORDS.has(keyword)) {
19
+ diagnostics.push(diagnostic('VS_DYNAMIC_FORBIDDEN', `${currentPointer}/${escapeToken(keyword)}`, `Keyword ${keyword} is forbidden by V1.`));
20
+ }
21
+ }
22
+ if (Object.hasOwn(location.schema, '$schema')) {
23
+ if (location.depth !== 0 || location.schema.$schema !== VALUE_SCHEMA_DIALECT) {
24
+ diagnostics.push(diagnostic('VS_DIALECT', `${currentPointer}/$schema`, `Embedded-root $schema is optional, but when present must equal ${VALUE_SCHEMA_DIALECT}.`));
25
+ }
26
+ }
27
+ if (Object.hasOwn(location.schema, '$id')) {
28
+ diagnostics.push(diagnostic('VS_RESOURCE_ID', `${currentPointer}/$id`, '$id is forbidden in an embedded V1 value schema.'));
29
+ }
30
+ validateSemanticSets(location.schema, currentPointer, diagnostics);
31
+ validateValueKind(location.schema, currentPointer, diagnostics);
32
+ validateRegexes(location.schema, currentPointer, diagnostics);
33
+ });
34
+ void context;
35
+ return diagnostics;
36
+ }
37
+ function validateValueKind(schema, pointer, diagnostics) {
38
+ if (!Object.hasOwn(schema, 'x-astrale-value-kind'))
39
+ return;
40
+ if (schema['x-astrale-value-kind'] !== 'instant' || schema.type !== 'string') {
41
+ diagnostics.push(diagnostic('VS_VALUE_KIND', `${pointer}/x-astrale-value-kind`, 'x-astrale-value-kind is exactly instant and requires type string at the same schema location.'));
42
+ }
43
+ }
44
+ function validateSemanticSets(schema, pointer, diagnostics) {
45
+ if (Array.isArray(schema.type)) {
46
+ rejectPrimitiveDuplicates(schema.type, `${pointer}/type`, 'type', diagnostics);
47
+ }
48
+ if (Array.isArray(schema.required)) {
49
+ rejectPrimitiveDuplicates(schema.required, `${pointer}/required`, 'required', diagnostics);
50
+ }
51
+ if (Array.isArray(schema.enum)) {
52
+ rejectCanonicalDuplicates(schema.enum, `${pointer}/enum`, 'enum', diagnostics);
53
+ }
54
+ if (isJsonObject(schema.dependentRequired)) {
55
+ for (const [name, dependencies] of Object.entries(schema.dependentRequired)) {
56
+ if (Array.isArray(dependencies)) {
57
+ rejectPrimitiveDuplicates(dependencies, `${pointer}/dependentRequired/${escapeToken(name)}`, 'dependentRequired', diagnostics);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ function validateRegexes(schema, pointer, diagnostics) {
63
+ if (Object.hasOwn(schema, 'fullMatch') && typeof schema.fullMatch !== 'string') {
64
+ diagnostics.push(diagnostic('VS_META_SCHEMA', `${pointer}/fullMatch`, 'fullMatch must be an I-Regexp source string.'));
65
+ }
66
+ if (typeof schema.fullMatch === 'string' && !isIRegexp(schema.fullMatch)) {
67
+ diagnostics.push(diagnostic('VS_REGEX_PORTABLE', `${pointer}/fullMatch`, 'fullMatch must satisfy the complete RFC 9485 I-Regexp syntax.'));
68
+ }
69
+ if (typeof schema.pattern === 'string' && !isIRegexp(schema.pattern)) {
70
+ diagnostics.push(diagnostic('VS_REGEX_PORTABLE', `${pointer}/pattern`, 'pattern must satisfy the complete RFC 9485 I-Regexp syntax.'));
71
+ }
72
+ if (isJsonObject(schema.patternProperties)) {
73
+ for (const pattern of Object.keys(schema.patternProperties)) {
74
+ if (!isIRegexp(pattern)) {
75
+ diagnostics.push(diagnostic('VS_REGEX_PORTABLE', `${pointer}/patternProperties/${escapeToken(pattern)}`, 'patternProperties keys must satisfy RFC 9485 I-Regexp syntax.'));
76
+ }
77
+ }
78
+ }
79
+ }
80
+ function rejectPrimitiveDuplicates(values, pointer, name, diagnostics) {
81
+ const seen = new Set();
82
+ for (const value of values) {
83
+ if (seen.has(value)) {
84
+ diagnostics.push(diagnostic('VS_META_SCHEMA', pointer, `${name} is a duplicate-free semantic set.`));
85
+ return;
86
+ }
87
+ seen.add(value);
88
+ }
89
+ }
90
+ function rejectCanonicalDuplicates(values, pointer, name, diagnostics) {
91
+ const seen = new Set();
92
+ for (const value of values) {
93
+ let key;
94
+ try {
95
+ key = json.serialize(value);
96
+ }
97
+ catch {
98
+ continue;
99
+ }
100
+ if (seen.has(key)) {
101
+ diagnostics.push(diagnostic('VS_META_SCHEMA', pointer, `${name} rejects canonically equal duplicates.`));
102
+ return;
103
+ }
104
+ seen.add(key);
105
+ }
106
+ }
107
+ function escapeToken(value) {
108
+ return value.replaceAll('~', '~0').replaceAll('/', '~1');
109
+ }
@@ -0,0 +1,4 @@
1
+ import type { Diagnostic } from '../../validation/diagnostic.js';
2
+ import type { JsonSchema, ValueSchemaContext } from '../model/schema.js';
3
+ import type { ValueSchemaRegistry } from '../reference/registry.js';
4
+ export declare function validateValueSchema(schema: JsonSchema, context: ValueSchemaContext, registry: ValueSchemaRegistry, pointer?: string): Diagnostic[];
@@ -0,0 +1,39 @@
1
+ import { compareUnicode } from '../../../addressing/ordering.js';
2
+ import { collectResourceClosure } from '../reference/closure.js';
3
+ import { validateProductiveRecursion } from '../reference/recursion.js';
4
+ import { hasNodeDefinition, indexRegistry } from '../reference/registry.index.js';
5
+ import { GRAPH_NODE_PATH_SCHEMA_ID } from '../syntax/node-path/schema.js';
6
+ import { validateNodePathExtension } from '../syntax/node-path/validate.js';
7
+ import { validateCanonicalJsonDomain } from './json.validate.js';
8
+ import { validateValueSchemaMetaSchema } from './meta-schema.js';
9
+ import { validateSchemaProfile } from './rules.js';
10
+ export function validateValueSchema(schema, context, registry, pointer = '') {
11
+ const diagnostics = [];
12
+ diagnostics.push(...validateCanonicalJsonDomain(schema, pointer));
13
+ const indexed = indexRegistry(registry, pointer);
14
+ diagnostics.push(...indexed.diagnostics);
15
+ const closure = collectResourceClosure(schema, context, indexed.index, pointer);
16
+ diagnostics.push(...closure.diagnostics);
17
+ for (const resource of closure.resources.values()) {
18
+ // The Core-owned graph locator artifact is admitted exactly by indexRegistry. It participates
19
+ // in instance evaluation, but it is not an embedded V1 value-schema resource.
20
+ if (resource.key === GRAPH_NODE_PATH_SCHEMA_ID)
21
+ continue;
22
+ const resourcePointer = resource.diagnosticPointer ?? pointer;
23
+ diagnostics.push(...validateValueSchemaMetaSchema(resource.schema, resourcePointer));
24
+ diagnostics.push(...validateCanonicalJsonDomain(resource.schema, resourcePointer));
25
+ diagnostics.push(...validateSchemaProfile(resource.schema, context, resourcePointer));
26
+ diagnostics.push(...validateNodePathExtension(resource.schema, context, resourcePointer, (ref) => hasNodeDefinition(indexed.index, ref, resource.ownerOrigin)));
27
+ }
28
+ diagnostics.push(...validateProductiveRecursion(closure.resources, closure.resolutions));
29
+ return orderAndDeduplicate(diagnostics);
30
+ }
31
+ function orderAndDeduplicate(diagnostics) {
32
+ const unique = new Map();
33
+ for (const value of diagnostics) {
34
+ unique.set(`${value.pointer}\u0000${value.code}\u0000${value.ref ?? ''}\u0000${value.message}`, value);
35
+ }
36
+ return [...unique.values()].sort((left, right) => compareUnicode(left.pointer, right.pointer) ||
37
+ compareUnicode(left.code, right.code) ||
38
+ compareUnicode(left.message, right.message));
39
+ }
@@ -0,0 +1,2 @@
1
+ export declare const STANDARD_SCHEMA_KEYWORDS: Set<string>;
2
+ export declare const FORBIDDEN_DYNAMIC_KEYWORDS: Set<string>;
@@ -0,0 +1,68 @@
1
+ export const STANDARD_SCHEMA_KEYWORDS = new Set([
2
+ '$anchor',
3
+ '$comment',
4
+ '$defs',
5
+ '$dynamicAnchor',
6
+ '$dynamicRef',
7
+ '$id',
8
+ '$ref',
9
+ '$schema',
10
+ '$vocabulary',
11
+ 'additionalProperties',
12
+ 'allOf',
13
+ 'anyOf',
14
+ 'const',
15
+ 'contains',
16
+ 'contentEncoding',
17
+ 'contentMediaType',
18
+ 'contentSchema',
19
+ 'default',
20
+ 'dependentRequired',
21
+ 'dependentSchemas',
22
+ 'deprecated',
23
+ 'description',
24
+ 'else',
25
+ 'enum',
26
+ 'examples',
27
+ 'exclusiveMaximum',
28
+ 'exclusiveMinimum',
29
+ 'format',
30
+ 'fullMatch',
31
+ 'if',
32
+ 'items',
33
+ 'maxContains',
34
+ 'maximum',
35
+ 'maxItems',
36
+ 'maxLength',
37
+ 'maxProperties',
38
+ 'minContains',
39
+ 'minimum',
40
+ 'minItems',
41
+ 'minLength',
42
+ 'minProperties',
43
+ 'multipleOf',
44
+ 'not',
45
+ 'oneOf',
46
+ 'pattern',
47
+ 'patternProperties',
48
+ 'prefixItems',
49
+ 'properties',
50
+ 'propertyNames',
51
+ 'readOnly',
52
+ 'required',
53
+ 'then',
54
+ 'title',
55
+ 'type',
56
+ 'unevaluatedItems',
57
+ 'unevaluatedProperties',
58
+ 'uniqueItems',
59
+ 'writeOnly',
60
+ 'x-astrale-path',
61
+ 'x-astrale-value-kind',
62
+ ]);
63
+ export const FORBIDDEN_DYNAMIC_KEYWORDS = new Set([
64
+ '$anchor',
65
+ '$dynamicAnchor',
66
+ '$dynamicRef',
67
+ '$vocabulary',
68
+ ]);
@@ -0,0 +1,11 @@
1
+ import type { Diagnostic } from '../../validation/diagnostic.js';
2
+ import type { JsonSchema, ValueSchemaContext } from '../model/schema.js';
3
+ import type { RegistryIndex } from './registry.index.js';
4
+ import { type ResolvedAddressReference, type SchemaResource } from './references.js';
5
+ export interface ValueSchemaResourceClosure {
6
+ readonly resources: ReadonlyMap<string, SchemaResource>;
7
+ readonly resolutions: ReadonlyMap<string, ResolvedAddressReference>;
8
+ readonly diagnostics: readonly Diagnostic[];
9
+ }
10
+ export declare function collectResourceClosure(schema: JsonSchema, context: ValueSchemaContext, index: RegistryIndex, pointer: string): ValueSchemaResourceClosure;
11
+ export declare function locationKey(resourceKey: string, pointer: string): string;
@@ -0,0 +1,51 @@
1
+ import { diagnostic } from '../../validation/diagnostic.js';
2
+ import { isValueObject as isJsonObject } from '../model/object.js';
3
+ import { hasNodePathAnnotation } from '../syntax/node-path/schema.js';
4
+ import { walkSchema } from '../syntax/walk.js';
5
+ import { resolveAddressReference, } from './references.js';
6
+ export function collectResourceClosure(schema, context, index, pointer) {
7
+ const diagnostics = [];
8
+ const resources = new Map();
9
+ const resolutions = new Map();
10
+ const initial = {
11
+ key: `urn:astrale:dsl:v1:embedded:${context}`,
12
+ schema,
13
+ ownerOrigin: index.registry.current.origin,
14
+ diagnosticPointer: pointer,
15
+ };
16
+ resources.set(initial.key, initial);
17
+ const queue = [initial];
18
+ while (queue.length > 0) {
19
+ const resource = queue.shift();
20
+ if (resource === undefined)
21
+ break;
22
+ walkSchema(resource.schema, (location) => {
23
+ if (!isJsonObject(location.schema) || !Object.hasOwn(location.schema, '$ref'))
24
+ return;
25
+ const refPointer = `${resource.diagnosticPointer ?? pointer}${location.pointer}/$ref`;
26
+ if (typeof location.schema.$ref !== 'string') {
27
+ diagnostics.push(diagnostic('VS_REFERENCE_FORM', refPointer, '$ref must be a string URI-reference.'));
28
+ return;
29
+ }
30
+ const result = resolveAddressReference(location.schema.$ref, resource, index, refPointer, hasNodePathAnnotation(location.schema));
31
+ if (result.diagnostic !== undefined)
32
+ diagnostics.push(result.diagnostic);
33
+ if (result.resolved === undefined)
34
+ return;
35
+ resolutions.set(locationKey(resource.key, location.pointer), result.resolved);
36
+ const target = result.resolved.resource;
37
+ if (resources.has(target.key))
38
+ return;
39
+ const registered = {
40
+ ...target,
41
+ diagnosticPointer: `${pointer}/registry/graphNodePath`,
42
+ };
43
+ resources.set(target.key, registered);
44
+ queue.push(registered);
45
+ });
46
+ }
47
+ return { resources, resolutions, diagnostics };
48
+ }
49
+ export function locationKey(resourceKey, pointer) {
50
+ return `${resourceKey}\u0000${pointer}`;
51
+ }
@@ -0,0 +1,5 @@
1
+ import type { Diagnostic } from '../../validation/diagnostic.js';
2
+ import type { ResolvedAddressReference, SchemaResource } from './references.js';
3
+ export declare const CONSUMING_SCHEMA_KEYWORDS: Set<string>;
4
+ export declare const NON_CONSUMING_SCHEMA_KEYWORDS: Set<string>;
5
+ export declare function validateProductiveRecursion(resources: ReadonlyMap<string, SchemaResource>, resolutions: ReadonlyMap<string, ResolvedAddressReference>): readonly Diagnostic[];
@@ -0,0 +1,95 @@
1
+ import { diagnostic } from '../../validation/diagnostic.js';
2
+ import { isValueObject as isJsonObject } from '../model/object.js';
3
+ import { SCHEMA_ARRAY_KEYWORDS, SCHEMA_MAP_KEYWORDS, SCHEMA_SINGLE_KEYWORDS, } from '../syntax/keywords.js';
4
+ import { appendPointer } from '../syntax/pointer.js';
5
+ import { isJsonSchema, walkSchema } from '../syntax/walk.js';
6
+ import { locationKey } from './closure.js';
7
+ export const CONSUMING_SCHEMA_KEYWORDS = new Set([
8
+ 'additionalProperties',
9
+ 'contains',
10
+ 'items',
11
+ 'patternProperties',
12
+ 'prefixItems',
13
+ 'properties',
14
+ 'propertyNames',
15
+ 'unevaluatedItems',
16
+ 'unevaluatedProperties',
17
+ ]);
18
+ export const NON_CONSUMING_SCHEMA_KEYWORDS = new Set([
19
+ '$defs',
20
+ 'allOf',
21
+ 'anyOf',
22
+ 'dependentSchemas',
23
+ 'else',
24
+ 'if',
25
+ 'not',
26
+ 'oneOf',
27
+ 'then',
28
+ ]);
29
+ export function validateProductiveRecursion(resources, resolutions) {
30
+ const adjacency = new Map();
31
+ const diagnosticPointers = new Map();
32
+ for (const resource of resources.values()) {
33
+ walkSchema(resource.schema, (location) => {
34
+ const source = locationKey(resource.key, location.pointer);
35
+ diagnosticPointers.set(source, `${resource.diagnosticPointer ?? ''}${location.pointer}`);
36
+ const outgoing = adjacency.get(source) ?? new Set();
37
+ adjacency.set(source, outgoing);
38
+ if (!isJsonObject(location.schema))
39
+ return;
40
+ const ref = resolutions.get(source);
41
+ if (ref !== undefined)
42
+ outgoing.add(locationKey(ref.resource.key, ref.pointer));
43
+ for (const [keyword, value] of Object.entries(location.schema)) {
44
+ if (!NON_CONSUMING_SCHEMA_KEYWORDS.has(keyword))
45
+ continue;
46
+ const keywordPointer = appendPointer(location.pointer, keyword);
47
+ if (SCHEMA_SINGLE_KEYWORDS.has(keyword) && isJsonSchema(value)) {
48
+ outgoing.add(locationKey(resource.key, keywordPointer));
49
+ continue;
50
+ }
51
+ if (SCHEMA_ARRAY_KEYWORDS.has(keyword) && Array.isArray(value)) {
52
+ value.forEach((entry, index) => {
53
+ if (isJsonSchema(entry)) {
54
+ outgoing.add(locationKey(resource.key, appendPointer(keywordPointer, index)));
55
+ }
56
+ });
57
+ continue;
58
+ }
59
+ if (SCHEMA_MAP_KEYWORDS.has(keyword) && isJsonObject(value)) {
60
+ for (const [name, entry] of Object.entries(value)) {
61
+ if (isJsonSchema(entry)) {
62
+ outgoing.add(locationKey(resource.key, appendPointer(keywordPointer, name)));
63
+ }
64
+ }
65
+ }
66
+ }
67
+ });
68
+ }
69
+ const visiting = new Set();
70
+ const visited = new Set();
71
+ for (const node of adjacency.keys()) {
72
+ const cycleAt = findCycle(node, adjacency, visiting, visited);
73
+ if (cycleAt !== undefined) {
74
+ return [
75
+ diagnostic('VS_RECURSION_PRODUCTIVE', diagnosticPointers.get(cycleAt) ?? '', 'Every recursive cycle must cross an instance-consuming schema edge.'),
76
+ ];
77
+ }
78
+ }
79
+ return [];
80
+ }
81
+ function findCycle(node, adjacency, visiting, visited) {
82
+ if (visiting.has(node))
83
+ return node;
84
+ if (visited.has(node))
85
+ return undefined;
86
+ visiting.add(node);
87
+ for (const target of adjacency.get(node) ?? []) {
88
+ const cycleAt = findCycle(target, adjacency, visiting, visited);
89
+ if (cycleAt !== undefined)
90
+ return cycleAt;
91
+ }
92
+ visiting.delete(node);
93
+ visited.add(node);
94
+ return undefined;
95
+ }
@@ -0,0 +1,17 @@
1
+ import type { Diagnostic } from '../../validation/diagnostic.js';
2
+ import type { JsonSchema } from '../model/schema.js';
3
+ import type { RegistryIndex } from './registry.index.js';
4
+ export interface SchemaResource {
5
+ readonly key: string;
6
+ readonly schema: JsonSchema;
7
+ readonly ownerOrigin: string;
8
+ readonly diagnosticPointer?: string;
9
+ }
10
+ export interface ResolvedAddressReference {
11
+ readonly resource: SchemaResource;
12
+ readonly pointer: string;
13
+ }
14
+ export declare function resolveAddressReference(ref: string, from: SchemaResource, index: RegistryIndex, pointer: string, nodePathPlacement: boolean): {
15
+ readonly resolved?: ResolvedAddressReference;
16
+ readonly diagnostic?: Diagnostic;
17
+ };
@@ -0,0 +1,45 @@
1
+ import { diagnostic } from '../../validation/diagnostic.js';
2
+ import { GRAPH_NODE_PATH_SCHEMA_ID } from '../syntax/node-path/schema.js';
3
+ import { parseJsonPointerFragment, resolvePointer, tokensToPointer } from '../syntax/pointer.js';
4
+ import { collectSchemaPointers } from '../syntax/walk.js';
5
+ export function resolveAddressReference(ref, from, index, pointer, nodePathPlacement) {
6
+ if (ref === GRAPH_NODE_PATH_SCHEMA_ID) {
7
+ if (!nodePathPlacement) {
8
+ return {
9
+ diagnostic: diagnostic('VS_REFERENCE_FORM', pointer, 'The graph NodePath schema may be referenced only beside a valid x-astrale-path annotation.', ref),
10
+ };
11
+ }
12
+ return {
13
+ resolved: {
14
+ resource: {
15
+ key: GRAPH_NODE_PATH_SCHEMA_ID,
16
+ schema: index.registry.graphNodePath,
17
+ ownerOrigin: from.ownerOrigin,
18
+ },
19
+ pointer: '',
20
+ },
21
+ };
22
+ }
23
+ if (ref.startsWith('#')) {
24
+ const tokens = parseJsonPointerFragment(ref);
25
+ if (tokens === undefined) {
26
+ return {
27
+ diagnostic: diagnostic('VS_REFERENCE_FORM', pointer, 'A local $ref must be a JSON Pointer fragment; anchors are forbidden.', ref),
28
+ };
29
+ }
30
+ return resolveTarget(from, tokens, pointer, ref);
31
+ }
32
+ return {
33
+ diagnostic: diagnostic('VS_REFERENCE_FORM', pointer, 'A $ref must be a local JSON Pointer or the graph NodePath id at its extension site.', ref),
34
+ };
35
+ }
36
+ function resolveTarget(resource, tokens, diagnosticPointer, ref) {
37
+ const target = resolvePointer(resource.schema, tokens);
38
+ const pointer = tokensToPointer(tokens);
39
+ if (target === undefined || !collectSchemaPointers(resource.schema).has(pointer)) {
40
+ return {
41
+ diagnostic: diagnostic('VS_REFERENCE_RESOLUTION', diagnosticPointer, 'The $ref does not resolve to an exact schema location in the registry.', ref),
42
+ };
43
+ }
44
+ return { resolved: { resource, pointer } };
45
+ }
@@ -0,0 +1,24 @@
1
+ import type { ClassRef } from '../../../addressing/index.js';
2
+ import type { JsonSchema } from '../model/schema.js';
3
+ export interface ValueSchemaDependency {
4
+ readonly origin: string;
5
+ readonly revision: `sha256:${string}`;
6
+ }
7
+ export interface ValueSchemaDomainRegistry {
8
+ readonly origin: string;
9
+ readonly revision?: `sha256:${string}`;
10
+ readonly dependencies: readonly ValueSchemaDependency[];
11
+ readonly nodeDefinitions: readonly ClassRef[];
12
+ }
13
+ /**
14
+ * The exact closure visible while validating one DomainSchema.
15
+ *
16
+ * The exact closure is present, but each resource may see only its owning
17
+ * Domain and that owner's exact direct dependency pins.
18
+ */
19
+ export interface ValueSchemaRegistry {
20
+ readonly current: ValueSchemaDomainRegistry;
21
+ readonly directDependencies: readonly ValueSchemaDomainRegistry[];
22
+ readonly transitiveDependencies: readonly ValueSchemaDomainRegistry[];
23
+ readonly graphNodePath: JsonSchema;
24
+ }
@@ -0,0 +1,14 @@
1
+ import type { ClassRef } from '../../../addressing/index.js';
2
+ import type { Diagnostic } from '../../validation/diagnostic.js';
3
+ import type { ValueSchemaDomainRegistry, ValueSchemaRegistry } from './registry.js';
4
+ export interface RegistryIndex {
5
+ readonly registry: ValueSchemaRegistry;
6
+ readonly domains: ReadonlyMap<string, ValueSchemaDomainRegistry>;
7
+ readonly dependenciesByOwner: ReadonlyMap<string, ReadonlyMap<string, string>>;
8
+ }
9
+ export declare function indexRegistry(registry: ValueSchemaRegistry, pointer: string): {
10
+ readonly index: RegistryIndex;
11
+ readonly diagnostics: readonly Diagnostic[];
12
+ };
13
+ export declare function isOriginVisibleFrom(index: RegistryIndex, ownerOrigin: string, targetOrigin: string): boolean;
14
+ export declare function hasNodeDefinition(index: RegistryIndex, ref: ClassRef, ownerOrigin: string): boolean;
@@ -0,0 +1,76 @@
1
+ import { definitionRefIndex } from '../../../addressing/ordering.js';
2
+ import { DOMAIN_ORIGIN_PATTERN, DOMAIN_REVISION_PATTERN } from '../../../addressing/patterns.js';
3
+ import { diagnostic } from '../../validation/diagnostic.js';
4
+ import { isValueObject as isJsonObject } from '../model/object.js';
5
+ import { JSON_SCHEMA_DIALECT } from '../model/schema.js';
6
+ import { GRAPH_NODE_PATH_SCHEMA_ID } from '../syntax/node-path/schema.js';
7
+ export function indexRegistry(registry, pointer) {
8
+ const diagnostics = [];
9
+ const domains = new Map();
10
+ domains.set(registry.current.origin, registry.current);
11
+ validateDomainRegistry(registry.current, `${pointer}/registry/current`, false, diagnostics);
12
+ const dependencies = [
13
+ ...registry.directDependencies.map((domain) => ({ domain, lane: 'directDependencies' })),
14
+ ...registry.transitiveDependencies.map((domain) => ({
15
+ domain,
16
+ lane: 'transitiveDependencies',
17
+ })),
18
+ ];
19
+ dependencies.forEach(({ domain, lane }, index) => {
20
+ const domainPointer = `${pointer}/registry/${lane}/${index}`;
21
+ validateDomainRegistry(domain, domainPointer, true, diagnostics);
22
+ if (domain.origin === registry.current.origin || domains.has(domain.origin)) {
23
+ diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', domainPointer, `Registry origin ${domain.origin} is duplicated in the exact closure.`));
24
+ return;
25
+ }
26
+ domains.set(domain.origin, domain);
27
+ });
28
+ const dependenciesByOwner = new Map();
29
+ for (const domain of domains.values()) {
30
+ const pins = new Map(domain.dependencies.map((dependency) => [dependency.origin, dependency.revision]));
31
+ dependenciesByOwner.set(domain.origin, pins);
32
+ for (const dependency of domain.dependencies) {
33
+ const target = domains.get(dependency.origin);
34
+ if (target === undefined || target.revision !== dependency.revision) {
35
+ diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/registry/${domain.origin}/dependencies`, `Registry closure is missing exact ${dependency.origin}@${dependency.revision} required by ${domain.origin}.`));
36
+ }
37
+ }
38
+ }
39
+ validateGraphNodePathResource(registry.graphNodePath, `${pointer}/registry/graphNodePath`, diagnostics);
40
+ return { index: { registry, domains, dependenciesByOwner }, diagnostics };
41
+ }
42
+ export function isOriginVisibleFrom(index, ownerOrigin, targetOrigin) {
43
+ return (ownerOrigin === targetOrigin ||
44
+ index.dependenciesByOwner.get(ownerOrigin)?.has(targetOrigin) === true);
45
+ }
46
+ export function hasNodeDefinition(index, ref, ownerOrigin) {
47
+ if (!isOriginVisibleFrom(index, ownerOrigin, ref.origin))
48
+ return false;
49
+ return (index.domains
50
+ .get(ref.origin)
51
+ ?.nodeDefinitions.some((candidate) => definitionRefIndex(candidate) === definitionRefIndex(ref)) === true);
52
+ }
53
+ function validateDomainRegistry(domain, pointer, revisionRequired, diagnostics) {
54
+ if (!DOMAIN_ORIGIN_PATTERN.test(domain.origin)) {
55
+ diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/origin`, 'Registry origin is invalid.'));
56
+ }
57
+ if ((revisionRequired && domain.revision === undefined) ||
58
+ (domain.revision !== undefined && !DOMAIN_REVISION_PATTERN.test(domain.revision))) {
59
+ diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/revision`, 'A dependency-closure registry entry requires its exact sha256 revision.'));
60
+ }
61
+ for (const ref of domain.nodeDefinitions) {
62
+ if (ref.origin !== domain.origin) {
63
+ diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/nodeDefinitions`, 'A registry domain can list only its own Node Definitions.'));
64
+ }
65
+ }
66
+ }
67
+ function validateGraphNodePathResource(schema, pointer, diagnostics) {
68
+ if (!isJsonObject(schema) ||
69
+ schema.$schema !== JSON_SCHEMA_DIALECT ||
70
+ schema.$id !== GRAPH_NODE_PATH_SCHEMA_ID ||
71
+ schema.type !== 'string' ||
72
+ schema.minLength !== 1 ||
73
+ schema.format !== 'astrale-node-path-v1') {
74
+ diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', pointer, `The graph NodePath artifact must be preloaded under exact id ${GRAPH_NODE_PATH_SCHEMA_ID}.`, GRAPH_NODE_PATH_SCHEMA_ID));
75
+ }
76
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ export type ScalarRange = readonly [minimum: number, maximum: number];
2
+ export interface Expression {
3
+ readonly alternatives: readonly Sequence[];
4
+ }
5
+ export interface Sequence {
6
+ readonly pieces: readonly Piece[];
7
+ }
8
+ export interface Piece {
9
+ readonly atom: Atom;
10
+ readonly minimum: number;
11
+ readonly maximum?: number;
12
+ }
13
+ export type Atom = {
14
+ readonly kind: 'ranges';
15
+ readonly ranges: readonly ScalarRange[];
16
+ } | {
17
+ readonly kind: 'expression';
18
+ readonly expression: Expression;
19
+ };
20
+ /** Parse the complete RFC 9485 I-Regexp grammar into the one compiler AST. */
21
+ export declare function parseIRegexp(source: string): Expression | undefined;