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/map.js DELETED
@@ -1,304 +0,0 @@
1
- import * as gmap from '../map.js'
2
- import * as fun from '../function.js'
3
- import * as traits from '../traits.js'
4
- import * as s from '../schema.js'
5
- import * as ops from './ops.js'
6
- import { AbstractDelta, mergeAttrs, $delta } from './abstract.js'
7
-
8
- export const $mapJson = s.$record(s.$string, ops.$deltaMapChangeJson)
9
-
10
- /**
11
- * @template {{ [key:string]: ops.DeltaMapOps }} OPS
12
- * @typedef {{ [K in keyof OPS]: (Extract<OPS[K],ops.MapInsertOp<any>> extends ops.MapInsertOp<infer V,any> ? ops.MapInsertOp<V, K> : never) | (Extract<OPS[K],ops.MapDeleteOp<any>> extends ops.MapDeleteOp<infer V,any> ? ops.MapDeleteOp<V,K> : never) | (Extract<OPS[K],ops.MapModifyOp<any>> extends ops.MapModifyOp<infer V,any> ? (ops.MapModifyOp<V,K>&OPS[K]) : never) }[keyof OPS]} KeyedOps */
13
-
14
- /**
15
- * @template {{ [key: string]: any }} [Vals={[key:string]:any}]
16
- * @extends AbstractDelta
17
- */
18
- export class DeltaMap extends AbstractDelta {
19
- /**
20
- * @param {s.Schema<Vals>} $vals
21
- */
22
- constructor ($vals) {
23
- super()
24
- this.$vals = s.$$object.check($vals) ? $vals.partial : $vals
25
- /**
26
- * @type {gmap.GlobalMap<any,ops.DeltaMapOps>}
27
- */
28
- this._changes = gmap.create()
29
- /**
30
- * @type {import('./abstract.js').Attribution?}
31
- */
32
- this.usedAttribution = null
33
- }
34
-
35
- isEmpty () {
36
- return this._changes.size === 0
37
- }
38
-
39
- /**
40
- *
41
- * Iterate through the changes. There are two approches to iterate through changes. The
42
- * following two examples achieve the same thing:
43
- *
44
- * @example
45
- * d.forEach(op => {
46
- * if (op instanceof dmap.MapInsertOp) {
47
- * console.log('content inserted:', op.key, op.value)
48
- * } else if (op instanceof dmap.MapDeleteOp) {
49
- * console.log('content deleted:', op.key, op.prevValue)
50
- * } else if (op instanceof delta.MapModifyOp) {
51
- * console.log('content was modified:', op.key, op.)
52
- * op.modify
53
- * }
54
- * })
55
- *
56
- * The second approach doesn't require instanceof checks.
57
- *
58
- * @example
59
- * d.forEach(null,
60
- * (insertOp) => insertOp.insert,
61
- * (retainOp) => insertOp.retain
62
- * (deleteOp) => insertOp.delete
63
- * (modifyOp) => insertOp.modify
64
- * )
65
- *
66
- * @template {Vals} ValsX
67
- * @param {null|((op:KeyedOps<MapOpsFromValues<ValsX>>)=>void)} changeHandler
68
- * @param {null|((insertOp:Extract<KeyedOps<MapOpsFromValues<ValsX>>,ops.MapInsertOp<any,any>>)=>void)} insertHandler
69
- * @param {null|((deleteOp:Extract<KeyedOps<MapOpsFromValues<ValsX>>,ops.MapDeleteOp<any,any>>)=>void)} deleteHandler
70
- * @param {null|((modifyOp:Extract<KeyedOps<MapOpsFromValues<ValsX>>,ops.MapModifyOp<any,any>>)=>void)} modifyHandler
71
- */
72
- forEach (changeHandler = null, insertHandler = null, deleteHandler = null, modifyHandler = null) {
73
- this._changes.forEach((change) => {
74
- changeHandler?.(/** @type {any} */ (change))
75
- switch (change.constructor) {
76
- case ops.MapDeleteOp:
77
- deleteHandler?.(/** @type {any} */ (change))
78
- break
79
- case ops.MapInsertOp:
80
- insertHandler?.(/** @type {any} */ (change))
81
- break
82
- case ops.MapModifyOp:
83
- modifyHandler?.(/** @type {any} */ (change))
84
- break
85
- }
86
- })
87
- }
88
-
89
- /**
90
- * @template {keyof Vals} K
91
- * @param {K} key
92
- * @return {MapOpsFromValues<Vals>[K] | undefined}
93
- */
94
- get (key) {
95
- return /** @type {(MapOpsFromValues<Vals>[K] & { key:K })|undefined} */ (this._changes.get(key))
96
- }
97
-
98
- /**
99
- * @param {keyof Vals} key
100
- */
101
- has (key) {
102
- return this._changes.has(key)
103
- }
104
-
105
- /**
106
- * @param {DeltaMap<any>} other
107
- * @return {boolean}
108
- */
109
- equals (other) {
110
- return this[traits.EqualityTraitSymbol](other)
111
- }
112
-
113
- get size () {
114
- return this._changes.size
115
- }
116
-
117
- /**
118
- * @return {s.Unwrap<$mapJson>}
119
- */
120
- toJSON () {
121
- /**
122
- * @type {s.Unwrap<$mapJson>}
123
- */
124
- const changes = {}
125
- this._changes.forEach((change, key) => {
126
- changes[/** @type {string} */ (key)] = change.toJSON()
127
- })
128
- return changes
129
- }
130
-
131
- /**
132
- * @template {keyof Vals} K
133
- * @param {K} key
134
- * @param {Extract<Vals[K], AbstractDelta>} delta
135
- */
136
- modify (key, delta) {
137
- this._changes.set(key, /** @type {any} */ (new ops.MapModifyOp(key, valsKeySchema(this.$vals, key).cast(delta))))
138
- return this
139
- }
140
-
141
- /**
142
- * @template {keyof Vals} K
143
- * @param {K} key
144
- * @param {Vals[K]} newVal
145
- * @param {Vals[K]|undefined} prevValue
146
- * @param {import('./abstract.js').Attribution?} attribution
147
- */
148
- set (key, newVal, prevValue = undefined, attribution = null) {
149
- const mergedAttribution = mergeAttrs(this.usedAttribution, attribution)
150
- const $v = valsKeySchema(this.$vals, key)
151
- this._changes.set(key, /** @type {any} */ (new ops.MapInsertOp(key, $v.cast(newVal), prevValue && $v.cast(prevValue), mergedAttribution)))
152
- return this
153
- }
154
-
155
- /**
156
- * @param {Partial<Vals>} kv
157
- * @param {import('./abstract.js').Attribution?} attribution
158
- */
159
- setMany (kv, attribution = null) {
160
- for (const key in kv) {
161
- this.set(key, /** @type {Vals[any]} */ (kv[key]), undefined, attribution)
162
- }
163
- return this
164
- }
165
-
166
- /**
167
- * @template {keyof Vals} K
168
- * @param {K} key
169
- * @param {Vals[K]|undefined} prevValue
170
- * @param {import('./abstract.js').Attribution?} attribution
171
- */
172
- delete (key, prevValue = undefined, attribution = null) {
173
- const mergedAttribution = mergeAttrs(this.usedAttribution, attribution)
174
- this._changes.set(key, /** @type {any} */ (new ops.MapDeleteOp(key, prevValue === undefined ? prevValue : valsKeySchema(this.$vals, key).cast(prevValue), mergedAttribution)))
175
- return this
176
- }
177
-
178
- /**
179
- * @param {import('./abstract.js').Attribution?} attribution
180
- */
181
- useAttribution (attribution) {
182
- this.usedAttribution = attribution
183
- return this
184
- }
185
-
186
- /**
187
- *
188
- * - insert vs delete ⇒ insert takes precedence
189
- * - insert vs modify ⇒ insert takes precedence
190
- * - insert vs insert ⇒ priority decides
191
- * - delete vs modify ⇒ delete takes precedence
192
- * - delete vs delete ⇒ current delete op is removed because item has already been deleted
193
- * - modify vs modify ⇒ rebase using priority
194
- *
195
- * @param {DeltaMap<Vals>} other
196
- * @param {boolean} priority
197
- */
198
- rebase (other, priority) {
199
- this.forEach(null,
200
- insertOp => {
201
- if (other.get(insertOp.key)?.constructor === ops.MapInsertOp && !priority) {
202
- this._changes.delete(insertOp.key)
203
- }
204
- },
205
- deleteOp => {
206
- const otherOp = other.get(deleteOp.key)
207
- if (otherOp?.constructor === ops.MapInsertOp) {
208
- this._changes.delete(otherOp.key)
209
- }
210
- },
211
- modifyOp => {
212
- const otherOp = other.get(modifyOp.key)
213
- if (otherOp == null) {
214
- // nop
215
- } else if (otherOp.constructor === ops.MapModifyOp) {
216
- modifyOp.value.rebase(otherOp.value, priority)
217
- } else {
218
- this._changes.delete(otherOp.key)
219
- }
220
- }
221
- )
222
- }
223
-
224
- /**
225
- * @param {DeltaMap<Partial<Vals>>} other
226
- */
227
- apply (other) {
228
- /** @type {DeltaMap<Vals>} */ (other).forEach(op => {
229
- const c = this._changes.get(op.key)
230
- if (ops.$modifyOp.check(op)) {
231
- if ($delta.check(c?.value)) {
232
- /** @type {DeltaMap<any>} */ (c.value).apply(op.value)
233
- } else {
234
- // then this is a simple modify
235
- this._changes.set(op.key, /** @type {any} */ (op))
236
- }
237
- } else {
238
- op.prevValue = c?.value
239
- this._changes.set(op.key, /** @type {any} */ (op))
240
- }
241
- }
242
- )
243
- }
244
-
245
- /**
246
- * @return {this}
247
- */
248
- clone () {
249
- const d = /** @type {this} */ (new DeltaMap(this.$vals))
250
- this.forEach(change => {
251
- d._changes.set(change.key, /** @type {any} */ (change))
252
- })
253
- d.origin = this.origin
254
- d.isDiff = this.isDiff
255
- return d
256
- }
257
-
258
- done () {
259
- return /** @type {DeltaMap<Vals>} */ (this)
260
- }
261
-
262
- /**
263
- * @param {DeltaMap<Partial<Vals>>} other
264
- */
265
- [traits.EqualityTraitSymbol] (other) {
266
- return fun.equalityDeep(this._changes, other._changes)
267
- }
268
- }
269
-
270
- /**
271
- * @template {s.Schema<{ [Key:string]: ops.DeltaMapOps }>} OPS
272
- * @template {keyof s.Unwrap<OPS>} K
273
- * @param {OPS} $ops
274
- * @param {K} k
275
- * @return {s.Schema<s.Unwrap<OPS>[K]>}
276
- */
277
- const valsKeySchema = ($ops, k) => s.$$object.check($ops) ? ($ops.shape[k] || s.$never) : ((s.$$record.check($ops) && $ops.shape.keys.check(k)) ? ($ops.shape.values) : s.$never)
278
-
279
- /**
280
- * @template {{ [key:string]: any }} Vals
281
- * @typedef {{ [K in keyof Vals]: Vals[K] extends DeltaMap<infer DM> ? ops.MapInsertOp<Vals[K]>|ops.MapDeleteOp<Vals[K]>|ops.MapModifyOp<DeltaMap<DM>> : (ops.MapInsertOp<Exclude<Vals[K],undefined>>|ops.MapDeleteOp<Exclude<Vals[K],undefined>>) }} MapOpsFromValues
282
- */
283
-
284
- /**
285
- * Create a new DeltaMap, optionally supply a schema.
286
- *
287
- * @template {s.Schema<{ [key:string]: any }> | { [key:string]: s.Schema<any> }} [$Vals=s.Schema<{ [key:string]: any }>]
288
- * @param {$Vals} $vals
289
- * @return {DeltaMap<$Vals extends s.Schema<infer $V> ? $V : (s._ReadObjectDef<$Vals> extends s.Schema<infer $V> ? $V : never)>}
290
- */
291
- export const map = ($vals = /** @type {any} */ (s.$record(s.$string, s.$any))) => /** @type {any} */ (new DeltaMap(/** @type {any} */ (s.$$schema.check($vals) ? $vals : s.$object($vals))))
292
-
293
- /**
294
- * @template {{ [key:string]: any }} Vals
295
- * @param {s.Schema<Vals>} $vals
296
- * @return {s.Schema<DeltaMap<Vals>>}
297
- */
298
- export const $map = $vals => {
299
- const $valsPartial = s.$$object.check($vals) ? $vals.partial : $vals
300
- return /** @type {any} */ (s.$instanceOf(DeltaMap, o => Array.from(o._changes.entries()).every(([k, op]) =>
301
- !ops.$insertOp.check(op) || $valsPartial.check({ [k]: op.value })
302
- )))
303
- }
304
- export const $mapAny = s.$instanceOf(DeltaMap)
package/delta/node.d.ts DELETED
@@ -1,117 +0,0 @@
1
- /**
2
- * @template {string|undefined} [NodeName=string]
3
- * @template {{[key:string]:any}} [Attrs={[key:string]:any}]
4
- * @template [Children=any]
5
- * @template {boolean} [WithText=true]
6
- */
7
- export class DeltaNode<NodeName extends string | undefined = string, Attrs extends {
8
- [key: string]: any;
9
- } = {
10
- [key: string]: any;
11
- }, Children = any, WithText extends boolean = true> extends dabstract.AbstractDelta {
12
- /**
13
- * @param {NodeName} nodeName
14
- * @param {dmap.DeltaMap<Attrs>} attributes
15
- * @param {darray.DeltaArray<Children,WithText>} children
16
- */
17
- constructor(nodeName: NodeName, attributes: dmap.DeltaMap<Attrs>, children: darray.DeltaArray<Children, WithText>);
18
- name: NodeName;
19
- /**
20
- * @type {dmap.DeltaMap<Attrs>}
21
- */
22
- attributes: dmap.DeltaMap<Attrs>;
23
- /**
24
- * @type {darray.DeltaArray<Children,WithText>}
25
- */
26
- children: darray.DeltaArray<Children, WithText>;
27
- /**
28
- * @return {this}
29
- */
30
- clone(): this;
31
- /**
32
- * @param {(WithText extends true ? string : never) | Array<Children>} insert
33
- */
34
- insert(insert: (WithText extends true ? string : never) | Array<Children>): this;
35
- /**
36
- * @template {keyof Attrs} K
37
- * @param {K} key
38
- * @param {Attrs[K]} newVal
39
- * @param {Attrs[K]|undefined} prevVal
40
- * @param {import('./abstract.js').Attribution?} attribution
41
- */
42
- set<K extends keyof Attrs>(key: K, newVal: Attrs[K], prevVal: Attrs[K] | undefined, attribution: import("./abstract.js").Attribution | null): this;
43
- /**
44
- * @param {import('./abstract.js').Attribution?} attribution
45
- * @param {Partial<Attrs>} kv
46
- */
47
- setMany(kv: Partial<Attrs>, attribution?: import("./abstract.js").Attribution | null): this;
48
- toJSON(): {
49
- name: NodeName;
50
- attributes: {
51
- [x: string]: {
52
- attribution?: {
53
- insert?: string[] | undefined;
54
- insertAt?: number | undefined;
55
- delete?: string[] | undefined;
56
- deleteAt?: number | undefined;
57
- attributes?: {
58
- [x: string]: string[];
59
- } | undefined;
60
- attributesAt?: number | undefined;
61
- } | null | undefined;
62
- type: "insert";
63
- value: any;
64
- } | {
65
- type: "modify";
66
- value: any;
67
- } | {
68
- attribution?: {
69
- insert?: string[] | undefined;
70
- insertAt?: number | undefined;
71
- delete?: string[] | undefined;
72
- deleteAt?: number | undefined;
73
- attributes?: {
74
- [x: string]: string[];
75
- } | undefined;
76
- attributesAt?: number | undefined;
77
- } | null | undefined;
78
- type: "delete";
79
- };
80
- };
81
- children: import("./abstract-array.js").DeltaJson;
82
- };
83
- /**
84
- * @return {DeltaNode<NodeName, Attrs, Children, WithText>}
85
- */
86
- done(): DeltaNode<NodeName, Attrs, Children, WithText>;
87
- /**
88
- * @param {DeltaNode<NodeName,Partial<Attrs>,Children,WithText>} other
89
- */
90
- [traits.EqualityTraitSymbol](other: DeltaNode<NodeName, Partial<Attrs>, Children, WithText>): boolean;
91
- }
92
- export function node<NodeName extends string | undefined = string, Attrs extends {
93
- [key: string]: any;
94
- } | dmap.DeltaMap<any> = {
95
- [key: string]: any;
96
- }, Children extends Array<any> | string | darray.DeltaArray<any, any> = any[]>(nodeName: NodeName, attributes?: Attrs, children?: Children): DeltaNode<NodeName, Attrs extends dmap.DeltaMap<infer AttrsDef> ? AttrsDef : Attrs, Children extends Array<infer ChildTypes> ? ChildTypes : (Children extends darray.DeltaArray<infer ChildTypes, any> ? ChildTypes : never)>;
97
- export function $node<NodeName extends string, Attributes extends {
98
- [key: string]: any;
99
- }, Children, Recursive extends boolean = false, WithText extends boolean = false>($nodeName: s.Schema<NodeName>, $attributes: s.Schema<Attributes>, $children: s.Schema<Children>, { recursive, withText }?: {
100
- recursive?: Recursive | undefined;
101
- withText?: WithText | undefined;
102
- }): s.Schema<Recursive extends true ? RecursiveDeltaNode<NodeName, Partial<Attributes>, Children, WithText> : DeltaNode<NodeName, Partial<Attributes>, Children, WithText | undefined>>;
103
- /**
104
- * @type {s.Schema<DeltaNode<any,{[key:string]: any},any,any>>}
105
- */
106
- export const $nodeAny: s.Schema<DeltaNode<any, {
107
- [key: string]: any;
108
- }, any, any>>;
109
- export type RecursiveDeltaNode<NodeName extends string, Attributes extends {
110
- [key: string]: any;
111
- }, Children, WithText extends boolean> = DeltaNode<NodeName, Attributes, Children | RecursiveDeltaNode<NodeName, Attributes, Children, WithText>, WithText>;
112
- import * as dabstract from './abstract.js';
113
- import * as dmap from './map.js';
114
- import * as darray from './array.js';
115
- import * as traits from '../traits.js';
116
- import * as s from '../schema.js';
117
- //# sourceMappingURL=node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["node.js"],"names":[],"mappings":"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"}
package/delta/node.js DELETED
@@ -1,183 +0,0 @@
1
- import * as traits from '../traits.js'
2
- import * as dabstract from './abstract.js'
3
- import * as darray from './array.js'
4
- import * as dmap from './map.js'
5
- import * as s from '../schema.js'
6
- import * as error from '../error.js'
7
-
8
- /**
9
- * @template {string|undefined} [NodeName=string]
10
- * @template {{[key:string]:any}} [Attrs={[key:string]:any}]
11
- * @template [Children=any]
12
- * @template {boolean} [WithText=true]
13
- */
14
- export class DeltaNode extends dabstract.AbstractDelta {
15
- /**
16
- * @param {NodeName} nodeName
17
- * @param {dmap.DeltaMap<Attrs>} attributes
18
- * @param {darray.DeltaArray<Children,WithText>} children
19
- */
20
- constructor (nodeName, attributes, children) {
21
- super()
22
- this.name = nodeName
23
- /**
24
- * @type {dmap.DeltaMap<Attrs>}
25
- */
26
- this.attributes = /** @type {any} */ (attributes)
27
- /**
28
- * @type {darray.DeltaArray<Children,WithText>}
29
- */
30
- this.children = /** @type {any} */ (children)
31
- }
32
-
33
- isEmpty () {
34
- return this.children.isEmpty() && this.attributes.isEmpty()
35
- }
36
-
37
- /**
38
- * @return {this}
39
- */
40
- clone () {
41
- return /** @type {this} */ (new DeltaNode(this.name, this.attributes.clone(), this.children.clone()))
42
- }
43
-
44
- /**
45
- * @param {(WithText extends true ? string : never) | Array<Children>} insert
46
- */
47
- insert (insert) {
48
- // @ts-ignore
49
- this.children.insert(insert)
50
- return this
51
- }
52
-
53
- /**
54
- * @template {keyof Attrs} K
55
- * @param {K} key
56
- * @param {Attrs[K]} newVal
57
- * @param {Attrs[K]|undefined} prevVal
58
- * @param {import('./abstract.js').Attribution?} attribution
59
- */
60
- set (key, newVal, prevVal, attribution) {
61
- this.attributes.set(key, newVal, prevVal, attribution)
62
- return this
63
- }
64
-
65
- /**
66
- * @param {import('./abstract.js').Attribution?} attribution
67
- * @param {Partial<Attrs>} kv
68
- */
69
- setMany (kv, attribution = null) {
70
- this.attributes.setMany(kv, attribution)
71
- return this
72
- }
73
-
74
- /**
75
- * @param {dabstract.AbstractDelta} other
76
- */
77
- apply (other) {
78
- if ($nodeAny.check(other)) {
79
- // @ts-ignore
80
- this.attributes.apply(other.attributes)
81
- // @ts-ignore
82
- this.children.apply(other.children)
83
- } else if (dmap.$mapAny.check(other)) {
84
- // @ts-ignore
85
- this.attributes.apply(other)
86
- } else if (darray.$arrayAny.check(other)) {
87
- // @ts-ignore
88
- this.children.apply(other)
89
- } else {
90
- error.unexpectedCase()
91
- }
92
- }
93
-
94
- toJSON () {
95
- return {
96
- name: this.name,
97
- attributes: this.attributes.toJSON(),
98
- children: this.children.toJSON()
99
- }
100
- }
101
-
102
- /**
103
- * @return {DeltaNode<NodeName, Attrs, Children, WithText>}
104
- */
105
- done () {
106
- /** @type {darray.DeltaArray<any>} */ (this.children).done()
107
- ;/** @type {dmap.DeltaMap<any>} */ (this.attributes).done()
108
- return /** @type {any} */ (this)
109
- }
110
-
111
- /**
112
- * @param {DeltaNode<NodeName,Partial<Attrs>,Children,WithText>} other
113
- */
114
- [traits.EqualityTraitSymbol] (other) {
115
- return this.name === other.name && this.children[traits.EqualityTraitSymbol](other.children) && this.attributes[traits.EqualityTraitSymbol](other.attributes)
116
- }
117
- }
118
-
119
- /**
120
- * @template {string|undefined} [NodeName=string]
121
- * @template {{[key:string]:any} | dmap.DeltaMap<any>} [Attrs={[key:string]:any}]
122
- * @template {Array<any> | string | darray.DeltaArray<any,any>} [Children=Array<any>]
123
- * @param {NodeName} nodeName
124
- * @param {Attrs} [attributes]
125
- * @param {Children} [children]
126
- * @return {DeltaNode<NodeName,Attrs extends dmap.DeltaMap<infer AttrsDef> ? AttrsDef : Attrs,Children extends Array<infer ChildTypes> ? ChildTypes : (Children extends darray.DeltaArray<infer ChildTypes,any> ? ChildTypes : never)>}
127
- */
128
- export const node = (nodeName, attributes, children) =>
129
- new DeltaNode(
130
- nodeName,
131
- attributes == null
132
- ? dmap.map()
133
- : (dmap.$mapAny.check(attributes)
134
- ? /** @type {dmap.DeltaMap<any>} */ (attributes)
135
- : dmap.map().setMany(/** @type {any} */ (attributes))
136
- ),
137
- children == null
138
- ? darray.array()
139
- : (darray.$arrayAny.check(children)
140
- ? /** @type {darray.DeltaArray<any>} */ (children)
141
- : darray.array().insert(children)
142
- )
143
- )
144
-
145
- /**
146
- * @template {string} NodeName
147
- * @template {{ [key:string]: any }} Attributes
148
- * @template Children
149
- * @template {boolean} WithText
150
- * @typedef {DeltaNode<NodeName, Attributes, Children | RecursiveDeltaNode<NodeName,Attributes,Children,WithText>, WithText>} RecursiveDeltaNode
151
- */
152
-
153
- /**
154
- * @template {string} NodeName
155
- * @template {{ [key:string]: any }} Attributes
156
- * @template Children
157
- * @template {boolean} [Recursive=false]
158
- * @template {boolean} [WithText=false]
159
- * @param {s.Schema<NodeName>} $nodeName
160
- * @param {s.Schema<Children>} $children
161
- * @param {s.Schema<Attributes>} $attributes
162
- * @param {object} [opts]
163
- * @param {Recursive} [opts.recursive]
164
- * @param {WithText} [opts.withText]
165
- * @return {s.Schema<Recursive extends true ? RecursiveDeltaNode<NodeName, Partial<Attributes>, Children, WithText> : DeltaNode<NodeName, Partial<Attributes>, Children, withText>>}
166
- */
167
- export const $node = ($nodeName, $attributes, $children, { recursive, withText } = {}) => {
168
- /**
169
- * @type {s.Schema<darray.DeltaArray<any,any>>}
170
- */
171
- let $dchildren = darray.$array($children)
172
- const $dattrs = dmap.$map($attributes)
173
- const $nodeSchema = /** @type {s.Schema<DeltaNode<NodeName, any, any, any>>} */ (s.$instanceOf(DeltaNode, o => $nodeName.check(o.name) && $dchildren.check(o.children) && $dattrs.check(o.attributes)))
174
- if (recursive) {
175
- $dchildren = darray.$array(s.$union($children, $nodeSchema), withText)
176
- }
177
- return /** @type {any} */ ($nodeSchema)
178
- }
179
-
180
- /**
181
- * @type {s.Schema<DeltaNode<any,{[key:string]: any},any,any>>}
182
- */
183
- export const $nodeAny = s.$constructedBy(DeltaNode)
@@ -1,4 +0,0 @@
1
- export function testNodeDelta(_tc: t.TestCase): void;
2
- export function testRecursiveNode(): void;
3
- import * as t from 'lib0/testing';
4
- //# sourceMappingURL=node.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.test.d.ts","sourceRoot":"","sources":["node.test.js"],"names":[],"mappings":"AAOO,mCAFI,CAAC,CAAC,QAAQ,QAgCpB;AAEM,0CAqBN;mBA5DkB,cAAc"}