@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,342 @@
1
+ import { z } from 'zod';
2
+ import { VALUE_SCHEMA_DIALECT } from '../../../language/value/model/schema.js';
3
+ import { canonicalizeValueSchema } from '../../../language/value/profile/canonicalize.js';
4
+ import { validateValueSchema } from '../../../language/value/profile/validate.js';
5
+ import { isIRegexp } from '../../../language/value/regexp/syntax.js';
6
+ import { fullMatchSource } from '../../../language/value/syntax/full-match.js';
7
+ import { diagnostic } from '../../schema/diagnostic.js';
8
+ /**
9
+ * Converts only Zod contracts whose JSON-value acceptance is represented
10
+ * without coercion, effects, custom predicates, or format assertions.
11
+ */
12
+ export function convertZodToValueSchema(zodSchema, context, registry, pointer = '', options = {}) {
13
+ const diagnostics = inspectZodSchema(zodSchema, pointer, options.position ?? 'value');
14
+ if (diagnostics.length > 0)
15
+ return { ok: false, diagnostics };
16
+ let converted;
17
+ try {
18
+ const raw = z.toJSONSchema(zodSchema, {
19
+ target: 'draft-2020-12',
20
+ unrepresentable: 'throw',
21
+ io: 'input',
22
+ cycles: 'ref',
23
+ reused: 'inline',
24
+ override: ({ zodSchema: source, jsonSchema, path }) => {
25
+ if (source instanceof z.ZodObject) {
26
+ jsonSchema.required = Object.entries(source.shape)
27
+ .filter(([, property]) => !zodObjectPropertyIsOptional(property))
28
+ .map(([name]) => name);
29
+ }
30
+ if (source instanceof z.ZodType) {
31
+ lowerFullMatchChecks(source, jsonSchema);
32
+ options.override?.({
33
+ jsonSchema: jsonSchema,
34
+ path,
35
+ zodSchema: source,
36
+ });
37
+ }
38
+ },
39
+ });
40
+ converted = copyZodJson(raw);
41
+ if (converted !== null && typeof converted === 'object' && !Array.isArray(converted)) {
42
+ converted = { ...converted, $schema: VALUE_SCHEMA_DIALECT };
43
+ }
44
+ }
45
+ catch (error) {
46
+ return {
47
+ ok: false,
48
+ diagnostics: [
49
+ diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', pointer, `Zod cannot represent this contract exactly as Draft 2020-12: ${errorMessage(error)}.`),
50
+ ],
51
+ };
52
+ }
53
+ if (options.validate !== false) {
54
+ const profileDiagnostics = validateValueSchema(converted, context, registry, pointer);
55
+ if (profileDiagnostics.length > 0)
56
+ return { ok: false, diagnostics: profileDiagnostics };
57
+ }
58
+ return {
59
+ ok: true,
60
+ schema: canonicalizeValueSchema(converted, context, registry),
61
+ diagnostics: [],
62
+ };
63
+ }
64
+ function copyZodJson(value) {
65
+ if (value === null || ['boolean', 'number', 'string'].includes(typeof value))
66
+ return value;
67
+ if (Array.isArray(value))
68
+ return value.map(copyZodJson);
69
+ if (value === null || typeof value !== 'object') {
70
+ throw new TypeError('Zod emitted a non-JSON schema value.');
71
+ }
72
+ const result = {};
73
+ for (const key of Reflect.ownKeys(value)) {
74
+ if (typeof key === 'symbol')
75
+ throw new TypeError('Zod emitted symbol-keyed schema metadata.');
76
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
77
+ if (descriptor === undefined)
78
+ continue;
79
+ if (!descriptor.enumerable) {
80
+ if (key === '~standard')
81
+ continue;
82
+ throw new TypeError(`Zod emitted unexpected non-enumerable schema member ${key}.`);
83
+ }
84
+ if (!('value' in descriptor))
85
+ throw new TypeError(`Zod emitted accessor schema member ${key}.`);
86
+ result[key] = copyZodJson(descriptor.value);
87
+ }
88
+ return result;
89
+ }
90
+ /** Whether explicit Zod optionality makes a containing object property absent-able. */
91
+ export function zodObjectPropertyIsOptional(schema) {
92
+ return hasExplicitOptionality(schema, new Set());
93
+ }
94
+ function inspectZodSchema(root, pointer, position) {
95
+ const diagnostics = [];
96
+ const visited = new WeakMap();
97
+ function inspect(schema, schemaPointer, schemaPosition, boundary) {
98
+ const visitKey = `${schemaPosition}:${String(boundary)}`;
99
+ const visits = visited.get(schema) ?? new Set();
100
+ if (visits.has(visitKey))
101
+ return;
102
+ visits.add(visitKey);
103
+ visited.set(schema, visits);
104
+ const def = getSchemaDefinition(schema);
105
+ if (def === undefined) {
106
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', schemaPointer, 'Zod schema has no inspectable v4 definition.'));
107
+ return;
108
+ }
109
+ if (boundary && schemaPosition === 'value' && hasExplicitOptionality(schema, new Set())) {
110
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', schemaPointer, 'Zod optional() accepts JavaScript undefined, which V1 can represent only as absence of a containing object property.'));
111
+ }
112
+ const type = typeof def.type === 'string' ? def.type : 'unknown';
113
+ if (UNREPRESENTABLE_TYPES.has(type)) {
114
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', schemaPointer, `Zod ${type} semantics cannot be represented losslessly in the V1 JSON value domain.`));
115
+ }
116
+ if (def.coerce === true) {
117
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', schemaPointer, 'Zod coercion changes the accepted input domain and is not serializable as JSON Schema.'));
118
+ }
119
+ inspectCheck(def, schemaPointer, diagnostics);
120
+ if (Array.isArray(def.checks)) {
121
+ def.checks.forEach((check, index) => {
122
+ if (fullMatchSource(check) !== undefined)
123
+ return;
124
+ const checkDef = getCheckDefinition(check);
125
+ if (checkDef !== undefined) {
126
+ inspectCheck(checkDef, `${schemaPointer}/checks/${index}`, diagnostics);
127
+ }
128
+ });
129
+ }
130
+ for (const child of childSchemas(def, schemaPointer, schemaPosition)) {
131
+ inspect(child.schema, child.pointer, child.position, child.boundary);
132
+ }
133
+ }
134
+ inspect(root, pointer, position, true);
135
+ return diagnostics;
136
+ }
137
+ function lowerFullMatchChecks(schema, jsonSchema) {
138
+ const checks = getSchemaDefinition(schema)?.checks;
139
+ if (!Array.isArray(checks))
140
+ return;
141
+ const admitted = checks.flatMap((check) => {
142
+ const source = fullMatchSource(check);
143
+ return source === undefined ? [] : [source];
144
+ });
145
+ if (admitted.length === 0)
146
+ return;
147
+ if (admitted.length === 1) {
148
+ jsonSchema.fullMatch = admitted[0];
149
+ return;
150
+ }
151
+ const existing = Array.isArray(jsonSchema.allOf) ? jsonSchema.allOf : [];
152
+ jsonSchema.allOf = [...existing, ...admitted.map((fullMatch) => ({ fullMatch }))];
153
+ }
154
+ function inspectCheck(def, pointer, diagnostics) {
155
+ if (def.check === 'custom' || def.check === 'overwrite') {
156
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', pointer, `Zod ${String(def.check)} checks are executable semantics with no lossless JSON Schema form.`));
157
+ return;
158
+ }
159
+ if (def.check === 'string_format' && def.format !== 'regex') {
160
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', pointer, `Zod format ${String(def.format)} asserts acceptance, while V1 format is annotation-only.`));
161
+ return;
162
+ }
163
+ if (def.check === 'string_format' && def.format === 'regex' && def.pattern instanceof RegExp) {
164
+ if (!isLosslessRegexp(def.pattern)) {
165
+ diagnostics.push(diagnostic('ZOD_SCHEMA_NOT_LOSSLESS', pointer, 'Zod RegExp flags, anchors, dot semantics, or syntax cannot be preserved as a V1 I-Regexp substring pattern.'));
166
+ }
167
+ }
168
+ }
169
+ function childSchemas(def, pointer, position) {
170
+ const children = [];
171
+ const samePosition = (candidate, childPointer = pointer) => {
172
+ if (isZodType(candidate)) {
173
+ children.push({ boundary: false, pointer: childPointer, position, schema: candidate });
174
+ }
175
+ };
176
+ const nestedValue = (candidate, childPointer) => {
177
+ if (isZodType(candidate)) {
178
+ children.push({ boundary: true, pointer: childPointer, position: 'value', schema: candidate });
179
+ }
180
+ };
181
+ switch (def.type) {
182
+ case 'array':
183
+ nestedValue(def.element, `${pointer}/items`);
184
+ break;
185
+ case 'intersection':
186
+ samePosition(def.left, `${pointer}/allOf/0`);
187
+ samePosition(def.right, `${pointer}/allOf/1`);
188
+ break;
189
+ case 'lazy':
190
+ if (typeof def.getter === 'function')
191
+ samePosition(def.getter());
192
+ break;
193
+ case 'object':
194
+ if (isPlainRecord(def.shape)) {
195
+ for (const [name, child] of Object.entries(def.shape)) {
196
+ if (isZodType(child)) {
197
+ children.push({
198
+ boundary: true,
199
+ pointer: `${pointer}/properties/${escapePointerToken(name)}`,
200
+ position: 'object-property',
201
+ schema: child,
202
+ });
203
+ }
204
+ }
205
+ }
206
+ nestedValue(def.catchall, `${pointer}/additionalProperties`);
207
+ break;
208
+ case 'record':
209
+ nestedValue(def.keyType, `${pointer}/propertyNames`);
210
+ nestedValue(def.valueType, `${pointer}/additionalProperties`);
211
+ break;
212
+ case 'tuple':
213
+ if (Array.isArray(def.items)) {
214
+ def.items.forEach((item, index) => nestedValue(item, `${pointer}/prefixItems/${index}`));
215
+ }
216
+ nestedValue(def.rest, `${pointer}/items`);
217
+ break;
218
+ case 'union':
219
+ if (Array.isArray(def.options)) {
220
+ def.options.forEach((option, index) => samePosition(option, `${pointer}/anyOf/${index}`));
221
+ }
222
+ break;
223
+ default:
224
+ samePosition(def.innerType);
225
+ }
226
+ return children;
227
+ }
228
+ function hasExplicitOptionality(schema, visiting) {
229
+ if (visiting.has(schema))
230
+ return false;
231
+ visiting.add(schema);
232
+ const def = getSchemaDefinition(schema);
233
+ if (def === undefined) {
234
+ visiting.delete(schema);
235
+ return false;
236
+ }
237
+ let optional = false;
238
+ switch (def.type) {
239
+ case 'optional':
240
+ optional = true;
241
+ break;
242
+ case 'default':
243
+ case 'lazy':
244
+ case 'nullable': {
245
+ const child = singleSamePositionChild(def);
246
+ optional = child !== undefined && hasExplicitOptionality(child, visiting);
247
+ break;
248
+ }
249
+ case 'intersection': {
250
+ const left = isZodType(def.left) && hasExplicitOptionality(def.left, visiting);
251
+ const right = isZodType(def.right) && hasExplicitOptionality(def.right, visiting);
252
+ optional = left && right;
253
+ break;
254
+ }
255
+ case 'union':
256
+ optional =
257
+ Array.isArray(def.options) &&
258
+ def.options.some((option) => isZodType(option) && hasExplicitOptionality(option, visiting));
259
+ break;
260
+ default:
261
+ optional = false;
262
+ }
263
+ visiting.delete(schema);
264
+ return optional;
265
+ }
266
+ function singleSamePositionChild(def) {
267
+ const candidate = def.type === 'lazy' && typeof def.getter === 'function' ? def.getter() : def.innerType;
268
+ return isZodType(candidate) ? candidate : undefined;
269
+ }
270
+ function getSchemaDefinition(value) {
271
+ return isPlainRecord(value.def) ? value.def : undefined;
272
+ }
273
+ /**
274
+ * Raw Zod checks do not expose the public `def` available on schemas. This is
275
+ * the sole private-ABI boundary; Zod is exact-pinned and its behavior is
276
+ * covered by the focused conversion conformance suite.
277
+ */
278
+ function getCheckDefinition(value) {
279
+ if (isZodType(value))
280
+ return getSchemaDefinition(value);
281
+ if (value === null || typeof value !== 'object')
282
+ return undefined;
283
+ const internals = value._zod;
284
+ return isPlainRecord(internals?.def) ? internals.def : undefined;
285
+ }
286
+ function isZodType(value) {
287
+ return value instanceof z.ZodType;
288
+ }
289
+ function escapePointerToken(value) {
290
+ return value.replaceAll('~', '~0').replaceAll('/', '~1');
291
+ }
292
+ function isPlainRecord(value) {
293
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
294
+ }
295
+ function isLosslessRegexp(pattern) {
296
+ if (pattern.flags !== '' && pattern.flags !== 'u')
297
+ return false;
298
+ if (!isIRegexp(pattern.source))
299
+ return false;
300
+ let escaped = false;
301
+ let characterClass = false;
302
+ for (const character of Array.from(pattern.source)) {
303
+ if (escaped) {
304
+ escaped = false;
305
+ continue;
306
+ }
307
+ if (character === '\\') {
308
+ escaped = true;
309
+ continue;
310
+ }
311
+ if (character === '[')
312
+ characterClass = true;
313
+ else if (character === ']')
314
+ characterClass = false;
315
+ else if (!characterClass && (character === '^' || character === '$' || character === '.')) {
316
+ return false;
317
+ }
318
+ }
319
+ return true;
320
+ }
321
+ const UNREPRESENTABLE_TYPES = new Set([
322
+ 'bigint',
323
+ 'catch',
324
+ 'custom',
325
+ 'date',
326
+ 'file',
327
+ 'function',
328
+ 'map',
329
+ 'nan',
330
+ 'pipe',
331
+ 'prefault',
332
+ 'promise',
333
+ 'readonly',
334
+ 'set',
335
+ 'symbol',
336
+ 'transform',
337
+ 'undefined',
338
+ 'void',
339
+ ]);
340
+ function errorMessage(error) {
341
+ return error instanceof Error ? error.message : String(error);
342
+ }
@@ -0,0 +1,11 @@
1
+ import type { ViewDefinition } from '../../language/view/model/view.js';
2
+ import type { View } from '../view/authoring.js';
3
+ import type { BuilderContext } from './schema/context.js';
4
+ export interface ViewCompiler {
5
+ compile(value: View, name: string, pointer: string): ViewDefinition;
6
+ }
7
+ export declare class V1ViewCompiler implements ViewCompiler {
8
+ readonly context: BuilderContext;
9
+ constructor(context: BuilderContext);
10
+ compile(value: View, name: string, pointer: string): ViewDefinition;
11
+ }
@@ -0,0 +1,27 @@
1
+ import { compareDefinitionRefs } from '../../addressing/ordering.js';
2
+ import { viewAuthoringInput } from '../view/authoring.js';
3
+ export class V1ViewCompiler {
4
+ context;
5
+ constructor(context) {
6
+ this.context = context;
7
+ }
8
+ compile(value, name, pointer) {
9
+ const config = viewAuthoringInput(value);
10
+ const target = config.target;
11
+ return {
12
+ ref: { origin: this.context.origin, kind: 'view', name },
13
+ ...(config.description === undefined ? {} : { description: config.description }),
14
+ target: target === undefined || target === 'domain'
15
+ ? { kind: 'domain' }
16
+ : {
17
+ kind: 'definition',
18
+ definitions: (isTargetList(target) ? target : [target])
19
+ .map((entry, index) => this.context.resolveNodeClass(entry, `${pointer}/target/definitions/${index}`))
20
+ .sort(compareDefinitionRefs),
21
+ },
22
+ };
23
+ }
24
+ }
25
+ function isTargetList(input) {
26
+ return Array.isArray(input);
27
+ }
@@ -0,0 +1,52 @@
1
+ import type { ClassRef } from '../../addressing/index.js';
2
+ import type { PolicyCheckExpression, PolicyPatternExpression, PolicyPatternTerm as CanonicalPolicyPatternTerm } from '../../language/policy/model/policy.js';
3
+ import type { EdgeClass, NodeClass } from '../class/authoring.js';
4
+ import type { AuthoringValue } from '../schema/handle.js';
5
+ import type { Lazy } from '../schema/lazy.js';
6
+ export interface PolicyEdgeInput {
7
+ readonly source: CanonicalPolicyPatternTerm;
8
+ readonly class: Lazy<EdgeClass>;
9
+ readonly target: CanonicalPolicyPatternTerm;
10
+ readonly repeat?: {
11
+ readonly min: number;
12
+ readonly max: number;
13
+ };
14
+ }
15
+ export interface PolicyExistsContext {
16
+ node(definition: Lazy<NodeClass>): CanonicalPolicyPatternTerm;
17
+ }
18
+ export interface PolicyPatternContext {
19
+ readonly subject: CanonicalPolicyPatternTerm;
20
+ readonly object: CanonicalPolicyPatternTerm;
21
+ readonly source: CanonicalPolicyPatternTerm;
22
+ readonly target: CanonicalPolicyPatternTerm;
23
+ edge(input: PolicyEdgeInput): PolicyPatternExpression;
24
+ exists(build: (context: PolicyExistsContext) => PolicyPatternExpression): PolicyPatternExpression;
25
+ allOf(first: PolicyPatternExpression, ...rest: readonly PolicyPatternExpression[]): PolicyPatternExpression;
26
+ anyOf(first: PolicyPatternExpression, ...rest: readonly PolicyPatternExpression[]): PolicyPatternExpression;
27
+ }
28
+ export interface MatchPolicyInput {
29
+ readonly description?: string;
30
+ readonly match: (context: PolicyPatternContext) => PolicyPatternExpression;
31
+ }
32
+ interface PolicyComposition {
33
+ readonly operator: 'allOf' | 'anyOf';
34
+ readonly policies: readonly [PolicyInput, ...PolicyInput[]];
35
+ }
36
+ export interface Policy extends AuthoringValue<'policy'> {
37
+ }
38
+ export type PolicyInput = Lazy<Policy>;
39
+ type PolicyDeclaration = MatchPolicyInput | PolicyComposition;
40
+ export interface PolicyBuilder {
41
+ (input: MatchPolicyInput): Policy;
42
+ readonly allOf: (first: PolicyInput, ...rest: readonly PolicyInput[]) => Policy;
43
+ readonly anyOf: (first: PolicyInput, ...rest: readonly PolicyInput[]) => Policy;
44
+ }
45
+ export declare function policyDeclaration(value: Policy): PolicyDeclaration;
46
+ export declare const policy: PolicyBuilder;
47
+ export declare function createPatternContext(options: {
48
+ readonly resolveEdgeClass: (value: Lazy<EdgeClass>, pointer: string) => ClassRef;
49
+ readonly resolveNodeClass: (value: Lazy<NodeClass>, pointer: string) => ClassRef;
50
+ readonly pointer: string;
51
+ }): PolicyPatternContext;
52
+ export type { PolicyCheckExpression };
@@ -0,0 +1,90 @@
1
+ import { assertKnownKeys, fail } from '../schema/diagnostic.js';
2
+ import { authoringValue } from '../schema/handle.js';
3
+ const declarations = new WeakMap();
4
+ const compositions = new WeakSet();
5
+ export function policyDeclaration(value) {
6
+ const declaration = declarations.get(value);
7
+ if (declaration === undefined)
8
+ fail('BUILDER_POLICY', '/', 'Policies are created by policy(...).');
9
+ return declaration;
10
+ }
11
+ function createPolicy(input) {
12
+ if ('operator' in input) {
13
+ if (!compositions.has(input)) {
14
+ fail('BUILDER_POLICY_COMPOSITION', '/', 'Policy compositions are created by policy.allOf(...) or policy.anyOf(...).');
15
+ }
16
+ }
17
+ else {
18
+ assertKnownKeys(input, ['description', 'match']);
19
+ }
20
+ const value = authoringValue('policy', {});
21
+ declarations.set(value, input);
22
+ return value;
23
+ }
24
+ export const policy = Object.freeze(Object.assign(createPolicy, {
25
+ allOf: (first, ...rest) => createPolicy(composition('allOf', first === undefined ? [] : [first, ...rest])),
26
+ anyOf: (first, ...rest) => createPolicy(composition('anyOf', first === undefined ? [] : [first, ...rest])),
27
+ }));
28
+ export function createPatternContext(options) {
29
+ let nextVariable = 0;
30
+ const subject = Object.freeze({ kind: 'subject' });
31
+ const object = Object.freeze({ kind: 'object' });
32
+ const source = Object.freeze({ kind: 'source' });
33
+ const target = Object.freeze({ kind: 'target' });
34
+ const context = {
35
+ subject,
36
+ object,
37
+ source,
38
+ target,
39
+ edge(input) {
40
+ assertKnownKeys(input, ['source', 'class', 'target', 'repeat']);
41
+ if (input.repeat !== undefined)
42
+ assertKnownKeys(input.repeat, ['min', 'max']);
43
+ return {
44
+ source: input.source,
45
+ class: options.resolveEdgeClass(input.class, `${options.pointer}/match/class`),
46
+ target: input.target,
47
+ ...(input.repeat === undefined ? {} : { repeat: { ...input.repeat } }),
48
+ };
49
+ },
50
+ exists(build) {
51
+ const nodes = [];
52
+ const where = build({
53
+ node(definition) {
54
+ const variable = Object.freeze({ kind: 'variable', id: nextVariable++ });
55
+ nodes.push({
56
+ variable,
57
+ class: options.resolveNodeClass(definition, `${options.pointer}/match/exists/nodes`),
58
+ });
59
+ return variable;
60
+ },
61
+ });
62
+ if (nodes.length === 0) {
63
+ fail('BUILDER_POLICY_EMPTY_EXISTS', `${options.pointer}/match/exists/nodes`, 'exists(...) must declare at least one variable Node.');
64
+ }
65
+ return { exists: { nodes, where } };
66
+ },
67
+ allOf(...expressions) {
68
+ nonEmpty(expressions, `${options.pointer}/match/allOf`);
69
+ return { allOf: expressions };
70
+ },
71
+ anyOf(...expressions) {
72
+ nonEmpty(expressions, `${options.pointer}/match/anyOf`);
73
+ return { anyOf: expressions };
74
+ },
75
+ };
76
+ return Object.freeze(context);
77
+ }
78
+ function composition(operator, policies) {
79
+ nonEmpty(policies, `/${operator}`);
80
+ const value = {
81
+ operator,
82
+ policies: [...policies],
83
+ };
84
+ compositions.add(value);
85
+ return value;
86
+ }
87
+ function nonEmpty(values, pointer) {
88
+ if (values.length === 0)
89
+ fail('BUILDER_POLICY_EMPTY_COMPOSITION', pointer, 'Policy composition must be non-empty.');
90
+ }
@@ -0,0 +1,11 @@
1
+ import type { Domain } from '../../domain/model/domain.js';
2
+ import type { DomainSchema } from '../../schema/model/schema.js';
3
+ import type { DomainSchemaInput } from './input.js';
4
+ import type { ResolvedDomainOfInput } from './projection.js';
5
+ export type { DomainSchemaInput } from './input.js';
6
+ /** Exact named Schema produced from one authored input. */
7
+ export interface DefinedSchema<Origin extends string, Resolved extends Domain> extends DomainSchema<Origin, Resolved> {
8
+ }
9
+ /** Build and semantically accept one immutable V1 DomainSchema. */
10
+ export declare function defineSchema<const Origin extends string, const Input extends DomainSchemaInput>(origin: Origin, input: Input): DefinedSchema<Origin, ResolvedDomainOfInput<Origin, Input>>;
11
+ export type { ResolvedDomainOfInput } from './projection.js';
@@ -0,0 +1,5 @@
1
+ import { compileSchema } from '../lowering/schema/compile.js';
2
+ /** Build and semantically accept one immutable V1 DomainSchema. */
3
+ export function defineSchema(origin, input) {
4
+ return compileSchema(origin, input);
5
+ }
@@ -0,0 +1,16 @@
1
+ import type { DiagnosticCode as LanguageDiagnosticCode } from '../../language/validation/diagnostic.js';
2
+ export type BuilderDiagnosticCode = LanguageDiagnosticCode | 'BUILDER_ABSTRACT_POLICY' | 'BUILDER_AMBIGUOUS_OWNERSHIP' | 'BUILDER_AUTO_EVENT_INVALID' | 'BUILDER_AUTO_NESTED' | 'BUILDER_AUTO_SET_INVALID' | 'BUILDER_CALLABLE_AUTH' | 'BUILDER_CALLABLE_PLACEMENT' | 'BUILDER_CALLABLE_POLICY_AUTH' | 'BUILDER_CORE_CLASS' | 'BUILDER_CORE_EDGE' | 'BUILDER_CORE_NODE' | 'BUILDER_CORE_PROPERTY' | 'BUILDER_CORE_REF' | 'BUILDER_DEFINITION' | 'BUILDER_DEPENDENCY_CONFLICT' | 'BUILDER_DEPENDENCY_ALIAS' | 'BUILDER_DEPENDENCY_DIRECT' | 'BUILDER_DUPLICATE_MEMBER' | 'BUILDER_FOREIGN_POLICY' | 'BUILDER_FULL_MATCH_INVALID' | 'BUILDER_FUNCTION' | 'BUILDER_METHOD' | 'BUILDER_PATH_DUPLICATE' | 'BUILDER_PATH_EMPTY' | 'BUILDER_POLICY' | 'BUILDER_POLICY_COMPOSITION' | 'BUILDER_POLICY_CYCLE' | 'BUILDER_POLICY_EMPTY_COMPOSITION' | 'BUILDER_POLICY_EMPTY_EXISTS' | 'BUILDER_POLICY_INPUT' | 'BUILDER_POLICY_REF' | 'BUILDER_POLICY_SELF' | 'BUILDER_REFERENCE_CYCLE' | 'BUILDER_REFERENCE_KIND' | 'BUILDER_REFERENCE_MISSING' | 'BUILDER_UNKNOWN_FIELD' | 'BUILDER_UNOWNED_REFERENCE' | 'BUILDER_VIEW' | 'ZOD_SCHEMA_NOT_LOSSLESS';
3
+ export interface BuilderDiagnostic<out Code extends BuilderDiagnosticCode = BuilderDiagnosticCode> {
4
+ readonly code: Code;
5
+ readonly pointer: string;
6
+ readonly message: string;
7
+ readonly ref?: string;
8
+ }
9
+ export declare function diagnostic<const Code extends BuilderDiagnosticCode>(code: Code, pointer: string, message: string, ref?: string): BuilderDiagnostic<Code>;
10
+ export declare class BuilderError extends Error {
11
+ readonly diagnostics: readonly BuilderDiagnostic[];
12
+ constructor(diagnostics: readonly BuilderDiagnostic[]);
13
+ }
14
+ export declare function assertKnownKeys(value: object, allowed: readonly string[], pointer?: string): void;
15
+ export declare function fail(code: BuilderDiagnosticCode, pointer: string, message: string): never;
16
+ export declare function escapeToken(value: string): string;
@@ -0,0 +1,31 @@
1
+ import { compareUnicode } from '../../addressing/ordering.js';
2
+ export function diagnostic(code, pointer, message, ref) {
3
+ return Object.freeze({ code, pointer, message, ...(ref === undefined ? {} : { ref }) });
4
+ }
5
+ export class BuilderError extends Error {
6
+ diagnostics;
7
+ constructor(diagnostics) {
8
+ const ordered = [...diagnostics].sort((left, right) => compareUnicode(left.pointer, right.pointer) ||
9
+ compareUnicode(left.code, right.code) ||
10
+ compareUnicode(left.message, right.message));
11
+ super(ordered
12
+ .map(({ code, pointer, message }) => `${pointer || '/'} [${code}] ${message}`)
13
+ .join('\n'));
14
+ this.name = 'BuilderError';
15
+ this.diagnostics = Object.freeze(ordered);
16
+ }
17
+ }
18
+ export function assertKnownKeys(value, allowed, pointer = '') {
19
+ const accepted = new Set(allowed);
20
+ for (const key of Object.keys(value)) {
21
+ if (!accepted.has(key)) {
22
+ fail('BUILDER_UNKNOWN_FIELD', `${pointer}/${escapeToken(key)}`, `Unknown builder field ${key}.`);
23
+ }
24
+ }
25
+ }
26
+ export function fail(code, pointer, message) {
27
+ throw new BuilderError([diagnostic(code, pointer, message)]);
28
+ }
29
+ export function escapeToken(value) {
30
+ return value.replaceAll('~', '~0').replaceAll('/', '~1');
31
+ }
@@ -0,0 +1,7 @@
1
+ export declare const AUTHORING: unique symbol;
2
+ export type AuthoringKind = 'definition' | 'function' | 'method' | 'callable-output' | 'policy' | 'view' | 'core-node' | 'core-edge' | 'property' | 'auto';
3
+ export interface AuthoringValue<Kind extends AuthoringKind> {
4
+ readonly [AUTHORING]: Kind;
5
+ }
6
+ export declare function authoringValue<Kind extends AuthoringKind, Value extends object>(kind: Kind, value: Value): Readonly<Value & AuthoringValue<Kind>>;
7
+ export declare function isAuthoringValue<Kind extends AuthoringKind>(value: unknown, kind: Kind): value is AuthoringValue<Kind> & object;
@@ -0,0 +1,14 @@
1
+ export const AUTHORING = Symbol('astrale.v1.authoring');
2
+ export function authoringValue(kind, value) {
3
+ return Object.freeze(Object.defineProperty({ ...value }, AUTHORING, {
4
+ configurable: false,
5
+ enumerable: false,
6
+ value: kind,
7
+ writable: false,
8
+ }));
9
+ }
10
+ export function isAuthoringValue(value, kind) {
11
+ return (typeof value === 'object' &&
12
+ value !== null &&
13
+ value[AUTHORING] === kind);
14
+ }
@@ -0,0 +1,15 @@
1
+ import type { DomainSchema } from '../../schema/model/schema.js';
2
+ import type { Function } from '../callable/authoring.js';
3
+ import type { Class } from '../class/authoring.js';
4
+ import type { CoreInput } from '../core/authoring.js';
5
+ import type { Policy } from '../policy/authoring.js';
6
+ import type { View } from '../view/authoring.js';
7
+ /** Complete authoring input accepted by defineSchema. */
8
+ export interface DomainSchemaInput {
9
+ readonly dependencies?: Readonly<Record<string, DomainSchema<string>>>;
10
+ readonly classes?: Readonly<Record<string, Class>>;
11
+ readonly functions?: Readonly<Record<string, Function>>;
12
+ readonly policies?: Readonly<Record<string, Policy>>;
13
+ readonly views?: Readonly<Record<string, View>>;
14
+ readonly core?: CoreInput;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export type Lazy<T> = T | (() => T);
2
+ export declare function resolveLazy<T>(value: Lazy<T>, pointer: string): T;
@@ -0,0 +1,13 @@
1
+ import { fail } from './diagnostic.js';
2
+ export function resolveLazy(value, pointer) {
3
+ let current = value;
4
+ const seen = new Set();
5
+ while (typeof current === 'function') {
6
+ if (seen.has(current)) {
7
+ fail('BUILDER_REFERENCE_CYCLE', pointer, 'A lazy reference resolves cyclically.');
8
+ }
9
+ seen.add(current);
10
+ current = current();
11
+ }
12
+ return current;
13
+ }