lib0 0.2.115-4 → 0.2.115-6

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 (236) hide show
  1. package/coverage/tmp/{coverage-32703-1763495370274-0.json → coverage-5242-1765032816888-0.json} +1 -1
  2. package/delta/binding.d.ts +11 -9
  3. package/delta/binding.d.ts.map +1 -1
  4. package/delta/binding.js +5 -2
  5. package/delta/binding.test.d.ts.map +1 -1
  6. package/delta/delta-pitch.test.d.ts +5 -0
  7. package/delta/delta-pitch.test.d.ts.map +1 -0
  8. package/delta/{d2.d.ts → delta.d.ts} +129 -38
  9. package/delta/delta.d.ts.map +1 -0
  10. package/delta/{d2.js → delta.js} +379 -66
  11. package/delta/{d2.test.d.ts → delta.test.d.ts} +8 -1
  12. package/delta/delta.test.d.ts.map +1 -0
  13. package/delta/t3.test.d.ts +1 -1
  14. package/delta/t3.test.d.ts.map +1 -1
  15. package/dist/array.cjs +17 -60
  16. package/dist/array.cjs.map +1 -1
  17. package/dist/binding.cjs +114 -28
  18. package/dist/binding.cjs.map +1 -1
  19. package/dist/{broadcastchannel-d0c108a2.cjs → broadcastchannel-42bbe6e0.cjs} +2 -2
  20. package/dist/{broadcastchannel-d0c108a2.cjs.map → broadcastchannel-42bbe6e0.cjs.map} +1 -1
  21. package/dist/broadcastchannel.cjs +6 -6
  22. package/dist/{buffer-7f6fa8fa.cjs → buffer-54360f21.cjs} +2 -2
  23. package/dist/{buffer-7f6fa8fa.cjs.map → buffer-54360f21.cjs.map} +1 -1
  24. package/dist/buffer.cjs +5 -5
  25. package/dist/cache.cjs +3 -3
  26. package/dist/component.cjs +12 -8
  27. package/dist/component.cjs.map +1 -1
  28. package/dist/delta/binding.d.ts +11 -9
  29. package/dist/delta/binding.d.ts.map +1 -1
  30. package/dist/delta/binding.test.d.ts.map +1 -1
  31. package/dist/delta/delta-pitch.test.d.ts +5 -0
  32. package/dist/delta/delta-pitch.test.d.ts.map +1 -0
  33. package/dist/delta/{d2.d.ts → delta.d.ts} +129 -38
  34. package/dist/delta/delta.d.ts.map +1 -0
  35. package/dist/delta/{d2.test.d.ts → delta.test.d.ts} +8 -1
  36. package/dist/delta/delta.test.d.ts.map +1 -0
  37. package/dist/delta/t3.test.d.ts +1 -1
  38. package/dist/delta/t3.test.d.ts.map +1 -1
  39. package/dist/{d2.cjs → delta.cjs} +389 -71
  40. package/dist/delta.cjs.map +1 -0
  41. package/dist/{diff-1832cb43.cjs → diff-fab14ea6.cjs} +2 -2
  42. package/dist/{diff-1832cb43.cjs.map → diff-fab14ea6.cjs.map} +1 -1
  43. package/dist/diff.cjs +4 -4
  44. package/dist/{dom-f5047a64.cjs → dom-4c4b4c68.cjs} +1 -1
  45. package/dist/{dom-f5047a64.cjs.map → dom-4c4b4c68.cjs.map} +1 -1
  46. package/dist/dom.cjs +12 -5
  47. package/dist/dom.cjs.map +1 -1
  48. package/dist/{environment-90227ead.cjs → environment-ae4f6f15.cjs} +2 -2
  49. package/dist/{environment-90227ead.cjs.map → environment-ae4f6f15.cjs.map} +1 -1
  50. package/dist/environment.cjs +4 -4
  51. package/dist/equality.cjs +34 -0
  52. package/dist/equality.cjs.map +1 -0
  53. package/dist/fingerprint.cjs +44 -0
  54. package/dist/fingerprint.cjs.map +1 -0
  55. package/dist/{function-e7d18feb.cjs → function-618aa640.cjs} +8 -7
  56. package/dist/function-618aa640.cjs.map +1 -0
  57. package/dist/function.cjs +3 -3
  58. package/dist/function.d.ts.map +1 -1
  59. package/dist/index.cjs +9 -9
  60. package/dist/indexeddbV2.cjs +2 -2
  61. package/dist/jwt.cjs +5 -5
  62. package/dist/list.cjs +18 -5
  63. package/dist/list.cjs.map +1 -1
  64. package/dist/list.d.ts +9 -2
  65. package/dist/list.d.ts.map +1 -1
  66. package/dist/list.test.d.ts.map +1 -1
  67. package/dist/logging.cjs +11 -5
  68. package/dist/logging.cjs.map +1 -1
  69. package/dist/logging.common.cjs +4 -4
  70. package/dist/logging.node.cjs +4 -4
  71. package/dist/map.cjs +7 -314
  72. package/dist/map.cjs.map +1 -1
  73. package/dist/{object-18980796.cjs → object-dec41ef9.cjs} +3 -3
  74. package/dist/object-dec41ef9.cjs.map +1 -0
  75. package/dist/object.cjs +2 -2
  76. package/dist/object.d.ts.map +1 -1
  77. package/dist/performance.node.cjs +3 -3
  78. package/dist/pledge.cjs +2 -2
  79. package/dist/{prng-99204216.cjs → prng-96eef52a.cjs} +2 -2
  80. package/dist/{prng-99204216.cjs.map → prng-96eef52a.cjs.map} +1 -1
  81. package/dist/prng.cjs +6 -6
  82. package/dist/rabin-gf2-polynomial.cjs +5 -5
  83. package/dist/rabin-uncached.cjs +5 -5
  84. package/dist/rabin.cjs +5 -5
  85. package/dist/schema.cjs +202 -22
  86. package/dist/schema.cjs.map +1 -1
  87. package/dist/schema.d.ts +86 -29
  88. package/dist/schema.d.ts.map +1 -1
  89. package/dist/schema.test.d.ts +4 -0
  90. package/dist/schema.test.d.ts.map +1 -1
  91. package/dist/testing.cjs +9 -9
  92. package/dist/testing.cjs.map +1 -1
  93. package/dist/{traits.d.ts → trait/equality.d.ts} +1 -1
  94. package/dist/trait/equality.d.ts.map +1 -0
  95. package/dist/trait/fingerprint.d.ts +13 -0
  96. package/dist/trait/fingerprint.d.ts.map +1 -0
  97. package/dist/trait/traits.d.ts +3 -0
  98. package/dist/trait/traits.d.ts.map +1 -0
  99. package/dist/trait/traits.test.d.ts +5 -0
  100. package/dist/trait/traits.test.d.ts.map +1 -0
  101. package/dist/traits.cjs +23 -26
  102. package/dist/traits.cjs.map +1 -1
  103. package/dist/url.cjs +2 -2
  104. package/function.d.ts.map +1 -1
  105. package/function.js +6 -5
  106. package/list.d.ts +9 -2
  107. package/list.d.ts.map +1 -1
  108. package/list.js +17 -3
  109. package/list.test.d.ts.map +1 -1
  110. package/object.d.ts.map +1 -1
  111. package/object.js +2 -2
  112. package/package.json +8 -10
  113. package/schema.d.ts +86 -29
  114. package/schema.d.ts.map +1 -1
  115. package/schema.js +191 -20
  116. package/schema.test.d.ts +4 -0
  117. package/schema.test.d.ts.map +1 -1
  118. package/test.html +2 -4
  119. package/test.js +7 -13
  120. package/testing.js +3 -3
  121. package/{traits.d.ts → trait/equality.d.ts} +1 -1
  122. package/trait/equality.d.ts.map +1 -0
  123. package/trait/fingerprint.d.ts +13 -0
  124. package/trait/fingerprint.d.ts.map +1 -0
  125. package/trait/fingerprint.js +21 -0
  126. package/trait/traits.d.ts +3 -0
  127. package/trait/traits.d.ts.map +1 -0
  128. package/trait/traits.js +2 -0
  129. package/trait/traits.test.d.ts +5 -0
  130. package/{traits.test.d.ts.map → trait/traits.test.d.ts.map} +1 -1
  131. package/delta/abstract-array.d.ts +0 -166
  132. package/delta/abstract-array.d.ts.map +0 -1
  133. package/delta/abstract-array.js +0 -421
  134. package/delta/abstract.d.ts +0 -69
  135. package/delta/abstract.d.ts.map +0 -1
  136. package/delta/abstract.js +0 -102
  137. package/delta/array.d.ts +0 -23
  138. package/delta/array.d.ts.map +0 -1
  139. package/delta/array.js +0 -45
  140. package/delta/array.test.d.ts +0 -2
  141. package/delta/array.test.d.ts.map +0 -1
  142. package/delta/d2.d.ts.map +0 -1
  143. package/delta/d2.test.d.ts.map +0 -1
  144. package/delta/index.d.ts +0 -14
  145. package/delta/index.d.ts.map +0 -1
  146. package/delta/index.js +0 -79
  147. package/delta/map.d.ts +0 -226
  148. package/delta/map.d.ts.map +0 -1
  149. package/delta/map.js +0 -304
  150. package/delta/node.d.ts +0 -117
  151. package/delta/node.d.ts.map +0 -1
  152. package/delta/node.js +0 -183
  153. package/delta/node.test.d.ts +0 -4
  154. package/delta/node.test.d.ts.map +0 -1
  155. package/delta/ops.d.ts +0 -464
  156. package/delta/ops.d.ts.map +0 -1
  157. package/delta/ops.js +0 -544
  158. package/delta/t2.d.ts +0 -184
  159. package/delta/t2.d.ts.map +0 -1
  160. package/delta/t2.js +0 -890
  161. package/delta/text.d.ts +0 -43
  162. package/delta/text.d.ts.map +0 -1
  163. package/delta/text.js +0 -54
  164. package/delta/text.test.d.ts +0 -6
  165. package/delta/text.test.d.ts.map +0 -1
  166. package/delta/transformer.d.ts +0 -164
  167. package/delta/transformer.d.ts.map +0 -1
  168. package/delta/transformer.js +0 -888
  169. package/delta/transformer.test.d.ts +0 -13
  170. package/delta/transformer.test.d.ts.map +0 -1
  171. package/delta/value.d.ts +0 -84
  172. package/delta/value.d.ts.map +0 -1
  173. package/delta/value.js +0 -168
  174. package/dist/abstract-array.cjs +0 -433
  175. package/dist/abstract-array.cjs.map +0 -1
  176. package/dist/abstract.cjs +0 -122
  177. package/dist/abstract.cjs.map +0 -1
  178. package/dist/array2.cjs +0 -26
  179. package/dist/array2.cjs.map +0 -1
  180. package/dist/d2.cjs.map +0 -1
  181. package/dist/delta/abstract-array.d.ts +0 -166
  182. package/dist/delta/abstract-array.d.ts.map +0 -1
  183. package/dist/delta/abstract.d.ts +0 -69
  184. package/dist/delta/abstract.d.ts.map +0 -1
  185. package/dist/delta/array.d.ts +0 -23
  186. package/dist/delta/array.d.ts.map +0 -1
  187. package/dist/delta/array.test.d.ts +0 -2
  188. package/dist/delta/array.test.d.ts.map +0 -1
  189. package/dist/delta/d2.d.ts.map +0 -1
  190. package/dist/delta/d2.test.d.ts.map +0 -1
  191. package/dist/delta/index.d.ts +0 -14
  192. package/dist/delta/index.d.ts.map +0 -1
  193. package/dist/delta/map.d.ts +0 -226
  194. package/dist/delta/map.d.ts.map +0 -1
  195. package/dist/delta/node.d.ts +0 -117
  196. package/dist/delta/node.d.ts.map +0 -1
  197. package/dist/delta/node.test.d.ts +0 -4
  198. package/dist/delta/node.test.d.ts.map +0 -1
  199. package/dist/delta/ops.d.ts +0 -464
  200. package/dist/delta/ops.d.ts.map +0 -1
  201. package/dist/delta/t2.d.ts +0 -184
  202. package/dist/delta/t2.d.ts.map +0 -1
  203. package/dist/delta/text.d.ts +0 -43
  204. package/dist/delta/text.d.ts.map +0 -1
  205. package/dist/delta/text.test.d.ts +0 -6
  206. package/dist/delta/text.test.d.ts.map +0 -1
  207. package/dist/delta/transformer.d.ts +0 -164
  208. package/dist/delta/transformer.d.ts.map +0 -1
  209. package/dist/delta/transformer.test.d.ts +0 -13
  210. package/dist/delta/transformer.test.d.ts.map +0 -1
  211. package/dist/delta/value.d.ts +0 -84
  212. package/dist/delta/value.d.ts.map +0 -1
  213. package/dist/function-e7d18feb.cjs.map +0 -1
  214. package/dist/index2.cjs +0 -71
  215. package/dist/index2.cjs.map +0 -1
  216. package/dist/map2.cjs +0 -15
  217. package/dist/map2.cjs.map +0 -1
  218. package/dist/node.cjs +0 -206
  219. package/dist/node.cjs.map +0 -1
  220. package/dist/object-18980796.cjs.map +0 -1
  221. package/dist/ops.cjs +0 -575
  222. package/dist/ops.cjs.map +0 -1
  223. package/dist/t2.cjs +0 -932
  224. package/dist/t2.cjs.map +0 -1
  225. package/dist/text.cjs +0 -79
  226. package/dist/text.cjs.map +0 -1
  227. package/dist/traits.d.ts.map +0 -1
  228. package/dist/traits.test.d.ts +0 -4
  229. package/dist/traits.test.d.ts.map +0 -1
  230. package/dist/transformer.cjs +0 -930
  231. package/dist/transformer.cjs.map +0 -1
  232. package/dist/value.cjs +0 -187
  233. package/dist/value.cjs.map +0 -1
  234. package/traits.d.ts.map +0 -1
  235. package/traits.test.d.ts +0 -4
  236. /package/{traits.js → trait/equality.js} +0 -0
