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/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"}