@dryvcode/author 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/README.md +341 -0
  2. package/dist/behavior/duration.d.ts +7 -0
  3. package/dist/behavior/duration.d.ts.map +1 -0
  4. package/dist/behavior/duration.js +20 -0
  5. package/dist/behavior/duration.js.map +1 -0
  6. package/dist/behavior/event.d.ts +23 -0
  7. package/dist/behavior/event.d.ts.map +1 -0
  8. package/dist/behavior/event.js +57 -0
  9. package/dist/behavior/event.js.map +1 -0
  10. package/dist/behavior/failure.d.ts +19 -0
  11. package/dist/behavior/failure.d.ts.map +1 -0
  12. package/dist/behavior/failure.js +48 -0
  13. package/dist/behavior/failure.js.map +1 -0
  14. package/dist/behavior/index.d.ts +6 -0
  15. package/dist/behavior/index.d.ts.map +1 -0
  16. package/dist/behavior/index.js +6 -0
  17. package/dist/behavior/index.js.map +1 -0
  18. package/dist/behavior/operation.d.ts +72 -0
  19. package/dist/behavior/operation.d.ts.map +1 -0
  20. package/dist/behavior/operation.js +193 -0
  21. package/dist/behavior/operation.js.map +1 -0
  22. package/dist/behavior/policy.d.ts +29 -0
  23. package/dist/behavior/policy.d.ts.map +1 -0
  24. package/dist/behavior/policy.js +80 -0
  25. package/dist/behavior/policy.js.map +1 -0
  26. package/dist/composition/application.d.ts +28 -0
  27. package/dist/composition/application.d.ts.map +1 -0
  28. package/dist/composition/application.js +64 -0
  29. package/dist/composition/application.js.map +1 -0
  30. package/dist/composition/feature.d.ts +37 -0
  31. package/dist/composition/feature.d.ts.map +1 -0
  32. package/dist/composition/feature.js +82 -0
  33. package/dist/composition/feature.js.map +1 -0
  34. package/dist/composition/index.d.ts +3 -0
  35. package/dist/composition/index.d.ts.map +1 -0
  36. package/dist/composition/index.js +3 -0
  37. package/dist/composition/index.js.map +1 -0
  38. package/dist/contracts/behavior.d.ts +106 -0
  39. package/dist/contracts/behavior.d.ts.map +1 -0
  40. package/dist/contracts/behavior.js +2 -0
  41. package/dist/contracts/behavior.js.map +1 -0
  42. package/dist/contracts/composition.d.ts +20 -0
  43. package/dist/contracts/composition.d.ts.map +1 -0
  44. package/dist/contracts/composition.js +2 -0
  45. package/dist/contracts/composition.js.map +1 -0
  46. package/dist/contracts/definitions.d.ts +286 -0
  47. package/dist/contracts/definitions.d.ts.map +1 -0
  48. package/dist/contracts/definitions.js +35 -0
  49. package/dist/contracts/definitions.js.map +1 -0
  50. package/dist/contracts/expressions.d.ts +44 -0
  51. package/dist/contracts/expressions.d.ts.map +1 -0
  52. package/dist/contracts/expressions.js +2 -0
  53. package/dist/contracts/expressions.js.map +1 -0
  54. package/dist/contracts/foundation.d.ts +141 -0
  55. package/dist/contracts/foundation.d.ts.map +1 -0
  56. package/dist/contracts/foundation.js +2 -0
  57. package/dist/contracts/foundation.js.map +1 -0
  58. package/dist/contracts/index.d.ts +10 -0
  59. package/dist/contracts/index.d.ts.map +1 -0
  60. package/dist/contracts/index.js +10 -0
  61. package/dist/contracts/index.js.map +1 -0
  62. package/dist/contracts/interaction.d.ts +52 -0
  63. package/dist/contracts/interaction.d.ts.map +1 -0
  64. package/dist/contracts/interaction.js +2 -0
  65. package/dist/contracts/interaction.js.map +1 -0
  66. package/dist/contracts/interfaces.d.ts +73 -0
  67. package/dist/contracts/interfaces.d.ts.map +1 -0
  68. package/dist/contracts/interfaces.js +2 -0
  69. package/dist/contracts/interfaces.js.map +1 -0
  70. package/dist/contracts/orchestration.d.ts +56 -0
  71. package/dist/contracts/orchestration.d.ts.map +1 -0
  72. package/dist/contracts/orchestration.js +2 -0
  73. package/dist/contracts/orchestration.js.map +1 -0
  74. package/dist/contracts/project.d.ts +70 -0
  75. package/dist/contracts/project.d.ts.map +1 -0
  76. package/dist/contracts/project.js +2 -0
  77. package/dist/contracts/project.js.map +1 -0
  78. package/dist/data/index.d.ts +2 -0
  79. package/dist/data/index.d.ts.map +1 -0
  80. package/dist/data/index.js +2 -0
  81. package/dist/data/index.js.map +1 -0
  82. package/dist/data/storage.d.ts +23 -0
  83. package/dist/data/storage.d.ts.map +1 -0
  84. package/dist/data/storage.js +93 -0
  85. package/dist/data/storage.js.map +1 -0
  86. package/dist/definitions/expressions/expression.d.ts +49 -0
  87. package/dist/definitions/expressions/expression.d.ts.map +1 -0
  88. package/dist/definitions/expressions/expression.js +181 -0
  89. package/dist/definitions/expressions/expression.js.map +1 -0
  90. package/dist/definitions/expressions/index.d.ts +2 -0
  91. package/dist/definitions/expressions/index.d.ts.map +1 -0
  92. package/dist/definitions/expressions/index.js +2 -0
  93. package/dist/definitions/expressions/index.js.map +1 -0
  94. package/dist/definitions/index.d.ts +7 -0
  95. package/dist/definitions/index.d.ts.map +1 -0
  96. package/dist/definitions/index.js +7 -0
  97. package/dist/definitions/index.js.map +1 -0
  98. package/dist/definitions/properties/advanced.d.ts +27 -0
  99. package/dist/definitions/properties/advanced.d.ts.map +1 -0
  100. package/dist/definitions/properties/advanced.js +95 -0
  101. package/dist/definitions/properties/advanced.js.map +1 -0
  102. package/dist/definitions/properties/base.d.ts +29 -0
  103. package/dist/definitions/properties/base.d.ts.map +1 -0
  104. package/dist/definitions/properties/base.js +60 -0
  105. package/dist/definitions/properties/base.js.map +1 -0
  106. package/dist/definitions/properties/composite.d.ts +14 -0
  107. package/dist/definitions/properties/composite.d.ts.map +1 -0
  108. package/dist/definitions/properties/composite.js +41 -0
  109. package/dist/definitions/properties/composite.js.map +1 -0
  110. package/dist/definitions/properties/enumeration.d.ts +17 -0
  111. package/dist/definitions/properties/enumeration.d.ts.map +1 -0
  112. package/dist/definitions/properties/enumeration.js +48 -0
  113. package/dist/definitions/properties/enumeration.js.map +1 -0
  114. package/dist/definitions/properties/generic.d.ts +22 -0
  115. package/dist/definitions/properties/generic.d.ts.map +1 -0
  116. package/dist/definitions/properties/generic.js +61 -0
  117. package/dist/definitions/properties/generic.js.map +1 -0
  118. package/dist/definitions/properties/index.d.ts +12 -0
  119. package/dist/definitions/properties/index.d.ts.map +1 -0
  120. package/dist/definitions/properties/index.js +3 -0
  121. package/dist/definitions/properties/index.js.map +1 -0
  122. package/dist/definitions/properties/metadata.d.ts +6 -0
  123. package/dist/definitions/properties/metadata.d.ts.map +1 -0
  124. package/dist/definitions/properties/metadata.js +4 -0
  125. package/dist/definitions/properties/metadata.js.map +1 -0
  126. package/dist/definitions/properties/primitive.d.ts +66 -0
  127. package/dist/definitions/properties/primitive.d.ts.map +1 -0
  128. package/dist/definitions/properties/primitive.js +266 -0
  129. package/dist/definitions/properties/primitive.js.map +1 -0
  130. package/dist/definitions/properties/property.d.ts +171 -0
  131. package/dist/definitions/properties/property.d.ts.map +1 -0
  132. package/dist/definitions/properties/property.js +211 -0
  133. package/dist/definitions/properties/property.js.map +1 -0
  134. package/dist/definitions/properties/temporal.d.ts +37 -0
  135. package/dist/definitions/properties/temporal.d.ts.map +1 -0
  136. package/dist/definitions/properties/temporal.js +115 -0
  137. package/dist/definitions/properties/temporal.js.map +1 -0
  138. package/dist/definitions/schemas/field.d.ts +123 -0
  139. package/dist/definitions/schemas/field.d.ts.map +1 -0
  140. package/dist/definitions/schemas/field.js +329 -0
  141. package/dist/definitions/schemas/field.js.map +1 -0
  142. package/dist/definitions/schemas/index.d.ts +6 -0
  143. package/dist/definitions/schemas/index.d.ts.map +1 -0
  144. package/dist/definitions/schemas/index.js +6 -0
  145. package/dist/definitions/schemas/index.js.map +1 -0
  146. package/dist/definitions/schemas/projection.d.ts +90 -0
  147. package/dist/definitions/schemas/projection.d.ts.map +1 -0
  148. package/dist/definitions/schemas/projection.js +146 -0
  149. package/dist/definitions/schemas/projection.js.map +1 -0
  150. package/dist/definitions/schemas/relation.d.ts +12 -0
  151. package/dist/definitions/schemas/relation.d.ts.map +1 -0
  152. package/dist/definitions/schemas/relation.js +27 -0
  153. package/dist/definitions/schemas/relation.js.map +1 -0
  154. package/dist/definitions/schemas/schema.d.ts +46 -0
  155. package/dist/definitions/schemas/schema.d.ts.map +1 -0
  156. package/dist/definitions/schemas/schema.js +134 -0
  157. package/dist/definitions/schemas/schema.js.map +1 -0
  158. package/dist/definitions/schemas/source.d.ts +30 -0
  159. package/dist/definitions/schemas/source.d.ts.map +1 -0
  160. package/dist/definitions/schemas/source.js +73 -0
  161. package/dist/definitions/schemas/source.js.map +1 -0
  162. package/dist/definitions/types/expressions.d.ts +28 -0
  163. package/dist/definitions/types/expressions.d.ts.map +1 -0
  164. package/dist/definitions/types/expressions.js +81 -0
  165. package/dist/definitions/types/expressions.js.map +1 -0
  166. package/dist/definitions/types/index.d.ts +4 -0
  167. package/dist/definitions/types/index.d.ts.map +1 -0
  168. package/dist/definitions/types/index.js +4 -0
  169. package/dist/definitions/types/index.js.map +1 -0
  170. package/dist/definitions/types/parameter.d.ts +9 -0
  171. package/dist/definitions/types/parameter.d.ts.map +1 -0
  172. package/dist/definitions/types/parameter.js +24 -0
  173. package/dist/definitions/types/parameter.js.map +1 -0
  174. package/dist/definitions/types/spec.d.ts +26 -0
  175. package/dist/definitions/types/spec.d.ts.map +1 -0
  176. package/dist/definitions/types/spec.js +74 -0
  177. package/dist/definitions/types/spec.js.map +1 -0
  178. package/dist/foundation/declaration.d.ts +24 -0
  179. package/dist/foundation/declaration.d.ts.map +1 -0
  180. package/dist/foundation/declaration.js +43 -0
  181. package/dist/foundation/declaration.js.map +1 -0
  182. package/dist/foundation/group.d.ts +55 -0
  183. package/dist/foundation/group.d.ts.map +1 -0
  184. package/dist/foundation/group.js +199 -0
  185. package/dist/foundation/group.js.map +1 -0
  186. package/dist/foundation/index.d.ts +7 -0
  187. package/dist/foundation/index.d.ts.map +1 -0
  188. package/dist/foundation/index.js +7 -0
  189. package/dist/foundation/index.js.map +1 -0
  190. package/dist/foundation/metadata.d.ts +22 -0
  191. package/dist/foundation/metadata.d.ts.map +1 -0
  192. package/dist/foundation/metadata.js +43 -0
  193. package/dist/foundation/metadata.js.map +1 -0
  194. package/dist/foundation/ref.d.ts +200 -0
  195. package/dist/foundation/ref.d.ts.map +1 -0
  196. package/dist/foundation/ref.js +230 -0
  197. package/dist/foundation/ref.js.map +1 -0
  198. package/dist/foundation/scope.d.ts +13 -0
  199. package/dist/foundation/scope.d.ts.map +1 -0
  200. package/dist/foundation/scope.js +63 -0
  201. package/dist/foundation/scope.js.map +1 -0
  202. package/dist/foundation/value-declaration.d.ts +9 -0
  203. package/dist/foundation/value-declaration.d.ts.map +1 -0
  204. package/dist/foundation/value-declaration.js +2 -0
  205. package/dist/foundation/value-declaration.js.map +1 -0
  206. package/dist/index.d.ts +16 -0
  207. package/dist/index.d.ts.map +1 -0
  208. package/dist/index.js +15 -0
  209. package/dist/index.js.map +1 -0
  210. package/dist/interaction/index.d.ts +3 -0
  211. package/dist/interaction/index.d.ts.map +1 -0
  212. package/dist/interaction/index.js +3 -0
  213. package/dist/interaction/index.js.map +1 -0
  214. package/dist/interaction/part.d.ts +58 -0
  215. package/dist/interaction/part.d.ts.map +1 -0
  216. package/dist/interaction/part.js +178 -0
  217. package/dist/interaction/part.js.map +1 -0
  218. package/dist/interaction/view.d.ts +34 -0
  219. package/dist/interaction/view.d.ts.map +1 -0
  220. package/dist/interaction/view.js +109 -0
  221. package/dist/interaction/view.js.map +1 -0
  222. package/dist/interfaces/facet.d.ts +6 -0
  223. package/dist/interfaces/facet.d.ts.map +1 -0
  224. package/dist/interfaces/facet.js +2 -0
  225. package/dist/interfaces/facet.js.map +1 -0
  226. package/dist/interfaces/http.d.ts +39 -0
  227. package/dist/interfaces/http.d.ts.map +1 -0
  228. package/dist/interfaces/http.js +109 -0
  229. package/dist/interfaces/http.js.map +1 -0
  230. package/dist/interfaces/index.d.ts +7 -0
  231. package/dist/interfaces/index.d.ts.map +1 -0
  232. package/dist/interfaces/index.js +7 -0
  233. package/dist/interfaces/index.js.map +1 -0
  234. package/dist/interfaces/representation.d.ts +14 -0
  235. package/dist/interfaces/representation.d.ts.map +1 -0
  236. package/dist/interfaces/representation.js +25 -0
  237. package/dist/interfaces/representation.js.map +1 -0
  238. package/dist/interfaces/schedule.d.ts +14 -0
  239. package/dist/interfaces/schedule.d.ts.map +1 -0
  240. package/dist/interfaces/schedule.js +46 -0
  241. package/dist/interfaces/schedule.js.map +1 -0
  242. package/dist/interfaces/surface.d.ts +22 -0
  243. package/dist/interfaces/surface.d.ts.map +1 -0
  244. package/dist/interfaces/surface.js +44 -0
  245. package/dist/interfaces/surface.js.map +1 -0
  246. package/dist/interfaces/websocket.d.ts +11 -0
  247. package/dist/interfaces/websocket.d.ts.map +1 -0
  248. package/dist/interfaces/websocket.js +25 -0
  249. package/dist/interfaces/websocket.js.map +1 -0
  250. package/dist/orchestration/index.d.ts +4 -0
  251. package/dist/orchestration/index.d.ts.map +1 -0
  252. package/dist/orchestration/index.js +4 -0
  253. package/dist/orchestration/index.js.map +1 -0
  254. package/dist/orchestration/steps.d.ts +41 -0
  255. package/dist/orchestration/steps.d.ts.map +1 -0
  256. package/dist/orchestration/steps.js +105 -0
  257. package/dist/orchestration/steps.js.map +1 -0
  258. package/dist/orchestration/value-source.d.ts +8 -0
  259. package/dist/orchestration/value-source.d.ts.map +1 -0
  260. package/dist/orchestration/value-source.js +10 -0
  261. package/dist/orchestration/value-source.js.map +1 -0
  262. package/dist/orchestration/workflow.d.ts +38 -0
  263. package/dist/orchestration/workflow.d.ts.map +1 -0
  264. package/dist/orchestration/workflow.js +116 -0
  265. package/dist/orchestration/workflow.js.map +1 -0
  266. package/dist/project/index.d.ts +2 -0
  267. package/dist/project/index.d.ts.map +1 -0
  268. package/dist/project/index.js +2 -0
  269. package/dist/project/index.js.map +1 -0
  270. package/dist/project/project.d.ts +27 -0
  271. package/dist/project/project.d.ts.map +1 -0
  272. package/dist/project/project.js +161 -0
  273. package/dist/project/project.js.map +1 -0
  274. package/dist/project/registry.d.ts +33 -0
  275. package/dist/project/registry.d.ts.map +1 -0
  276. package/dist/project/registry.js +58 -0
  277. package/dist/project/registry.js.map +1 -0
  278. package/dist/project/snapshot.d.ts +4 -0
  279. package/dist/project/snapshot.d.ts.map +1 -0
  280. package/dist/project/snapshot.js +15 -0
  281. package/dist/project/snapshot.js.map +1 -0
  282. package/dist/version.d.ts +3 -0
  283. package/dist/version.d.ts.map +1 -0
  284. package/dist/version.js +3 -0
  285. package/dist/version.js.map +1 -0
  286. package/package.json +49 -0
