@astrale-os/kernel-dsl 0.1.0

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 (259) hide show
  1. package/dist/builders/bitmask.d.ts +5 -0
  2. package/dist/builders/bitmask.d.ts.map +1 -0
  3. package/dist/builders/bitmask.js +11 -0
  4. package/dist/builders/data.d.ts +7 -0
  5. package/dist/builders/data.d.ts.map +1 -0
  6. package/dist/builders/data.js +17 -0
  7. package/dist/builders/definition/base.d.ts +13 -0
  8. package/dist/builders/definition/base.d.ts.map +1 -0
  9. package/dist/builders/definition/base.js +23 -0
  10. package/dist/builders/definition/edge-class.d.ts +8 -0
  11. package/dist/builders/definition/edge-class.d.ts.map +1 -0
  12. package/dist/builders/definition/edge-class.js +8 -0
  13. package/dist/builders/definition/edge-interface.d.ts +8 -0
  14. package/dist/builders/definition/edge-interface.d.ts.map +1 -0
  15. package/dist/builders/definition/edge-interface.js +8 -0
  16. package/dist/builders/definition/index.d.ts +5 -0
  17. package/dist/builders/definition/index.d.ts.map +1 -0
  18. package/dist/builders/definition/index.js +4 -0
  19. package/dist/builders/definition/node-class.d.ts +7 -0
  20. package/dist/builders/definition/node-class.d.ts.map +1 -0
  21. package/dist/builders/definition/node-class.js +8 -0
  22. package/dist/builders/definition/node-interface.d.ts +7 -0
  23. package/dist/builders/definition/node-interface.d.ts.map +1 -0
  24. package/dist/builders/definition/node-interface.js +8 -0
  25. package/dist/builders/function.d.ts +14 -0
  26. package/dist/builders/function.d.ts.map +1 -0
  27. package/dist/builders/function.js +4 -0
  28. package/dist/builders/index.d.ts +10 -0
  29. package/dist/builders/index.d.ts.map +1 -0
  30. package/dist/builders/index.js +9 -0
  31. package/dist/builders/prop.d.ts +7 -0
  32. package/dist/builders/prop.d.ts.map +1 -0
  33. package/dist/builders/prop.js +8 -0
  34. package/dist/builders/ref.d.ts +12 -0
  35. package/dist/builders/ref.d.ts.map +1 -0
  36. package/dist/builders/ref.js +26 -0
  37. package/dist/grammar/definition/base.d.ts +13 -0
  38. package/dist/grammar/definition/base.d.ts.map +1 -0
  39. package/dist/grammar/definition/base.js +1 -0
  40. package/dist/grammar/definition/discriminants.d.ts +31 -0
  41. package/dist/grammar/definition/discriminants.d.ts.map +1 -0
  42. package/dist/grammar/definition/discriminants.js +32 -0
  43. package/dist/grammar/definition/edge-class.d.ts +19 -0
  44. package/dist/grammar/definition/edge-class.d.ts.map +1 -0
  45. package/dist/grammar/definition/edge-class.js +1 -0
  46. package/dist/grammar/definition/edge-interface.d.ts +18 -0
  47. package/dist/grammar/definition/edge-interface.d.ts.map +1 -0
  48. package/dist/grammar/definition/edge-interface.js +1 -0
  49. package/dist/grammar/definition/index.d.ts +8 -0
  50. package/dist/grammar/definition/index.d.ts.map +1 -0
  51. package/dist/grammar/definition/index.js +1 -0
  52. package/dist/grammar/definition/node-class.d.ts +21 -0
  53. package/dist/grammar/definition/node-class.d.ts.map +1 -0
  54. package/dist/grammar/definition/node-class.js +1 -0
  55. package/dist/grammar/definition/node-interface.d.ts +14 -0
  56. package/dist/grammar/definition/node-interface.d.ts.map +1 -0
  57. package/dist/grammar/definition/node-interface.js +1 -0
  58. package/dist/grammar/facets/constraints.d.ts +8 -0
  59. package/dist/grammar/facets/constraints.d.ts.map +1 -0
  60. package/dist/grammar/facets/constraints.js +1 -0
  61. package/dist/grammar/facets/content.d.ts +4 -0
  62. package/dist/grammar/facets/content.d.ts.map +1 -0
  63. package/dist/grammar/facets/content.js +1 -0
  64. package/dist/grammar/facets/endpoints.d.ts +14 -0
  65. package/dist/grammar/facets/endpoints.d.ts.map +1 -0
  66. package/dist/grammar/facets/endpoints.js +2 -0
  67. package/dist/grammar/facets/index.d.ts +9 -0
  68. package/dist/grammar/facets/index.d.ts.map +1 -0
  69. package/dist/grammar/facets/index.js +3 -0
  70. package/dist/grammar/facets/indexes.d.ts +12 -0
  71. package/dist/grammar/facets/indexes.d.ts.map +1 -0
  72. package/dist/grammar/facets/indexes.js +8 -0
  73. package/dist/grammar/facets/properties.d.ts +26 -0
  74. package/dist/grammar/facets/properties.d.ts.map +1 -0
  75. package/dist/grammar/facets/properties.js +44 -0
  76. package/dist/grammar/function/config.d.ts +14 -0
  77. package/dist/grammar/function/config.d.ts.map +1 -0
  78. package/dist/grammar/function/config.js +1 -0
  79. package/dist/grammar/function/def.d.ts +33 -0
  80. package/dist/grammar/function/def.d.ts.map +1 -0
  81. package/dist/grammar/function/def.js +1 -0
  82. package/dist/grammar/function/index.d.ts +5 -0
  83. package/dist/grammar/function/index.d.ts.map +1 -0
  84. package/dist/grammar/function/index.js +1 -0
  85. package/dist/grammar/function/inheritance.d.ts +3 -0
  86. package/dist/grammar/function/inheritance.d.ts.map +1 -0
  87. package/dist/grammar/function/inheritance.js +1 -0
  88. package/dist/grammar/function/output.d.ts +3 -0
  89. package/dist/grammar/function/output.d.ts.map +1 -0
  90. package/dist/grammar/function/output.js +1 -0
  91. package/dist/grammar/index.d.ts +5 -0
  92. package/dist/grammar/index.d.ts.map +1 -0
  93. package/dist/grammar/index.js +4 -0
  94. package/dist/grammar/values/bitmask.d.ts +7 -0
  95. package/dist/grammar/values/bitmask.d.ts.map +1 -0
  96. package/dist/grammar/values/bitmask.js +1 -0
  97. package/dist/grammar/values/data.d.ts +30 -0
  98. package/dist/grammar/values/data.d.ts.map +1 -0
  99. package/dist/grammar/values/data.js +1 -0
  100. package/dist/grammar/values/index.d.ts +9 -0
  101. package/dist/grammar/values/index.d.ts.map +1 -0
  102. package/dist/grammar/values/index.js +4 -0
  103. package/dist/grammar/values/ref.d.ts +26 -0
  104. package/dist/grammar/values/ref.d.ts.map +1 -0
  105. package/dist/grammar/values/ref.js +1 -0
  106. package/dist/grammar/values/self.d.ts +12 -0
  107. package/dist/grammar/values/self.d.ts.map +1 -0
  108. package/dist/grammar/values/self.js +5 -0
  109. package/dist/index.d.ts +53 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +29 -0
  112. package/dist/inference/content.d.ts +27 -0
  113. package/dist/inference/content.d.ts.map +1 -0
  114. package/dist/inference/content.js +1 -0
  115. package/dist/inference/index.d.ts +7 -0
  116. package/dist/inference/index.d.ts.map +1 -0
  117. package/dist/inference/index.js +1 -0
  118. package/dist/inference/inheritance.d.ts +48 -0
  119. package/dist/inference/inheritance.d.ts.map +1 -0
  120. package/dist/inference/inheritance.js +1 -0
  121. package/dist/inference/input.d.ts +30 -0
  122. package/dist/inference/input.d.ts.map +1 -0
  123. package/dist/inference/input.js +1 -0
  124. package/dist/inference/methods.d.ts +69 -0
  125. package/dist/inference/methods.d.ts.map +1 -0
  126. package/dist/inference/methods.js +1 -0
  127. package/dist/inference/properties.d.ts +37 -0
  128. package/dist/inference/properties.d.ts.map +1 -0
  129. package/dist/inference/properties.js +1 -0
  130. package/dist/inference/schema.d.ts +37 -0
  131. package/dist/inference/schema.d.ts.map +1 -0
  132. package/dist/inference/schema.js +1 -0
  133. package/dist/instance/core/define.d.ts +13 -0
  134. package/dist/instance/core/define.d.ts.map +1 -0
  135. package/dist/instance/core/define.js +62 -0
  136. package/dist/instance/core/edge.d.ts +9 -0
  137. package/dist/instance/core/edge.d.ts.map +1 -0
  138. package/dist/instance/core/edge.js +10 -0
  139. package/dist/instance/core/endpoint.d.ts +11 -0
  140. package/dist/instance/core/endpoint.d.ts.map +1 -0
  141. package/dist/instance/core/endpoint.js +18 -0
  142. package/dist/instance/core/index.d.ts +7 -0
  143. package/dist/instance/core/index.d.ts.map +1 -0
  144. package/dist/instance/core/index.js +5 -0
  145. package/dist/instance/core/node.d.ts +7 -0
  146. package/dist/instance/core/node.d.ts.map +1 -0
  147. package/dist/instance/core/node.js +8 -0
  148. package/dist/instance/core/path.d.ts +21 -0
  149. package/dist/instance/core/path.d.ts.map +1 -0
  150. package/dist/instance/core/path.js +20 -0
  151. package/dist/instance/core/self.d.ts +15 -0
  152. package/dist/instance/core/self.d.ts.map +1 -0
  153. package/dist/instance/core/self.js +7 -0
  154. package/dist/instance/core/types.d.ts +45 -0
  155. package/dist/instance/core/types.d.ts.map +1 -0
  156. package/dist/instance/core/types.js +1 -0
  157. package/dist/instance/index.d.ts +4 -0
  158. package/dist/instance/index.d.ts.map +1 -0
  159. package/dist/instance/index.js +2 -0
  160. package/dist/instance/seed/define.d.ts +12 -0
  161. package/dist/instance/seed/define.d.ts.map +1 -0
  162. package/dist/instance/seed/define.js +33 -0
  163. package/dist/instance/seed/index.d.ts +3 -0
  164. package/dist/instance/seed/index.d.ts.map +1 -0
  165. package/dist/instance/seed/index.js +1 -0
  166. package/dist/instance/seed/types.d.ts +12 -0
  167. package/dist/instance/seed/types.d.ts.map +1 -0
  168. package/dist/instance/seed/types.js +1 -0
  169. package/dist/ir/classes.d.ts +72 -0
  170. package/dist/ir/classes.d.ts.map +1 -0
  171. package/dist/ir/classes.js +1 -0
  172. package/dist/ir/domain.d.ts +13 -0
  173. package/dist/ir/domain.d.ts.map +1 -0
  174. package/dist/ir/domain.js +1 -0
  175. package/dist/ir/endpoints.d.ts +27 -0
  176. package/dist/ir/endpoints.d.ts.map +1 -0
  177. package/dist/ir/endpoints.js +1 -0
  178. package/dist/ir/functions.d.ts +19 -0
  179. package/dist/ir/functions.d.ts.map +1 -0
  180. package/dist/ir/functions.js +1 -0
  181. package/dist/ir/index.d.ts +8 -0
  182. package/dist/ir/index.d.ts.map +1 -0
  183. package/dist/ir/index.js +1 -0
  184. package/dist/ir/ir.d.ts +63 -0
  185. package/dist/ir/ir.d.ts.map +1 -0
  186. package/dist/ir/ir.js +4 -0
  187. package/dist/ir/json-schema.d.ts +20 -0
  188. package/dist/ir/json-schema.d.ts.map +1 -0
  189. package/dist/ir/json-schema.js +1 -0
  190. package/dist/schema/classify.d.ts +8 -0
  191. package/dist/schema/classify.d.ts.map +1 -0
  192. package/dist/schema/classify.js +19 -0
  193. package/dist/schema/define.d.ts +19 -0
  194. package/dist/schema/define.d.ts.map +1 -0
  195. package/dist/schema/define.js +47 -0
  196. package/dist/schema/error.d.ts +8 -0
  197. package/dist/schema/error.d.ts.map +1 -0
  198. package/dist/schema/error.js +13 -0
  199. package/dist/schema/index.d.ts +8 -0
  200. package/dist/schema/index.d.ts.map +1 -0
  201. package/dist/schema/index.js +5 -0
  202. package/dist/schema/refs.d.ts +80 -0
  203. package/dist/schema/refs.d.ts.map +1 -0
  204. package/dist/schema/refs.js +116 -0
  205. package/dist/schema/resolve/index.d.ts +5 -0
  206. package/dist/schema/resolve/index.d.ts.map +1 -0
  207. package/dist/schema/resolve/index.js +4 -0
  208. package/dist/schema/resolve/methods.d.ts +8 -0
  209. package/dist/schema/resolve/methods.d.ts.map +1 -0
  210. package/dist/schema/resolve/methods.js +17 -0
  211. package/dist/schema/resolve/properties.d.ts +13 -0
  212. package/dist/schema/resolve/properties.d.ts.map +1 -0
  213. package/dist/schema/resolve/properties.js +36 -0
  214. package/dist/schema/resolve/self.d.ts +7 -0
  215. package/dist/schema/resolve/self.d.ts.map +1 -0
  216. package/dist/schema/resolve/self.js +32 -0
  217. package/dist/schema/resolve/thunks.d.ts +12 -0
  218. package/dist/schema/resolve/thunks.d.ts.map +1 -0
  219. package/dist/schema/resolve/thunks.js +36 -0
  220. package/dist/schema/schema.d.ts +21 -0
  221. package/dist/schema/schema.d.ts.map +1 -0
  222. package/dist/schema/schema.js +1 -0
  223. package/dist/schema/validators/context.d.ts +13 -0
  224. package/dist/schema/validators/context.d.ts.map +1 -0
  225. package/dist/schema/validators/context.js +1 -0
  226. package/dist/schema/validators/endpoints.d.ts +4 -0
  227. package/dist/schema/validators/endpoints.d.ts.map +1 -0
  228. package/dist/schema/validators/endpoints.js +26 -0
  229. package/dist/schema/validators/index.d.ts +11 -0
  230. package/dist/schema/validators/index.d.ts.map +1 -0
  231. package/dist/schema/validators/index.js +21 -0
  232. package/dist/schema/validators/indexes.d.ts +4 -0
  233. package/dist/schema/validators/indexes.d.ts.map +1 -0
  234. package/dist/schema/validators/indexes.js +18 -0
  235. package/dist/schema/validators/inheritance.d.ts +4 -0
  236. package/dist/schema/validators/inheritance.d.ts.map +1 -0
  237. package/dist/schema/validators/inheritance.js +26 -0
  238. package/dist/schema/validators/methods.d.ts +9 -0
  239. package/dist/schema/validators/methods.d.ts.map +1 -0
  240. package/dist/schema/validators/methods.js +43 -0
  241. package/dist/schema/validators/names.d.ts +4 -0
  242. package/dist/schema/validators/names.d.ts.map +1 -0
  243. package/dist/schema/validators/names.js +18 -0
  244. package/dist/schema/validators/ref-targets.d.ts +4 -0
  245. package/dist/schema/validators/ref-targets.d.ts.map +1 -0
  246. package/dist/schema/validators/ref-targets.js +53 -0
  247. package/dist/serializer/context.d.ts +32 -0
  248. package/dist/serializer/context.d.ts.map +1 -0
  249. package/dist/serializer/context.js +308 -0
  250. package/dist/serializer/helpers.d.ts +34 -0
  251. package/dist/serializer/helpers.d.ts.map +1 -0
  252. package/dist/serializer/helpers.js +115 -0
  253. package/dist/serializer/index.d.ts +2 -0
  254. package/dist/serializer/index.d.ts.map +1 -0
  255. package/dist/serializer/index.js +1 -0
  256. package/dist/serializer/serialize.d.ts +12 -0
  257. package/dist/serializer/serialize.d.ts.map +1 -0
  258. package/dist/serializer/serialize.js +5 -0
  259. package/package.json +45 -0
