lib0 0.2.115-3 → 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.
- package/coverage/tmp/coverage-42121-1764767245409-0.json +1 -0
- package/coverage/tmp/{coverage-32703-1763495370274-0.json → coverage-42122-1764767192180-0.json} +1 -1
- package/delta/binding.d.ts +11 -9
- package/delta/binding.d.ts.map +1 -1
- package/delta/binding.js +5 -2
- package/delta/binding.test.d.ts.map +1 -1
- package/delta/delta-pitch.test.d.ts +5 -0
- package/delta/delta-pitch.test.d.ts.map +1 -0
- package/delta/{d2.d.ts → delta.d.ts} +117 -34
- package/delta/delta.d.ts.map +1 -0
- package/delta/{d2.js → delta.js} +247 -55
- package/delta/{d2.test.d.ts → delta.test.d.ts} +6 -1
- package/delta/delta.test.d.ts.map +1 -0
- package/delta/t3.test.d.ts +1 -1
- package/delta/t3.test.d.ts.map +1 -1
- package/dist/array.cjs +17 -60
- package/dist/array.cjs.map +1 -1
- package/dist/binding.cjs +114 -28
- package/dist/binding.cjs.map +1 -1
- package/dist/{broadcastchannel-d0c108a2.cjs → broadcastchannel-94897809.cjs} +2 -2
- package/dist/{broadcastchannel-d0c108a2.cjs.map → broadcastchannel-94897809.cjs.map} +1 -1
- package/dist/broadcastchannel.cjs +6 -6
- package/dist/{buffer-7f6fa8fa.cjs → buffer-8d110bf4.cjs} +2 -2
- package/dist/{buffer-7f6fa8fa.cjs.map → buffer-8d110bf4.cjs.map} +1 -1
- package/dist/buffer.cjs +5 -5
- package/dist/cache.cjs +3 -3
- package/dist/component.cjs +12 -8
- package/dist/component.cjs.map +1 -1
- package/dist/delta/binding.d.ts +11 -9
- package/dist/delta/binding.d.ts.map +1 -1
- package/dist/delta/binding.test.d.ts.map +1 -1
- package/dist/delta/delta-pitch.test.d.ts +5 -0
- package/dist/delta/delta-pitch.test.d.ts.map +1 -0
- package/dist/delta/{d2.d.ts → delta.d.ts} +117 -34
- package/dist/delta/delta.d.ts.map +1 -0
- package/dist/delta/{d2.test.d.ts → delta.test.d.ts} +6 -1
- package/dist/delta/delta.test.d.ts.map +1 -0
- package/dist/delta/t3.test.d.ts +1 -1
- package/dist/delta/t3.test.d.ts.map +1 -1
- package/dist/{d2.cjs → delta.cjs} +256 -60
- package/dist/delta.cjs.map +1 -0
- package/dist/{diff-1832cb43.cjs → diff-dc7bdc65.cjs} +2 -2
- package/dist/{diff-1832cb43.cjs.map → diff-dc7bdc65.cjs.map} +1 -1
- package/dist/diff.cjs +4 -4
- package/dist/{dom-f5047a64.cjs → dom-cad267af.cjs} +1 -1
- package/dist/{dom-f5047a64.cjs.map → dom-cad267af.cjs.map} +1 -1
- package/dist/dom.cjs +12 -5
- package/dist/dom.cjs.map +1 -1
- package/dist/{environment-90227ead.cjs → environment-98bcf64f.cjs} +2 -2
- package/dist/{environment-90227ead.cjs.map → environment-98bcf64f.cjs.map} +1 -1
- package/dist/environment.cjs +4 -4
- package/dist/equality.cjs +34 -0
- package/dist/equality.cjs.map +1 -0
- package/dist/fingerprint.cjs +44 -0
- package/dist/fingerprint.cjs.map +1 -0
- package/dist/{function-e7d18feb.cjs → function-b4e49016.cjs} +6 -6
- package/dist/function-b4e49016.cjs.map +1 -0
- package/dist/function.cjs +3 -3
- package/dist/index.cjs +9 -9
- package/dist/indexeddbV2.cjs +2 -2
- package/dist/jwt.cjs +5 -5
- package/dist/list.cjs +18 -5
- package/dist/list.cjs.map +1 -1
- package/dist/list.d.ts +9 -2
- package/dist/list.d.ts.map +1 -1
- package/dist/list.test.d.ts.map +1 -1
- package/dist/logging.cjs +11 -5
- package/dist/logging.cjs.map +1 -1
- package/dist/logging.common.cjs +4 -4
- package/dist/logging.node.cjs +4 -4
- package/dist/map.cjs +7 -314
- package/dist/map.cjs.map +1 -1
- package/dist/{object-18980796.cjs → object-dec41ef9.cjs} +3 -3
- package/dist/object-dec41ef9.cjs.map +1 -0
- package/dist/object.cjs +2 -2
- package/dist/object.d.ts.map +1 -1
- package/dist/performance.node.cjs +3 -3
- package/dist/pledge.cjs +2 -2
- package/dist/{prng-99204216.cjs → prng-aa81e812.cjs} +2 -2
- package/dist/{prng-99204216.cjs.map → prng-aa81e812.cjs.map} +1 -1
- package/dist/prng.cjs +6 -6
- package/dist/rabin-gf2-polynomial.cjs +5 -5
- package/dist/rabin-uncached.cjs +5 -5
- package/dist/rabin.cjs +5 -5
- package/dist/schema.cjs +202 -22
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.ts +86 -29
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.test.d.ts +4 -0
- package/dist/schema.test.d.ts.map +1 -1
- package/dist/testing.cjs +9 -9
- package/dist/testing.cjs.map +1 -1
- package/dist/{traits.d.ts → trait/equality.d.ts} +1 -1
- package/dist/trait/equality.d.ts.map +1 -0
- package/dist/trait/fingerprint.d.ts +13 -0
- package/dist/trait/fingerprint.d.ts.map +1 -0
- package/dist/trait/traits.d.ts +3 -0
- package/dist/trait/traits.d.ts.map +1 -0
- package/dist/trait/traits.test.d.ts +5 -0
- package/dist/trait/traits.test.d.ts.map +1 -0
- package/dist/traits.cjs +23 -26
- package/dist/traits.cjs.map +1 -1
- package/dist/url.cjs +2 -2
- package/function.js +4 -4
- package/list.d.ts +9 -2
- package/list.d.ts.map +1 -1
- package/list.js +17 -3
- package/list.test.d.ts.map +1 -1
- package/object.d.ts.map +1 -1
- package/object.js +2 -2
- package/package.json +8 -10
- package/schema.d.ts +86 -29
- package/schema.d.ts.map +1 -1
- package/schema.js +191 -20
- package/schema.test.d.ts +4 -0
- package/schema.test.d.ts.map +1 -1
- package/test.html +2 -4
- package/test.js +7 -13
- package/testing.js +3 -3
- package/{traits.d.ts → trait/equality.d.ts} +1 -1
- package/trait/equality.d.ts.map +1 -0
- package/trait/fingerprint.d.ts +13 -0
- package/trait/fingerprint.d.ts.map +1 -0
- package/trait/fingerprint.js +21 -0
- package/trait/traits.d.ts +3 -0
- package/trait/traits.d.ts.map +1 -0
- package/trait/traits.js +2 -0
- package/trait/traits.test.d.ts +5 -0
- package/{traits.test.d.ts.map → trait/traits.test.d.ts.map} +1 -1
- package/delta/abstract-array.d.ts +0 -166
- package/delta/abstract-array.d.ts.map +0 -1
- package/delta/abstract-array.js +0 -421
- package/delta/abstract.d.ts +0 -69
- package/delta/abstract.d.ts.map +0 -1
- package/delta/abstract.js +0 -102
- package/delta/array.d.ts +0 -23
- package/delta/array.d.ts.map +0 -1
- package/delta/array.js +0 -45
- package/delta/array.test.d.ts +0 -2
- package/delta/array.test.d.ts.map +0 -1
- package/delta/d2.d.ts.map +0 -1
- package/delta/d2.test.d.ts.map +0 -1
- package/delta/index.d.ts +0 -14
- package/delta/index.d.ts.map +0 -1
- package/delta/index.js +0 -79
- package/delta/map.d.ts +0 -226
- package/delta/map.d.ts.map +0 -1
- package/delta/map.js +0 -304
- package/delta/node.d.ts +0 -117
- package/delta/node.d.ts.map +0 -1
- package/delta/node.js +0 -183
- package/delta/node.test.d.ts +0 -4
- package/delta/node.test.d.ts.map +0 -1
- package/delta/ops.d.ts +0 -464
- package/delta/ops.d.ts.map +0 -1
- package/delta/ops.js +0 -544
- package/delta/t2.d.ts +0 -184
- package/delta/t2.d.ts.map +0 -1
- package/delta/t2.js +0 -890
- package/delta/text.d.ts +0 -43
- package/delta/text.d.ts.map +0 -1
- package/delta/text.js +0 -54
- package/delta/text.test.d.ts +0 -6
- package/delta/text.test.d.ts.map +0 -1
- package/delta/transformer.d.ts +0 -164
- package/delta/transformer.d.ts.map +0 -1
- package/delta/transformer.js +0 -888
- package/delta/transformer.test.d.ts +0 -13
- package/delta/transformer.test.d.ts.map +0 -1
- package/delta/value.d.ts +0 -84
- package/delta/value.d.ts.map +0 -1
- package/delta/value.js +0 -168
- package/dist/abstract-array.cjs +0 -433
- package/dist/abstract-array.cjs.map +0 -1
- package/dist/abstract.cjs +0 -122
- package/dist/abstract.cjs.map +0 -1
- package/dist/array2.cjs +0 -26
- package/dist/array2.cjs.map +0 -1
- package/dist/d2.cjs.map +0 -1
- package/dist/delta/abstract-array.d.ts +0 -166
- package/dist/delta/abstract-array.d.ts.map +0 -1
- package/dist/delta/abstract.d.ts +0 -69
- package/dist/delta/abstract.d.ts.map +0 -1
- package/dist/delta/array.d.ts +0 -23
- package/dist/delta/array.d.ts.map +0 -1
- package/dist/delta/array.test.d.ts +0 -2
- package/dist/delta/array.test.d.ts.map +0 -1
- package/dist/delta/d2.d.ts.map +0 -1
- package/dist/delta/d2.test.d.ts.map +0 -1
- package/dist/delta/index.d.ts +0 -14
- package/dist/delta/index.d.ts.map +0 -1
- package/dist/delta/map.d.ts +0 -226
- package/dist/delta/map.d.ts.map +0 -1
- package/dist/delta/node.d.ts +0 -117
- package/dist/delta/node.d.ts.map +0 -1
- package/dist/delta/node.test.d.ts +0 -4
- package/dist/delta/node.test.d.ts.map +0 -1
- package/dist/delta/ops.d.ts +0 -464
- package/dist/delta/ops.d.ts.map +0 -1
- package/dist/delta/t2.d.ts +0 -184
- package/dist/delta/t2.d.ts.map +0 -1
- package/dist/delta/text.d.ts +0 -43
- package/dist/delta/text.d.ts.map +0 -1
- package/dist/delta/text.test.d.ts +0 -6
- package/dist/delta/text.test.d.ts.map +0 -1
- package/dist/delta/transformer.d.ts +0 -164
- package/dist/delta/transformer.d.ts.map +0 -1
- package/dist/delta/transformer.test.d.ts +0 -13
- package/dist/delta/transformer.test.d.ts.map +0 -1
- package/dist/delta/value.d.ts +0 -84
- package/dist/delta/value.d.ts.map +0 -1
- package/dist/function-e7d18feb.cjs.map +0 -1
- package/dist/index2.cjs +0 -71
- package/dist/index2.cjs.map +0 -1
- package/dist/map2.cjs +0 -15
- package/dist/map2.cjs.map +0 -1
- package/dist/node.cjs +0 -206
- package/dist/node.cjs.map +0 -1
- package/dist/object-18980796.cjs.map +0 -1
- package/dist/ops.cjs +0 -575
- package/dist/ops.cjs.map +0 -1
- package/dist/t2.cjs +0 -932
- package/dist/t2.cjs.map +0 -1
- package/dist/text.cjs +0 -79
- package/dist/text.cjs.map +0 -1
- package/dist/traits.d.ts.map +0 -1
- package/dist/traits.test.d.ts +0 -4
- package/dist/traits.test.d.ts.map +0 -1
- package/dist/transformer.cjs +0 -930
- package/dist/transformer.cjs.map +0 -1
- package/dist/value.cjs +0 -187
- package/dist/value.cjs.map +0 -1
- package/traits.d.ts.map +0 -1
- package/traits.test.d.ts +0 -4
- /package/{traits.js → trait/equality.js} +0 -0
package/delta/{d2.js → delta.js}
RENAMED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
import * as list from '../list.js'
|
|
12
12
|
import * as object from '../object.js'
|
|
13
|
-
import * as
|
|
13
|
+
import * as equalityTrait from '../trait/equality.js'
|
|
14
|
+
import * as fingerprintTrait from '../trait/fingerprint.js'
|
|
14
15
|
import * as arr from '../array.js'
|
|
15
16
|
import * as fun from '../function.js'
|
|
16
17
|
import * as s from '../schema.js'
|
|
@@ -20,6 +21,7 @@ import * as rabin from '../hash/rabin.js'
|
|
|
20
21
|
import * as encoding from '../encoding.js'
|
|
21
22
|
import * as buffer from '../buffer.js'
|
|
22
23
|
import * as patience from '../diff/patience.js'
|
|
24
|
+
import * as prng from '../prng.js'
|
|
23
25
|
|
|
24
26
|
/**
|
|
25
27
|
* @typedef {{
|
|
@@ -103,10 +105,6 @@ const _cloneAttrs = attrs => attrs == null ? attrs : { ...attrs }
|
|
|
103
105
|
*/
|
|
104
106
|
const _markMaybeDeltaAsDone = maybeDelta => $deltaAny.check(maybeDelta) ? /** @type {MaybeDelta} */ (maybeDelta.done()) : maybeDelta
|
|
105
107
|
|
|
106
|
-
/**
|
|
107
|
-
* @typedef {unknown & DeltaAny} Q
|
|
108
|
-
*/
|
|
109
|
-
|
|
110
108
|
export class TextOp extends list.ListNode {
|
|
111
109
|
/**
|
|
112
110
|
* @param {string} insert
|
|
@@ -185,7 +183,7 @@ export class TextOp extends list.ListNode {
|
|
|
185
183
|
/**
|
|
186
184
|
* @param {TextOp} other
|
|
187
185
|
*/
|
|
188
|
-
[
|
|
186
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
189
187
|
return fun.equalityDeep(this.insert, other.insert) && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)
|
|
190
188
|
}
|
|
191
189
|
|
|
@@ -198,7 +196,7 @@ export class TextOp extends list.ListNode {
|
|
|
198
196
|
}
|
|
199
197
|
|
|
200
198
|
/**
|
|
201
|
-
* @template {
|
|
199
|
+
* @template {fingerprintTrait.Fingerprintable} ArrayContent
|
|
202
200
|
*/
|
|
203
201
|
export class InsertOp extends list.ListNode {
|
|
204
202
|
/**
|
|
@@ -273,13 +271,7 @@ export class InsertOp extends list.ListNode {
|
|
|
273
271
|
encoding.writeVarUint(encoder, 1) // insertOp type: 1
|
|
274
272
|
encoding.writeVarUint(encoder, this.insert.length)
|
|
275
273
|
this.insert.forEach(ins => {
|
|
276
|
-
|
|
277
|
-
encoding.writeUint8(encoder, 0)
|
|
278
|
-
encoding.writeVarString(encoder, ins.fingerprint)
|
|
279
|
-
} else {
|
|
280
|
-
encoding.writeUint8(encoder, 1)
|
|
281
|
-
encoding.writeAny(encoder, ins)
|
|
282
|
-
}
|
|
274
|
+
encoding.writeVarString(encoder, fingerprintTrait.fingerprint(ins))
|
|
283
275
|
})
|
|
284
276
|
encoding.writeAny(encoder, this.format)
|
|
285
277
|
})))
|
|
@@ -308,7 +300,7 @@ export class InsertOp extends list.ListNode {
|
|
|
308
300
|
/**
|
|
309
301
|
* @param {InsertOp<ArrayContent>} other
|
|
310
302
|
*/
|
|
311
|
-
[
|
|
303
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
312
304
|
return fun.equalityDeep(this.insert, other.insert) && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)
|
|
313
305
|
}
|
|
314
306
|
|
|
@@ -321,7 +313,7 @@ export class InsertOp extends list.ListNode {
|
|
|
321
313
|
}
|
|
322
314
|
|
|
323
315
|
/**
|
|
324
|
-
* @template {
|
|
316
|
+
* @template {fingerprintTrait.Fingerprintable} [Children=never]
|
|
325
317
|
* @template {string} [Text=never]
|
|
326
318
|
*/
|
|
327
319
|
export class DeleteOp extends list.ListNode {
|
|
@@ -382,7 +374,7 @@ export class DeleteOp extends list.ListNode {
|
|
|
382
374
|
/**
|
|
383
375
|
* @param {DeleteOp} other
|
|
384
376
|
*/
|
|
385
|
-
[
|
|
377
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
386
378
|
return this.delete === other.delete
|
|
387
379
|
}
|
|
388
380
|
|
|
@@ -463,7 +455,7 @@ export class RetainOp extends list.ListNode {
|
|
|
463
455
|
/**
|
|
464
456
|
* @param {RetainOp} other
|
|
465
457
|
*/
|
|
466
|
-
[
|
|
458
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
467
459
|
return this.retain === other.retain && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)
|
|
468
460
|
}
|
|
469
461
|
|
|
@@ -563,8 +555,8 @@ export class ModifyOp extends list.ListNode {
|
|
|
563
555
|
/**
|
|
564
556
|
* @param {ModifyOp<any>} other
|
|
565
557
|
*/
|
|
566
|
-
[
|
|
567
|
-
return this.value[
|
|
558
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
559
|
+
return this.value[equalityTrait.EqualityTraitSymbol](other.value) && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)
|
|
568
560
|
}
|
|
569
561
|
|
|
570
562
|
/**
|
|
@@ -576,7 +568,7 @@ export class ModifyOp extends list.ListNode {
|
|
|
576
568
|
}
|
|
577
569
|
|
|
578
570
|
/**
|
|
579
|
-
* @template {
|
|
571
|
+
* @template {fingerprintTrait.Fingerprintable} V
|
|
580
572
|
* @template {string|number} [K=any]
|
|
581
573
|
*/
|
|
582
574
|
export class AttrInsertOp {
|
|
@@ -661,7 +653,7 @@ export class AttrInsertOp {
|
|
|
661
653
|
/**
|
|
662
654
|
* @param {AttrInsertOp<V>} other
|
|
663
655
|
*/
|
|
664
|
-
[
|
|
656
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
665
657
|
return this.key === other.key && fun.equalityDeep(this.value, other.value) && fun.equalityDeep(this.attribution, other.attribution)
|
|
666
658
|
}
|
|
667
659
|
|
|
@@ -726,7 +718,7 @@ export class AttrDeleteOp {
|
|
|
726
718
|
/**
|
|
727
719
|
* @param {AttrDeleteOp<V>} other
|
|
728
720
|
*/
|
|
729
|
-
[
|
|
721
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
730
722
|
return this.key === other.key && fun.equalityDeep(this.attribution, other.attribution)
|
|
731
723
|
}
|
|
732
724
|
|
|
@@ -800,8 +792,8 @@ export class AttrModifyOp {
|
|
|
800
792
|
/**
|
|
801
793
|
* @param {AttrModifyOp<Modifier>} other
|
|
802
794
|
*/
|
|
803
|
-
[
|
|
804
|
-
return this.key === other.key && this.value[
|
|
795
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
796
|
+
return this.key === other.key && this.value[equalityTrait.EqualityTraitSymbol](other.value)
|
|
805
797
|
}
|
|
806
798
|
|
|
807
799
|
/**
|
|
@@ -823,7 +815,7 @@ export const $deleteOp = s.$custom(o => o != null && (o.constructor === DeleteOp
|
|
|
823
815
|
export const $insertOp = s.$custom(o => o != null && (o.constructor === AttrInsertOp || o.constructor === InsertOp))
|
|
824
816
|
|
|
825
817
|
/**
|
|
826
|
-
* @template {
|
|
818
|
+
* @template {fingerprintTrait.Fingerprintable} Content
|
|
827
819
|
* @param {s.Schema<Content>} $content
|
|
828
820
|
* @return {s.Schema<AttrInsertOp<Content> | InsertOp<Content>>}
|
|
829
821
|
*/
|
|
@@ -904,8 +896,8 @@ export const $anyOp = s.$union($insertOp, $deleteOp, $textOp, $modifyOp)
|
|
|
904
896
|
/**
|
|
905
897
|
* @template {string} [NodeName=any]
|
|
906
898
|
* @template {{[k:string|number]:any}} [Attrs={}]
|
|
907
|
-
* @template {
|
|
908
|
-
* @template {string
|
|
899
|
+
* @template {fingerprintTrait.Fingerprintable} [Children=never]
|
|
900
|
+
* @template {string} [Text=never]
|
|
909
901
|
* @template {s.Schema<Delta<any,any,any,any,any>>|null} [Schema=any]
|
|
910
902
|
*/
|
|
911
903
|
export class Delta {
|
|
@@ -956,6 +948,7 @@ export class Delta {
|
|
|
956
948
|
*/
|
|
957
949
|
get fingerprint () {
|
|
958
950
|
return this._fingerprint || (this._fingerprint = buffer.toBase64(encoding.encode(encoder => {
|
|
951
|
+
encoding.writeUint32(encoder, 0xf2ae5680) // "magic number" that ensures that different types of content don't yield the same fingerprint
|
|
959
952
|
encoding.writeAny(encoder, this.name)
|
|
960
953
|
/**
|
|
961
954
|
* @type {Array<number|string>}
|
|
@@ -985,6 +978,10 @@ export class Delta {
|
|
|
985
978
|
})))
|
|
986
979
|
}
|
|
987
980
|
|
|
981
|
+
[fingerprintTrait.FingerprintTraitSymbol] () {
|
|
982
|
+
return this.fingerprint
|
|
983
|
+
}
|
|
984
|
+
|
|
988
985
|
isEmpty () {
|
|
989
986
|
return object.isEmpty(this.attrs) && list.isEmpty(this.children)
|
|
990
987
|
}
|
|
@@ -1021,16 +1018,17 @@ export class Delta {
|
|
|
1021
1018
|
* @return {boolean}
|
|
1022
1019
|
*/
|
|
1023
1020
|
equals (other) {
|
|
1024
|
-
return this[
|
|
1021
|
+
return this[equalityTrait.EqualityTraitSymbol](other)
|
|
1025
1022
|
}
|
|
1026
1023
|
|
|
1027
1024
|
/**
|
|
1028
1025
|
* @param {any} other
|
|
1029
1026
|
* @return {boolean}
|
|
1030
1027
|
*/
|
|
1031
|
-
[
|
|
1032
|
-
// @todo it is only necessary to compare finrerprints OR do a deep equality check
|
|
1033
|
-
|
|
1028
|
+
[equalityTrait.EqualityTraitSymbol] (other) {
|
|
1029
|
+
// @todo it is only necessary to compare finrerprints OR do a deep equality check (remove
|
|
1030
|
+
// childCnt as well)
|
|
1031
|
+
return this.name === other.name && fun.equalityDeep(this.attrs, other.attrs) && fun.equalityDeep(this.children, other.children) && this.childCnt === other.childCnt
|
|
1034
1032
|
}
|
|
1035
1033
|
|
|
1036
1034
|
/**
|
|
@@ -1157,8 +1155,8 @@ const modDeltaCheck = d => {
|
|
|
1157
1155
|
/**
|
|
1158
1156
|
* @template {string} [NodeName=any]
|
|
1159
1157
|
* @template {{[key:string|number]:any}} [Attrs={}]
|
|
1160
|
-
* @template {
|
|
1161
|
-
* @template {string
|
|
1158
|
+
* @template {fingerprintTrait.Fingerprintable} [Children=never]
|
|
1159
|
+
* @template {string} [Text=never]
|
|
1162
1160
|
* @template {s.Schema<Delta<any,any,any,any,any>>|null} [Schema=any]
|
|
1163
1161
|
* @extends {Delta<NodeName,Attrs,Children,Text,Schema>}
|
|
1164
1162
|
*/
|
|
@@ -1422,7 +1420,7 @@ export class DeltaBuilder extends Delta {
|
|
|
1422
1420
|
modDeltaCheck(this)
|
|
1423
1421
|
this.$schema?.expect(other)
|
|
1424
1422
|
// apply attrs
|
|
1425
|
-
for (
|
|
1423
|
+
for (const op of other.attrs) {
|
|
1426
1424
|
const c = /** @type {AttrInsertOp<any,any>|AttrDeleteOp<any>|AttrModifyOp<any,any>} */ (this.attrs[op.key])
|
|
1427
1425
|
if ($modifyOp.check(op)) {
|
|
1428
1426
|
if ($deltaAny.check(c?.value)) {
|
|
@@ -1432,12 +1430,14 @@ export class DeltaBuilder extends Delta {
|
|
|
1432
1430
|
// @ts-ignore
|
|
1433
1431
|
this.attrs[op.key] = op.clone()
|
|
1434
1432
|
}
|
|
1435
|
-
} else {
|
|
1436
|
-
op = /** @type {any} */ (op.clone())
|
|
1433
|
+
} else if ($insertOp.check(op)) {
|
|
1437
1434
|
// @ts-ignore
|
|
1438
1435
|
op.prevValue = c?.value
|
|
1439
1436
|
// @ts-ignore
|
|
1440
|
-
this.attrs[op.key] = op
|
|
1437
|
+
this.attrs[op.key] = op.clone()
|
|
1438
|
+
} else if ($deleteOp.check(op)) {
|
|
1439
|
+
op.prevValue = c?.value
|
|
1440
|
+
delete this.attrs[op.key]
|
|
1441
1441
|
}
|
|
1442
1442
|
}
|
|
1443
1443
|
// apply children
|
|
@@ -1519,6 +1519,7 @@ export class DeltaBuilder extends Delta {
|
|
|
1519
1519
|
offset = 0
|
|
1520
1520
|
scheduleForMerge(opsI.next)
|
|
1521
1521
|
list.remove(this.children, opsI)
|
|
1522
|
+
opsI = opsI.next
|
|
1522
1523
|
} else if (offset === 0) {
|
|
1523
1524
|
// case 2
|
|
1524
1525
|
offset = 0
|
|
@@ -1733,17 +1734,135 @@ export class DeltaBuilder extends Delta {
|
|
|
1733
1734
|
console.info('method rebaseOnInverse unimplemented')
|
|
1734
1735
|
return this
|
|
1735
1736
|
}
|
|
1737
|
+
|
|
1738
|
+
/**
|
|
1739
|
+
* Append child ops from one op to the other.
|
|
1740
|
+
*
|
|
1741
|
+
* delta.create().insert('a').append(delta.create().insert('b')) // => insert "ab"
|
|
1742
|
+
*
|
|
1743
|
+
* @template {DeltaAny} OtherDelta
|
|
1744
|
+
* @param {OtherDelta} other
|
|
1745
|
+
* @return {CastToDelta<OtherDelta> extends Delta<any,any,infer OtherChildren,infer OtherText,any> ? DeltaBuilder<NodeName,Attrs,Children|OtherChildren,Text|OtherText,Schema> : never}
|
|
1746
|
+
*/
|
|
1747
|
+
append (other) {
|
|
1748
|
+
// @todo Investigate. Above is a typescript issue. It is necessary to cast OtherDelta to a Delta first before
|
|
1749
|
+
// inferring type, otherwise Children will contain Text.
|
|
1750
|
+
for (const child of other.children) {
|
|
1751
|
+
list.pushEnd(this.children, child.clone())
|
|
1752
|
+
}
|
|
1753
|
+
// @ts-ignore
|
|
1754
|
+
return this
|
|
1755
|
+
}
|
|
1736
1756
|
}
|
|
1737
1757
|
|
|
1758
|
+
/**
|
|
1759
|
+
* @template {DeltaAny} D
|
|
1760
|
+
* @typedef {D extends DeltaBuilder<infer N,infer Attrs,infer Children,infer Text,infer Schema> ? Delta<N,Attrs,Children,Text,Schema> : D} CastToDelta
|
|
1761
|
+
*/
|
|
1762
|
+
|
|
1738
1763
|
/**
|
|
1739
1764
|
* @template {string} NodeName
|
|
1740
1765
|
* @template {{ [key: string|number]: any }} [Attrs={}]
|
|
1741
|
-
* @template {
|
|
1766
|
+
* @template {fingerprintTrait.Fingerprintable|never} [Children=never]
|
|
1742
1767
|
* @template {string|never} [Text=never]
|
|
1743
1768
|
* @typedef {Delta<NodeName,Attrs,Children|Delta<NodeName,Attrs,Children,Text>|RecursiveDelta<NodeName,Attrs,Children,Text>,Text>} RecursiveDelta
|
|
1744
1769
|
*/
|
|
1745
1770
|
|
|
1746
1771
|
/**
|
|
1772
|
+
* @template {string} Name
|
|
1773
|
+
* @template {{[k:string|number]:any}} Attrs
|
|
1774
|
+
* @template {fingerprintTrait.Fingerprintable} Children
|
|
1775
|
+
* @template {boolean} HasText
|
|
1776
|
+
* @template {{ [k:string]:any }} Formats
|
|
1777
|
+
* @template {boolean} Recursive
|
|
1778
|
+
* @extends {s.Schema<Delta<
|
|
1779
|
+
* Name,
|
|
1780
|
+
* Attrs,
|
|
1781
|
+
* Children|(Recursive extends true ? RecursiveDelta<Name,Attrs,Children,HasText extends true ? string : never> : never),
|
|
1782
|
+
* HasText extends true ? string : never,
|
|
1783
|
+
* any>>}
|
|
1784
|
+
*/
|
|
1785
|
+
export class $Delta extends s.Schema {
|
|
1786
|
+
/**
|
|
1787
|
+
* @param {s.Schema<Name>} $name
|
|
1788
|
+
* @param {s.Schema<Attrs>} $attrs
|
|
1789
|
+
* @param {s.Schema<Children>} $children
|
|
1790
|
+
* @param {HasText} hasText
|
|
1791
|
+
* @param {s.Schema<Formats>} $formats
|
|
1792
|
+
* @param {Recursive} recursive
|
|
1793
|
+
*/
|
|
1794
|
+
constructor ($name, $attrs, $children, hasText, $formats, recursive) {
|
|
1795
|
+
super()
|
|
1796
|
+
const $attrsPartial = s.$$object.check($attrs) ? $attrs.partial : $attrs
|
|
1797
|
+
if (recursive) {
|
|
1798
|
+
// @ts-ignore
|
|
1799
|
+
$children = s.$union($children, this)
|
|
1800
|
+
}
|
|
1801
|
+
this.shape = { $name, $attrs: $attrsPartial, $children, hasText, $formats }
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
/**
|
|
1805
|
+
* @param {any} o
|
|
1806
|
+
* @param {s.ValidationError} [err]
|
|
1807
|
+
* @return {o is Delta<
|
|
1808
|
+
* Name,
|
|
1809
|
+
* Attrs,
|
|
1810
|
+
* Children|(Recursive extends true ? RecursiveDelta<Name,Attrs,Children,HasText extends true ? string : never> : never),
|
|
1811
|
+
* HasText extends true ? string : never,
|
|
1812
|
+
* any>}
|
|
1813
|
+
*/
|
|
1814
|
+
check (o, err = undefined) {
|
|
1815
|
+
const { $name, $attrs, $children, hasText, $formats } = this.shape
|
|
1816
|
+
if (!(o instanceof Delta)) {
|
|
1817
|
+
err?.extend(null, 'Delta', o?.constructor.name, 'Constructor match failed')
|
|
1818
|
+
} else if (!$name.check(o.name, err)) {
|
|
1819
|
+
err?.extend('Delta.name', $name.toString(), o.name, 'Constructor match failed')
|
|
1820
|
+
} else if (list.toArray(o.children).some(c => (!hasText && $textOp.check(c)) || (hasText && $textOp.check(c) && c.format != null && !$formats.check(c.format)) || ($insertOp.check(c) && !c.insert.every(ins => $children.check(ins))))) {
|
|
1821
|
+
err?.extend('Delta.children', '', '', 'Children don\'t match the schema')
|
|
1822
|
+
} else if (object.some(o.attrs, (op, k) => $insertOp.check(op) && !$attrs.check({ [k]: op.value }, err))) {
|
|
1823
|
+
err?.extend('Delta.attrs', '', '', 'Attrs don\'t match the schema')
|
|
1824
|
+
} else {
|
|
1825
|
+
return true
|
|
1826
|
+
}
|
|
1827
|
+
return false
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1830
|
+
|
|
1831
|
+
/**
|
|
1832
|
+
* @template {s.Schema<string>|string|Array<string>} [NodeNameSchema=s.Schema<any>]
|
|
1833
|
+
* @template {s.Schema<{ [key: string|number]: any }>|{ [key:string|number]:any }} [AttrsSchema=s.Schema<{}>]
|
|
1834
|
+
* @template {any} [ChildrenSchema=s.Schema<never>]
|
|
1835
|
+
* @template {boolean} [HasText=false]
|
|
1836
|
+
* @template {boolean} [Recursive=false]
|
|
1837
|
+
* @template {{ [k:string]:any }} [Formats={[k:string]:any}]
|
|
1838
|
+
* @param {object} opts
|
|
1839
|
+
* @param {NodeNameSchema?} [opts.name]
|
|
1840
|
+
* @param {AttrsSchema?} [opts.attrs] What key-value pairs are included.
|
|
1841
|
+
* @param {ChildrenSchema?} [opts.children] The type of content in `insertOp`
|
|
1842
|
+
* @param {HasText} [opts.text] Whether this delta contains text using `textOp`
|
|
1843
|
+
* @param {Formats} [opts.formats]
|
|
1844
|
+
* @param {Recursive} [opts.recursive]
|
|
1845
|
+
* @return {[s.Unwrap<s.ReadSchema<NodeNameSchema>>,s.Unwrap<s.ReadSchema<AttrsSchema>>,s.Unwrap<s.ReadSchema<ChildrenSchema>>] extends [infer NodeName, infer Attrs, infer Children] ? s.Schema<Delta<
|
|
1846
|
+
* NodeName,
|
|
1847
|
+
* Attrs,
|
|
1848
|
+
* Children|(Recursive extends true ? RecursiveDelta<NodeName,Attrs,Children,HasText extends true ? string : never> : never),
|
|
1849
|
+
* HasText extends true ? string : never
|
|
1850
|
+
* >> : never}
|
|
1851
|
+
*/
|
|
1852
|
+
export const $delta = ({ name, attrs, children, text, formats, recursive }) => /** @type {any} */ (new $Delta(
|
|
1853
|
+
name == null ? s.$any : s.$(name),
|
|
1854
|
+
/** @type {any} */ (attrs == null ? s.$object({}) : s.$(attrs)),
|
|
1855
|
+
/** @type {any} */ (children == null ? s.$never : s.$(children)),
|
|
1856
|
+
text ?? false,
|
|
1857
|
+
formats == null ? s.$any : s.$(formats),
|
|
1858
|
+
recursive ?? false
|
|
1859
|
+
))
|
|
1860
|
+
|
|
1861
|
+
export const $$delta = s.$constructedBy($Delta)
|
|
1862
|
+
|
|
1863
|
+
/**
|
|
1864
|
+
* @todo remove this
|
|
1865
|
+
*
|
|
1747
1866
|
* @template {s.Schema<string>|string|Array<string>} [NodeNameSchema=s.Schema<any>]
|
|
1748
1867
|
* @template {s.Schema<{ [key: string|number]: any }>|{ [key:string|number]:any }} [AttrsSchema=s.Schema<{}>]
|
|
1749
1868
|
* @template {any} [ChildrenSchema=s.Schema<never>]
|
|
@@ -1762,7 +1881,7 @@ export class DeltaBuilder extends Delta {
|
|
|
1762
1881
|
* HasText extends true ? string : never
|
|
1763
1882
|
* >> : never}
|
|
1764
1883
|
*/
|
|
1765
|
-
export const $delta = ({ name, attrs, children, text, recursive }) => {
|
|
1884
|
+
export const _$delta = ({ name, attrs, children, text, recursive }) => {
|
|
1766
1885
|
/**
|
|
1767
1886
|
* @type {s.Schema<Array<any>>}
|
|
1768
1887
|
*/
|
|
@@ -1818,6 +1937,35 @@ export const mergeDeltas = (a, b) => {
|
|
|
1818
1937
|
return a == null ? b : (a || null)
|
|
1819
1938
|
}
|
|
1820
1939
|
|
|
1940
|
+
/**
|
|
1941
|
+
* @template {DeltaAny} D
|
|
1942
|
+
* @param {prng.PRNG} gen
|
|
1943
|
+
* @param {s.Schema<D>} $d
|
|
1944
|
+
* @return {D extends Delta<infer NodeName,infer Attrs,infer Children,infer Text,infer Schema> ? DeltaBuilder<NodeName,Attrs,Children,Text,Schema> : never}
|
|
1945
|
+
*/
|
|
1946
|
+
export const random = (gen, $d) => {
|
|
1947
|
+
const { $name, $attrs, $children, hasText, $formats: $formats_ } = /** @type {$Delta<any,any,any,boolean,any,any>} */ (/** @type {any} */ ($d)).shape
|
|
1948
|
+
const d = s.$$any.check($name) ? create($deltaAny) : create(s.random(gen, $name), $deltaAny)
|
|
1949
|
+
const $formats = s.$$any.check($formats_) ? s.$null : $formats_
|
|
1950
|
+
prng.bool(gen) && d.setMany(s.random(gen, $attrs))
|
|
1951
|
+
for (let i = prng.uint32(gen, 0, 5); i > 0; i--) {
|
|
1952
|
+
if (hasText && prng.bool(gen)) {
|
|
1953
|
+
d.insert(prng.word(gen), s.random(gen, $formats))
|
|
1954
|
+
} else if (!s.$$never.check($children)) {
|
|
1955
|
+
/**
|
|
1956
|
+
* @type {Array<any>}
|
|
1957
|
+
*/
|
|
1958
|
+
const ins = []
|
|
1959
|
+
let insN = prng.int32(gen, 0, 5)
|
|
1960
|
+
while (insN--) {
|
|
1961
|
+
ins.push(s.random(gen, $children))
|
|
1962
|
+
}
|
|
1963
|
+
d.insert(ins, s.random(gen, $formats))
|
|
1964
|
+
}
|
|
1965
|
+
}
|
|
1966
|
+
return /** @type {any} */ (d)
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1821
1969
|
/**
|
|
1822
1970
|
* @overload
|
|
1823
1971
|
* @return {DeltaBuilder<any,{},never,never,null>}
|
|
@@ -1878,12 +2026,12 @@ export const create = (nodeNameOrSchema, attrsOrSchema, children) => {
|
|
|
1878
2026
|
// DELTA TEXT
|
|
1879
2027
|
|
|
1880
2028
|
/**
|
|
1881
|
-
* @template {
|
|
2029
|
+
* @template {fingerprintTrait.Fingerprintable} [Embeds=never]
|
|
1882
2030
|
* @typedef {Delta<any,{},Embeds,string>} TextDelta
|
|
1883
2031
|
*/
|
|
1884
2032
|
|
|
1885
2033
|
/**
|
|
1886
|
-
* @template {
|
|
2034
|
+
* @template {fingerprintTrait.Fingerprintable} [Embeds=never]
|
|
1887
2035
|
* @typedef {DeltaBuilder<any,{},Embeds,string>} TextDeltaBuilder
|
|
1888
2036
|
*/
|
|
1889
2037
|
|
|
@@ -1903,12 +2051,12 @@ export const $textOnly = $text()
|
|
|
1903
2051
|
export const text = $schema => /** @type {any} */ (create($schema || $textOnly))
|
|
1904
2052
|
|
|
1905
2053
|
/**
|
|
1906
|
-
* @template {
|
|
2054
|
+
* @template {fingerprintTrait.Fingerprintable} Children
|
|
1907
2055
|
* @typedef {Delta<any,{},Children,never>} ArrayDelta
|
|
1908
2056
|
*/
|
|
1909
2057
|
|
|
1910
2058
|
/**
|
|
1911
|
-
* @template {
|
|
2059
|
+
* @template {fingerprintTrait.Fingerprintable} Children
|
|
1912
2060
|
* @typedef {DeltaBuilder<any,{},Children,never>} ArrayDeltaBuilder
|
|
1913
2061
|
*/
|
|
1914
2062
|
|
|
@@ -2008,29 +2156,73 @@ export const diff = (d1, d2) => {
|
|
|
2008
2156
|
* @param {DeltaBuilderAny} d
|
|
2009
2157
|
* @param {ChildrenOpAny[]} opsIs
|
|
2010
2158
|
* @param {ChildrenOpAny[]} opsShould
|
|
2011
|
-
*
|
|
2012
2159
|
*/
|
|
2013
2160
|
const diffAndApply = (d, opsIs, opsShould) => {
|
|
2014
|
-
//
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2161
|
+
// @todo unoptimized implementation. Convert content to array and diff that based on
|
|
2162
|
+
// generated fingerprints. We probably could do better and cache more information.
|
|
2163
|
+
// - benchmark
|
|
2164
|
+
// - cache fingerprints in ops
|
|
2165
|
+
/**
|
|
2166
|
+
* @type {Array<string|DeltaAny|fingerprintTrait.Fingerprintable>}
|
|
2167
|
+
*/
|
|
2168
|
+
const isContent = opsIs.flatMap(op => $insertOp.check(op) ? op.insert : ($textOp.check(op) ? op.insert.split('') : error.unexpectedCase()))
|
|
2169
|
+
/**
|
|
2170
|
+
* @type {Array<string|DeltaAny|fingerprintTrait.Fingerprintable>}
|
|
2171
|
+
*/
|
|
2172
|
+
const shouldContent = opsShould.flatMap(op => $insertOp.check(op) ? op.insert : ($textOp.check(op) ? op.insert.split('') : error.unexpectedCase()))
|
|
2173
|
+
const isContentFingerprinted = isContent.map(c => s.$string.check(c) ? c : fingerprintTrait.fingerprint(c))
|
|
2174
|
+
const shouldContentFingerprinted = shouldContent.map(c => s.$string.check(c) ? c : fingerprintTrait.fingerprint(c))
|
|
2175
|
+
/**
|
|
2176
|
+
* @type {{ index: number, insert: Array<string|DeltaAny|fingerprintTrait.Fingerprintable>, remove: Array<string|DeltaAny|fingerprintTrait.Fingerprintable> }[]}
|
|
2177
|
+
*/
|
|
2178
|
+
const cdiff = patience.diff(isContentFingerprinted, shouldContentFingerprinted)
|
|
2179
|
+
// overwrite fingerprinted content with actual content
|
|
2180
|
+
for (let i = 0, adj = 0; i < cdiff.length; i++) {
|
|
2181
|
+
const cd = cdiff[i]
|
|
2182
|
+
cd.remove = isContent.slice(cd.index, cd.index + cd.remove.length)
|
|
2183
|
+
cd.insert = shouldContent.slice(cd.index + adj, cd.index + adj + cd.insert.length)
|
|
2184
|
+
adj += cd.remove.length - cd.insert.length
|
|
2185
|
+
}
|
|
2186
|
+
for (let i = 0, lastIndex = 0; i < cdiff.length; i++) {
|
|
2187
|
+
const cd = cdiff[i]
|
|
2188
|
+
d.retain(cd.index - lastIndex)
|
|
2189
|
+
let cdii = 0
|
|
2190
|
+
let cdri = 0
|
|
2191
|
+
// try to match as much content as possible, preferring to skip over non-deltas
|
|
2192
|
+
for (; cdii < cd.insert.length && cdri < cd.remove.length;) {
|
|
2193
|
+
const a = cd.insert[cdii]
|
|
2194
|
+
const b = cd.remove[cdri]
|
|
2195
|
+
if ($deltaAny.check(a) && $deltaAny.check(b) && a.name === b.name) {
|
|
2196
|
+
d.modify(diff(a, b))
|
|
2197
|
+
cdii++
|
|
2198
|
+
cdri++
|
|
2199
|
+
} else if ($deltaAny.check(b)) {
|
|
2200
|
+
d.insert(s.$string.check(a) ? a : [a])
|
|
2201
|
+
cdii++
|
|
2202
|
+
} else {
|
|
2203
|
+
d.delete(1)
|
|
2204
|
+
cdri++
|
|
2205
|
+
}
|
|
2021
2206
|
}
|
|
2022
|
-
|
|
2207
|
+
for (; cdii < cd.insert.length; cdii++) {
|
|
2208
|
+
const a = cd.insert[cdii]
|
|
2209
|
+
d.insert(s.$string.check(a) ? a : [a])
|
|
2210
|
+
}
|
|
2211
|
+
d.delete(cd.remove.length - cdri)
|
|
2212
|
+
}
|
|
2023
2213
|
}
|
|
2024
|
-
diffAndApply(d, ops1.slice(change.index, change.index + change.remove.length), ops2.slice(change.index + currIndexOffset2, change.insert.length))
|
|
2214
|
+
diffAndApply(d, ops1.slice(change.index, change.index + change.remove.length), ops2.slice(change.index + currIndexOffset2, change.index + currIndexOffset2 + change.insert.length))
|
|
2025
2215
|
lastIndex1 = change.index + change.remove.length
|
|
2026
2216
|
currIndexOffset2 += change.insert.length - change.remove.length
|
|
2027
2217
|
}
|
|
2028
2218
|
for (const attr2 of d2.attrs) {
|
|
2029
2219
|
const attr1 = d1.attrs[attr2.key]
|
|
2030
2220
|
if (attr1 == null || (attr1.fingerprint !== attr2.fingerprint)) {
|
|
2221
|
+
/* c8 ignore else */
|
|
2031
2222
|
if ($insertOp.check(attr2)) {
|
|
2032
2223
|
d.set(attr2.key, attr2.value)
|
|
2033
2224
|
} else {
|
|
2225
|
+
/* c8 ignore next 2 */
|
|
2034
2226
|
error.unexpectedCase()
|
|
2035
2227
|
}
|
|
2036
2228
|
}
|
|
@@ -2041,5 +2233,5 @@ export const diff = (d1, d2) => {
|
|
|
2041
2233
|
}
|
|
2042
2234
|
}
|
|
2043
2235
|
}
|
|
2044
|
-
return /** @type {D} */ (d.done())
|
|
2236
|
+
return /** @type {D} */ (d.done(false))
|
|
2045
2237
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export function testDeltaBasicApi(_tc: t.TestCase): void;
|
|
2
2
|
export function testDeltaValues(_tc: t.TestCase): void;
|
|
3
3
|
export function testDeltaBasicCases(): void;
|
|
4
|
+
export function testDeltaArrayBasics(): void;
|
|
4
5
|
export function testAssignability(): void;
|
|
5
6
|
export function testText(): void;
|
|
6
7
|
export function testDelta(_tc: t.TestCase): void;
|
|
@@ -16,6 +17,10 @@ export function testNodeDelta(_tc: t.TestCase): void;
|
|
|
16
17
|
export function testRecursiveNode(): void;
|
|
17
18
|
export function testSimplifiedDeltaSchemaDefinition(): void;
|
|
18
19
|
export function testDiffing(): void;
|
|
20
|
+
export function testDiffingCommonPreSuffix(): void;
|
|
19
21
|
export function testSlice(): void;
|
|
22
|
+
export function testRepeatRandomListDiff(tc: t.TestCase): void;
|
|
23
|
+
export function testRepeatRandomMapDiff(tc: t.TestCase): void;
|
|
24
|
+
export function testDeltaAppend(tc: t.TestCase): void;
|
|
20
25
|
import * as t from 'lib0/testing';
|
|
21
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=delta.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta.test.d.ts","sourceRoot":"","sources":["delta.test.js"],"names":[],"mappings":"AAqCO,uCAFI,CAAC,CAAC,QAAQ,QAWpB;AAYM,qCAFI,CAAC,CAAC,QAAQ,QAwBpB;AAEM,4CA2BN;AAEM,6CAMN;AAKM,0CAkJN;AAEM,iCAWN;AAKM,+BAFI,CAAC,CAAC,QAAQ,QAKpB;AAKM,sCAFI,CAAC,CAAC,QAAQ,QAYpB;AAKM,uCAFI,CAAC,CAAC,QAAQ,QAuBpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QAsBpB;AAEM,sCAaN;AAKM,wCAFI,CAAC,CAAC,QAAQ,QA4BpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QA2CpB;AAKM,kCAFI,CAAC,CAAC,QAAQ,QAqDpB;AAKM,gDAFI,CAAC,CAAC,QAAQ,QAoEpB;AAKM,mCAFI,CAAC,CAAC,QAAQ,QAiCpB;AAEM,0CAmBN;AAEM,4DAIN;AAEM,oCAMN;AAEM,mDAMN;AAEM,kCAGN;AAKM,6CAFI,CAAC,CAAC,QAAQ,QAWpB;AAKM,4CAFI,CAAC,CAAC,QAAQ,QAWpB;AAKM,oCAFI,CAAC,CAAC,QAAQ,QAQpB;mBAzrBkB,cAAc"}
|
package/delta/t3.test.d.ts
CHANGED
|
@@ -15,5 +15,5 @@ export type Transform<DeltaA extends delta.Delta, DeltaB extends delta.Delta> =
|
|
|
15
15
|
applyA: (da: DeltaA) => TransformResult<DeltaA, DeltaB>;
|
|
16
16
|
applyB: (db: DeltaB) => TransformResult<DeltaA, DeltaB>;
|
|
17
17
|
};
|
|
18
|
-
import * as delta from './
|
|
18
|
+
import * as delta from './delta.js';
|
|
19
19
|
//# sourceMappingURL=t3.test.d.ts.map
|
package/delta/t3.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"t3.test.d.ts","sourceRoot":"","sources":["t3.test.js"],"names":[],"mappings":"AAoBO,gCAN4B,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,EACC,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,KACvB,MAAM,KACN,MAAM,GACL,eAAe,CAAC,MAAM,OAAC,EAAC,MAAM,OAAC,CAAC,CAEO;AACnD,+DAA+D;4BAbnC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,EACC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,IACd;IAAE,CAAC,EAAE,MAAM,OAAC,CAAC;IAAC,CAAC,EAAE,MAAM,OAAC,CAAA;CAAE;6BAiBT,MAAM,SAAtB,KAAK,CAAC,QAAS,EACC,MAAM,SAAtB,KAAK,CAAC,QAAS,IAChB,CAAC,CAAC,EAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,KAAG,CAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,CAAC;sBA2GpC,MAAM,SAAnB,KAAK,CAAC,KAAM,EACC,MAAM,SAAnB,KAAK,CAAC,KAAM,IACb;IAAE,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;CAAE;uBAvIlG,
|
|
1
|
+
{"version":3,"file":"t3.test.d.ts","sourceRoot":"","sources":["t3.test.js"],"names":[],"mappings":"AAoBO,gCAN4B,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,EACC,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,KACvB,MAAM,KACN,MAAM,GACL,eAAe,CAAC,MAAM,OAAC,EAAC,MAAM,OAAC,CAAC,CAEO;AACnD,+DAA+D;4BAbnC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,EACC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,IACd;IAAE,CAAC,EAAE,MAAM,OAAC,CAAC;IAAC,CAAC,EAAE,MAAM,OAAC,CAAA;CAAE;6BAiBT,MAAM,SAAtB,KAAK,CAAC,QAAS,EACC,MAAM,SAAtB,KAAK,CAAC,QAAS,IAChB,CAAC,CAAC,EAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,KAAG,CAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,CAAC;sBA2GpC,MAAM,SAAnB,KAAK,CAAC,KAAM,EACC,MAAM,SAAnB,KAAK,CAAC,KAAM,IACb;IAAE,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;CAAE;uBAvIlG,YAAY"}
|
package/dist/array.cjs
CHANGED
|
@@ -2,68 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var schema = require('./schema.cjs');
|
|
6
|
-
var abstractArray = require('./abstract-array.cjs');
|
|
7
|
-
var ops = require('./ops.cjs');
|
|
8
|
-
require('./object-18980796.cjs');
|
|
9
|
-
require('./traits.cjs');
|
|
10
|
-
require('./array-78849c95.cjs');
|
|
11
5
|
require('./set-5b47859e.cjs');
|
|
12
|
-
require('./
|
|
13
|
-
require('./environment-90227ead.cjs');
|
|
14
|
-
require('./map-24d263c0.cjs');
|
|
15
|
-
require('./string-fddc5f8b.cjs');
|
|
16
|
-
require('./conditions-f5c0c102.cjs');
|
|
17
|
-
require('./storage.cjs');
|
|
18
|
-
require('./function-e7d18feb.cjs');
|
|
19
|
-
require('./abstract.cjs');
|
|
20
|
-
require('./math-96d5e8c4.cjs');
|
|
21
|
-
require('./list.cjs');
|
|
6
|
+
var array = require('./array-78849c95.cjs');
|
|
22
7
|
|
|
23
|
-
/**
|
|
24
|
-
* @template ArrayContent
|
|
25
|
-
* @template {boolean} [WithText=false]
|
|
26
|
-
* @extends AbstractDeltaArrayBuilder<'array', import('./ops.js').DeltaArrayOps<ArrayContent,WithText>>
|
|
27
|
-
*/
|
|
28
|
-
class DeltaArray extends abstractArray.AbstractDeltaArrayBuilder {
|
|
29
|
-
/**
|
|
30
|
-
* @param {s.Schema<ArrayContent>} $insert
|
|
31
|
-
* @param {WithText} withText
|
|
32
|
-
*/
|
|
33
|
-
constructor ($insert, withText) {
|
|
34
|
-
super('array', $insert);
|
|
35
|
-
this.withText = withText;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
8
|
|
|
39
|
-
/**
|
|
40
|
-
* @template ArrayContent
|
|
41
|
-
* @template {boolean} [WithText=false]
|
|
42
|
-
* @param {s.Schema<ArrayContent>} $insert
|
|
43
|
-
* @param {WithText} [withText]
|
|
44
|
-
* @return {s.Schema<DeltaArray<ArrayContent, WithText>>}
|
|
45
|
-
*/
|
|
46
|
-
const $array = ($insert, withText) => /** @type {any} */ (schema.$instanceOf(abstractArray.AbstractDeltaArrayBuilder, o => o.type === 'array' && o.ops.every(op => {
|
|
47
|
-
if (ops.$textOp.check(op)) return !!withText
|
|
48
|
-
if (ops.$insertOp.check(op)) return op.insert.every(opi => $insert.check(opi))
|
|
49
|
-
return true
|
|
50
|
-
})));
|
|
51
|
-
/**
|
|
52
|
-
* @type {s.Schema<DeltaArray<any,any>>}
|
|
53
|
-
*/
|
|
54
|
-
const $arrayAny = /** @type {any} */ (schema.$instanceOf(abstractArray.AbstractDeltaArrayBuilder, o => o.type === 'array'));
|
|
55
9
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
exports
|
|
66
|
-
exports
|
|
67
|
-
exports.
|
|
68
|
-
exports.
|
|
10
|
+
exports.appendTo = array.appendTo;
|
|
11
|
+
exports.bubblesortItem = array.bubblesortItem;
|
|
12
|
+
exports.copy = array.copy;
|
|
13
|
+
exports.create = array.create;
|
|
14
|
+
exports.equalFlat = array.equalFlat;
|
|
15
|
+
exports.every = array.every;
|
|
16
|
+
exports.flatten = array.flatten;
|
|
17
|
+
exports.fold = array.fold;
|
|
18
|
+
exports.from = array.from;
|
|
19
|
+
exports.isArray = array.isArray;
|
|
20
|
+
exports.last = array.last;
|
|
21
|
+
exports.map = array.map;
|
|
22
|
+
exports.some = array.some;
|
|
23
|
+
exports.unfold = array.unfold;
|
|
24
|
+
exports.unique = array.unique;
|
|
25
|
+
exports.uniqueBy = array.uniqueBy;
|
|
69
26
|
//# sourceMappingURL=array.cjs.map
|