package/dist/t2.cjs DELETED
@@ -1,932 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var d2 = require('./d2.cjs');
6
- var schema = require('./schema.cjs');
7
- var error = require('./error-0c1f634f.cjs');
8
- require('./list.cjs');
9
- require('./function-e7d18feb.cjs');
10
- require('./array-78849c95.cjs');
11
- require('./set-5b47859e.cjs');
12
- require('./object-18980796.cjs');
13
- require('./traits.cjs');
14
- require('./math-96d5e8c4.cjs');
15
- require('./rabin.cjs');
16
- require('./buffer-7f6fa8fa.cjs');
17
- require('./string-fddc5f8b.cjs');
18
- require('./environment-90227ead.cjs');
19
- require('./map-24d263c0.cjs');
20
- require('./conditions-f5c0c102.cjs');
21
- require('./storage.cjs');
22
- require('./encoding-1a745c43.cjs');
23
- require('./number-1fb57bba.cjs');
24
- require('./binary-ac8e39e2.cjs');
25
- require('./decoding-76e75827.cjs');
26
- require('./patience.cjs');
27
-
28
- /* eslint-disable */
29
-
30
- /**
31
- * Creates a transformer template after receiving schema for DeltaA.
32
- *
33
- * @template {delta.DeltaAny} DeltaA
34
- * @typedef {<DA extends DeltaA> ($deltaA: s.Schema<DA>) => Template<any,DA,any>} TransformerFactory
35
- */
36
-
37
- /**
38
- * @template {TransformerFactory<any>} T
39
- * @template {delta.DeltaAny} DeltaA
40
- * @typedef {T extends (($deltaA: s.Schema<DeltaA>) => Template<any,DeltaA,infer DeltaB>) ? DeltaB : never } DeltaBFromTransformerFactory
41
- */
42
-
43
- /**
44
- * @template {delta.DeltaAny|null} [DeltaA=delta.DeltaAny|null]
45
- * @template {delta.DeltaAny|null} [DeltaB=delta.DeltaAny|null]
46
- * @typedef {{ a: DeltaA, b: DeltaB }} TransformResult
47
- */
48
-
49
- /**
50
- * @template {s.Unwrap<delta.$delta>|null} DeltaA
51
- * @template {s.Unwrap<delta.$delta>|null} DeltaB
52
- * @param {DeltaA} a
53
- * @param {DeltaB} b
54
- * @return {TransformResult<DeltaA,DeltaB>}
55
- */
56
- const transformResult = (a, b) => ({ a, b });
57
- const transformResultEmpty = transformResult(null, null);
58
-
59
- /**
60
- * @template {any} State
61
- * @template {delta.DeltaAny} DeltaA
62
- * @template {delta.DeltaAny} DeltaB
63
- * @typedef {object} TransformerDef
64
- * @property {s.Schema<DeltaA>} TransformerDef.$in
65
- * @property {s.Schema<DeltaB>} TransformerDef.$out
66
- * @property {function (this: Template<State,DeltaA,DeltaB>): State} TransformerDef.state
67
- * @property {(deltaIn:NoInfer<DeltaA>,s:NoInfer<State>) => TransformResult<NoInfer<DeltaA>?,NoInfer<DeltaB>?>} TransformerDef.applyA
68
- * @property {(deltaOut:NoInfer<DeltaB>,s:NoInfer<State>) => TransformResult<NoInfer<DeltaA>?,NoInfer<DeltaB>?>} TransformerDef.applyB
69
- */
70
-
71
- /**
72
- * A Delta Transformer ensures that it keeps two sources A and B in-sync, even if they use a
73
- * different update format.
74
- *
75
- * @template {any} State
76
- * @template {delta.DeltaAny} DeltaA
77
- * @template {delta.DeltaAny} DeltaB
78
- */
79
- class Transformer {
80
- /**
81
- * @param {Template<State,DeltaA,DeltaB>} t
82
- * @param {State} s
83
- */
84
- constructor (t, s) {
85
- this.t = t;
86
- this._state = s;
87
- /**
88
- * Pending a op, for internal use only
89
- * @type {DeltaA?}
90
- */
91
- this._pa = null;
92
- /**
93
- * Pending a op, for internal use only
94
- * @type {DeltaB?}
95
- */
96
- this._pb = null;
97
- /**
98
- * Whether this transformer value has been initially consumebd by the parent transformer.
99
- */
100
- this._init = false;
101
- /**
102
- * @type {Transformer<any,any,any>?}
103
- */
104
- this.parent = null;
105
- }
106
-
107
- /**
108
- * @param {DeltaA} deltaA
109
- * @return {TransformResult<DeltaA?,DeltaB?>}
110
- */
111
- applyA (deltaA) {
112
- return this.t._applyA(deltaA, this._state)
113
- }
114
-
115
- /**
116
- * @param {DeltaB} deltaB
117
- * @return {TransformResult<DeltaA?,DeltaB?>}
118
- */
119
- applyB (deltaB) {
120
- return this.t._applyB(deltaB, this._state)
121
- }
122
- }
123
-
124
- /**
125
- * @param {Array<Transformer<any,delta.DeltaAny,delta.DeltaAny>>} trs
126
- * @param {TransformResult} output
127
- * @return {boolean}
128
- */
129
- const _forwardPipe = (trs, output) => {
130
- let again = false;
131
- for (let i = 0; i < trs.length; i++) {
132
- const tr = trs[i];
133
- if (tr._pa === null) continue
134
- const { a, b } = tr.applyA(tr._pa);
135
- tr._pa = null;
136
- if (a !== null) {
137
- if (i === 0) {
138
- output.a = d2.mergeDeltas(output.a, a);
139
- } else {
140
- // need to interate back to integrate the produced backwards-change
141
- again = true;
142
- trs[i - 1]._pb = a;
143
- }
144
- }
145
- if (b !== null) {
146
- if (i === trs.length - 1) {
147
- output.b = d2.mergeDeltas(output.b, b);
148
- } else {
149
- trs[i + 1]._pa = b;
150
- }
151
- }
152
- }
153
- return again
154
- };
155
-
156
- /**
157
- * @param {Array<Transformer<any,delta.DeltaAny,delta.DeltaAny>>} trs
158
- * @param {TransformResult} output
159
- * @return {boolean}
160
- */
161
- const _backwardPipe = (trs, output) => {
162
- let again = false;
163
- for (let i = trs.length - 1; i >= 0; i--) {
164
- const tr = trs[i];
165
- if (tr._pb === null) continue
166
- const { a, b } = tr.applyA(tr._pb);
167
- tr._pb = null;
168
- if (a !== null) {
169
- if (i === 0) {
170
- output.a = d2.mergeDeltas(output.a, a);
171
- } else {
172
- // need to interate back to integrate the produced backwards-change
173
- trs[i - 1]._pb = a;
174
- }
175
- }
176
- if (b !== null) {
177
- if (i === trs.length - 1) {
178
- output.b = d2.mergeDeltas(output.b, b);
179
- } else {
180
- // need to interate back to integrate the produced backwards-change
181
- again = true;
182
- trs[i + 1]._pa = a;
183
- }
184
- }
185
- }
186
- return again
187
- };
188
-
189
- /**
190
- * @template State
191
- * @template {delta.DeltaAny} DeltaA
192
- * @template {delta.DeltaAny} DeltaB
193
- */
194
- class Template {
195
- /**
196
- * @param {TransformerDef<State,DeltaA,DeltaB>} def
197
- */
198
- constructor ({ $in, $out, state, applyA, applyB }) {
199
- /**
200
- * @type {s.Schema<DeltaA>}
201
- */
202
- this.$in = $in;
203
- /**
204
- * @type {s.Schema<DeltaB>}
205
- */
206
- this.$out = $out;
207
- /**
208
- * @type {() => State}
209
- */
210
- this._state = state;
211
- /**
212
- * @type {typeof applyA}
213
- */
214
- this._applyA = applyA;
215
- /**
216
- * @type {typeof applyB}
217
- */
218
- this._applyB = applyB;
219
- /**
220
- * Cache for stateless transformers.
221
- *
222
- * @type {Transformer<State,DeltaA,DeltaB>?}
223
- */
224
- this._tr = null;
225
- }
226
-
227
- /**
228
- * @template {delta.DeltaAny} R
229
- * @param {($d: s.Schema<DeltaB>) => Template<any,DeltaB,R>} t
230
- * @return {Template<any,DeltaA,R>}
231
- */
232
- pipe (t) {
233
- /**
234
- * @type {TransformerPipeTemplate<any,any>}
235
- */
236
- const tpipe = new TransformerPipeTemplate();
237
- tpipe.templates.push(this, t(this.$out));
238
- return tpipe
239
- }
240
-
241
- init () {
242
- if (this._tr != null) return this._tr
243
- // reuse stateless transformers
244
- const s = this._state();
245
- if (s === null) {
246
- return (this._tr = new Transformer(this, s))
247
- }
248
- return new Transformer(this, s)
249
- }
250
- }
251
-
252
- /**
253
- * @template {delta.DeltaAny} DeltaA
254
- * @template {delta.DeltaAny} DeltaB
255
- * @param {s.Schema<DeltaA>} $deltaA
256
- * @param {s.Schema<DeltaB>} $deltaB
257
- * @return {s.Schema<Template<any,DeltaA,DeltaB>>}
258
- */
259
- const $template = ($deltaA, $deltaB) => /** @type {s.Schema<Template<any,any,any>>} */ (schema.$instanceOf(Template, o => o.$in.extends($deltaA) && o.$out.extends($deltaB)));
260
- const $templateAny = /** @type {s.Schema<Template<any,any,any>>} */ (schema.$instanceOf(Template));
261
-
262
- /**
263
- * @template {delta.DeltaAny} DeltaA
264
- * @template {delta.DeltaAny} DeltaB
265
- * @typedef {Template<any,DeltaA,DeltaB>|(
266
- * DeltaB extends delta.Map<infer MKV>
267
- * ? (MKV|DeltaB)
268
- * : (DeltaB extends delta.Array<infer MArr> ? (MArr|DeltaB) : DeltaB))
269
- * } MaybeFixedTemplate
270
- */
271
-
272
- /**
273
- * @template X
274
- * @typedef {X extends Template<any,any,infer D> ? (D extends delta.Value<infer V> ? V : D) : X} UnwrapTemplateForArray
275
- */
276
-
277
- /**
278
- * @template {any} MaybeFixed
279
- * @typedef {MaybeFixed extends Template<any,any,any>
280
- * ? MaybeFixed
281
- * : Template<any,any,
282
- * MaybeFixed extends delta.AbstractDelta
283
- * ? MaybeFixed
284
- * : (MaybeFixed extends Array<any>
285
- * ? delta.Array<UnwrapTemplateForArray<MaybeFixed[number]>>
286
- * : (MaybeFixed extends {[key:string]:any} ? delta.Map<MaybeFixed> : never))
287
- * >
288
- * } MaybeFixedTemplateToTemplate
289
- */
290
-
291
- /**
292
- * @template MaybeFixed
293
- * @param {MaybeFixed} maybeFixed
294
- * @return {MaybeFixed extends Template<any,any,delta.Delta> ? (Extract<MaybeFixed,Template<any,any,any>>) : Template<any,any,MaybeFixed extends delta.Delta ? Extract<MaybeFixed,delta.Delta> : delta.Array<MaybeFixed[keyof MaybeFixed]>>}
295
- */
296
- const maybeFixedToTemplate = maybeFixed => $templateAny.check(maybeFixed)
297
- ? /** @type {any} */ (maybeFixed)
298
- : (d2.$delta.check(maybeFixed)
299
- ? /** @type {any} */ (fixed(maybeFixed))
300
- : (schema.$arrayAny.check(maybeFixed)
301
- ? /** @type {any} */ (fixed(d2.array().insert(maybeFixed).done()))
302
- : (schema.$objectAny.check(maybeFixed) ? /** @type {any} */ (fixed(d2.map().setMany(maybeFixed).done())) : error.unexpectedCase())
303
- )
304
- );
305
-
306
- /**
307
- * @template {delta.AbstractDelta} DeltaA
308
- * @template {Template<any,DeltaA,any>} Tr
309
- * @param {s.Schema<DeltaA>} _$deltaA
310
- * @param {Tr} transformer
311
- * @return {<DA extends DeltaA>($d:s.Schema<DA>) => Tr extends Template<any,any,infer DeltaB> ? Template<any,DA,DeltaB> : never}
312
- */
313
- const transformStatic = (_$deltaA, transformer) => () => /** @type {any} */ (transformer);
314
-
315
- /**
316
- * @template {delta.AbstractDelta} DeltaA
317
- * @template {<DA extends DeltaA> ($deltaA: s.Schema<DA>) => Template<any,DA,any>} TF
318
- * @param {s.Schema<DeltaA>} _$deltaA
319
- * @param {TF} transformerFactory
320
- * @return {TF}
321
- */
322
- const transform = (_$deltaA, transformerFactory) => transformerFactory;
323
-
324
- /**
325
- * @type {TransformerDef<any,any,any>}
326
- */
327
- const pipeTemplateDef = {
328
- $in: schema.$any,
329
- $out: schema.$any,
330
- state: function () { return /** @type {TransformerPipeTemplate<any,any>} */ (/** @type {unknown} */ (this)).templates.map(t => t.init()) },
331
- applyA: (dchange, trs) => {
332
- const output = transformResult(null, null);
333
- let again = true;
334
- trs[0]._pa = dchange;
335
- while (again) {
336
- // apply forwards
337
- again = _forwardPipe(trs, output);
338
- // iterate back
339
- if (again) {
340
- again = _backwardPipe(trs, output);
341
- }
342
- }
343
- return output
344
- },
345
- applyB: (dchange, trs) => {
346
- const output = transformResult(null, null);
347
- let again = true;
348
- trs[trs.length - 1]._pb = dchange;
349
- while (again) {
350
- // iterate back
351
- again = _backwardPipe(trs, output);
352
- // apply forwards
353
- if (again) {
354
- again = _forwardPipe(trs, output);
355
- }
356
- }
357
- return output
358
- }
359
- };
360
-
361
- /**
362
- * @todo just have something like "previousTemplate" to implement pipe. This can be assembled when
363
- * init the template.
364
- * @template {s.Unwrap<typeof delta.$delta>} DeltaA
365
- * @template {s.Unwrap<typeof delta.$delta>} DeltaB
366
- * @extends {Template<any,DeltaA,DeltaB>}
367
- */
368
- class TransformerPipeTemplate extends Template {
369
- constructor () {
370
- super(pipeTemplateDef);
371
- /**
372
- * @type {Array<Template<any,DeltaA,DeltaB>>}
373
- */
374
- this.templates = [];
375
- }
376
-
377
- /**
378
- * @template {delta.AbstractDelta} R
379
- * @param {($d: s.Schema<DeltaB>) => Template<any,DeltaB,R>} t
380
- * @return {Template<any,DeltaA,R>}
381
- */
382
- pipe (t) {
383
- /**
384
- * @type {TransformerPipeTemplate<any,any>}
385
- */
386
- const tpipe = new TransformerPipeTemplate();
387
- tpipe.templates = this.templates.slice();
388
- tpipe.templates.push(t(this.$out));
389
- return /** @type {any} */ (tpipe)
390
- }
391
- }
392
-
393
- /**
394
- * @template {delta.AbstractDelta} DeltaA
395
- * @template {delta.AbstractDelta} DeltaB
396
- * @template {delta.AbstractDelta} DeltaC
397
- * @param {($s: s.Schema<DeltaA>) => Template<any,DeltaA,DeltaB>} t1
398
- * @param {($s: s.Schema<DeltaB>) => Template<any,DeltaB,DeltaC>} t2
399
- * @return {($d: s.Schema<DeltaA>) => Template<any,DeltaA,DeltaC>}
400
- */
401
- const pipe = (t1, t2) => ($d) => {
402
- /**
403
- * @type {TransformerPipeTemplate<any,any>}
404
- */
405
- const tpipe = new TransformerPipeTemplate();
406
- const t1t = t1($d);
407
- tpipe.templates.push(t1t, t2(t1t.$out));
408
- return tpipe
409
- };
410
-
411
- /**
412
- * @template {any} State
413
- * @template {s.Unwrap<typeof delta.$delta>} DeltaIn
414
- * @template {s.Unwrap<typeof delta.$delta>} DeltaOut
415
- * @param {TransformerDef<State,DeltaIn,DeltaOut>} def
416
- * @return {Template<State,DeltaIn,DeltaOut>}
417
- */
418
- const template = def => new Template(/** @type {any} */ (def));
419
-
420
- /**
421
- * @template FixedContent
422
- * @param {FixedContent} fixedContent
423
- * @return {Template<any,any,FixedContent extends delta.AbstractDelta ? FixedContent : delta.Value<FixedContent>>}
424
- */
425
- const fixed = fixedContent => {
426
- const staticDelta = d2.$delta.check(fixedContent) ? fixedContent : undefined().set(fixedContent).done();
427
- return template({
428
- $in: schema.$any,
429
- $out: schema.$any,
430
- state: () => ({ e: false }),
431
- applyA: (_d, s) => {
432
- if (!s.e) {
433
- s.e = true;
434
- return transformResult(null, staticDelta)
435
- }
436
- return transformResultEmpty
437
- },
438
- applyB: () => {
439
- // @todo should reverse the change and give back
440
- error.unexpectedCase();
441
- }
442
- })
443
- };
444
-
445
- /**
446
- * @template MaybeTemplate
447
- * @typedef {[MaybeTemplate] extends [Template<any,any,any>] ? MaybeTemplate : Template<any,any,
448
- * [MaybeTemplate] extends [delta.AbstractDelta] ? MaybeTemplate : delta.Value<MaybeTemplate>
449
- * >} AnyToTemplate
450
- */
451
-
452
- /**
453
- * @template {{ [key: string]: any }} MaybeTemplateMap
454
- * @typedef {{ [K in keyof MaybeTemplateMap]: AnyToTemplate<MaybeTemplateMap[K]> }} AnyMapToTemplate
455
- */
456
-
457
- /**
458
- * @template {Array<any>} MaybeTemplateArray
459
- * @typedef {{ [K in keyof MaybeTemplateArray]: AnyToTemplate<MaybeTemplateArray[K]> }} AnyArrayToTemplate
460
- */
461
-
462
- /**
463
- * @template {{ [key:string]: any }} T
464
- * @typedef {Template<
465
- * any,
466
- * AnyMapToTemplate<T>[keyof T] extends Template<any, infer DeltaA,any> ? DeltaA : never,
467
- * delta.Map<{ [K in keyof T]: AnyToTemplate<T[K]> extends Template<any, any, infer DeltaB>
468
- * ? (DeltaB extends delta.Value<infer V> ? V : DeltaB) : AnyToTemplate<T[K]> }>
469
- * >} MapDefToTemplate
470
- */
471
-
472
- /**
473
- * @template {{ [key:string]: any }} T
474
- * @param {T} definition
475
- * @return {MapDefToTemplate<T> extends Template<any,infer A,infer B> ? Template<any,A,B> : never}
476
- */
477
- const map = (definition) => {
478
- /**
479
- * @type {{ [key:string]: Template<any,any,any> }}
480
- */
481
- const def = {};
482
- for (const key in definition) {
483
- const d = definition[key];
484
- def[key] = $templateAny.check(d) ? d : fixed(d);
485
- }
486
- return template({
487
- $in: schema.$any,
488
- $out: schema.$any,
489
- state: () => {
490
- const mapState = /** @type {{ [key: string]: Transformer<any,any,any> }} */ ({});
491
- for (const key in def) {
492
- mapState[key] = def[key].init();
493
- }
494
- return /** @type {{ [key in keyof T]: T extends Template<any,infer SDIn, infer SDOut> ? Transformer<any, SDIn, SDOut>: never }} */ (mapState)
495
- },
496
- applyA: (d, state) => {
497
- return _applyMapOpHelper(state, [{ d, src: null }])
498
- },
499
- applyB: (d, state) => {
500
- schema.assert(d, undefined);
501
- /**
502
- * @type {Array<{ d: delta.AbstractDelta, src: Transformer<any,any,any>? }>}
503
- */
504
- const reverseAChanges = [];
505
- d.forEach(op => {
506
- if (d2.$deleteOp.check(op)) {
507
- error.unexpectedCase();
508
- }
509
- const src = state[op.key];
510
- // src expects a delta value
511
- const res = src.applyB(d2.$modifyOp.check(op) ? undefined().modify(op.value) : undefined().set(op.value));
512
- src._pa = res.a;
513
- src._pb = res.b;
514
- if (res.a != null) {
515
- reverseAChanges.push({ d: res.a, src });
516
- }
517
- });
518
- return _applyMapOpHelper(state, reverseAChanges)
519
- }
520
- })
521
- };
522
-
523
- /**
524
- * @param {{ [key: string]: Transformer<any, any, any> }} state
525
- * @param {Array<{ d: delta.AbstractDelta, src: Transformer<any,any,any>? }>} reverseAChanges
526
- * @return {TransformResult<delta.AbstractDelta?,delta.Map<any>?>}
527
- */
528
- const _applyMapOpHelper = (state, reverseAChanges) => {
529
- /**
530
- * @type {TransformResult<delta.AbstractDelta?,delta.Map<any>?>}
531
- */
532
- const applyResult = transformResult(null, null);
533
- while (reverseAChanges.length > 0) {
534
- /**
535
- * @type {Array<{ d: delta.AbstractDelta, src: Transformer<any,any,any>? }>}
536
- */
537
- let nextReverseAChanges = [];
538
- for (const key in state) {
539
- const s = state[key];
540
- let transformPriority = false; // false until own is found
541
- for (let i = 0; i < reverseAChanges.length; i++) {
542
- // changes are applied in reverseAChanges order.
543
- // rebase against all concurrent (the op stored on transformer), then apply
544
- const r = reverseAChanges[i];
545
- if (r.src === s) {
546
- transformPriority = true; // own has less priority, concurrent is applied with higher prio
547
- continue // don't apply own
548
- }
549
- let rd = r.d;
550
- if (s._pa != null) {
551
- rd = rd.clone();
552
- rd.rebase(s._pa, transformPriority);
553
- }
554
- const res = s.applyA(rd);
555
- s._pa = res.a;
556
- s._pb = d2.mergeDeltas(s._pb, res.b);
557
- if (res.a != null) {
558
- nextReverseAChanges.push({ d: res.a, src: s });
559
- }
560
- }
561
- }
562
- // merge changes for output
563
- for (let i = 0; i < reverseAChanges.length; i++) {
564
- const rc = reverseAChanges[i];
565
- if (rc.src != null) { // don't apply received deltas
566
- applyResult.a = d2.mergeDeltas(applyResult.a, rc.d);
567
- }
568
- }
569
- reverseAChanges = nextReverseAChanges;
570
- nextReverseAChanges = [];
571
- }
572
- // accumulate b changes stored on transformers
573
- const bRes = d2.map();
574
- for (const key in state) {
575
- const s = state[key];
576
- if (s._pb) {
577
- if (s._init) {
578
- bRes.modify(key, s._pb);
579
- } else {
580
- s._init = true;
581
- bRes.set(key, s._pb);
582
- }
583
- }
584
- }
585
- if (bRes._changes.size > 0) {
586
- // opt values (iff delta is of type DeltaValue, map the change to the map)
587
- bRes._changes.forEach((change, key) => {
588
- if (undefined(change.value)) {
589
- const changeOp = change.value.change;
590
- if (d2.$insertOp.check(changeOp) || d2.$modifyOp.check(changeOp)) {
591
- bRes.set(key, changeOp.value);
592
- } else if (d2.$deleteOp.check(changeOp)) {
593
- bRes.delete(key);
594
- } else {
595
- error.unexpectedCase();
596
- }
597
- }
598
- });
599
- applyResult.b = bRes;
600
- }
601
- return applyResult
602
- };
603
-
604
- /**
605
- * @todo This is similar to dt.map. Consider the similarities and try to merge them.
606
- *
607
- * @template {Array<any>} T
608
- * @param {T} definition
609
- * @return {Template<
610
- * any,
611
- * AnyArrayToTemplate<T>[number] extends Template<any, infer DeltaA, any> ? DeltaA : never,
612
- * delta.Array<AnyArrayToTemplate<T>[number] extends Template<any, any, infer DeltaB> ? delta.ValueUnwrap<DeltaB> : never>
613
- * >}
614
- */
615
- const array = (definition) => {
616
- /**
617
- * @type {Array<Template<any,any,any>>}
618
- */
619
- const def = [];
620
- for (let i = 0; i < definition.length; i++) {
621
- const d = definition[i];
622
- def[i] = $templateAny.check(d) ? d : fixed(d);
623
- }
624
- return /** @type {any} */ (template({
625
- $in: schema.$any,
626
- $out: undefined,
627
- state: () => {
628
- const arrState = /** @type {Transformer<any,any,any>[]} */ ([]);
629
- for (let i = 0; i < def.length; i++) {
630
- arrState[i] = def[i].init();
631
- }
632
- return /** @type {(T extends Template<any,infer SDIn, infer SDOut> ? Transformer<any, SDIn, SDOut>: never)[]} */ (arrState)
633
- },
634
- applyA: (d, state) => {
635
- return _applyArrayOpHelper(state, [{ d, src: null }])
636
- },
637
- applyB: (d, state) => {
638
- schema.assert(d, undefined);
639
- /**
640
- * @type {Array<{ d: delta.AbstractDelta, src: Transformer<any,any,any>? }>}
641
- */
642
- const reverseAChanges = [];
643
- d.forEach((op, index) => {
644
- if (d2.$deleteOp.check(op) || d2.$insertOp.check(op)) {
645
- error.unexpectedCase();
646
- } else if (d2.$modifyOp.check(op)) {
647
- const src = state[index];
648
- const res = src.applyB(op.modify);
649
- src._pa = res.a;
650
- src._pb = res.b;
651
- if (res.a != null) {
652
- reverseAChanges.push({ d: res.a, src });
653
- }
654
- }
655
- });
656
- return _applyArrayOpHelper(state, reverseAChanges)
657
- }
658
- }))
659
- };
660
-
661
- /**
662
- * @param {Transformer<any, any, any>[]} state
663
- * @param {Array<{ d: delta.AbstractDelta, src: Transformer<any,any,any>? }>} reverseAChanges
664
- * @return {TransformResult<delta.AbstractDelta?,delta.Array<any>?>}
665
- */
666
- const _applyArrayOpHelper = (state, reverseAChanges) => {
667
- /**
668
- * @type {TransformResult<delta.AbstractDelta?,delta.Array<any>?>}
669
- */
670
- const applyResult = transformResult(null, null);
671
- while (reverseAChanges.length > 0) {
672
- /**
673
- * @type {Array<{ d: delta.AbstractDelta, src: Transformer<any,any,any>? }>}
674
- */
675
- let nextReverseAChanges = [];
676
- for (let i = 0; i < state.length; i++) {
677
- const s = state[i];
678
- let transformPriority = false; // false until own is found
679
- for (let i = 0; i < reverseAChanges.length; i++) {
680
- // changes are applied in reverseAChanges order.
681
- // rebase against all concurrent (the op stored on transformer), then apply
682
- const r = reverseAChanges[i];
683
- if (r.src === s) {
684
- transformPriority = true; // own has less priority, concurrent is applied with higher prio
685
- continue // don't apply own
686
- }
687
- let rd = r.d;
688
- if (s._pa != null) {
689
- rd = rd.clone();
690
- rd.rebase(s._pa, transformPriority);
691
- }
692
- const res = s.applyA(rd);
693
- s._pa = res.a;
694
- s._pb = d2.mergeDeltas(s._pb, res.b);
695
- if (res.a != null) {
696
- nextReverseAChanges.push({ d: res.a, src: s });
697
- }
698
- }
699
- }
700
- // merge changes for output
701
- for (let i = 0; i < nextReverseAChanges.length; i++) {
702
- applyResult.a = d2.mergeDeltas(applyResult.a, nextReverseAChanges[i].d);
703
- }
704
- reverseAChanges = nextReverseAChanges;
705
- nextReverseAChanges = [];
706
- }
707
- // accumulate b changes stored on transformers
708
- const bRes = d2.array();
709
- let performedChange = false;
710
- for (let i = 0; i < state.length; i++) {
711
- const s = state[i];
712
- let spb = s._pb;
713
- if (spb) {
714
- if (undefined(spb)) {
715
- spb = spb.get();
716
- }
717
- if (s._init) {
718
- bRes.modify(spb);
719
- } else {
720
- s._init = true;
721
- bRes.insert([spb]);
722
- }
723
- performedChange = true;
724
- } else {
725
- bRes.retain(1);
726
- }
727
- }
728
- if (performedChange) {
729
- applyResult.b = bRes.done();
730
- }
731
- return applyResult
732
- };
733
-
734
- /**
735
- * @param {TransformResult<delta.AbstractDelta?, delta.Node<any,any,any>>} res
736
- * @param {{ attrs: Transformer<any,any,any>, children: Transformer<any,any,any> }} state
737
- * @param {delta.AbstractDelta?} nextAAttrs apply this in reverse!
738
- * @param {delta.AbstractDelta?} nextAChildren
739
- */
740
- const _nodeApplyA = (res, state, nextAAttrs, nextAChildren) => {
741
- while (nextAAttrs != null || nextAChildren != null) {
742
- const resChildren = nextAChildren && state.children.applyA(nextAChildren);
743
- const resAttrs = (nextAAttrs || resChildren?.a) ? state.attrs.applyA(d2.mergeDeltas(nextAAttrs, resChildren?.a)) : null;
744
- nextAChildren = resAttrs?.a;
745
- nextAAttrs = null;
746
- res.a = d2.mergeDeltas(d2.mergeDeltas(res.a, resChildren?.a), resAttrs?.a);
747
- resChildren?.b && res.b.children.apply(resChildren.b);
748
- resAttrs?.b && res.b.attributes.apply(resAttrs.b);
749
- }
750
- };
751
-
752
- /**
753
- * @template {{ [key:string]: any } | Template<any,any,delta.Map<any>>} T
754
- * @typedef {T extends Template<any,any,any> ? T : MapDefToTemplate<T>} MapOrMapDefToTemplate
755
- */
756
-
757
- /**
758
- * @template {string} NodeName
759
- * @template {{ [key:string]:any } | Template<any,any,delta.Map<{[key:string]:any}>>} Attrs - accepts map or map definition
760
- * @template {Template<any,any,delta.Array<any,any>> | Array<any>} Children
761
- * @param {NodeName} name
762
- * @param {Attrs} attributes
763
- * @param {Children} children
764
- * @return {Template<
765
- * any,
766
- * MapOrMapDefToTemplate<Attrs> extends Template<any, infer A, any> ? A : never,
767
- * delta.Node<
768
- * NodeName,
769
- * MapOrMapDefToTemplate<Attrs> extends Template<any,any,delta.Map<infer M>> ? M : never,
770
- * MaybeFixedTemplateToTemplate<Children> extends Template<any,any,delta.Array<infer BChildren,any>> ? BChildren : never,
771
- * any
772
- * >
773
- * >}
774
- */
775
- const node = (name, attributes, children) => {
776
- const attrs = /** @type {Template<any,any,delta.Map<any>>} */ ($templateAny.check(attributes) ? attributes : map(attributes));
777
- const childs = /** @type {Template<any,any,delta.Array<any>>} */ (maybeFixedToTemplate(children));
778
- // @todo this should be properly inferred
779
- return /** @type {any} */ (template({
780
- $in: schema.$any,
781
- $out: undefined(schema.$literal(name), schema.$any, schema.$any),
782
- state: () => ({
783
- attrs: attrs.init(),
784
- children: childs.init()
785
- }),
786
- applyA: (d, state) => {
787
- const res = transformResult(null, /** @type {delta.Node<NodeName,any,any,any>} */ (undefined(name)));
788
- _nodeApplyA(res, state, d, d);
789
- return res
790
- },
791
- applyB: (d, state) => {
792
- schema.assert(d, undefined);
793
- const res = transformResult(null, /** @type {delta.Node<NodeName,any,any,any>} */ (undefined(name)));
794
- const childrenRes = d.children.ops.length === 0 ? transformResultEmpty : state.children.applyB(/** @type {delta.Array<any,any>} */(d.children));
795
- const attrsRes = d.attributes._changes.size === 0 ? transformResultEmpty : state.attrs.applyB(d.attributes);
796
- attrsRes.b && res.b.attributes.apply(attrsRes.b);
797
- childrenRes.b && res.b.children.apply(/** @type {delta.Array<any,false>} */ (childrenRes.b));
798
- res.a = d2.mergeDeltas(attrsRes.a, childrenRes.a);
799
- _nodeApplyA(res, state, childrenRes.a, attrsRes.a);
800
- return res
801
- }
802
- }))
803
- };
804
-
805
- /**
806
- * @template {{[k:string]:any}} KV
807
- * @typedef {delta.Map<KV> | delta.Node<any,KV,any,any>} _FollowPath
808
- */
809
-
810
- /**
811
- * @template {any} D
812
- * @template {string[]} Path
813
- * @typedef {Path extends []
814
- * ? D
815
- * : Path extends [infer P, ...infer PRest]
816
- * ? (
817
- * P extends string ? (D extends _AttrDeltaType<{ [K in P]: infer V }> ? QueryFollowPath<V,PRest extends string[] ? PRest : never> : never) : never
818
- * )
819
- * : never
820
- * } QueryFollowPath
821
- */
822
-
823
- /**
824
- * @template {{[k:string]:any}} Attrs
825
- * @typedef {delta.Map<Partial<Attrs>> | delta.Node<any,Partial<Attrs>,any,any>} _AttrDeltaType
826
- */
827
-
828
- /**
829
- * @template {Array<string>} Path
830
- * @typedef {Path extends [infer P, ...infer PRest] ? (_AttrDeltaType<{ [K in (P extends string ? P : any)]: PathToDelta<PRest extends Array<string> ? PRest : any> }>) : any} PathToDelta
831
- */
832
-
833
- /**
834
- * @template {Array<string>} Path
835
- * @param {Path} path
836
- * @return {<DA extends PathToDelta<Path>>($in: s.Schema<DA>) => Template<any, DA, delta.Value<QueryFollowPath<DA,Path>>>}
837
- */
838
- const query = (...path) => transformStatic(schema.$any, template({
839
- $in: d2.$delta,
840
- $out: undefined,
841
- state: () => null,
842
- applyA: d => {
843
- d = undefined(d) ? d.attributes : d;
844
- let cd = /** @type {delta.Map<any>?} */ (undefined(d));
845
- let overwritten = false;
846
- for (let i = 0; i < path.length && cd != null; i++) {
847
- if (undefined(cd)) {
848
- const c = cd.get(path[i]);
849
- if (d2.$insertOp.check(c)) {
850
- overwritten = true;
851
- cd = c.value;
852
- } else if (d2.$deleteOp.check(c)) {
853
- overwritten = true;
854
- cd = null;
855
- break
856
- } else if (d2.$modifyOp.check(c)) {
857
- cd = c.value;
858
- }
859
- } else {
860
- cd = null;
861
- }
862
- }
863
- const dv = undefined();
864
- if (overwritten) {
865
- // @todo implement some kind of "ValueDelta" with insert, delete, modify ops. dmap is supposed
866
- // to automatically translate this.
867
- if (cd == null) {
868
- dv.delete();
869
- } else {
870
- dv.set(cd);
871
- }
872
- } else {
873
- dv.modify(cd);
874
- }
875
- return transformResult(null, dv)
876
- },
877
- applyB: (d) => {
878
- const dop = d.change;
879
- let resD = d2.map();
880
- let i = path.length - 1;
881
- const p = path[i];
882
- if (d2.$modifyOp.check(dop)) {
883
- resD.modify(p, dop.value);
884
- } else if (d2.$insertOp.check(dop)) {
885
- resD.set(p, dop.value);
886
- } else if (d2.$deleteOp.check(dop)) {
887
- resD.delete(p);
888
- }
889
- for (i--; i >= 0; i--) {
890
- const tmpDmap = d2.map();
891
- tmpDmap.modify(p, resD);
892
- resD = tmpDmap;
893
- }
894
- return /** @type {TransformResult<any,null>} */ (transformResult(resD, null))
895
- }
896
- }));
897
-
898
- /**
899
- * @template {delta.AbstractDelta} Delta
900
- * @param {s.Schema<Delta>} $in
901
- * @return {Template<null,Delta,Delta>}
902
- */
903
- const id = $in => template({
904
- $in,
905
- $out: $in,
906
- state: () => null,
907
- applyA: d => {
908
- return transformResult(null, d)
909
- },
910
- applyB: d => {
911
- return transformResult(d, null)
912
- }
913
- });
914
-
915
- exports.$template = $template;
916
- exports.$templateAny = $templateAny;
917
- exports.Template = Template;
918
- exports.Transformer = Transformer;
919
- exports.array = array;
920
- exports.fixed = fixed;
921
- exports.id = id;
922
- exports.map = map;
923
- exports.maybeFixedToTemplate = maybeFixedToTemplate;
924
- exports.node = node;
925
- exports.pipe = pipe;
926
- exports.query = query;
927
- exports.template = template;
928
- exports.transform = transform;
929
- exports.transformResult = transformResult;
930
- exports.transformResultEmpty = transformResultEmpty;
931
- exports.transformStatic = transformStatic;
932
- //# sourceMappingURL=t2.cjs.map