@@ -0,0 +1,146 @@
1
+ import { requireText } from "../../foundation/metadata.js";
2
+ function normalizeUsage(value) {
3
+ if (value.array !== undefined && value.array !== false) {
4
+ const { min, max } = value.array;
5
+ for (const [name, item] of [
6
+ ["min", min],
7
+ ["max", max],
8
+ ]) {
9
+ if (item !== undefined && (!Number.isInteger(item) || item < 0)) {
10
+ throw new TypeError(`projection array ${name} must be a non-negative integer`);
11
+ }
12
+ }
13
+ if (min !== undefined && max !== undefined && min > max) {
14
+ throw new TypeError("projection array min must not exceed max");
15
+ }
16
+ }
17
+ return {
18
+ ...(value.optional === undefined ? {} : { optional: value.optional }),
19
+ ...(value.nullable === undefined ? {} : { nullable: value.nullable }),
20
+ ...(value.array === undefined
21
+ ? {}
22
+ : {
23
+ array: value.array === false ? false : { ...value.array },
24
+ }),
25
+ };
26
+ }
27
+ /**
28
+ * Author-only projection selector. Pick/omit/rename/usage are intentionally
29
+ * resolved by the compiler into Runtime IR's explicit projection.fields map.
30
+ */
31
+ export class ProjectionDeclaration {
32
+ #source;
33
+ _purpose = "custom";
34
+ _policies = [];
35
+ _pick;
36
+ _omit;
37
+ _rename = {};
38
+ _usage = {};
39
+ constructor(source) {
40
+ this.#source = source;
41
+ }
42
+ sourceField(name) {
43
+ for (const [source, output] of Object.entries(this._rename)) {
44
+ if (output === name)
45
+ return source;
46
+ }
47
+ return name;
48
+ }
49
+ purpose(value) {
50
+ this._purpose = value;
51
+ return this;
52
+ }
53
+ read() {
54
+ return this.purpose("read");
55
+ }
56
+ create() {
57
+ return this.purpose("create");
58
+ }
59
+ edit() {
60
+ return this.purpose("edit");
61
+ }
62
+ query() {
63
+ return this.purpose("query");
64
+ }
65
+ custom() {
66
+ return this.purpose("custom");
67
+ }
68
+ policies(...values) {
69
+ this._policies = [...values];
70
+ return this;
71
+ }
72
+ pick(...fields) {
73
+ if (this._omit !== undefined) {
74
+ throw new TypeError("projection cannot combine pick and omit selectors");
75
+ }
76
+ if (fields.length === 0) {
77
+ throw new TypeError("projection pick requires at least one field");
78
+ }
79
+ if (new Set(fields).size !== fields.length) {
80
+ throw new TypeError("projection pick fields must be unique");
81
+ }
82
+ this._pick = fields.map((field) => this.sourceField(field));
83
+ return this;
84
+ }
85
+ omit(...fields) {
86
+ if (this._pick !== undefined) {
87
+ throw new TypeError("projection cannot combine pick and omit selectors");
88
+ }
89
+ if (fields.length === 0) {
90
+ throw new TypeError("projection omit requires at least one field");
91
+ }
92
+ if (new Set(fields).size !== fields.length) {
93
+ throw new TypeError("projection omit fields must be unique");
94
+ }
95
+ this._omit = fields.map((field) => this.sourceField(field));
96
+ return this;
97
+ }
98
+ rename(values) {
99
+ const outputs = new Set();
100
+ for (const [current, output] of Object.entries(values).sort(([a], [b]) => a.localeCompare(b))) {
101
+ if (output === undefined)
102
+ continue;
103
+ const name = requireText(output, "projection output field");
104
+ if (outputs.has(name)) {
105
+ throw new TypeError(`duplicate projection output field: ${name}`);
106
+ }
107
+ outputs.add(name);
108
+ const source = this.sourceField(current);
109
+ this._rename[source] = name;
110
+ }
111
+ return this;
112
+ }
113
+ usage(values) {
114
+ const mapped = { ...this._usage };
115
+ for (const [field, usage] of Object.entries(values).sort(([a], [b]) => a.localeCompare(b))) {
116
+ if (usage !== undefined) {
117
+ mapped[this.sourceField(field)] = normalizeUsage(usage);
118
+ }
119
+ }
120
+ this._usage = mapped;
121
+ return this;
122
+ }
123
+ toState() {
124
+ return {
125
+ source: this.#source.ref(),
126
+ purpose: this._purpose,
127
+ ...(this._policies.length === 0
128
+ ? {}
129
+ : { policies: this._policies.map((value) => value.ref()) }),
130
+ selection: {
131
+ ...(this._pick === undefined ? {} : { pick: [...this._pick] }),
132
+ ...(this._omit === undefined ? {} : { omit: [...this._omit] }),
133
+ ...(Object.keys(this._rename).length === 0
134
+ ? {}
135
+ : { rename: { ...this._rename } }),
136
+ ...(Object.keys(this._usage).length === 0
137
+ ? {}
138
+ : { usage: { ...this._usage } }),
139
+ },
140
+ };
141
+ }
142
+ }
143
+ export function projection(source) {
144
+ return new ProjectionDeclaration(source);
145
+ }
146
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/definitions/schemas/projection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA+LpD,SAAS,cAAc,CAAC,KAA2B;IACjD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;YACzB,CAAC,KAAK,EAAE,GAAG,CAAC;YACZ,CAAC,KAAK,EAAE,GAAG,CAAC;SACJ,EAAE,CAAC;YACX,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,SAAS,CACjB,oBAAoB,IAAI,iCAAiC,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACxD,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;aAC1D,CAAC;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAKvB,OAAO,CAA2B;IACnC,QAAQ,GAA2B,QAAQ,CAAC;IAC5C,SAAS,GAAgB,EAAE,CAAC;IAC5B,KAAK,CAAY;IACjB,KAAK,CAAY;IACjB,OAAO,GAA2B,EAAE,CAAC;IACrC,MAAM,GAAyC,EAAE,CAAC;IAE1D,YAAY,MAAgC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAQ;QAER,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,OAAO,IAGN,CAAC;IACJ,CAAC;IAED,IAAI;QAIF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM;QAIJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QAIF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK;QAIH,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAG3B,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,GAAG,MAA4B;QACtC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CACF,GAAG,MAAoB;QAEvB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,OAAO,IAGN,CAAC;IACJ,CAAC;IAED,IAAI,CACF,GAAG,MAAoB;QAEvB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,OAAO,IAGN,CAAC;IACJ,CAAC;IAED,MAAM,CAKJ,MAAY;QAEZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACvE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,EAAE,CAAC;YACF,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,SAAS,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAGN,CAAC;IACJ,CAAC;IAED,KAAK,CAKH,MAAc;QAEd,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,EAAE,CAAC;YACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAGN,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAC7B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC7D,SAAS,EAAE;gBACT,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;oBACxC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;oBACvC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;aACnC;SACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CACxB,MAA0B;IAE1B,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RelationCardinalityState, RelationLifecycleState } from "../../contracts/index.js";
2
+ export declare const relation: Readonly<{
3
+ oneToOne(): RelationCardinalityState;
4
+ oneToMany(): RelationCardinalityState;
5
+ manyToOne(): RelationCardinalityState;
6
+ manyToMany(): RelationCardinalityState;
7
+ restrict(): RelationLifecycleState;
8
+ cascade(): RelationLifecycleState;
9
+ detach(): RelationLifecycleState;
10
+ reset(): RelationLifecycleState;
11
+ }>;
12
+ //# sourceMappingURL=relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../../src/definitions/schemas/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,QAAQ;gBACP,wBAAwB;iBAGvB,wBAAwB;iBAGxB,wBAAwB;kBAGvB,wBAAwB;gBAG1B,sBAAsB;eAGvB,sBAAsB;cAGvB,sBAAsB;aAGvB,sBAAsB;EAG/B,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const relation = Object.freeze({
2
+ oneToOne() {
3
+ return "one-to-one";
4
+ },
5
+ oneToMany() {
6
+ return "one-to-many";
7
+ },
8
+ manyToOne() {
9
+ return "many-to-one";
10
+ },
11
+ manyToMany() {
12
+ return "many-to-many";
13
+ },
14
+ restrict() {
15
+ return "restrict";
16
+ },
17
+ cascade() {
18
+ return "cascade";
19
+ },
20
+ detach() {
21
+ return "detach";
22
+ },
23
+ reset() {
24
+ return "reset";
25
+ },
26
+ });
27
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../../src/definitions/schemas/relation.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,QAAQ;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,SAAS;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,SAAS;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,UAAU;QACR,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,QAAQ;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO;QACL,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM;QACJ,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,KAAK;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { SchemaRoleState } from "../../contracts/index.js";
2
+ import type { CanonicalValue, ExplanationKindState, SchemaState } from "../../contracts/index.js";
3
+ import { type InferSchemaFields, type SchemaFieldMap } from "./field.js";
4
+ import type { ProjectionDeclaration, ProjectionOutputFields, ProjectionSelectionMap } from "./projection.js";
5
+ import type { StorageFacet } from "../../data/storage.js";
6
+ import { Declaration } from "../../foundation/declaration.js";
7
+ import type { ExpressionRef, RefFieldMap, SchemaRef } from "../../foundation/ref.js";
8
+ export interface SchemaFacetsInput<K extends string = string> {
9
+ readonly storage?: StorageFacet<K>;
10
+ }
11
+ export declare class SchemaDeclaration<TLocal extends SchemaFieldMap = SchemaFieldMap, TEffective extends SchemaFieldMap = TLocal> extends Declaration<"schema"> {
12
+ readonly __fields?: TEffective;
13
+ readonly __value?: InferSchemaFields<TEffective>;
14
+ private _fields;
15
+ private _description?;
16
+ private _role?;
17
+ private _abstract;
18
+ private _extends?;
19
+ private _projection?;
20
+ private _examples;
21
+ private _invariants;
22
+ private _facets?;
23
+ private _tags;
24
+ private _explanations;
25
+ constructor(fieldsValue: TLocal);
26
+ description(value: string): this;
27
+ role(value: SchemaRoleState): this;
28
+ tags(...values: readonly string[]): this;
29
+ explain(kind: ExplanationKindState, text: string): this;
30
+ abstract(value?: boolean): this;
31
+ extends<TParentEffective extends SchemaFieldMap>(value: SchemaRef<TParentEffective>): SchemaDeclaration<TLocal, TEffective & TParentEffective>;
32
+ projection<TSourceFields extends RefFieldMap, TSelection extends ProjectionSelectionMap>(value: ProjectionDeclaration<TSourceFields, TSelection>): SchemaDeclaration<TLocal, TEffective & ProjectionOutputFields<TSelection>>;
33
+ facets(value: SchemaFacetsInput<Extract<keyof TEffective, string>>): this;
34
+ /**
35
+ * A rule every valid value satisfies. Read this schema's fields with
36
+ * `expression.context("value", "fieldName")`.
37
+ */
38
+ invariant(name: string, rule: ExpressionRef<boolean>, options?: {
39
+ readonly message?: string;
40
+ }): this;
41
+ examples(values: readonly CanonicalValue[]): this;
42
+ add<const T extends SchemaFieldMap>(values: T): SchemaDeclaration<TLocal & T, TEffective & T>;
43
+ toState(): SchemaState;
44
+ }
45
+ export declare function schema<const T extends SchemaFieldMap>(fieldsValue: T): SchemaDeclaration<T, T>;
46
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/definitions/schemas/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { definitionMetadata } from "../properties/metadata.js";
2
+ import {} from "./field.js";
3
+ import { Declaration } from "../../foundation/declaration.js";
4
+ import { explanation, normalizeTags, optionalDescription, optionalOwner, optionalOrigin, optionalSemanticMetadata, requireText, } from "../../foundation/metadata.js";
5
+ export class SchemaDeclaration extends Declaration {
6
+ _fields;
7
+ _description;
8
+ _role;
9
+ _abstract = false;
10
+ _extends;
11
+ _projection;
12
+ _examples = [];
13
+ _invariants = [];
14
+ _facets;
15
+ _tags = [];
16
+ _explanations = [];
17
+ constructor(fieldsValue) {
18
+ super("schema");
19
+ this._fields = { ...fieldsValue };
20
+ }
21
+ description(value) {
22
+ this._description = requireText(value, "schema description");
23
+ return this;
24
+ }
25
+ role(value) {
26
+ this._role = value;
27
+ return this;
28
+ }
29
+ tags(...values) {
30
+ this._tags = [...normalizeTags(values, "schema tags")];
31
+ return this;
32
+ }
33
+ explain(kind, text) {
34
+ this._explanations.push(explanation(kind, text, "schema explanation"));
35
+ return this;
36
+ }
37
+ abstract(value = true) {
38
+ this._abstract = value;
39
+ return this;
40
+ }
41
+ extends(value) {
42
+ this._extends = value;
43
+ return this;
44
+ }
45
+ projection(value) {
46
+ this._projection = value;
47
+ return this;
48
+ }
49
+ facets(value) {
50
+ if (value.storage === undefined) {
51
+ throw new TypeError("schema facets requires at least one semantic facet");
52
+ }
53
+ this._facets = value;
54
+ return this;
55
+ }
56
+ /**
57
+ * A rule every valid value satisfies. Read this schema's fields with
58
+ * `expression.context("value", "fieldName")`.
59
+ */
60
+ invariant(name, rule, options = {}) {
61
+ const invariantName = requireText(name, "invariant name");
62
+ if (!/^[A-Za-z][A-Za-z0-9]*$/.test(invariantName)) {
63
+ throw new TypeError(`invariant name ${JSON.stringify(invariantName)} must be alphanumeric and start with a letter`);
64
+ }
65
+ if (this._invariants.some((item) => item.name === invariantName)) {
66
+ throw new TypeError(`duplicate invariant ${JSON.stringify(invariantName)}`);
67
+ }
68
+ this._invariants.push({
69
+ name: invariantName,
70
+ rule: rule.ref(),
71
+ ...(options.message === undefined
72
+ ? {}
73
+ : { message: requireText(options.message, "invariant message") }),
74
+ });
75
+ return this;
76
+ }
77
+ examples(values) {
78
+ this._examples = [...values];
79
+ return this;
80
+ }
81
+ add(values) {
82
+ this._fields = { ...this._fields, ...values };
83
+ return this;
84
+ }
85
+ toState() {
86
+ const projection = this._projection?.toState();
87
+ const storage = this._facets?.storage?.toState();
88
+ if (projection !== undefined) {
89
+ if (this._abstract) {
90
+ throw new TypeError("projected schemas cannot be abstract");
91
+ }
92
+ if (this._extends !== undefined) {
93
+ throw new TypeError("projected schemas cannot extend another schema");
94
+ }
95
+ if (storage !== undefined) {
96
+ throw new TypeError("projected schemas cannot define storage facets");
97
+ }
98
+ }
99
+ if (storage !== undefined) {
100
+ if (this._abstract && storage.name !== undefined) {
101
+ throw new TypeError("abstract schemas may define inherited storage rules but cannot have a concrete storage name");
102
+ }
103
+ if (!this._abstract && storage.name === undefined) {
104
+ throw new TypeError("concrete schemas using the storage facet require a storage name");
105
+ }
106
+ }
107
+ const mapped = {};
108
+ for (const key of Object.keys(this._fields).sort()) {
109
+ mapped[key] = this._fields[key].toState();
110
+ }
111
+ return {
112
+ identity: this.identity,
113
+ kind: "schema",
114
+ ...(this._role === undefined ? {} : { role: this._role }),
115
+ fields: mapped,
116
+ ...(this._abstract ? { abstract: true } : {}),
117
+ ...(this._extends === undefined ? {} : { extends: this._extends.ref() }),
118
+ ...(projection === undefined ? {} : { projection }),
119
+ ...(storage === undefined ? {} : { facets: { storage } }),
120
+ ...(this._invariants.length === 0
121
+ ? {}
122
+ : { invariants: [...this._invariants] }),
123
+ ...optionalDescription(this._description),
124
+ ...definitionMetadata(this._examples),
125
+ ...optionalOwner(this._group, this._feature),
126
+ ...optionalSemanticMetadata(this._tags, this._explanations),
127
+ ...optionalOrigin(this._origin),
128
+ };
129
+ }
130
+ }
131
+ export function schema(fieldsValue) {
132
+ return new SchemaDeclaration(fieldsValue);
133
+ }
134
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/definitions/schemas/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { FieldSourceInputState, FieldSourcePurposeState, FieldSourceState } from "../../contracts/index.js";
2
+ import type { OperationRef, SchemaFieldRef, TupleIndex, ValueRefTuple } from "../../foundation/ref.js";
3
+ export declare class SourceInputValue {
4
+ toState(): FieldSourceInputState;
5
+ }
6
+ export declare class SourceInputField {
7
+ #private;
8
+ constructor(resolve: () => SchemaFieldRef<unknown>);
9
+ toState(): FieldSourceInputState;
10
+ }
11
+ export type SourceInput = SourceInputValue | SourceInputField;
12
+ export declare class FieldSourceDeclaration<TInputs extends ValueRefTuple = ValueRefTuple, TOutputs extends ValueRefTuple = ValueRefTuple> {
13
+ #private;
14
+ private _output?;
15
+ private _inputs;
16
+ constructor(purpose: FieldSourcePurposeState, operation: OperationRef<TInputs, TOutputs>);
17
+ output<I extends TupleIndex<TOutputs>>(index: I): this;
18
+ input<I extends TupleIndex<TInputs>>(index: I, sourceInput: SourceInput): this;
19
+ toState(): FieldSourceState;
20
+ }
21
+ declare function sourceValue<TInputs extends ValueRefTuple, TOutputs extends ValueRefTuple>(operation: OperationRef<TInputs, TOutputs>): FieldSourceDeclaration<TInputs, TOutputs>;
22
+ declare function sourceValue(): SourceInputValue;
23
+ export declare const source: Readonly<{
24
+ value: typeof sourceValue;
25
+ resolve<TInputs extends ValueRefTuple, TOutputs extends ValueRefTuple>(operation: OperationRef<TInputs, TOutputs>): FieldSourceDeclaration<TInputs, TOutputs>;
26
+ options<TInputs extends ValueRefTuple, TOutputs extends ValueRefTuple>(operation: OperationRef<TInputs, TOutputs>): FieldSourceDeclaration<TInputs, TOutputs>;
27
+ field(resolve: () => SchemaFieldRef<unknown>): SourceInputField;
28
+ }>;
29
+ export {};
30
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/definitions/schemas/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAEV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,gBAAgB;IAC3B,OAAO,IAAI,qBAAqB,CAE/B;CACF;AAED,qBAAa,gBAAgB;;IAG3B,YAAY,OAAO,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC,EAEjD;IAED,OAAO,IAAI,qBAAqB,CAE/B;CACF;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE9D,qBAAa,sBAAsB,CACjC,OAAO,SAAS,aAAa,GAAG,aAAa,EAC7C,QAAQ,SAAS,aAAa,GAAG,aAAa;;IAI9C,OAAO,CAAC,OAAO,CAAC,CAAsC;IACtD,OAAO,CAAC,OAAO,CAGN;IAET,YACE,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAI3C;IAED,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAGrD;IAED,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EACjC,KAAK,EAAE,CAAC,EACR,WAAW,EAAE,WAAW,GACvB,IAAI,CAMN;IAED,OAAO,IAAI,gBAAgB,CAgB1B;CACF;AAYD,iBAAS,WAAW,CAClB,OAAO,SAAS,aAAa,EAC7B,QAAQ,SAAS,aAAa,EAE9B,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC7C,iBAAS,WAAW,IAAI,gBAAgB,CAAC;AAYzC,eAAO,MAAM,MAAM;;YAET,OAAO,SAAS,aAAa,EAAE,QAAQ,SAAS,aAAa,aACxD,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;YAGpC,OAAO,SAAS,aAAa,EAAE,QAAQ,SAAS,aAAa,aACxD,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;mBAG7B,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,gBAAgB;EAG/D,CAAC"}
@@ -0,0 +1,73 @@
1
+ export class SourceInputValue {
2
+ toState() {
3
+ return { kind: "value" };
4
+ }
5
+ }
6
+ export class SourceInputField {
7
+ #resolve;
8
+ constructor(resolve) {
9
+ this.#resolve = resolve;
10
+ }
11
+ toState() {
12
+ return { kind: "field", value: this.#resolve().toState() };
13
+ }
14
+ }
15
+ export class FieldSourceDeclaration {
16
+ #purpose;
17
+ #operation;
18
+ _output;
19
+ _inputs = [];
20
+ constructor(purpose, operation) {
21
+ this.#purpose = purpose;
22
+ this.#operation = operation;
23
+ }
24
+ output(index) {
25
+ this._output = this.#operation.output(index);
26
+ return this;
27
+ }
28
+ input(index, sourceInput) {
29
+ this._inputs.push({
30
+ target: this.#operation.input(index),
31
+ source: sourceInput,
32
+ });
33
+ return this;
34
+ }
35
+ toState() {
36
+ if (this._output === undefined) {
37
+ throw new TypeError("field source requires .output(index)");
38
+ }
39
+ return {
40
+ purpose: this.#purpose,
41
+ output: this._output.toState(),
42
+ ...(this._inputs.length === 0
43
+ ? {}
44
+ : {
45
+ inputs: this._inputs.map(({ target, source }) => ({
46
+ target: target.toState(),
47
+ source: source.toState(),
48
+ })),
49
+ }),
50
+ };
51
+ }
52
+ }
53
+ function operationSource(purpose, operation) {
54
+ return new FieldSourceDeclaration(purpose, operation);
55
+ }
56
+ function sourceValue(operation) {
57
+ return operation === undefined
58
+ ? new SourceInputValue()
59
+ : operationSource("value", operation);
60
+ }
61
+ export const source = Object.freeze({
62
+ value: sourceValue,
63
+ resolve(operation) {
64
+ return operationSource("resolve", operation);
65
+ },
66
+ options(operation) {
67
+ return operationSource("options", operation);
68
+ },
69
+ field(resolve) {
70
+ return new SourceInputField(resolve);
71
+ },
72
+ });
73
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/definitions/schemas/source.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,gBAAgB;IAC3B,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IAClB,QAAQ,CAAgC;IAEjD,YAAY,OAAsC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7D,CAAC;CACF;AAID,MAAM,OAAO,sBAAsB;IAIxB,QAAQ,CAA0B;IAClC,UAAU,CAAkC;IAC7C,OAAO,CAAuC;IAC9C,OAAO,GAGT,EAAE,CAAC;IAET,YACE,OAAgC,EAChC,SAA0C;QAE1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,MAAM,CAAiC,KAAQ;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CACH,KAAQ,EACR,WAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAC3B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;wBAChD,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;wBACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;qBACzB,CAAC,CAAC;iBACJ,CAAC;SACP,CAAC;IACJ,CAAC;CACF;AAED,SAAS,eAAe,CAItB,OAAgC,EAChC,SAA0C;IAE1C,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;AASD,SAAS,WAAW,CAIlB,SAA2C;IAE3C,OAAO,SAAS,KAAK,SAAS;QAC5B,CAAC,CAAC,IAAI,gBAAgB,EAAE;QACxB,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,WAAW;IAClB,OAAO,CACL,SAA0C;QAE1C,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CACL,SAA0C;QAE1C,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,OAAsC;QAC1C,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { CanonicalScalar, LengthConstraintState, PrimitiveTypeName, PropertyDeclarationKind, QueryDomain } from "../../contracts/index.js";
2
+ import type { InferRefFields, PropertyRef, RefFieldMap, SchemaRef } from "../../foundation/ref.js";
3
+ import type { TypeParameter } from "./parameter.js";
4
+ import { TypeSpec, type InferSpec, type InferSpecMap, type SpecMap } from "./spec.js";
5
+ export declare function string(): TypeSpec<string>;
6
+ export declare function number(): TypeSpec<number>;
7
+ export declare function boolean(): TypeSpec<boolean>;
8
+ export declare function literal<const T extends CanonicalScalar | null>(value: T): TypeSpec<T>;
9
+ export declare function list<T>(value: TypeSpec<T>, length?: LengthConstraintState): TypeSpec<readonly T[]>;
10
+ export declare const array: typeof list;
11
+ export declare function optional<T>(value: TypeSpec<T>): TypeSpec<T | undefined>;
12
+ export declare function required<T>(value: TypeSpec<T>): TypeSpec<Exclude<T, undefined>>;
13
+ export declare function nullable<T>(value: TypeSpec<T>): TypeSpec<T | null>;
14
+ export declare function tupleOf<const T extends readonly TypeSpec<unknown>[]>(...items: T): TypeSpec<{
15
+ readonly [K in keyof T]: InferSpec<T[K]>;
16
+ }>;
17
+ export declare function record<K, V>(keys: TypeSpec<K>, values: TypeSpec<V>): TypeSpec<Readonly<Record<string, V>>>;
18
+ export declare function objectType<const T extends SpecMap>(fields: T): TypeSpec<InferSpecMap<T>>;
19
+ export declare function union<const T extends readonly [
20
+ TypeSpec<unknown>,
21
+ TypeSpec<unknown>,
22
+ ...TypeSpec<unknown>[]
23
+ ]>(...members: T): TypeSpec<InferSpec<T[number]>>;
24
+ export declare function primitiveType(name: PrimitiveTypeName): TypeSpec<string | number | boolean>;
25
+ export declare function parameter<const N extends string>(value: TypeParameter<N>): TypeSpec<unknown>;
26
+ export declare function ref<K extends PropertyDeclarationKind, T, D extends QueryDomain>(target: PropertyRef<K, T, D>): TypeSpec<T>;
27
+ export declare function ref<TFields extends RefFieldMap>(target: SchemaRef<TFields>): TypeSpec<InferRefFields<TFields>>;
28
+ //# sourceMappingURL=expressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/definitions/types/expressions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { TypeSpec, } from "./spec.js";
2
+ export function string() {
3
+ return new TypeSpec({ kind: "primitive", name: "string" });
4
+ }
5
+ export function number() {
6
+ return new TypeSpec({ kind: "primitive", name: "number" });
7
+ }
8
+ export function boolean() {
9
+ return new TypeSpec({ kind: "primitive", name: "boolean" });
10
+ }
11
+ export function literal(value) {
12
+ return new TypeSpec({ kind: "literal", value });
13
+ }
14
+ export function list(value, length) {
15
+ return value.array(length);
16
+ }
17
+ export const array = list;
18
+ export function optional(value) {
19
+ return value.optional();
20
+ }
21
+ export function required(value) {
22
+ return value.required();
23
+ }
24
+ export function nullable(value) {
25
+ return value.nullable();
26
+ }
27
+ export function tupleOf(...items) {
28
+ return new TypeSpec({
29
+ kind: "tuple",
30
+ items: items.map((item) => item.toTypeState()),
31
+ });
32
+ }
33
+ export function record(keys, values) {
34
+ return new TypeSpec({
35
+ kind: "record",
36
+ keys: keys.toTypeState(),
37
+ values: values.toTypeState(),
38
+ });
39
+ }
40
+ export function objectType(fields) {
41
+ const requiredFields = [];
42
+ const mapped = {};
43
+ for (const key of Object.keys(fields).sort()) {
44
+ const state = fields[key].toState();
45
+ if (state.default !== undefined) {
46
+ throw new TypeError("object type fields cannot define usage defaults");
47
+ }
48
+ if (state.presence === "required")
49
+ requiredFields.push(key);
50
+ mapped[key] = state.type;
51
+ }
52
+ return new TypeSpec({
53
+ kind: "object",
54
+ fields: mapped,
55
+ required: requiredFields,
56
+ });
57
+ }
58
+ export function union(...members) {
59
+ return new TypeSpec({
60
+ kind: "union",
61
+ members: members.map((member) => member.toTypeState()),
62
+ });
63
+ }
64
+ export function primitiveType(name) {
65
+ if (name === "string")
66
+ return string();
67
+ if (name === "boolean")
68
+ return boolean();
69
+ return number();
70
+ }
71
+ export function parameter(value) {
72
+ return new TypeSpec({
73
+ kind: "parameter",
74
+ parameter: value.toState(),
75
+ });
76
+ }
77
+ export function ref(target) {
78
+ const valueTarget = target.ref();
79
+ return new TypeSpec({ kind: "reference", target: valueTarget });
80
+ }
81
+ //# sourceMappingURL=expressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/definitions/types/expressions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./spec.js";
2
+ export * from "./parameter.js";
3
+ export * from "./expressions.js";
4
+ //# sourceMappingURL=index.d.ts.map