@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,134 @@
1
+ import { assertKnownKeys } from '../schema/diagnostic.js';
2
+ import { authoringValue } from '../schema/handle.js';
3
+ const classInputs = new WeakMap();
4
+ export function defineClass(config) {
5
+ if (config.kind === 'node') {
6
+ const { kind: _, ...input } = config;
7
+ return nodeClass(input);
8
+ }
9
+ if (config.orientation === 'directed') {
10
+ const { kind: _, orientation: __, ...input } = config;
11
+ return edgeClass.directed(input);
12
+ }
13
+ const { kind: _, orientation: __, ...input } = config;
14
+ return edgeClass.undirected(input);
15
+ }
16
+ export function nodeClass(config) {
17
+ const admitted = config ?? {};
18
+ assertKnownKeys(admitted, [
19
+ 'abstract',
20
+ 'description',
21
+ 'extends',
22
+ 'properties',
23
+ 'data',
24
+ 'methods',
25
+ 'icon',
26
+ 'policies',
27
+ ]);
28
+ if (admitted.policies !== undefined)
29
+ assertKnownKeys(admitted.policies, ['read', 'traverse']);
30
+ const value = authoringValue('definition', {
31
+ kind: 'node',
32
+ });
33
+ classInputs.set(value, { ...admitted, abstract: admitted.abstract ?? false });
34
+ return value;
35
+ }
36
+ export const edgeClass = Object.freeze({
37
+ directed(input) {
38
+ assertKnownKeys(input, [
39
+ 'source',
40
+ 'target',
41
+ 'abstract',
42
+ 'description',
43
+ 'extends',
44
+ 'properties',
45
+ 'policies',
46
+ 'constraints',
47
+ ]);
48
+ validateDirectedSourceInput(input.source);
49
+ validateDirectedTargetInput(input.target);
50
+ const { source, target, ...options } = input;
51
+ validateEdgeClassOptions(options);
52
+ const value = authoringValue('definition', {
53
+ kind: 'edge',
54
+ orientation: 'directed',
55
+ });
56
+ classInputs.set(value, {
57
+ source: { ...source },
58
+ target: { ...target },
59
+ ...options,
60
+ abstract: options.abstract ?? false,
61
+ });
62
+ return value;
63
+ },
64
+ undirected(input) {
65
+ assertKnownKeys(input, [
66
+ 'endpoints',
67
+ 'abstract',
68
+ 'description',
69
+ 'extends',
70
+ 'properties',
71
+ 'policies',
72
+ 'constraints',
73
+ ]);
74
+ if (input.endpoints.length !== 2)
75
+ throw new TypeError('Undirected Edge Classes require exactly two endpoints.');
76
+ validateIncidentEndpointInput(input.endpoints[0]);
77
+ validateIncidentEndpointInput(input.endpoints[1]);
78
+ const { endpoints, ...options } = input;
79
+ validateUndirectedEdgeClassOptions(options);
80
+ const value = authoringValue('definition', {
81
+ kind: 'edge',
82
+ orientation: 'undirected',
83
+ });
84
+ classInputs.set(value, {
85
+ endpoints: [{ ...endpoints[0] }, { ...endpoints[1] }],
86
+ ...options,
87
+ abstract: options.abstract ?? false,
88
+ });
89
+ return value;
90
+ },
91
+ });
92
+ export function classConfiguration(value) {
93
+ const input = classInputs.get(value);
94
+ if (input === undefined)
95
+ throw new TypeError('Unknown Class authoring handle.');
96
+ return input;
97
+ }
98
+ function validateDirectedSourceInput(value) {
99
+ assertKnownKeys(value, ['as', 'accepts', 'outgoing']);
100
+ }
101
+ function validateDirectedTargetInput(value) {
102
+ assertKnownKeys(value, ['as', 'accepts', 'incoming']);
103
+ }
104
+ function validateIncidentEndpointInput(value) {
105
+ assertKnownKeys(value, ['as', 'accepts', 'incident']);
106
+ }
107
+ function validateEdgeClassOptions(value) {
108
+ assertKnownKeys(value, [
109
+ 'abstract',
110
+ 'description',
111
+ 'extends',
112
+ 'properties',
113
+ 'policies',
114
+ 'constraints',
115
+ ]);
116
+ if (value.policies !== undefined)
117
+ assertKnownKeys(value.policies, ['traverse']);
118
+ if (value.constraints !== undefined)
119
+ assertKnownKeys(value.constraints, ['noSelf', 'acyclic']);
120
+ }
121
+ function validateUndirectedEdgeClassOptions(value) {
122
+ assertKnownKeys(value, [
123
+ 'abstract',
124
+ 'description',
125
+ 'extends',
126
+ 'properties',
127
+ 'policies',
128
+ 'constraints',
129
+ ]);
130
+ if (value.policies !== undefined)
131
+ assertKnownKeys(value.policies, ['traverse']);
132
+ if (value.constraints !== undefined)
133
+ assertKnownKeys(value.constraints, ['noSelf']);
134
+ }
@@ -0,0 +1,52 @@
1
+ import type { z } from 'zod';
2
+ import type { AutoEvent, AutoSet } from '../../language/class/model/property.js';
3
+ import type { JsonSchema } from '../../language/value/model/schema.js';
4
+ import type { AUTHORING } from '../schema/handle.js';
5
+ declare const PROPERTY_INPUT: unique symbol;
6
+ declare const AUTO_INPUT: unique symbol;
7
+ export type ValueSchemaInput = z.ZodType | JsonSchema;
8
+ export interface PropertyOptions {
9
+ readonly visibility?: 'public' | 'private';
10
+ readonly required?: boolean;
11
+ readonly description?: string;
12
+ }
13
+ export interface AutoOptions {
14
+ readonly on: AutoEvent | readonly AutoEvent[];
15
+ readonly set: AutoSet;
16
+ }
17
+ export interface Property<out Schema extends ValueSchemaInput = ValueSchemaInput, out Options extends PropertyOptions = PropertyOptions> {
18
+ readonly [AUTHORING]: 'property';
19
+ readonly [PROPERTY_INPUT]: {
20
+ readonly schema: Schema;
21
+ readonly options: Options;
22
+ };
23
+ }
24
+ export type PropertySchemaOf<Value extends Property> = Value extends Property<infer Schema, PropertyOptions> ? Schema : never;
25
+ export type PropertyOptionsOf<Value extends Property> = Value extends Property<ValueSchemaInput, infer Options> ? Options : never;
26
+ export interface AutoProperty<out PropertyValue extends Property = Property> {
27
+ readonly [AUTHORING]: 'auto';
28
+ readonly [AUTO_INPUT]: {
29
+ readonly property: PropertyValue;
30
+ readonly options: {
31
+ readonly on: readonly AutoEvent[];
32
+ readonly set: AutoSet;
33
+ };
34
+ };
35
+ }
36
+ export type PropertyAuthoringInput<Value extends Property> = Value extends Property<infer Schema, infer Options> ? {
37
+ readonly schema: Schema;
38
+ readonly options: Options;
39
+ } : never;
40
+ export declare function propertyAuthoringInput<const Value extends Property>(value: Value): PropertyAuthoringInput<Value>;
41
+ export declare function autoPropertyAuthoringInput<const Value extends AutoProperty>(value: Value): Value extends AutoProperty<infer Property> ? {
42
+ readonly property: Property;
43
+ readonly options: {
44
+ readonly on: readonly AutoEvent[];
45
+ readonly set: AutoSet;
46
+ };
47
+ } : never;
48
+ export type PropertyFieldInput = ValueSchemaInput | Property | AutoProperty;
49
+ export type PropertyRecordInput = Readonly<Record<string, PropertyFieldInput>>;
50
+ export declare function property<const Schema extends ValueSchemaInput, const Options extends PropertyOptions = Record<never, never>>(schema: Schema, options?: Options): Property<Schema, Options>;
51
+ export declare function auto<const PropertyValue extends Property>(property: PropertyValue, options: AutoOptions): AutoProperty<PropertyValue>;
52
+ export {};
@@ -0,0 +1,49 @@
1
+ import { assertKnownKeys, fail } from '../schema/diagnostic.js';
2
+ import { authoringValue, isAuthoringValue } from '../schema/handle.js';
3
+ const PROPERTY_INPUT = Symbol('astrale.v1.property-input');
4
+ const AUTO_INPUT = Symbol('astrale.v1.auto-property-input');
5
+ export function propertyAuthoringInput(value) {
6
+ return value[PROPERTY_INPUT];
7
+ }
8
+ export function autoPropertyAuthoringInput(value) {
9
+ return value[AUTO_INPUT];
10
+ }
11
+ export function property(schema, options) {
12
+ const admitted = options ?? {};
13
+ assertKnownKeys(admitted, ['visibility', 'required', 'description']);
14
+ return authoringValue('property', {
15
+ [PROPERTY_INPUT]: {
16
+ schema,
17
+ options: {
18
+ ...admitted,
19
+ visibility: admitted.visibility ?? 'public',
20
+ },
21
+ },
22
+ });
23
+ }
24
+ export function auto(property, options) {
25
+ if (isAuthoringValue(property, 'auto')) {
26
+ fail('BUILDER_AUTO_NESTED', '', 'auto(...) cannot wrap another auto Property.');
27
+ }
28
+ assertKnownKeys(options, ['on', 'set']);
29
+ const authored = Array.isArray(options.on) ? options.on : [options.on];
30
+ if (authored.length === 0)
31
+ fail('BUILDER_AUTO_EVENT_INVALID', '/on', 'auto(...) requires an event.');
32
+ const events = [...new Set(authored)];
33
+ if (events.some((event) => event !== 'create' && event !== 'update')) {
34
+ fail('BUILDER_AUTO_EVENT_INVALID', '/on', 'Automatic events are create or update.');
35
+ }
36
+ if (options.set !== 'instant') {
37
+ fail('BUILDER_AUTO_SET_INVALID', '/set', 'The auto setter must be instant.');
38
+ }
39
+ events.sort((left, right) => (left === right ? 0 : left === 'create' ? -1 : 1));
40
+ if (propertyAuthoringInput(property).options.required === true && !events.includes('create')) {
41
+ fail('BUILDER_AUTO_EVENT_INVALID', '/on', 'A required auto Property must run on create.');
42
+ }
43
+ return authoringValue('auto', {
44
+ [AUTO_INPUT]: {
45
+ property,
46
+ options: { on: Object.freeze(events), set: options.set },
47
+ },
48
+ });
49
+ }
@@ -0,0 +1,42 @@
1
+ import type { Object as JsonObject } from '@astrale-os/kernel-dsl/value';
2
+ import type { CoreRef } from '../../addressing/index.js';
3
+ import type { DomainEndpointRef } from '../../language/core/model/core.js';
4
+ import type { EdgeClass, NodeClass } from '../class/authoring.js';
5
+ import type { AUTHORING } from '../schema/handle.js';
6
+ import type { Lazy } from '../schema/lazy.js';
7
+ import type { CoreNamedPropertyInput } from '../schema/projection.js';
8
+ interface CoreNodeConfiguration {
9
+ readonly class: Lazy<NodeClass>;
10
+ readonly properties: JsonObject;
11
+ }
12
+ interface CoreEdgeConfiguration {
13
+ readonly source: CoreEndpoint;
14
+ readonly class: Lazy<EdgeClass>;
15
+ readonly target: CoreEndpoint;
16
+ readonly properties: JsonObject;
17
+ }
18
+ export interface CoreNode {
19
+ readonly [AUTHORING]: 'core-node';
20
+ }
21
+ export type CoreEndpoint = CoreNode | CoreRef | DomainEndpointRef;
22
+ export interface CoreEdge {
23
+ readonly [AUTHORING]: 'core-edge';
24
+ }
25
+ export interface CoreInput {
26
+ readonly nodes?: Readonly<Record<string, CoreNode>>;
27
+ readonly edges?: readonly CoreEdge[];
28
+ }
29
+ /** Internal lowering access; Core Node handles expose no public configuration object. */
30
+ export declare function coreNodeConfiguration(value: CoreNode): CoreNodeConfiguration;
31
+ /** Internal lowering access; Core Edge handles expose no public configuration object. */
32
+ export declare function coreEdgeConfiguration(value: CoreEdge): CoreEdgeConfiguration;
33
+ declare function node(definition: () => NodeClass, properties: JsonObject): CoreNode;
34
+ declare function node<const Definition extends NodeClass, const Properties extends CoreNamedPropertyInput<Definition> & JsonObject>(definition: Definition, properties: Properties): CoreNode;
35
+ declare function edge(source: CoreEndpoint, definition: () => EdgeClass, target: CoreEndpoint, properties: JsonObject): CoreEdge;
36
+ declare function edge<const Definition extends EdgeClass, const Properties extends CoreNamedPropertyInput<Definition> & JsonObject>(source: CoreEndpoint, definition: Definition, target: CoreEndpoint, properties: Properties): CoreEdge;
37
+ export declare const core: Readonly<{
38
+ node: typeof node;
39
+ edge: typeof edge;
40
+ domain: DomainEndpointRef;
41
+ }>;
42
+ export {};
@@ -0,0 +1,39 @@
1
+ import { accept as acceptJsonValue } from '@astrale-os/kernel-dsl/value';
2
+ import { authoringValue } from '../schema/handle.js';
3
+ const coreNodeConfigurations = new WeakMap();
4
+ const coreEdgeConfigurations = new WeakMap();
5
+ /** Reference the owning Domain instance as one Core Edge endpoint. */
6
+ const domain = Object.freeze({ kind: 'domain' });
7
+ /** Internal lowering access; Core Node handles expose no public configuration object. */
8
+ export function coreNodeConfiguration(value) {
9
+ const configuration = coreNodeConfigurations.get(value);
10
+ if (configuration === undefined)
11
+ throw new TypeError('Unknown Core Node authoring handle.');
12
+ return configuration;
13
+ }
14
+ /** Internal lowering access; Core Edge handles expose no public configuration object. */
15
+ export function coreEdgeConfiguration(value) {
16
+ const configuration = coreEdgeConfigurations.get(value);
17
+ if (configuration === undefined)
18
+ throw new TypeError('Unknown Core Edge authoring handle.');
19
+ return configuration;
20
+ }
21
+ function node(definition, properties) {
22
+ const value = authoringValue('core-node', {});
23
+ coreNodeConfigurations.set(value, {
24
+ class: definition,
25
+ properties: acceptJsonValue(properties),
26
+ });
27
+ return value;
28
+ }
29
+ function edge(source, definition, target, properties) {
30
+ const value = authoringValue('core-edge', {});
31
+ coreEdgeConfigurations.set(value, {
32
+ source,
33
+ class: definition,
34
+ target,
35
+ properties: acceptJsonValue(properties),
36
+ });
37
+ return value;
38
+ }
39
+ export const core = Object.freeze({ node, edge, domain });
@@ -0,0 +1,26 @@
1
+ export { func, method, output } from './callable/authoring.js';
2
+ export { core } from './core/authoring.js';
3
+ export { defineClass, edgeClass, nodeClass } from './class/authoring.js';
4
+ export { fullMatch } from './value/full-match.js';
5
+ export { path } from './value/path.js';
6
+ export { policy } from './policy/authoring.js';
7
+ export { auto, property } from './class/property.js';
8
+ export { defineSchema } from './schema/define.js';
9
+ export type { DefinedSchema } from './schema/define.js';
10
+ export type { ResolvedDomainOfInput } from './schema/projection.js';
11
+ export { valueSchema } from './value/schema.js';
12
+ export { view } from './view/authoring.js';
13
+ export { BuilderError as Error } from './schema/diagnostic.js';
14
+ export type { BuilderDiagnostic as Diagnostic, BuilderDiagnosticCode as DiagnosticCode, } from './schema/diagnostic.js';
15
+ export type { CallableInputBase, CallableInput, CallableOutputInput, CallableProjection, CallablePolicyBuilder, CallablePolicyContext, BinaryOutput, Function, FunctionInput, Method, MethodInput, PolicyObjectInput, StreamOutput, } from './callable/authoring.js';
16
+ export type { CoreEdge, CoreEndpoint, CoreInput, CoreNode } from './core/authoring.js';
17
+ export type { AuthoredPropertyProjection, AuthoredMethodProjection, Class, ClassIdentityProjection, ClassOwnerProjection, ClassReferenceProjection, ClassReferenceInput as ClassReference, DirectedEdgeInput, DirectedEdgeClass, DirectedSourceInput, DirectedTargetInput, EdgeClassCommon, EdgeClassInput, EdgeClass, EdgeClassReferenceInput as EdgeClassReference, IncidentEndpointInput, NodeClass, NodeClassInput, NodeClassReferenceInput as NodeClassReference, UndirectedEdgeInput, UndirectedEdgeClass, } from './class/authoring.js';
18
+ export type { PathAuthoring } from './value/path.js';
19
+ export type { Lazy } from './schema/lazy.js';
20
+ export type { MatchPolicyInput, Policy, PolicyBuilder as PolicyFactory, PolicyEdgeInput, PolicyExistsContext, PolicyInput, PolicyPatternContext, } from './policy/authoring.js';
21
+ export type { AutoOptions, AutoProperty, Property, PropertyFieldInput as PropertyField, PropertyOptions, ValueSchemaInput, } from './class/property.js';
22
+ export type { CorePropertyInput } from './schema/projection.js';
23
+ export type { ClassProjection, FunctionProjection, MethodProjection, PropertyProjection, } from './schema/projection.js';
24
+ export type { DomainSchemaInput as SchemaInput } from './schema/input.js';
25
+ export type { TypedValueSchema } from './value/schema.js';
26
+ export type { View, ViewInput } from './view/authoring.js';
@@ -0,0 +1,11 @@
1
+ export { func, method, output } from './callable/authoring.js';
2
+ export { core } from './core/authoring.js';
3
+ export { defineClass, edgeClass, nodeClass } from './class/authoring.js';
4
+ export { fullMatch } from './value/full-match.js';
5
+ export { path } from './value/path.js';
6
+ export { policy } from './policy/authoring.js';
7
+ export { auto, property } from './class/property.js';
8
+ export { defineSchema } from './schema/define.js';
9
+ export { valueSchema } from './value/schema.js';
10
+ export { view } from './view/authoring.js';
11
+ export { BuilderError as Error } from './schema/diagnostic.js';
@@ -0,0 +1,24 @@
1
+ import type { FunctionRef } from '../../addressing/index.js';
2
+ import type { FunctionDefinition, MethodDefinition } from '../../language/callable/model/callable.js';
3
+ import type { Function, Method } from '../callable/authoring.js';
4
+ import type { BuilderContext } from './schema/context.js';
5
+ import type { BuilderValueSchemas } from './value/compile.js';
6
+ export type CallablePlacement = {
7
+ readonly kind: 'function';
8
+ readonly ref: FunctionRef;
9
+ readonly pointer: string;
10
+ } | {
11
+ readonly kind: 'node-class-method';
12
+ readonly pointer: string;
13
+ };
14
+ export interface CallableCompiler {
15
+ compile(value: Function | Method, placement: CallablePlacement): FunctionDefinition | MethodDefinition;
16
+ }
17
+ export declare class V1CallableCompiler implements CallableCompiler {
18
+ readonly context: BuilderContext;
19
+ readonly values: BuilderValueSchemas;
20
+ constructor(context: BuilderContext, values: BuilderValueSchemas);
21
+ compile(value: Function | Method, placement: CallablePlacement): FunctionDefinition | MethodDefinition;
22
+ private compileOutput;
23
+ private policyContext;
24
+ }
@@ -0,0 +1,135 @@
1
+ import { normalizePolicyChecks } from '../../language/policy/normalization/normalize.js';
2
+ import { callableInputField, callableConfiguration, callablePolicyObject, callableRef, callableSelf, isCallableOutputAuthoring, } from '../callable/authoring.js';
3
+ import { fail } from '../schema/diagnostic.js';
4
+ export class V1CallableCompiler {
5
+ context;
6
+ values;
7
+ constructor(context, values) {
8
+ this.context = context;
9
+ this.values = values;
10
+ }
11
+ compile(value, placement) {
12
+ const config = callableConfiguration(value);
13
+ if (config.auth !== 'anonymous' &&
14
+ config.auth !== 'authenticated' &&
15
+ config.auth !== 'authorized') {
16
+ fail('BUILDER_CALLABLE_AUTH', `${placement.pointer}/auth`, 'Function auth must be anonymous, authenticated, or authorized.');
17
+ }
18
+ const auth = config.auth;
19
+ if (auth !== 'authorized' && config.policy !== undefined) {
20
+ fail('BUILDER_CALLABLE_POLICY_AUTH', `${placement.pointer}/policy`, 'Only an authorized Function or Method may declare a Policy check.');
21
+ }
22
+ const method = placement.kind !== 'function';
23
+ if (!method && (config.static !== undefined || config.inheritance !== undefined)) {
24
+ fail('BUILDER_CALLABLE_PLACEMENT', placement.pointer, 'A standalone Function cannot declare Method staticness or inheritance.');
25
+ }
26
+ const isStatic = method ? (config.static ?? false) : undefined;
27
+ const inheritance = method ? (config.inheritance ?? 'default') : undefined;
28
+ if (inheritance === 'abstract' && config.policy !== undefined) {
29
+ fail('BUILDER_ABSTRACT_POLICY', `${placement.pointer}/policy`, 'An abstract Method cannot declare a Policy check.');
30
+ }
31
+ const input = this.values.schema(config.input, 'callable-input', `${placement.pointer}/input`);
32
+ const output = this.compileOutput(config.output, `${placement.pointer}/output`);
33
+ const policy = config.policy === undefined
34
+ ? undefined
35
+ : normalizePolicyChecks(config.policy(this.policyContext(input, placement, isStatic ?? false)));
36
+ const base = {
37
+ ...(config.description === undefined ? {} : { description: config.description }),
38
+ input,
39
+ output,
40
+ };
41
+ const contract = auth === 'authorized'
42
+ ? { ...base, auth, ...(policy === undefined ? {} : { policy }) }
43
+ : { ...base, auth };
44
+ if (!method)
45
+ return { ref: placement.ref, ...contract };
46
+ return {
47
+ ...contract,
48
+ static: isStatic,
49
+ inheritance: inheritance,
50
+ };
51
+ }
52
+ compileOutput(value, pointer) {
53
+ if (!isCallableOutputAuthoring(value)) {
54
+ return {
55
+ mode: 'value',
56
+ schema: this.values.schema(value, 'callable-output', pointer),
57
+ };
58
+ }
59
+ if (value.mode === 'binary')
60
+ return { mode: 'binary' };
61
+ return {
62
+ mode: 'stream',
63
+ item: this.values.schema(value.item, 'callable-output', `${pointer}/item`),
64
+ };
65
+ }
66
+ policyContext(inputSchema, placement, isStatic) {
67
+ const input = new Proxy(Object.create(null), {
68
+ get(_target, key) {
69
+ return typeof key === 'string' ? callableInputField(key) : undefined;
70
+ },
71
+ });
72
+ const self = callableSelf();
73
+ return Object.freeze({
74
+ input,
75
+ self,
76
+ ref: (member) => callableRef(this.context.resolvePolicyObject(member, `${placement.pointer}/policy/ref`)),
77
+ check: (policy, object) => {
78
+ const resolvedObject = callablePolicyObject(object);
79
+ let admittedObject = resolvedObject;
80
+ if (resolvedObject.kind === 'self') {
81
+ if (placement.kind === 'function' || isStatic) {
82
+ fail('BUILDER_POLICY_SELF', `${placement.pointer}/policy`, 'self is available only to a non-static Node Method.');
83
+ }
84
+ }
85
+ else if (resolvedObject.kind === 'input') {
86
+ if (isRequiredDirectNodePath(inputSchema, resolvedObject.field)) {
87
+ // The field contract is admitted below as-is.
88
+ }
89
+ else {
90
+ fail('BUILDER_POLICY_INPUT', `${placement.pointer}/policy`, `input.${resolvedObject.field} is not one direct required single-Node path field.`);
91
+ }
92
+ }
93
+ else {
94
+ admittedObject = callableRef(this.context.resolvePolicyObject(resolvedObject.ref, `${placement.pointer}/policy/ref`));
95
+ }
96
+ return {
97
+ check: this.context.resolvePolicy(policy, `${placement.pointer}/policy/check`),
98
+ object: admittedObject,
99
+ };
100
+ },
101
+ allOf: (...expressions) => {
102
+ nonEmpty(expressions, `${placement.pointer}/policy/allOf`);
103
+ return { allOf: expressions };
104
+ },
105
+ anyOf: (...expressions) => {
106
+ nonEmpty(expressions, `${placement.pointer}/policy/anyOf`);
107
+ return { anyOf: expressions };
108
+ },
109
+ });
110
+ }
111
+ }
112
+ function isRequiredDirectNodePath(schema, field) {
113
+ if (schema === null || typeof schema !== 'object' || Array.isArray(schema))
114
+ return false;
115
+ if (schema.type !== 'object' ||
116
+ schema.additionalProperties !== false ||
117
+ !Array.isArray(schema.required) ||
118
+ !schema.required.includes(field) ||
119
+ schema.properties === null ||
120
+ typeof schema.properties !== 'object' ||
121
+ Array.isArray(schema.properties)) {
122
+ return false;
123
+ }
124
+ const fieldSchema = schema.properties[field];
125
+ return (fieldSchema !== null &&
126
+ typeof fieldSchema === 'object' &&
127
+ !Array.isArray(fieldSchema) &&
128
+ fieldSchema.$ref ===
129
+ 'https://schemas.astrale.ai/graph/1/node-path' &&
130
+ Object.hasOwn(fieldSchema, 'x-astrale-path'));
131
+ }
132
+ function nonEmpty(values, pointer) {
133
+ if (values.length === 0)
134
+ fail('BUILDER_POLICY_EMPTY_COMPOSITION', pointer, 'Policy check composition must be non-empty.');
135
+ }
@@ -0,0 +1,22 @@
1
+ import type { ClassDefinition } from '../../language/class/model/class.js';
2
+ import type { Class } from '../class/authoring.js';
3
+ import type { CallableCompiler } from './callable.js';
4
+ import type { PolicyCompiler } from './policy.js';
5
+ import type { BuilderContext } from './schema/context.js';
6
+ import type { BuilderValueSchemas } from './value/compile.js';
7
+ export declare class V1DefinitionCompiler {
8
+ readonly context: BuilderContext;
9
+ readonly values: BuilderValueSchemas;
10
+ readonly callables: CallableCompiler;
11
+ readonly policies: PolicyCompiler;
12
+ constructor(context: BuilderContext, values: BuilderValueSchemas, callables: CallableCompiler, policies: PolicyCompiler);
13
+ compileClass(value: Class, name: string, pointer: string): ClassDefinition;
14
+ private nodeClass;
15
+ private edgeClass;
16
+ private endpointBase;
17
+ private directedSource;
18
+ private directedTarget;
19
+ private incidentEndpoint;
20
+ private parents;
21
+ private methods;
22
+ }
@@ -0,0 +1,129 @@
1
+ import { compareDefinitionRefs } from '../../addressing/ordering.js';
2
+ import { classConfiguration } from '../class/authoring.js';
3
+ import { escapeToken } from '../schema/diagnostic.js';
4
+ export class V1DefinitionCompiler {
5
+ context;
6
+ values;
7
+ callables;
8
+ policies;
9
+ constructor(context, values, callables, policies) {
10
+ this.context = context;
11
+ this.values = values;
12
+ this.callables = callables;
13
+ this.policies = policies;
14
+ }
15
+ compileClass(value, name, pointer) {
16
+ return value.kind === 'node'
17
+ ? this.nodeClass(value, name, pointer)
18
+ : this.edgeClass(value, name, pointer);
19
+ }
20
+ nodeClass(value, name, pointer) {
21
+ const input = classConfiguration(value);
22
+ const facet = this.values.properties(input.properties, `${pointer}/properties`);
23
+ const data = dataDeclaration(input.data);
24
+ return {
25
+ ref: { origin: this.context.origin, kind: 'class', name },
26
+ kind: 'node',
27
+ abstract: input.abstract ?? false,
28
+ ...(input.description === undefined ? {} : { description: input.description }),
29
+ extends: this.parents(input.extends, 'node', `${pointer}/extends`),
30
+ properties: facet,
31
+ methods: this.methods(input.methods, `${pointer}/methods`),
32
+ ...(data === undefined ? {} : { data }),
33
+ ...(input.icon === undefined ? {} : { icon: input.icon }),
34
+ policies: {
35
+ ...(input.policies?.read === undefined
36
+ ? {}
37
+ : { read: this.policies.ref(input.policies.read, `${pointer}/policies/read`) }),
38
+ ...(input.policies?.traverse === undefined
39
+ ? {}
40
+ : {
41
+ traverse: this.policies.ref(input.policies.traverse, `${pointer}/policies/traverse`),
42
+ }),
43
+ },
44
+ };
45
+ }
46
+ edgeClass(value, name, pointer) {
47
+ const input = classConfiguration(value);
48
+ const facet = this.values.properties(input.properties, `${pointer}/properties`);
49
+ const contract = (() => {
50
+ if (value.orientation === 'directed') {
51
+ const directed = classConfiguration(value);
52
+ return {
53
+ orientation: 'directed',
54
+ endpoints: {
55
+ source: this.directedSource(directed.source, `${pointer}/endpoints/source`),
56
+ target: this.directedTarget(directed.target, `${pointer}/endpoints/target`),
57
+ },
58
+ constraints: directedConstraints(directed),
59
+ };
60
+ }
61
+ const undirected = classConfiguration(value);
62
+ return {
63
+ orientation: 'undirected',
64
+ endpoints: [
65
+ this.incidentEndpoint(undirected.endpoints[0], `${pointer}/endpoints/0`),
66
+ this.incidentEndpoint(undirected.endpoints[1], `${pointer}/endpoints/1`),
67
+ ],
68
+ constraints: undirectedConstraints(undirected),
69
+ };
70
+ })();
71
+ return {
72
+ ref: { origin: this.context.origin, kind: 'class', name },
73
+ kind: 'edge',
74
+ abstract: input.abstract ?? false,
75
+ ...(input.description === undefined ? {} : { description: input.description }),
76
+ extends: this.parents(input.extends, 'edge', `${pointer}/extends`),
77
+ properties: facet,
78
+ ...contract,
79
+ policies: input.policies?.traverse === undefined
80
+ ? {}
81
+ : {
82
+ traverse: this.policies.ref(input.policies.traverse, `${pointer}/policies/traverse`),
83
+ },
84
+ };
85
+ }
86
+ endpointBase(value, pointer) {
87
+ return {
88
+ role: value.as,
89
+ accepts: value.accepts
90
+ .map((entry, index) => this.context.resolveNodeClass(entry, `${pointer}/accepts/${index}`))
91
+ .sort(compareDefinitionRefs),
92
+ };
93
+ }
94
+ directedSource(value, pointer) {
95
+ return { ...this.endpointBase(value, pointer), outgoing: value.outgoing };
96
+ }
97
+ directedTarget(value, pointer) {
98
+ return { ...this.endpointBase(value, pointer), incoming: value.incoming };
99
+ }
100
+ incidentEndpoint(value, pointer) {
101
+ return { ...this.endpointBase(value, pointer), incident: value.incident };
102
+ }
103
+ parents(values, kind, pointer) {
104
+ return (values ?? [])
105
+ .map((entry, index) => this.context.resolveClass(entry, kind, `${pointer}/${index}`))
106
+ .sort(compareDefinitionRefs);
107
+ }
108
+ methods(values, pointer) {
109
+ return Object.fromEntries(Object.entries(values ?? {}).map(([name, value]) => [
110
+ name,
111
+ this.callables.compile(value, {
112
+ kind: 'node-class-method',
113
+ pointer: `${pointer}/${escapeToken(name)}`,
114
+ }),
115
+ ]));
116
+ }
117
+ }
118
+ function dataDeclaration(mediaType) {
119
+ return mediaType === undefined ? undefined : { mediaType };
120
+ }
121
+ function directedConstraints(options) {
122
+ return {
123
+ ...(options.constraints?.noSelf === true ? { noSelf: true } : {}),
124
+ ...(options.constraints?.acyclic === true ? { acyclic: true } : {}),
125
+ };
126
+ }
127
+ function undirectedConstraints(options) {
128
+ return options.constraints?.noSelf === true ? { noSelf: true } : {};
129
+ }