@@ -0,0 +1,12 @@
1
+ import type { Schema } from '../../schema/schema.js';
2
+ import type { CorePath } from '../core/path.js';
3
+ import type { Core, CoreNodeEntry, CoreEdgeEntry } from '../core/types.js';
4
+ /** The output of defineSeed() — seed data extending a core */
5
+ export interface SeedDef<S extends Schema = Schema, C extends Core = Core, _Paths extends Record<string, any> = Record<string, CorePath>> {
6
+ readonly schema: S;
7
+ readonly core: C;
8
+ readonly domain: string;
9
+ readonly __nodes: readonly CoreNodeEntry[];
10
+ readonly __edges: readonly CoreEdgeEntry[];
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/instance/seed/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAE1E,8DAA8D;AAC9D,MAAM,WAAW,OAAO,CACtB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,IAAI,GAAG,IAAI,EACrB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAE7D,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAA;CAC3C"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,72 @@
1
+ import type { Endpoint, EdgeConstraints } from './endpoints.js';
2
+ import type { FunctionDecl } from './functions.js';
3
+ import type { JsonSchema, PropertyDecl } from './json-schema.js';
4
+ /** An interface declaration. Cannot be instantiated directly. */
5
+ export interface InterfaceDecl {
6
+ type: 'interface';
7
+ /** Unique name within the schema. */
8
+ name: string;
9
+ /** Parent interfaces this interface extends. */
10
+ extends: string[];
11
+ /** Own properties as a map: key = property name, value = JSON Schema. */
12
+ properties: Record<string, PropertyDecl>;
13
+ /** Own methods keyed by name (NOT inherited). */
14
+ methods: Record<string, FunctionDecl>;
15
+ /**
16
+ * Optional datastore content schema (JSON Schema of type object).
17
+ * Separate from graph properties — opaque content storage.
18
+ */
19
+ data?: JsonSchema;
20
+ }
21
+ /** Concrete class declarations: nodes + edges. */
22
+ export type ClassDecl = NodeDecl | EdgeDecl;
23
+ /** Every declaration kind. */
24
+ export type AnyDecl = InterfaceDecl | NodeDecl | EdgeDecl;
25
+ /**
26
+ * A concrete node declaration.
27
+ * Own properties and methods only — consumer resolves inheritance via `implements`.
28
+ */
29
+ export interface NodeDecl {
30
+ type: 'node';
31
+ /** Unique name within the schema. */
32
+ name: string;
33
+ /**
34
+ * Parent type names (interfaces or concrete nodes).
35
+ * Consumer resolves by looking up the referenced class.
36
+ */
37
+ implements: string[];
38
+ /** Own properties as a map: key = property name, value = JSON Schema. */
39
+ properties: Record<string, PropertyDecl>;
40
+ /** Own methods keyed by name (NOT inherited). */
41
+ methods: Record<string, FunctionDecl>;
42
+ /**
43
+ * Optional datastore content schema (JSON Schema of type object).
44
+ * Separate from graph properties — opaque content storage.
45
+ */
46
+ data?: JsonSchema;
47
+ /**
48
+ * Class-level icon: raw SVG markup materialized onto the class `self` node.
49
+ * Clients resolve an instance's icon through its class.
50
+ */
51
+ icon?: string;
52
+ }
53
+ /**
54
+ * An edge declaration representing a relationship between nodes.
55
+ * Always has exactly two endpoints.
56
+ */
57
+ export interface EdgeDecl {
58
+ type: 'edge';
59
+ /** Unique name within the schema. */
60
+ name: string;
61
+ /** Parent type names (interfaces). Consumer resolves by lookup. */
62
+ implements: string[];
63
+ /** Exactly two endpoints defining the relationship. */
64
+ endpoints: [Endpoint, Endpoint];
65
+ /** Own properties as a map: key = property name, value = JSON Schema. */
66
+ properties: Record<string, PropertyDecl>;
67
+ /** Own methods on the edge, keyed by name. */
68
+ methods: Record<string, FunctionDecl>;
69
+ /** Structural constraints. */
70
+ constraints?: EdgeConstraints;
71
+ }
72
+ //# sourceMappingURL=classes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/ir/classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEhE,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAA;IAEjB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IAEZ,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAA;IAEjB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAExC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAErC;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE3C,8BAA8B;AAC9B,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEzD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IAEZ,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IAEpB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAExC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAErC;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IAEZ,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IAEZ,mEAAmE;IACnE,UAAU,EAAE,MAAM,EAAE,CAAA;IAEpB,uDAAuD;IACvD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE/B,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAExC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAErC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Authoritative domain identity for a schema.
3
+ *
4
+ * A fully-qualified domain name (FQDN) that uniquely identifies the bounded
5
+ * context a schema belongs to. Used for namespacing, lifecycle management,
6
+ * and routing across local and federated graphs.
7
+ *
8
+ * @example 'astrale.core' — kernel meta-model
9
+ * @example 'acme.billing' — third-party distribution
10
+ * @example 'acme.todo' — application domain
11
+ */
12
+ export type DomainOrigin = string;
13
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/ir/domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ /** An edge endpoint defining one side of a relationship. */
2
+ export interface Endpoint {
3
+ /** Role name (e.g., 'task', 'project'). */
4
+ name: string;
5
+ /** Allowed node type names that can connect at this endpoint. */
6
+ types: string[];
7
+ /** Cardinality constraint. Absent = unbounded (0..*). */
8
+ cardinality?: Cardinality;
9
+ }
10
+ /** Min/max cardinality for an edge endpoint. */
11
+ export interface Cardinality {
12
+ min: number;
13
+ /** null = unbounded. */
14
+ max: number | null;
15
+ }
16
+ /** Structural constraints on an edge. */
17
+ export interface EdgeConstraints {
18
+ /** At most one edge between any node pair. */
19
+ unique?: boolean;
20
+ /** Cannot connect a node to itself. */
21
+ noSelf?: boolean;
22
+ /** No cycles — forms a DAG. */
23
+ acyclic?: boolean;
24
+ /** If A→B exists, B→A must also exist. */
25
+ symmetric?: boolean;
26
+ }
27
+ //# sourceMappingURL=endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/ir/endpoints.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IAEZ,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAA;IAEf,yDAAyD;IACzD,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,wBAAwB;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { JsonSchema } from './json-schema.js';
2
+ /** A function declaration: a callable with params and returns. Used as class methods. */
3
+ export interface FunctionDecl {
4
+ /** Function name. */
5
+ name: string;
6
+ /** Parameters keyed by name. Each value is a JSON Schema for that parameter. */
7
+ params: Record<string, JsonSchema>;
8
+ /** Return type as JSON Schema. May contain $nodeRef or $dataRef. */
9
+ returns: JsonSchema;
10
+ /** Whether the return value can be null. Default: false (omitted). */
11
+ returnsNullable?: boolean;
12
+ /** Whether this is a static (class-level) method with no `self`. */
13
+ static: boolean;
14
+ /** Output mode: 'value' (default) = single result, 'stream' = AsyncGenerator, 'binary' = BinaryResult. */
15
+ output?: 'value' | 'stream' | 'binary';
16
+ /** Method inheritance. `'sealed'` = non-overridable, `'abstract'` = no impl, `'default'` = impl provided, overridable. */
17
+ inheritance: 'sealed' | 'abstract' | 'default';
18
+ }
19
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/ir/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAA;IAEZ,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAElC,oEAAoE;IACpE,OAAO,EAAE,UAAU,CAAA;IAEnB,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAA;IAEf,0GAA0G;IAC1G,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAEtC,0HAA0H;IAC1H,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;CAC/C"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export type { SchemaIR } from './ir.js';
2
+ export { allDeclarations } from './ir.js';
3
+ export type { DomainOrigin as Domain } from './domain.js';
4
+ export type { InterfaceDecl, ClassDecl, AnyDecl, NodeDecl, EdgeDecl } from './classes.js';
5
+ export type { JsonSchema, JsonValue, PropertyDecl } from './json-schema.js';
6
+ export type { FunctionDecl } from './functions.js';
7
+ export type { Endpoint, Cardinality, EdgeConstraints } from './endpoints.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,YAAY,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AACzD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACzF,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1 @@
1
+ export { allDeclarations } from './ir.js';
@@ -0,0 +1,63 @@
1
+ import type { ClassDecl, InterfaceDecl, AnyDecl } from './classes.js';
2
+ import type { DomainOrigin } from './domain.js';
3
+ import type { JsonSchema } from './json-schema.js';
4
+ /**
5
+ * TypeGraph Schema IR.
6
+ *
7
+ * Universal, JSON-serializable intermediate representation for graph schemas.
8
+ * Produced by `@astrale-os/kernel-dsl`, consumed by client SDK and kernel.
9
+ *
10
+ * @example
11
+ * ```json
12
+ * {
13
+ * "version": "1.0",
14
+ * "domain": "acme.todo",
15
+ * "imports": { "Identity": "astrale.core" },
16
+ * "interfaces": { "Trackable": { "type": "interface", ... } },
17
+ * "classes": { "TodoItem": { "type": "node", ... } }
18
+ * }
19
+ * ```
20
+ */
21
+ export interface SchemaIR {
22
+ /** IR format version. */
23
+ version: '1.0';
24
+ /**
25
+ * Authoritative domain this schema belongs to (FQDN).
26
+ * @example 'astrale.core', 'acme.billing'
27
+ */
28
+ domain: DomainOrigin;
29
+ /**
30
+ * Cross-domain dependency manifest.
31
+ * Maps each referenced external name to its source domain and whether
32
+ * it is an interface or a class. The `definition` tag is required: the
33
+ * graph form of a domain is the round-trip source of truth, and without
34
+ * it a re-serialization cannot distinguish `class implements interface`
35
+ * from `class extends class` for imported parents.
36
+ *
37
+ * Absent when the schema is self-contained.
38
+ *
39
+ * @example
40
+ * {
41
+ * "Node": { "origin": "astrale.core", "definition": "class" },
42
+ * "Identity": { "origin": "astrale.core", "definition": "interface" }
43
+ * }
44
+ */
45
+ imports?: Record<string, {
46
+ origin: DomainOrigin;
47
+ definition: 'interface' | 'class';
48
+ }>;
49
+ /**
50
+ * Shared type definitions (JSON Schema).
51
+ * Referenced from properties/params via `$ref: '#/types/<name>'`.
52
+ *
53
+ * @example { "Priority": { "enum": ["low", "medium", "high"] } }
54
+ */
55
+ types: Record<string, JsonSchema>;
56
+ /** Interface declarations (abstract types). */
57
+ interfaces: Record<string, InterfaceDecl>;
58
+ /** Concrete class declarations (nodes + edges). */
59
+ classes: Record<string, ClassDecl>;
60
+ }
61
+ /** Merge interfaces + classes for lookups that need all declarations. */
62
+ export declare function allDeclarations(schema: SchemaIR): Record<string, AnyDecl>;
63
+ //# sourceMappingURL=ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../src/ir/ir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,QAAQ;IACvB,yBAAyB;IACzB,OAAO,EAAE,KAAK,CAAA;IAEd;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAA;IAEpB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAA;KAAE,CAAC,CAAA;IAErF;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAEjC,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAEzC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACnC;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
package/dist/ir/ir.js ADDED
@@ -0,0 +1,4 @@
1
+ /** Merge interfaces + classes for lookups that need all declarations. */
2
+ export function allDeclarations(schema) {
3
+ return { ...schema.interfaces, ...schema.classes };
4
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Standard JSON Schema object.
3
+ * Any valid JSON Schema is accepted. Custom extensions:
4
+ * - `$nodeRef: string` — references a graph node class
5
+ * - `$dataRef: string` — references datastore content ("self" or a node name)
6
+ */
7
+ export type JsonSchema = Record<string, unknown>;
8
+ /**
9
+ * Property declaration in the IR.
10
+ * A JSON Schema extended with graph-specific metadata.
11
+ * When `private` is absent or false, the property is public.
12
+ */
13
+ export type PropertyDecl = JsonSchema & {
14
+ private?: true;
15
+ };
16
+ /** JSON-serializable value type. Used for computed default arguments. */
17
+ export type JsonValue = string | number | boolean | null | JsonValue[] | {
18
+ [key: string]: JsonValue;
19
+ };
20
+ //# sourceMappingURL=json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/ir/json-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAE1D,yEAAyE;AACzE,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { type AnyDef } from '../grammar/definition/discriminants.js';
2
+ /**
3
+ * Validate that each definition's `__kind` matches its declared group.
4
+ * Abstract defs (node-interface, edge-interface) must be in `interfaces`.
5
+ * Concrete defs (node-class, edge-class) must be in `classes`.
6
+ */
7
+ export declare function classifyDefs(interfaces: Record<string, AnyDef>, classes: Record<string, AnyDef>): void;
8
+ //# sourceMappingURL=classify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/schema/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,MAAM,EAAE,MAAM,wCAAwC,CAAA;AAG5F;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,IAAI,CAsBN"}
@@ -0,0 +1,19 @@
1
+ import { isAbstract, isConcrete } from '../grammar/definition/discriminants.js';
2
+ import { SchemaValidationError } from './error.js';
3
+ /**
4
+ * Validate that each definition's `__kind` matches its declared group.
5
+ * Abstract defs (node-interface, edge-interface) must be in `interfaces`.
6
+ * Concrete defs (node-class, edge-class) must be in `classes`.
7
+ */
8
+ export function classifyDefs(interfaces, classes) {
9
+ for (const [name, def] of Object.entries(interfaces)) {
10
+ if (!isAbstract(def)) {
11
+ throw new SchemaValidationError(`Definition '${name}' in 'interfaces' has kind '${def.__kind}' — expected a node-interface or edge-interface`, `interfaces.${name}`, 'node-interface | edge-interface', def.__kind);
12
+ }
13
+ }
14
+ for (const [name, def] of Object.entries(classes)) {
15
+ if (!isConcrete(def)) {
16
+ throw new SchemaValidationError(`Definition '${name}' in 'classes' has kind '${def.__kind}' — expected a node-class or edge-class`, `classes.${name}`, 'node-class | edge-class', def.__kind);
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import type { AnyInterfaceDef, AnyClassDef } from '../grammar/definition/discriminants.js';
2
+ import type { Schema } from './schema.js';
3
+ interface DefineSchemaInput<I extends Record<string, AnyInterfaceDef>, C extends Record<string, AnyClassDef>> {
4
+ readonly interfaces: I;
5
+ readonly classes: C;
6
+ readonly imports?: readonly Schema[];
7
+ }
8
+ /**
9
+ * Define a typed property graph schema.
10
+ *
11
+ * @param domain - The domain identifier (e.g., 'my-domain.com')
12
+ * @param input - The schema definition with interfaces and classes groups
13
+ * @returns A fully validated and resolved Schema object
14
+ */
15
+ export declare function defineSchema<const D extends string, const I extends Record<string, AnyInterfaceDef>, const C extends Record<string, AnyClassDef>>(domain: D, input: DefineSchemaInput<I, C>): Schema<I, C> & {
16
+ readonly domain: D;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/schema/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAOzC,UAAU,iBAAiB,CACzB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACzC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAErC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC/C,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAC3C,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAyClF"}
@@ -0,0 +1,47 @@
1
+ import { classifyDefs } from './classify.js';
2
+ import { buildDefDescriptorMap, buildMethodRefs, eachDef } from './refs.js';
3
+ import { resolveConfigThunks, resolveParamThunks, resolveSelfReferences } from './resolve/index.js';
4
+ import { validateSchema } from './validators/index.js';
5
+ /**
6
+ * Define a typed property graph schema.
7
+ *
8
+ * @param domain - The domain identifier (e.g., 'my-domain.com')
9
+ * @param input - The schema definition with interfaces and classes groups
10
+ * @returns A fully validated and resolved Schema object
11
+ */
12
+ export function defineSchema(domain, input) {
13
+ const interfaces = input.interfaces;
14
+ const classes = input.classes;
15
+ const imports = input.imports ?? [];
16
+ // Phase 1: Resolve thunks and self-references.
17
+ // Iterate both groups without collapsing same-named defs (a class and an
18
+ // interface may share a name, e.g. `Function`) — see `eachDef`.
19
+ for (const [name, def] of eachDef(interfaces, classes)) {
20
+ resolveConfigThunks(name, def);
21
+ resolveParamThunks(name, def);
22
+ resolveSelfReferences(def);
23
+ }
24
+ // Phase 2: Classify — validate __kind matches group
25
+ classifyDefs(interfaces, classes);
26
+ // Phase 3: Build identity map for validation lookups
27
+ const schema = {
28
+ domain,
29
+ interfaces,
30
+ classes,
31
+ functions: {},
32
+ imports,
33
+ };
34
+ const descriptorMap = buildDefDescriptorMap(schema);
35
+ // Phase 4: Validate
36
+ const ctx = { domain, interfaces, classes, imports, descriptorMap };
37
+ validateSchema(ctx);
38
+ // Phase 5: Build method refs
39
+ const fns = buildMethodRefs(schema);
40
+ return {
41
+ domain,
42
+ interfaces,
43
+ classes,
44
+ functions: fns,
45
+ imports,
46
+ };
47
+ }
@@ -0,0 +1,8 @@
1
+ /** Structured error for schema validation failures */
2
+ export declare class SchemaValidationError extends Error {
3
+ readonly field: string;
4
+ readonly expected?: string | undefined;
5
+ readonly received?: string | undefined;
6
+ constructor(message: string, field: string, expected?: string | undefined, received?: string | undefined);
7
+ }
8
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/schema/error.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,qBAAa,qBAAsB,SAAQ,KAAK;aAG5B,KAAK,EAAE,MAAM;aACb,QAAQ,CAAC,EAAE,MAAM;aACjB,QAAQ,CAAC,EAAE,MAAM;IAJnC,YACE,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EAIlC;CACF"}
@@ -0,0 +1,13 @@
1
+ /** Structured error for schema validation failures */
2
+ export class SchemaValidationError extends Error {
3
+ field;
4
+ expected;
5
+ received;
6
+ constructor(message, field, expected, received) {
7
+ super(message);
8
+ this.field = field;
9
+ this.expected = expected;
10
+ this.received = received;
11
+ this.name = 'SchemaValidationError';
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ export { SchemaValidationError } from './error.js';
2
+ export type { Schema } from './schema.js';
3
+ export { defineSchema } from './define.js';
4
+ export { classifyDefs } from './classify.js';
5
+ export { defRef, parseDefRef, methodRef, buildDescriptorMap, buildDefDescriptorMap, buildMethodRefs, findDefTransitive, isKnownDef, type DefRef, type MethodRef, type KindSegment, type DefDescriptor, type InterfaceRefs, type ClassRefs, type AllDefRefs, } from './refs.js';
6
+ export { resolveAllMethods, resolveAllProperties, resolveAllPropertyKeys } from './resolve/index.js';
7
+ export type { SchemaContext } from './validators/context.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACpG,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { SchemaValidationError } from './error.js';
2
+ export { defineSchema } from './define.js';
3
+ export { classifyDefs } from './classify.js';
4
+ export { defRef, parseDefRef, methodRef, buildDescriptorMap, buildDefDescriptorMap, buildMethodRefs, findDefTransitive, isKnownDef, } from './refs.js';
5
+ export { resolveAllMethods, resolveAllProperties, resolveAllPropertyKeys } from './resolve/index.js';
@@ -0,0 +1,80 @@
1
+ import type { AnyDef } from '../grammar/definition/discriminants.js';
2
+ import type { FnDef } from '../grammar/function/def.js';
3
+ import type { Schema } from './schema.js';
4
+ /** Kind segment for refs */
5
+ export type KindSegment = 'interface' | 'class';
6
+ /** Separator used in ref strings (package-level constant) */
7
+ export declare const REF_SEPARATOR = ".";
8
+ /** A domain-local definition ref: `i.Name` or `c.Name` */
9
+ export type DefRef<K extends KindSegment = KindSegment, N extends string = string> = `${K}.${N}`;
10
+ /** A qualified method ref: `i.Name.method` or `c.Name.method` */
11
+ export type MethodRef<K extends KindSegment = KindSegment, N extends string = string, M extends string = string> = `${K}.${N}.${M}`;
12
+ /** Build a DefRef string */
13
+ export declare function defRef<K extends KindSegment, N extends string>(kind: K, name: N): DefRef<K, N>;
14
+ /**
15
+ * Parse a DefRef (`class.Name` / `interface.Name`) back into its kind + bare
16
+ * name. Member names never contain the separator, so a single split on the
17
+ * first `.` is exact. Inverse of {@link defRef}.
18
+ */
19
+ export declare function parseDefRef(ref: DefRef): {
20
+ kind: KindSegment;
21
+ name: string;
22
+ };
23
+ /** Build a MethodRef string */
24
+ export declare function methodRef<K extends KindSegment, N extends string, M extends string>(kind: K, name: N, method: M): MethodRef<K, N, M>;
25
+ /** Schema-scoped descriptor: reverse lookup from def object to its group/name/ref */
26
+ export interface DefDescriptor {
27
+ readonly group: KindSegment;
28
+ readonly name: string;
29
+ readonly ref: DefRef;
30
+ }
31
+ /**
32
+ * Build a reverse map from def objects to their descriptor.
33
+ * Used for schema-scoped lookups.
34
+ */
35
+ export declare function buildDescriptorMap(schema: Schema): Map<AnyDef, DefDescriptor>;
36
+ /**
37
+ * Build a combined descriptor map that includes both the schema's own defs and all imports.
38
+ * Call once, then pass to isKnownDef for O(1) lookups.
39
+ */
40
+ export declare function buildDefDescriptorMap(schema: Schema): Map<AnyDef, DefDescriptor>;
41
+ /** Check if a def exists in the descriptor map */
42
+ export declare function isKnownDef(def: object, descriptorMap: Map<AnyDef, DefDescriptor>): boolean;
43
+ /**
44
+ * Walk `schema.imports` transitively (BFS, cycle-safe) and find the declaring
45
+ * schema of `target`. Returns the schema's origin plus the chain of origins
46
+ * traversed to reach it (e.g. `['a.com', 'b.com']` if `target` lives in `b.com`
47
+ * which was imported by `a.com` which was imported by the root). Returns
48
+ * `null` if `target` is not reachable through any import chain.
49
+ *
50
+ * Used by error diagnostics to distinguish "def from transitively-imported
51
+ * schema" from "def from no known schema".
52
+ */
53
+ export declare function findDefTransitive(root: Schema, target: AnyDef): {
54
+ origin: string;
55
+ path: string[];
56
+ } | null;
57
+ /** Build a flat map of all qualified method refs: `{group}.{name}.{method}` → FnDef */
58
+ export declare function buildMethodRefs(schema: Schema): Record<string, FnDef>;
59
+ /**
60
+ * Iterate every def across both groups (interfaces first, then classes)
61
+ * WITHOUT collapsing same-named defs.
62
+ *
63
+ * Unlike `{ ...interfaces, ...classes }`, this preserves a class and an
64
+ * interface that share a name (e.g. the `Function` interface + the `Function`
65
+ * node class): both are yielded, so neither is silently dropped from a
66
+ * resolution or validation pass. For schemas with names unique across groups
67
+ * the behaviour is identical to the old spread.
68
+ */
69
+ export declare function eachDef(interfaces: Record<string, AnyDef>, classes: Record<string, AnyDef>): Array<[string, AnyDef]>;
70
+ /** All interface DefRefs from a schema */
71
+ export type InterfaceRefs<S extends Schema> = {
72
+ [K in keyof S['interfaces'] & string]: DefRef<'interface', K>;
73
+ }[keyof S['interfaces'] & string];
74
+ /** All class DefRefs from a schema */
75
+ export type ClassRefs<S extends Schema> = {
76
+ [K in keyof S['classes'] & string]: DefRef<'class', K>;
77
+ }[keyof S['classes'] & string];
78
+ /** All DefRefs from a schema */
79
+ export type AllDefRefs<S extends Schema> = InterfaceRefs<S> | ClassRefs<S>;
80
+ //# sourceMappingURL=refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/schema/refs.ts"],"names":[],"mappings":"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"}