@elaraai/east 0.0.1-beta.3 → 0.0.1-beta.30

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 (190) hide show
  1. package/LICENSE.md +15 -666
  2. package/README.md +30 -8
  3. package/dist/src/analyze.d.ts +3 -0
  4. package/dist/src/analyze.d.ts.map +1 -1
  5. package/dist/src/analyze.js +52 -13
  6. package/dist/src/analyze.js.map +1 -1
  7. package/dist/src/ast.d.ts +34 -33
  8. package/dist/src/ast.d.ts.map +1 -1
  9. package/dist/src/ast_to_ir.d.ts +6 -0
  10. package/dist/src/ast_to_ir.d.ts.map +1 -1
  11. package/dist/src/ast_to_ir.js +134 -101
  12. package/dist/src/ast_to_ir.js.map +1 -1
  13. package/dist/src/builtins.d.ts +1 -1
  14. package/dist/src/builtins.d.ts.map +1 -1
  15. package/dist/src/builtins.js +32 -0
  16. package/dist/src/builtins.js.map +1 -1
  17. package/dist/src/comparison.d.ts.map +1 -1
  18. package/dist/src/comparison.js +12 -4
  19. package/dist/src/comparison.js.map +1 -1
  20. package/dist/src/compile.d.ts +26 -1
  21. package/dist/src/compile.d.ts.map +1 -1
  22. package/dist/src/compile.js +374 -257
  23. package/dist/src/compile.js.map +1 -1
  24. package/dist/src/datetime_format/types.d.ts +23 -23
  25. package/dist/src/eastir.d.ts.map +1 -1
  26. package/dist/src/eastir.js +21 -5
  27. package/dist/src/eastir.js.map +1 -1
  28. package/dist/src/error.d.ts +12 -1
  29. package/dist/src/error.d.ts.map +1 -1
  30. package/dist/src/error.js +31 -1
  31. package/dist/src/error.js.map +1 -1
  32. package/dist/src/expr/array.d.ts +109 -1
  33. package/dist/src/expr/array.d.ts.map +1 -1
  34. package/dist/src/expr/array.js +204 -44
  35. package/dist/src/expr/array.js.map +1 -1
  36. package/dist/src/expr/ast.d.ts +1 -1
  37. package/dist/src/expr/ast.d.ts.map +1 -1
  38. package/dist/src/expr/ast.js +16 -28
  39. package/dist/src/expr/ast.js.map +1 -1
  40. package/dist/src/expr/asyncfunction.js +1 -1
  41. package/dist/src/expr/asyncfunction.js.map +1 -1
  42. package/dist/src/expr/blob.d.ts +73 -1
  43. package/dist/src/expr/blob.d.ts.map +1 -1
  44. package/dist/src/expr/blob.js +97 -7
  45. package/dist/src/expr/blob.js.map +1 -1
  46. package/dist/src/expr/block.d.ts +206 -8
  47. package/dist/src/expr/block.d.ts.map +1 -1
  48. package/dist/src/expr/block.js +623 -136
  49. package/dist/src/expr/block.js.map +1 -1
  50. package/dist/src/expr/boolean.d.ts +44 -0
  51. package/dist/src/expr/boolean.d.ts.map +1 -1
  52. package/dist/src/expr/boolean.js +57 -5
  53. package/dist/src/expr/boolean.js.map +1 -1
  54. package/dist/src/expr/datetime.d.ts +135 -0
  55. package/dist/src/expr/datetime.d.ts.map +1 -1
  56. package/dist/src/expr/datetime.js +183 -33
  57. package/dist/src/expr/datetime.js.map +1 -1
  58. package/dist/src/expr/dict.d.ts +42 -0
  59. package/dist/src/expr/dict.d.ts.map +1 -1
  60. package/dist/src/expr/dict.js +105 -55
  61. package/dist/src/expr/dict.js.map +1 -1
  62. package/dist/src/expr/expr.d.ts +1 -1
  63. package/dist/src/expr/expr.d.ts.map +1 -1
  64. package/dist/src/expr/expr.js.map +1 -1
  65. package/dist/src/expr/float.d.ts +153 -0
  66. package/dist/src/expr/float.d.ts.map +1 -1
  67. package/dist/src/expr/float.js +190 -16
  68. package/dist/src/expr/float.js.map +1 -1
  69. package/dist/src/expr/function.d.ts +7 -2
  70. package/dist/src/expr/function.d.ts.map +1 -1
  71. package/dist/src/expr/function.js +1 -1
  72. package/dist/src/expr/function.js.map +1 -1
  73. package/dist/src/expr/index.d.ts +202 -2
  74. package/dist/src/expr/index.d.ts.map +1 -1
  75. package/dist/src/expr/index.js +207 -2
  76. package/dist/src/expr/index.js.map +1 -1
  77. package/dist/src/expr/integer.d.ts +180 -0
  78. package/dist/src/expr/integer.d.ts.map +1 -1
  79. package/dist/src/expr/integer.js +188 -17
  80. package/dist/src/expr/integer.js.map +1 -1
  81. package/dist/src/expr/libs/blob.js +2 -2
  82. package/dist/src/expr/libs/blob.js.map +1 -1
  83. package/dist/src/expr/libs/integer.d.ts +19 -0
  84. package/dist/src/expr/libs/integer.d.ts.map +1 -1
  85. package/dist/src/expr/libs/integer.js +47 -0
  86. package/dist/src/expr/libs/integer.js.map +1 -1
  87. package/dist/src/expr/libs/string.js +1 -1
  88. package/dist/src/expr/libs/string.js.map +1 -1
  89. package/dist/src/expr/recursive.d.ts +83 -0
  90. package/dist/src/expr/recursive.d.ts.map +1 -0
  91. package/dist/src/expr/recursive.js +99 -0
  92. package/dist/src/expr/recursive.js.map +1 -0
  93. package/dist/src/expr/ref.js +3 -3
  94. package/dist/src/expr/ref.js.map +1 -1
  95. package/dist/src/expr/set.d.ts +44 -2
  96. package/dist/src/expr/set.d.ts.map +1 -1
  97. package/dist/src/expr/set.js +97 -47
  98. package/dist/src/expr/set.js.map +1 -1
  99. package/dist/src/expr/string.d.ts +134 -0
  100. package/dist/src/expr/string.d.ts.map +1 -1
  101. package/dist/src/expr/string.js +172 -22
  102. package/dist/src/expr/string.js.map +1 -1
  103. package/dist/src/expr/struct.d.ts +1 -1
  104. package/dist/src/expr/struct.d.ts.map +1 -1
  105. package/dist/src/expr/struct.js +1 -1
  106. package/dist/src/expr/struct.js.map +1 -1
  107. package/dist/src/expr/types.d.ts +7 -6
  108. package/dist/src/expr/types.d.ts.map +1 -1
  109. package/dist/src/expr/variant.d.ts +123 -1
  110. package/dist/src/expr/variant.d.ts.map +1 -1
  111. package/dist/src/expr/variant.js +66 -2
  112. package/dist/src/expr/variant.js.map +1 -1
  113. package/dist/src/fuzz.d.ts +36 -2
  114. package/dist/src/fuzz.d.ts.map +1 -1
  115. package/dist/src/fuzz.js +344 -77
  116. package/dist/src/fuzz.js.map +1 -1
  117. package/dist/src/index.d.ts +1 -0
  118. package/dist/src/index.d.ts.map +1 -1
  119. package/dist/src/index.js +1 -0
  120. package/dist/src/index.js.map +1 -1
  121. package/dist/src/internal.d.ts +12 -0
  122. package/dist/src/internal.d.ts.map +1 -1
  123. package/dist/src/internal.js +13 -0
  124. package/dist/src/internal.js.map +1 -1
  125. package/dist/src/ir.d.ts +1547 -1505
  126. package/dist/src/ir.d.ts.map +1 -1
  127. package/dist/src/ir.js +49 -34
  128. package/dist/src/ir.js.map +1 -1
  129. package/dist/src/location.d.ts +30 -10
  130. package/dist/src/location.d.ts.map +1 -1
  131. package/dist/src/location.js +70 -28
  132. package/dist/src/location.js.map +1 -1
  133. package/dist/src/patch/apply.d.ts +15 -0
  134. package/dist/src/patch/apply.d.ts.map +1 -0
  135. package/dist/src/patch/apply.js +380 -0
  136. package/dist/src/patch/apply.js.map +1 -0
  137. package/dist/src/patch/compose.d.ts +15 -0
  138. package/dist/src/patch/compose.d.ts.map +1 -0
  139. package/dist/src/patch/compose.js +480 -0
  140. package/dist/src/patch/compose.js.map +1 -0
  141. package/dist/src/patch/diff.d.ts +15 -0
  142. package/dist/src/patch/diff.d.ts.map +1 -0
  143. package/dist/src/patch/diff.js +328 -0
  144. package/dist/src/patch/diff.js.map +1 -0
  145. package/dist/src/patch/fuzz.d.ts +73 -0
  146. package/dist/src/patch/fuzz.d.ts.map +1 -0
  147. package/dist/src/patch/fuzz.js +159 -0
  148. package/dist/src/patch/fuzz.js.map +1 -0
  149. package/dist/src/patch/index.d.ts +18 -0
  150. package/dist/src/patch/index.d.ts.map +1 -0
  151. package/dist/src/patch/index.js +20 -0
  152. package/dist/src/patch/index.js.map +1 -0
  153. package/dist/src/patch/invert.d.ts +15 -0
  154. package/dist/src/patch/invert.d.ts.map +1 -0
  155. package/dist/src/patch/invert.js +302 -0
  156. package/dist/src/patch/invert.js.map +1 -0
  157. package/dist/src/patch/type_of_patch.d.ts +17 -0
  158. package/dist/src/patch/type_of_patch.d.ts.map +1 -0
  159. package/dist/src/patch/type_of_patch.js +143 -0
  160. package/dist/src/patch/type_of_patch.js.map +1 -0
  161. package/dist/src/patch/types.d.ts +166 -0
  162. package/dist/src/patch/types.d.ts.map +1 -0
  163. package/dist/src/patch/types.js +69 -0
  164. package/dist/src/patch/types.js.map +1 -0
  165. package/dist/src/platform.d.ts +6 -0
  166. package/dist/src/platform.d.ts.map +1 -1
  167. package/dist/src/serialization/beast.d.ts.map +1 -1
  168. package/dist/src/serialization/beast.js +53 -18
  169. package/dist/src/serialization/beast.js.map +1 -1
  170. package/dist/src/serialization/beast2.d.ts +39 -3
  171. package/dist/src/serialization/beast2.d.ts.map +1 -1
  172. package/dist/src/serialization/beast2.js +241 -18
  173. package/dist/src/serialization/beast2.js.map +1 -1
  174. package/dist/src/serialization/csv.d.ts +139 -0
  175. package/dist/src/serialization/csv.d.ts.map +1 -0
  176. package/dist/src/serialization/csv.js +615 -0
  177. package/dist/src/serialization/csv.js.map +1 -0
  178. package/dist/src/serialization/index.d.ts +2 -1
  179. package/dist/src/serialization/index.d.ts.map +1 -1
  180. package/dist/src/serialization/index.js +2 -1
  181. package/dist/src/serialization/index.js.map +1 -1
  182. package/dist/src/type_of_type.d.ts +45 -34
  183. package/dist/src/type_of_type.d.ts.map +1 -1
  184. package/dist/src/type_of_type.js +62 -1
  185. package/dist/src/type_of_type.js.map +1 -1
  186. package/dist/src/types.d.ts +8 -8
  187. package/dist/src/types.d.ts.map +1 -1
  188. package/dist/src/types.js +4 -4
  189. package/dist/src/types.js.map +1 -1
  190. package/package.json +4 -5
