lib0 0.2.115-4 → 0.2.115-5

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 (235) hide show
  1. package/coverage/tmp/coverage-42121-1764767245409-0.json +1 -0
  2. package/coverage/tmp/{coverage-32703-1763495370274-0.json → coverage-42122-1764767192180-0.json} +1 -1
  3. package/delta/binding.d.ts +11 -9
  4. package/delta/binding.d.ts.map +1 -1
  5. package/delta/binding.js +5 -2
  6. package/delta/binding.test.d.ts.map +1 -1
  7. package/delta/delta-pitch.test.d.ts +5 -0
  8. package/delta/delta-pitch.test.d.ts.map +1 -0
  9. package/delta/{d2.d.ts → delta.d.ts} +117 -34
  10. package/delta/delta.d.ts.map +1 -0
  11. package/delta/{d2.js → delta.js} +244 -53
  12. package/delta/{d2.test.d.ts → delta.test.d.ts} +6 -1
  13. package/delta/delta.test.d.ts.map +1 -0
  14. package/delta/t3.test.d.ts +1 -1
  15. package/delta/t3.test.d.ts.map +1 -1
  16. package/dist/array.cjs +17 -60
  17. package/dist/array.cjs.map +1 -1
  18. package/dist/binding.cjs +114 -28
  19. package/dist/binding.cjs.map +1 -1
  20. package/dist/{broadcastchannel-d0c108a2.cjs → broadcastchannel-94897809.cjs} +2 -2
  21. package/dist/{broadcastchannel-d0c108a2.cjs.map → broadcastchannel-94897809.cjs.map} +1 -1
  22. package/dist/broadcastchannel.cjs +6 -6
  23. package/dist/{buffer-7f6fa8fa.cjs → buffer-8d110bf4.cjs} +2 -2
  24. package/dist/{buffer-7f6fa8fa.cjs.map → buffer-8d110bf4.cjs.map} +1 -1
  25. package/dist/buffer.cjs +5 -5
  26. package/dist/cache.cjs +3 -3
  27. package/dist/component.cjs +12 -8
  28. package/dist/component.cjs.map +1 -1
  29. package/dist/delta/binding.d.ts +11 -9
  30. package/dist/delta/binding.d.ts.map +1 -1
  31. package/dist/delta/binding.test.d.ts.map +1 -1
  32. package/dist/delta/delta-pitch.test.d.ts +5 -0
  33. package/dist/delta/delta-pitch.test.d.ts.map +1 -0
  34. package/dist/delta/{d2.d.ts → delta.d.ts} +117 -34
  35. package/dist/delta/delta.d.ts.map +1 -0
  36. package/dist/delta/{d2.test.d.ts → delta.test.d.ts} +6 -1
  37. package/dist/delta/delta.test.d.ts.map +1 -0
  38. package/dist/delta/t3.test.d.ts +1 -1
  39. package/dist/delta/t3.test.d.ts.map +1 -1
  40. package/dist/{d2.cjs → delta.cjs} +253 -58
  41. package/dist/delta.cjs.map +1 -0
  42. package/dist/{diff-1832cb43.cjs → diff-dc7bdc65.cjs} +2 -2
  43. package/dist/{diff-1832cb43.cjs.map → diff-dc7bdc65.cjs.map} +1 -1
  44. package/dist/diff.cjs +4 -4
  45. package/dist/{dom-f5047a64.cjs → dom-cad267af.cjs} +1 -1
  46. package/dist/{dom-f5047a64.cjs.map → dom-cad267af.cjs.map} +1 -1
  47. package/dist/dom.cjs +12 -5
  48. package/dist/dom.cjs.map +1 -1
  49. package/dist/{environment-90227ead.cjs → environment-98bcf64f.cjs} +2 -2
  50. package/dist/{environment-90227ead.cjs.map → environment-98bcf64f.cjs.map} +1 -1
  51. package/dist/environment.cjs +4 -4
  52. package/dist/equality.cjs +34 -0
  53. package/dist/equality.cjs.map +1 -0
  54. package/dist/fingerprint.cjs +44 -0
  55. package/dist/fingerprint.cjs.map +1 -0
  56. package/dist/{function-e7d18feb.cjs → function-b4e49016.cjs} +6 -6
  57. package/dist/function-b4e49016.cjs.map +1 -0
  58. package/dist/function.cjs +3 -3
  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-aa81e812.cjs} +2 -2
  80. package/dist/{prng-99204216.cjs.map → prng-aa81e812.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.js +4 -4
  105. package/list.d.ts +9 -2
  106. package/list.d.ts.map +1 -1
  107. package/list.js +17 -3
  108. package/list.test.d.ts.map +1 -1
  109. package/object.d.ts.map +1 -1
  110. package/object.js +2 -2
  111. package/package.json +8 -10
  112. package/schema.d.ts +86 -29
  113. package/schema.d.ts.map +1 -1
  114. package/schema.js +191 -20
  115. package/schema.test.d.ts +4 -0
  116. package/schema.test.d.ts.map +1 -1
  117. package/test.html +2 -4
  118. package/test.js +7 -13
  119. package/testing.js +3 -3
  120. package/{traits.d.ts → trait/equality.d.ts} +1 -1
  121. package/trait/equality.d.ts.map +1 -0
  122. package/trait/fingerprint.d.ts +13 -0
  123. package/trait/fingerprint.d.ts.map +1 -0
  124. package/trait/fingerprint.js +21 -0
  125. package/trait/traits.d.ts +3 -0
  126. package/trait/traits.d.ts.map +1 -0
  127. package/trait/traits.js +2 -0
  128. package/trait/traits.test.d.ts +5 -0
  129. package/{traits.test.d.ts.map → trait/traits.test.d.ts.map} +1 -1
  130. package/delta/abstract-array.d.ts +0 -166
  131. package/delta/abstract-array.d.ts.map +0 -1
  132. package/delta/abstract-array.js +0 -421
  133. package/delta/abstract.d.ts +0 -69
  134. package/delta/abstract.d.ts.map +0 -1
  135. package/delta/abstract.js +0 -102
  136. package/delta/array.d.ts +0 -23
  137. package/delta/array.d.ts.map +0 -1
  138. package/delta/array.js +0 -45
  139. package/delta/array.test.d.ts +0 -2
  140. package/delta/array.test.d.ts.map +0 -1
  141. package/delta/d2.d.ts.map +0 -1
  142. package/delta/d2.test.d.ts.map +0 -1
  143. package/delta/index.d.ts +0 -14
  144. package/delta/index.d.ts.map +0 -1
  145. package/delta/index.js +0 -79
  146. package/delta/map.d.ts +0 -226
  147. package/delta/map.d.ts.map +0 -1
  148. package/delta/map.js +0 -304
  149. package/delta/node.d.ts +0 -117
  150. package/delta/node.d.ts.map +0 -1
  151. package/delta/node.js +0 -183
  152. package/delta/node.test.d.ts +0 -4
  153. package/delta/node.test.d.ts.map +0 -1
  154. package/delta/ops.d.ts +0 -464
  155. package/delta/ops.d.ts.map +0 -1
  156. package/delta/ops.js +0 -544
  157. package/delta/t2.d.ts +0 -184
  158. package/delta/t2.d.ts.map +0 -1
  159. package/delta/t2.js +0 -890
  160. package/delta/text.d.ts +0 -43
  161. package/delta/text.d.ts.map +0 -1
  162. package/delta/text.js +0 -54
  163. package/delta/text.test.d.ts +0 -6
  164. package/delta/text.test.d.ts.map +0 -1
  165. package/delta/transformer.d.ts +0 -164
  166. package/delta/transformer.d.ts.map +0 -1
  167. package/delta/transformer.js +0 -888
  168. package/delta/transformer.test.d.ts +0 -13
  169. package/delta/transformer.test.d.ts.map +0 -1
  170. package/delta/value.d.ts +0 -84
  171. package/delta/value.d.ts.map +0 -1
  172. package/delta/value.js +0 -168
  173. package/dist/abstract-array.cjs +0 -433
  174. package/dist/abstract-array.cjs.map +0 -1
  175. package/dist/abstract.cjs +0 -122
  176. package/dist/abstract.cjs.map +0 -1
  177. package/dist/array2.cjs +0 -26
  178. package/dist/array2.cjs.map +0 -1
  179. package/dist/d2.cjs.map +0 -1
  180. package/dist/delta/abstract-array.d.ts +0 -166
  181. package/dist/delta/abstract-array.d.ts.map +0 -1
  182. package/dist/delta/abstract.d.ts +0 -69
  183. package/dist/delta/abstract.d.ts.map +0 -1
  184. package/dist/delta/array.d.ts +0 -23
  185. package/dist/delta/array.d.ts.map +0 -1
  186. package/dist/delta/array.test.d.ts +0 -2
  187. package/dist/delta/array.test.d.ts.map +0 -1
  188. package/dist/delta/d2.d.ts.map +0 -1
  189. package/dist/delta/d2.test.d.ts.map +0 -1
  190. package/dist/delta/index.d.ts +0 -14
  191. package/dist/delta/index.d.ts.map +0 -1
  192. package/dist/delta/map.d.ts +0 -226
  193. package/dist/delta/map.d.ts.map +0 -1
  194. package/dist/delta/node.d.ts +0 -117
  195. package/dist/delta/node.d.ts.map +0 -1
  196. package/dist/delta/node.test.d.ts +0 -4
  197. package/dist/delta/node.test.d.ts.map +0 -1
  198. package/dist/delta/ops.d.ts +0 -464
  199. package/dist/delta/ops.d.ts.map +0 -1
  200. package/dist/delta/t2.d.ts +0 -184
  201. package/dist/delta/t2.d.ts.map +0 -1
  202. package/dist/delta/text.d.ts +0 -43
  203. package/dist/delta/text.d.ts.map +0 -1
  204. package/dist/delta/text.test.d.ts +0 -6
  205. package/dist/delta/text.test.d.ts.map +0 -1
  206. package/dist/delta/transformer.d.ts +0 -164
  207. package/dist/delta/transformer.d.ts.map +0 -1
  208. package/dist/delta/transformer.test.d.ts +0 -13
  209. package/dist/delta/transformer.test.d.ts.map +0 -1
  210. package/dist/delta/value.d.ts +0 -84
  211. package/dist/delta/value.d.ts.map +0 -1
  212. package/dist/function-e7d18feb.cjs.map +0 -1
  213. package/dist/index2.cjs +0 -71
  214. package/dist/index2.cjs.map +0 -1
  215. package/dist/map2.cjs +0 -15
  216. package/dist/map2.cjs.map +0 -1
  217. package/dist/node.cjs +0 -206
  218. package/dist/node.cjs.map +0 -1
  219. package/dist/object-18980796.cjs.map +0 -1
  220. package/dist/ops.cjs +0 -575
  221. package/dist/ops.cjs.map +0 -1
  222. package/dist/t2.cjs +0 -932
  223. package/dist/t2.cjs.map +0 -1
  224. package/dist/text.cjs +0 -79
  225. package/dist/text.cjs.map +0 -1
  226. package/dist/traits.d.ts.map +0 -1
  227. package/dist/traits.test.d.ts +0 -4
  228. package/dist/traits.test.d.ts.map +0 -1
  229. package/dist/transformer.cjs +0 -930
  230. package/dist/transformer.cjs.map +0 -1
  231. package/dist/value.cjs +0 -187
  232. package/dist/value.cjs.map +0 -1
  233. package/traits.d.ts.map +0 -1
  234. package/traits.test.d.ts +0 -4
  235. /package/{traits.js → trait/equality.js} +0 -0
package/delta/ops.js DELETED
@@ -1,544 +0,0 @@
1
- import * as d from './abstract.js'
2
- import * as object from '../object.js'
3
- import * as traits from '../traits.js'
4
- import * as fun from '../function.js'
5
- import * as s from '../schema.js'
6
- import * as list from '../list.js'
7
-
8
- /**
9
- * @template {any} Content
10
- * @typedef {TextOp|InsertOp<Content>|RetainOp|DeleteOp|(Content extends d.AbstractDelta ? ModifyOp<Extract<Content,d.AbstractDelta>> : never)} AbstractDeltaArrayOps
11
- */
12
-
13
- /**
14
- * @template Content
15
- * @template {boolean} [WithText=false]
16
- * @typedef {InsertOp<Content>|RetainOp|DeleteOp|(Content extends d.AbstractDelta ? ModifyOp<Extract<Content,d.AbstractDelta>> : never)|(WithText extends true ? TextOp : never)} DeltaArrayOps
17
- */
18
-
19
- /**
20
- * @template Embeds
21
- * @typedef {TextOp|InsertOp<Embeds>|RetainOp|DeleteOp|(Embeds extends d.AbstractDelta ? ModifyOp<Extract<Embeds,d.AbstractDelta>> : never)} DeltaTextOps
22
- */
23
-
24
- /**
25
- * @template {any} Content
26
- * @typedef {AbstractDeltaArrayOps<Content>} NodeChildrenOps
27
- */
28
-
29
- /**
30
- * @typedef {s.Unwrap<$anyOp>} DeltaOps
31
- */
32
-
33
- /**
34
- * @typedef {MapInsertOp<any>|MapDeleteOp<any>|MapModifyOp<any>} DeltaMapOps
35
- */
36
-
37
- /**
38
- * @typedef {MapInsertOp<any,''>|MapDeleteOp<any,''>|MapModifyOp<any,''>} DeltaValueOps
39
- */
40
-
41
- /**
42
- * @typedef {{ [key: string]: any }} FormattingAttributes
43
- */
44
-
45
- /**
46
- * @typedef {{ insert: string|object, attributes?: { [key: string]: any }, attribution?: d.Attribution } | { delete: number } | { retain: number, attributes?: { [key:string]: any }, attribution?: d.Attribution } | { modify: object }} DeltaJsonOp
47
- */
48
-
49
- /**
50
- * @template {{[key:string]: any} | null} Attrs
51
- * @param {Attrs} attrs
52
- * @return {Attrs}
53
- */
54
- const _cloneAttrs = attrs => attrs == null ? attrs : { ...attrs }
55
- /**
56
- * @template {any} MaybeDelta
57
- * @param {MaybeDelta} maybeDelta
58
- * @return {MaybeDelta}
59
- */
60
- const _cloneMaybeDelta = maybeDelta => d.$delta.check(maybeDelta) ? maybeDelta.clone() : maybeDelta
61
-
62
- export class TextOp extends list.ListNode {
63
- /**
64
- * @param {string} insert
65
- * @param {FormattingAttributes|null} attributes
66
- * @param {d.Attribution|null} attribution
67
- */
68
- constructor (insert, attributes, attribution) {
69
- super()
70
- this.insert = insert
71
- this.attributes = attributes
72
- this.attribution = attribution
73
- }
74
-
75
- /**
76
- * @return {'insert'}
77
- */
78
- get type () {
79
- return 'insert'
80
- }
81
-
82
- get length () {
83
- return this.insert.length
84
- }
85
-
86
- /**
87
- * Remove a part of the operation (similar to Array.splice)
88
- *
89
- * @param {number} offset
90
- * @param {number} len
91
- */
92
- _splice (offset, len) {
93
- this.insert = this.insert.slice(0, offset) + this.insert.slice(offset + len)
94
- }
95
-
96
- /**
97
- * @return {DeltaJsonOp}
98
- */
99
- toJSON () {
100
- return object.assign({ insert: this.insert }, this.attributes ? { attributes: this.attributes } : ({}), this.attribution ? { attribution: this.attribution } : ({}))
101
- }
102
-
103
- /**
104
- * @param {TextOp} other
105
- */
106
- [traits.EqualityTraitSymbol] (other) {
107
- return fun.equalityDeep(this.insert, other.insert) && fun.equalityDeep(this.attributes, other.attributes) && fun.equalityDeep(this.attribution, other.attribution)
108
- }
109
-
110
- /**
111
- * @return {TextOp}
112
- */
113
- clone () {
114
- return new TextOp(this.insert, _cloneAttrs(this.attributes), _cloneAttrs(this.attribution))
115
- }
116
- }
117
-
118
- /**
119
- * @template {any} ArrayContent
120
- */
121
- export class InsertOp extends list.ListNode {
122
- /**
123
- * @param {Array<ArrayContent>} insert
124
- * @param {FormattingAttributes|null} attributes
125
- * @param {d.Attribution|null} attribution
126
- */
127
- constructor (insert, attributes, attribution) {
128
- super()
129
- this.insert = insert
130
- this.attributes = attributes
131
- this.attribution = attribution
132
- }
133
-
134
- /**
135
- * @return {'insert'}
136
- */
137
- get type () {
138
- return 'insert'
139
- }
140
-
141
- get length () {
142
- return this.insert.length
143
- }
144
-
145
- /**
146
- * Remove a part of the operation (similar to Array.splice)
147
- *
148
- * @param {number} offset
149
- * @param {number} len
150
- */
151
- _splice (offset, len) {
152
- this.insert.splice(offset, len)
153
- }
154
-
155
- /**
156
- * @return {DeltaJsonOp}
157
- */
158
- toJSON () {
159
- return object.assign({ insert: this.insert.map(ins => d.$delta.check(ins) ? ins.toJSON() : ins) }, this.attributes ? { attributes: this.attributes } : ({}), this.attribution ? { attribution: this.attribution } : ({}))
160
- }
161
-
162
- /**
163
- * @param {InsertOp<ArrayContent>} other
164
- */
165
- [traits.EqualityTraitSymbol] (other) {
166
- return fun.equalityDeep(this.insert, other.insert) && fun.equalityDeep(this.attributes, other.attributes) && fun.equalityDeep(this.attribution, other.attribution)
167
- }
168
-
169
- /**
170
- * @return {InsertOp<ArrayContent>}
171
- */
172
- clone () {
173
- return new InsertOp(this.insert.slice(), _cloneAttrs(this.attributes), _cloneAttrs(this.attribution))
174
- }
175
- }
176
-
177
- export class DeleteOp extends list.ListNode {
178
- /**
179
- * @param {number} len
180
- */
181
- constructor (len) {
182
- super()
183
- this.delete = len
184
- }
185
-
186
- /**
187
- * @return {'delete'}
188
- */
189
- get type () {
190
- return 'delete'
191
- }
192
-
193
- get length () {
194
- return 0
195
- }
196
-
197
- /**
198
- * Remove a part of the operation (similar to Array.splice)
199
- *
200
- * @param {number} offset
201
- * @param {number} len
202
- */
203
- _splice (offset, len) {
204
- this.delete -= len
205
- }
206
-
207
- /**
208
- * @return {DeltaJsonOp}
209
- */
210
- toJSON () {
211
- return { delete: this.delete }
212
- }
213
-
214
- /**
215
- * @param {DeleteOp} other
216
- */
217
- [traits.EqualityTraitSymbol] (other) {
218
- return this.delete === other.delete
219
- }
220
-
221
- clone () {
222
- return new DeleteOp(this.delete)
223
- }
224
- }
225
-
226
- export class RetainOp extends list.ListNode {
227
- /**
228
- * @param {number} retain
229
- * @param {FormattingAttributes|null} attributes
230
- * @param {d.Attribution|null} attribution
231
- */
232
- constructor (retain, attributes, attribution) {
233
- super()
234
- this.retain = retain
235
- this.attributes = attributes
236
- this.attribution = attribution
237
- }
238
-
239
- /**
240
- * @return {'retain'}
241
- */
242
- get type () {
243
- return 'retain'
244
- }
245
-
246
- get length () {
247
- return this.retain
248
- }
249
-
250
- /**
251
- * Remove a part of the operation (similar to Array.splice)
252
- *
253
- * @param {number} _offset
254
- * @param {number} len
255
- */
256
- _splice (_offset, len) {
257
- this.retain -= len
258
- }
259
-
260
- /**
261
- * @return {DeltaJsonOp}
262
- */
263
- toJSON () {
264
- return object.assign({ retain: this.retain }, this.attributes ? { attributes: this.attributes } : {}, this.attribution ? { attribution: this.attribution } : {})
265
- }
266
-
267
- /**
268
- * @param {RetainOp} other
269
- */
270
- [traits.EqualityTraitSymbol] (other) {
271
- return this.retain === other.retain && fun.equalityDeep(this.attributes, other.attributes) && fun.equalityDeep(this.attribution, other.attribution)
272
- }
273
-
274
- clone () {
275
- return new RetainOp(this.retain, _cloneAttrs(this.attributes), _cloneAttrs(this.attribution))
276
- }
277
- }
278
-
279
- /**
280
- * Delta that can be applied on a YType Embed
281
- *
282
- * @template {{ toJSON(): any } & traits.EqualityTrait & { clone: any }} DTypes
283
- */
284
- export class ModifyOp extends list.ListNode {
285
- /**
286
- * @param {DTypes} delta
287
- * @param {FormattingAttributes|null} attributes
288
- * @param {d.Attribution|null} attribution
289
- */
290
- constructor (delta, attributes, attribution) {
291
- super()
292
- this.modify = delta
293
- this.attributes = attributes
294
- this.attribution = attribution
295
- }
296
-
297
- /**
298
- * @return {'modify'}
299
- */
300
- get type () {
301
- return 'modify'
302
- }
303
-
304
- get length () {
305
- return 1
306
- }
307
-
308
- /**
309
- * Remove a part of the operation (similar to Array.splice)
310
- *
311
- * @param {number} _offset
312
- * @param {number} len
313
- */
314
- _splice (_offset, len) {
315
- }
316
-
317
- /**
318
- * @return {DeltaJsonOp}
319
- */
320
- toJSON () {
321
- return object.assign({ modify: this.modify.toJSON() }, this.attributes ? { attributes: this.attributes } : {}, this.attribution ? { attribution: this.attribution } : {})
322
- }
323
-
324
- /**
325
- * @param {ModifyOp<any>} other
326
- */
327
- [traits.EqualityTraitSymbol] (other) {
328
- return this.modify[traits.EqualityTraitSymbol](other.modify) && fun.equalityDeep(this.attributes, other.attributes) && fun.equalityDeep(this.attribution, other.attribution)
329
- }
330
-
331
- /**
332
- * @return {ModifyOp<DTypes>}
333
- */
334
- clone () {
335
- return new ModifyOp(this.modify.clone(), _cloneAttrs(this.attributes), _cloneAttrs(this.attribution))
336
- }
337
- }
338
-
339
- /**
340
- * @template V
341
- * @template [K=string]
342
- */
343
- export class MapInsertOp {
344
- /**
345
- * @param {K} key
346
- * @param {V} value
347
- * @param {V|undefined} prevValue
348
- * @param {s.TypeOf<d.$attribution>?} attribution
349
- */
350
- constructor (key, value, prevValue, attribution) {
351
- /**
352
- * @type {K}
353
- */
354
- this.key = key
355
- /**
356
- * @type {V}
357
- */
358
- this.value = value
359
- /**
360
- * @type {V|undefined}
361
- */
362
- this.prevValue = prevValue
363
- this.attribution = attribution
364
- }
365
-
366
- /**
367
- * @return {'insert'}
368
- */
369
- get type () { return 'insert' }
370
-
371
- toJSON () {
372
- return {
373
- type: this.type,
374
- value: d.$delta.check(this.value) ? this.value.toJSON() : this.value,
375
- attribution: this.attribution
376
- }
377
- }
378
-
379
- /**
380
- * @param {MapInsertOp<V>} other
381
- */
382
- [traits.EqualityTraitSymbol] (other) {
383
- return this.key === other.key && fun.equalityDeep(this.value, other.value) && fun.equalityDeep(this.attribution, other.attribution)
384
- }
385
-
386
- /**
387
- * @return {MapInsertOp<V,K>}
388
- */
389
- clone () {
390
- return new MapInsertOp(this.key, _cloneMaybeDelta(this.value), _cloneMaybeDelta(this.prevValue), _cloneAttrs(this.attribution))
391
- }
392
- }
393
-
394
- /**
395
- * @template V
396
- * @template [K=string]
397
- */
398
- export class MapDeleteOp {
399
- /**
400
- * @param {K} key
401
- * @param {V|undefined} prevValue
402
- * @param {s.TypeOf<d.$attribution>?} attribution
403
- */
404
- constructor (key, prevValue, attribution) {
405
- /**
406
- * @type {K}
407
- */
408
- this.key = key
409
- /**
410
- * @type {V|undefined}
411
- */
412
- this.prevValue = prevValue
413
- this.attribution = attribution
414
- }
415
-
416
- get value () { return undefined }
417
-
418
- /**
419
- * @type {'delete'}
420
- */
421
- get type () { return 'delete' }
422
-
423
- toJSON () {
424
- return {
425
- type: this.type,
426
- attribution: this.attribution
427
- }
428
- }
429
-
430
- /**
431
- * @param {MapDeleteOp<V>} other
432
- */
433
- [traits.EqualityTraitSymbol] (other) {
434
- return this.key === other.key && fun.equalityDeep(this.attribution, other.attribution)
435
- }
436
-
437
- clone () {
438
- return new MapDeleteOp(this.key, _cloneMaybeDelta(this.prevValue), _cloneAttrs(this.attribution))
439
- }
440
- }
441
-
442
- /**
443
- * @template {d.AbstractDelta} Modifiers
444
- * @template [K=string]
445
- */
446
- export class MapModifyOp {
447
- /**
448
- * @param {K} key
449
- * @param {Modifiers} delta
450
- */
451
- constructor (key, delta) {
452
- /**
453
- * @type {K}
454
- */
455
- this.key = key
456
- /**
457
- * @type {Modifiers}
458
- */
459
- this.value = delta
460
- }
461
-
462
- /**
463
- * @type {'modify'}
464
- */
465
- get type () { return 'modify' }
466
-
467
- toJSON () {
468
- return {
469
- type: this.type,
470
- value: this.value.toJSON()
471
- }
472
- }
473
-
474
- /**
475
- * @param {MapModifyOp<Modifiers>} other
476
- */
477
- [traits.EqualityTraitSymbol] (other) {
478
- return this.key === other.key && this.value[traits.EqualityTraitSymbol](other.value)
479
- }
480
-
481
- /**
482
- * @return {MapModifyOp<Modifiers,K>}
483
- */
484
- clone () {
485
- return new MapModifyOp(this.key, this.value.clone())
486
- }
487
- }
488
-
489
- export const $deltaMapChangeJson = s.$union(
490
- s.$object({ type: s.$literal('insert'), value: s.$any, attribution: d.$attribution.nullable.optional }),
491
- s.$object({ type: s.$literal('modify'), value: s.$any }),
492
- s.$object({ type: s.$literal('delete'), attribution: d.$attribution.nullable.optional })
493
- )
494
-
495
- /**
496
- * @type {s.Schema<MapDeleteOp<any> | DeleteOp>}
497
- */
498
- export const $deleteOp = s.$custom(o => o != null && (o.constructor === DeleteOp || o.constructor === MapDeleteOp))
499
-
500
- /**
501
- * @type {s.Schema<MapInsertOp<any> | InsertOp<any>>}
502
- */
503
- export const $insertOp = s.$custom(o => o != null && (o.constructor === MapInsertOp || o.constructor === InsertOp))
504
-
505
- /**
506
- * @template Content
507
- * @param {s.Schema<Content>} $content
508
- * @return {s.Schema<MapInsertOp<Content> | InsertOp<Content>>}
509
- */
510
- export const $insertOpWith = $content => s.$custom(o =>
511
- o != null && (
512
- (o.constructor === MapInsertOp && $content.check(/** @type {MapInsertOp<Content>} */ (o).value)) ||
513
- (o.constructor === InsertOp && /** @type {InsertOp<Content>} */ (o).insert.every(ins => $content.check(ins)))
514
- )
515
- )
516
-
517
- /**
518
- * @type {s.Schema<TextOp>}
519
- */
520
- export const $textOp = s.$constructedBy(TextOp)
521
-
522
- /**
523
- * @type {s.Schema<RetainOp>}
524
- */
525
- export const $retainOp = s.$constructedBy(RetainOp)
526
-
527
- /**
528
- * @type {s.Schema<MapModifyOp<any> | ModifyOp<any>>}
529
- */
530
- export const $modifyOp = s.$custom(o => o != null && (o.constructor === MapModifyOp || o.constructor === ModifyOp))
531
-
532
- /**
533
- * @template {d.AbstractDelta} Modify
534
- * @param {s.Schema<Modify>} $content
535
- * @return {s.Schema<MapModifyOp<Modify> | ModifyOp<Modify>>}
536
- */
537
- export const $modifyOpWith = $content => s.$custom(o =>
538
- o != null && (
539
- (o.constructor === MapModifyOp && $content.check(/** @type {MapModifyOp<Modify>} */ (o).value)) ||
540
- (o.constructor === ModifyOp && $content.check(/** @type {ModifyOp<Modify>} */ (o).modify))
541
- )
542
- )
543
-
544
- export const $anyOp = s.$union($insertOp, $deleteOp, $textOp, $modifyOp)