@@ -0,0 +1,380 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * applyFor - Apply a patch to an East value.
7
+ *
8
+ * @module
9
+ */
10
+ import { toEastTypeValue } from "../type_of_type.js";
11
+ import { isVariant, variant } from "../containers/variant.js";
12
+ import { equalFor, compareFor } from "../comparison.js";
13
+ import { printFor } from "../serialization/east.js";
14
+ import { SortedMap } from "../containers/sortedmap.js";
15
+ import { SortedSet } from "../containers/sortedset.js";
16
+ import { ConflictError } from "./types.js";
17
+ export function applyFor(type, ctx = { apply: [], types: [], equal: [], print: [] }) {
18
+ // Convert to EastTypeValue and use a properly typed variable
19
+ const t = isVariant(type) ? type : toEastTypeValue(type);
20
+ if (t.type === "Never") {
21
+ return (_base, _patch) => {
22
+ throw new Error("Cannot apply patch to values of type Never");
23
+ };
24
+ }
25
+ else if (t.type === "Null" ||
26
+ t.type === "Boolean" ||
27
+ t.type === "Integer" ||
28
+ t.type === "Float" ||
29
+ t.type === "String" ||
30
+ t.type === "DateTime" ||
31
+ t.type === "Blob") {
32
+ const equal = equalFor(t);
33
+ const print = printFor(t);
34
+ return (base, patch) => {
35
+ if (patch.type === "unchanged") {
36
+ return base;
37
+ }
38
+ else if (patch.type === "replace") {
39
+ if (!equal(base, patch.value.before)) {
40
+ throw new ConflictError(`Cannot apply replace - expected ${print(patch.value.before)}, found ${print(base)}`);
41
+ }
42
+ return patch.value.after;
43
+ }
44
+ else {
45
+ throw new Error(`Invalid patch type for primitive: ${patch.type}`);
46
+ }
47
+ };
48
+ }
49
+ else if (t.type === "Array") {
50
+ let elementApply;
51
+ let elementEqual;
52
+ let elementPrint;
53
+ let arrayEqual;
54
+ const ret = (base, patch) => {
55
+ if (patch.type === "unchanged") {
56
+ return base;
57
+ }
58
+ else if (patch.type === "replace") {
59
+ if (!arrayEqual(base, patch.value.before)) {
60
+ throw new ConflictError("Cannot apply replace - base array does not match expected");
61
+ }
62
+ return [...patch.value.after];
63
+ }
64
+ else if (patch.type === "patch") {
65
+ const result = [...base];
66
+ const operations = patch.value;
67
+ for (const op of operations) {
68
+ const key = Number(op.key);
69
+ const offset = Number(op.offset);
70
+ const oldKey = key + offset;
71
+ if (op.operation.type === "delete") {
72
+ if (oldKey < 0 || oldKey >= result.length) {
73
+ throw new ConflictError(`Cannot delete at index ${oldKey} - array length is ${result.length}`);
74
+ }
75
+ if (!elementEqual(result[oldKey], op.operation.value)) {
76
+ throw new ConflictError(`Cannot delete at index ${oldKey} - expected ${elementPrint(op.operation.value)}, found ${elementPrint(result[oldKey])}`);
77
+ }
78
+ result.splice(oldKey, 1);
79
+ }
80
+ else if (op.operation.type === "insert") {
81
+ if (key < 0 || key > result.length) {
82
+ throw new ConflictError(`Cannot insert at index ${key} - array length is ${result.length}`);
83
+ }
84
+ result.splice(key, 0, op.operation.value);
85
+ }
86
+ else if (op.operation.type === "update") {
87
+ if (oldKey < 0 || oldKey >= result.length) {
88
+ throw new ConflictError(`Cannot update at index ${oldKey} - array length is ${result.length}`);
89
+ }
90
+ result[oldKey] = elementApply(result[oldKey], op.operation.value);
91
+ }
92
+ }
93
+ return result;
94
+ }
95
+ else {
96
+ throw new Error(`Invalid patch type for array: ${patch.type}`);
97
+ }
98
+ };
99
+ // Build print handler for this array type (used in error messages)
100
+ const arrayPrint = printFor(t, ctx.print);
101
+ // Build array equality using equalFor with current context
102
+ // This must be pushed BEFORE recursing so children can reference it via .Recursive
103
+ arrayEqual = equalFor(t, ctx.equal);
104
+ ctx.apply.push(ret);
105
+ ctx.types.push(t);
106
+ ctx.equal.push(arrayEqual);
107
+ ctx.print.push(arrayPrint);
108
+ elementApply = applyFor(t.value, ctx);
109
+ elementEqual = equalFor(t.value, ctx.equal);
110
+ elementPrint = printFor(t.value, ctx.print);
111
+ ctx.apply.pop();
112
+ ctx.types.pop();
113
+ ctx.equal.pop();
114
+ ctx.print.pop();
115
+ return ret;
116
+ }
117
+ else if (t.type === "Set") {
118
+ const keyPrint = printFor(t.value);
119
+ const setEqual = equalFor(t, ctx.equal);
120
+ const keyCompare = compareFor(t.value);
121
+ return (base, patch) => {
122
+ if (patch.type === "unchanged") {
123
+ return base;
124
+ }
125
+ else if (patch.type === "replace") {
126
+ if (!setEqual(base, patch.value.before)) {
127
+ throw new ConflictError("Cannot apply replace - base set does not match expected");
128
+ }
129
+ return new SortedSet(patch.value.after, keyCompare);
130
+ }
131
+ else if (patch.type === "patch") {
132
+ const result = new SortedSet(base, keyCompare);
133
+ const operations = patch.value;
134
+ for (const [key, op] of operations) {
135
+ if (op.type === "delete") {
136
+ if (!result.has(key)) {
137
+ throw new ConflictError(`Cannot delete key ${keyPrint(key)} - key does not exist`);
138
+ }
139
+ result.delete(key);
140
+ }
141
+ else if (op.type === "insert") {
142
+ if (result.has(key)) {
143
+ throw new ConflictError(`Cannot insert key ${keyPrint(key)} - key already exists`);
144
+ }
145
+ result.add(key);
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ else {
151
+ throw new Error(`Invalid patch type for set: ${patch.type}`);
152
+ }
153
+ };
154
+ }
155
+ else if (t.type === "Dict") {
156
+ let valueApply;
157
+ let valueEqual;
158
+ let dictEqual;
159
+ let keyPrint;
160
+ let valuePrint;
161
+ const keyCompare = compareFor(t.value.key);
162
+ const ret = (base, patch) => {
163
+ if (patch.type === "unchanged") {
164
+ return base;
165
+ }
166
+ else if (patch.type === "replace") {
167
+ if (!dictEqual(base, patch.value.before)) {
168
+ throw new ConflictError("Cannot apply replace - base dict does not match expected");
169
+ }
170
+ return new SortedMap(patch.value.after, keyCompare);
171
+ }
172
+ else if (patch.type === "patch") {
173
+ const result = new SortedMap(base, keyCompare);
174
+ const operations = patch.value;
175
+ for (const [key, op] of operations) {
176
+ if (op.type === "delete") {
177
+ if (!result.has(key)) {
178
+ throw new ConflictError(`Cannot delete key ${keyPrint(key)} - key does not exist`);
179
+ }
180
+ if (!valueEqual(result.get(key), op.value)) {
181
+ throw new ConflictError(`Cannot delete key ${keyPrint(key)} - expected value ${valuePrint(op.value)}, found ${valuePrint(result.get(key))}`);
182
+ }
183
+ result.delete(key);
184
+ }
185
+ else if (op.type === "insert") {
186
+ if (result.has(key)) {
187
+ throw new ConflictError(`Cannot insert key ${keyPrint(key)} - key already exists with value ${valuePrint(result.get(key))}`);
188
+ }
189
+ result.set(key, op.value);
190
+ }
191
+ else if (op.type === "update") {
192
+ if (!result.has(key)) {
193
+ throw new ConflictError(`Cannot update key ${keyPrint(key)} - key does not exist`);
194
+ }
195
+ result.set(key, valueApply(result.get(key), op.value));
196
+ }
197
+ }
198
+ return result;
199
+ }
200
+ else {
201
+ throw new Error(`Invalid patch type for dict: ${patch.type}`);
202
+ }
203
+ };
204
+ // Build print handler for this dict type (used in error messages)
205
+ const dictPrint = printFor(t, ctx.print);
206
+ // Build dict equality using equalFor with current context
207
+ // This must be pushed BEFORE recursing so children can reference it via .Recursive
208
+ dictEqual = equalFor(t, ctx.equal);
209
+ ctx.apply.push(ret);
210
+ ctx.types.push(t);
211
+ ctx.equal.push(dictEqual);
212
+ ctx.print.push(dictPrint);
213
+ valueApply = applyFor(t.value.value, ctx);
214
+ valueEqual = equalFor(t.value.value, ctx.equal);
215
+ // Keys can't be recursive, so no context needed
216
+ keyPrint = printFor(t.value.key);
217
+ // Values may contain recursive references, use print context
218
+ valuePrint = printFor(t.value.value, ctx.print);
219
+ ctx.apply.pop();
220
+ ctx.types.pop();
221
+ ctx.equal.pop();
222
+ ctx.print.pop();
223
+ return ret;
224
+ }
225
+ else if (t.type === "Struct") {
226
+ const fieldApplies = {};
227
+ let equal;
228
+ const ret = (base, patch) => {
229
+ if (patch.type === "unchanged") {
230
+ return base;
231
+ }
232
+ else if (patch.type === "replace") {
233
+ if (!equal(base, patch.value.before)) {
234
+ throw new ConflictError("Cannot apply replace - base struct does not match expected");
235
+ }
236
+ return { ...patch.value.after };
237
+ }
238
+ else if (patch.type === "patch") {
239
+ const result = {};
240
+ for (const { name } of t.value) {
241
+ const fieldPatch = patch.value[name];
242
+ result[name] = fieldApplies[name](base[name], fieldPatch);
243
+ }
244
+ return result;
245
+ }
246
+ else {
247
+ throw new Error(`Invalid patch type for struct: ${patch.type}`);
248
+ }
249
+ };
250
+ // Build print handler for this struct type
251
+ const structPrint = printFor(t, ctx.print);
252
+ // Build struct equality using equalFor with current context
253
+ // This must be pushed BEFORE recursing so children can reference it via .Recursive
254
+ equal = equalFor(t, ctx.equal);
255
+ ctx.apply.push(ret);
256
+ ctx.types.push(t);
257
+ ctx.equal.push(equal);
258
+ ctx.print.push(structPrint);
259
+ for (const { name, type: fieldType } of t.value) {
260
+ fieldApplies[name] = applyFor(fieldType, ctx);
261
+ }
262
+ ctx.apply.pop();
263
+ ctx.types.pop();
264
+ ctx.equal.pop();
265
+ ctx.print.pop();
266
+ return ret;
267
+ }
268
+ else if (t.type === "Variant") {
269
+ const caseApplies = {};
270
+ let equal;
271
+ const ret = (base, patch) => {
272
+ if (patch.type === "unchanged") {
273
+ return base;
274
+ }
275
+ else if (patch.type === "replace") {
276
+ if (!equal(base, patch.value.before)) {
277
+ throw new ConflictError("Cannot apply replace - base variant does not match expected");
278
+ }
279
+ return patch.value.after;
280
+ }
281
+ else if (patch.type === "patch") {
282
+ const caseName = patch.value.type;
283
+ if (base.type !== caseName) {
284
+ throw new ConflictError(`Cannot apply patch for case ${caseName} to variant with case ${base.type}`);
285
+ }
286
+ const casePatch = patch.value.value;
287
+ const newValue = caseApplies[caseName](base.value, casePatch);
288
+ return variant(caseName, newValue);
289
+ }
290
+ else {
291
+ throw new Error(`Invalid patch type for variant: ${patch.type}`);
292
+ }
293
+ };
294
+ // Build print handler for this variant type
295
+ const variantPrint = printFor(t, ctx.print);
296
+ // Build variant equality using equalFor with current context
297
+ // This must be pushed BEFORE recursing so children can reference it via .Recursive
298
+ equal = equalFor(t, ctx.equal);
299
+ ctx.apply.push(ret);
300
+ ctx.types.push(t);
301
+ ctx.equal.push(equal);
302
+ ctx.print.push(variantPrint);
303
+ for (const { name, type: caseType } of t.value) {
304
+ caseApplies[name] = applyFor(caseType, ctx);
305
+ }
306
+ ctx.apply.pop();
307
+ ctx.types.pop();
308
+ ctx.equal.pop();
309
+ ctx.print.pop();
310
+ return ret;
311
+ }
312
+ else if (t.type === "Ref") {
313
+ let innerApply;
314
+ let equal;
315
+ const ret = (base, patch) => {
316
+ if (patch.type === "unchanged") {
317
+ return base;
318
+ }
319
+ else if (patch.type === "replace") {
320
+ if (!equal(base, patch.value.before)) {
321
+ throw new ConflictError("Cannot apply replace - base ref does not match expected");
322
+ }
323
+ return { value: patch.value.after.value };
324
+ }
325
+ else if (patch.type === "patch") {
326
+ const newValue = innerApply(base.value, patch.value);
327
+ return { value: newValue };
328
+ }
329
+ else {
330
+ throw new Error(`Invalid patch type for ref: ${patch.type}`);
331
+ }
332
+ };
333
+ // Build print handler for this ref type
334
+ const refPrint = printFor(t, ctx.print);
335
+ // Build ref equality using equalFor with current context
336
+ // This must be pushed BEFORE recursing so children can reference it via .Recursive
337
+ equal = equalFor(t, ctx.equal);
338
+ ctx.apply.push(ret);
339
+ ctx.types.push(t);
340
+ ctx.equal.push(equal);
341
+ ctx.print.push(refPrint);
342
+ innerApply = applyFor(t.value, ctx);
343
+ ctx.apply.pop();
344
+ ctx.types.pop();
345
+ ctx.equal.pop();
346
+ ctx.print.pop();
347
+ return ret;
348
+ }
349
+ else if (t.type === "Recursive") {
350
+ // Recursive types use replace-only semantics - only unchanged and replace patches
351
+ return (base, patch) => {
352
+ if (patch.type === "unchanged") {
353
+ return base;
354
+ }
355
+ else if (patch.type === "replace") {
356
+ return patch.value.after;
357
+ }
358
+ else {
359
+ throw new Error(`Invalid patch type for recursive type: ${patch.type}`);
360
+ }
361
+ };
362
+ }
363
+ else if (t.type === "Function" || t.type === "AsyncFunction") {
364
+ return (base, patch) => {
365
+ if (patch.type === "unchanged") {
366
+ return base;
367
+ }
368
+ else if (patch.type === "replace") {
369
+ return patch.value.after;
370
+ }
371
+ else {
372
+ throw new Error(`Invalid patch type for function: ${patch.type}`);
373
+ }
374
+ };
375
+ }
376
+ else {
377
+ throw new Error(`Unhandled type in applyFor: ${t.type}`);
378
+ }
379
+ }
380
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/patch/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * composeFor - Combine two sequential patches.
7
+ *
8
+ * @module
9
+ */
10
+ import { type EastTypeValue } from "../type_of_type.js";
11
+ import type { EastType } from "../types.js";
12
+ import { type ComposeContext } from "./types.js";
13
+ export declare function composeFor(type: EastTypeValue, ctx?: ComposeContext): (first: any, second: any) => any;
14
+ export declare function composeFor<T extends EastType>(type: T): (first: any, second: any) => any;
15
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../src/patch/compose.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,YAAY,CAAC;AAIhE,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;AACxG,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC"}