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.
- 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} +244 -53
- 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} +253 -58
- 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/schema.js
CHANGED
|
@@ -8,9 +8,11 @@ import * as obj from './object.js'
|
|
|
8
8
|
import * as arr from './array.js'
|
|
9
9
|
import * as error from './error.js'
|
|
10
10
|
import * as env from './environment.js'
|
|
11
|
-
import * as
|
|
11
|
+
import * as equalityTraits from './trait/equality.js'
|
|
12
12
|
import * as fun from './function.js'
|
|
13
13
|
import * as string from './string.js'
|
|
14
|
+
import * as prng from './prng.js'
|
|
15
|
+
import * as number from './number.js'
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* @typedef {string|number|bigint|boolean|null|undefined|symbol} Primitive
|
|
@@ -64,7 +66,7 @@ import * as string from './string.js'
|
|
|
64
66
|
|
|
65
67
|
const schemaSymbol = Symbol('0schema')
|
|
66
68
|
|
|
67
|
-
class ValidationError {
|
|
69
|
+
export class ValidationError {
|
|
68
70
|
constructor () {
|
|
69
71
|
/**
|
|
70
72
|
* Reverse errors
|
|
@@ -102,7 +104,7 @@ class ValidationError {
|
|
|
102
104
|
const shapeExtends = (a, b) => {
|
|
103
105
|
if (a === b) return true
|
|
104
106
|
if (a == null || b == null || a.constructor !== b.constructor) return false
|
|
105
|
-
if (a[
|
|
107
|
+
if (a[equalityTraits.EqualityTraitSymbol]) return equalityTraits.equals(a, b) // last resort: check equality (do this before array and obj check which don't implement the equality trait)
|
|
106
108
|
if (arr.isArray(a)) {
|
|
107
109
|
return arr.every(a, aitem =>
|
|
108
110
|
arr.some(b, bitem => shapeExtends(aitem, bitem))
|
|
@@ -118,7 +120,7 @@ const shapeExtends = (a, b) => {
|
|
|
118
120
|
|
|
119
121
|
/**
|
|
120
122
|
* @template T
|
|
121
|
-
* @implements {
|
|
123
|
+
* @implements {equalityTraits.EqualityTrait}
|
|
122
124
|
*/
|
|
123
125
|
export class Schema {
|
|
124
126
|
// this.shape must not be defined on Schema. Otherwise typecheck on metatypes (e.g. $$object) won't work as expected anymore
|
|
@@ -153,7 +155,7 @@ export class Schema {
|
|
|
153
155
|
/**
|
|
154
156
|
* @param {object} other
|
|
155
157
|
*/
|
|
156
|
-
[
|
|
158
|
+
[equalityTraits.EqualityTraitSymbol] (other) {
|
|
157
159
|
return this.equals(/** @type {any} */ (other))
|
|
158
160
|
}
|
|
159
161
|
|
|
@@ -186,6 +188,7 @@ export class Schema {
|
|
|
186
188
|
* @type {Schema<T?>}
|
|
187
189
|
*/
|
|
188
190
|
get nullable () {
|
|
191
|
+
// @ts-ignore
|
|
189
192
|
return $union(this, $null)
|
|
190
193
|
}
|
|
191
194
|
|
|
@@ -314,7 +317,7 @@ export class $Custom extends Schema {
|
|
|
314
317
|
* @param {(o:any) => boolean} check
|
|
315
318
|
* @return {Schema<any>}
|
|
316
319
|
*/
|
|
317
|
-
export const $custom = check => new $Custom(check)
|
|
320
|
+
export const $custom = (check) => new $Custom(check)
|
|
318
321
|
export const $$custom = $constructedBy($Custom)
|
|
319
322
|
|
|
320
323
|
/**
|
|
@@ -529,7 +532,7 @@ export class $Object extends Schema {
|
|
|
529
532
|
}
|
|
530
533
|
|
|
531
534
|
/**
|
|
532
|
-
* @template
|
|
535
|
+
* @template S
|
|
533
536
|
* @typedef {Schema<{ [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? Key : never]?: S[Key] extends $Optional<Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? never : Key]: S[Key] extends Schema<infer Type> ? Type : never }>} _ObjectDefToSchema
|
|
534
537
|
*/
|
|
535
538
|
|
|
@@ -817,12 +820,12 @@ export class $Union extends Schema {
|
|
|
817
820
|
}
|
|
818
821
|
|
|
819
822
|
/**
|
|
820
|
-
* @template {Array<
|
|
823
|
+
* @template {Array<any>} T
|
|
821
824
|
* @param {T} schemas
|
|
822
|
-
* @return {CastToSchema<$Union<
|
|
825
|
+
* @return {CastToSchema<$Union<Unwrap<ReadSchema<T>>>>}
|
|
823
826
|
*/
|
|
824
827
|
export const $union = (...schemas) => schemas.findIndex($s => $$union.check($s)) >= 0
|
|
825
|
-
? $union(...schemas.map($s => $$union.check($s) ? $s.shape : [$s]).flat(1))
|
|
828
|
+
? $union(...schemas.map($s => $($s)).map($s => $$union.check($s) ? $s.shape : [$s]).flat(1))
|
|
826
829
|
: (schemas.length === 1
|
|
827
830
|
? schemas[0]
|
|
828
831
|
: new $Union(schemas))
|
|
@@ -838,32 +841,32 @@ export const $$any = /** @type {Schema<Schema<any>>} */ ($constructedBy($Custom,
|
|
|
838
841
|
/**
|
|
839
842
|
* @type {Schema<bigint>}
|
|
840
843
|
*/
|
|
841
|
-
export const $bigint = $
|
|
842
|
-
export const $$bigint = /** @type {Schema<Schema<BigInt>>} */ ($
|
|
844
|
+
export const $bigint = $custom(o => typeof o === 'bigint')
|
|
845
|
+
export const $$bigint = /** @type {Schema<Schema<BigInt>>} */ ($custom(o => o === $bigint))
|
|
843
846
|
|
|
844
847
|
/**
|
|
845
848
|
* @type {Schema<symbol>}
|
|
846
849
|
*/
|
|
847
|
-
export const $symbol = $
|
|
848
|
-
export const $$symbol = /** @type {Schema<Schema<Symbol>>} */ ($
|
|
850
|
+
export const $symbol = $custom(o => typeof o === 'symbol')
|
|
851
|
+
export const $$symbol = /** @type {Schema<Schema<Symbol>>} */ ($custom(o => o === $symbol))
|
|
849
852
|
|
|
850
853
|
/**
|
|
851
854
|
* @type {Schema<number>}
|
|
852
855
|
*/
|
|
853
|
-
export const $number = $
|
|
854
|
-
export const $$number = /** @type {Schema<Schema<number>>} */ ($
|
|
856
|
+
export const $number = $custom(o => typeof o === 'number')
|
|
857
|
+
export const $$number = /** @type {Schema<Schema<number>>} */ ($custom(o => o === $number))
|
|
855
858
|
|
|
856
859
|
/**
|
|
857
860
|
* @type {Schema<string>}
|
|
858
861
|
*/
|
|
859
|
-
export const $string = $
|
|
860
|
-
export const $$string = /** @type {Schema<Schema<string>>} */ ($
|
|
862
|
+
export const $string = $custom(o => typeof o === 'string')
|
|
863
|
+
export const $$string = /** @type {Schema<Schema<string>>} */ ($custom(o => o === $string))
|
|
861
864
|
|
|
862
865
|
/**
|
|
863
866
|
* @type {Schema<boolean>}
|
|
864
867
|
*/
|
|
865
|
-
export const $boolean = $
|
|
866
|
-
export const $$boolean = /** @type {Schema<Schema<Boolean>>} */ ($
|
|
868
|
+
export const $boolean = $custom(o => typeof o === 'boolean')
|
|
869
|
+
export const $$boolean = /** @type {Schema<Schema<Boolean>>} */ ($custom(o => o === $boolean))
|
|
867
870
|
|
|
868
871
|
/**
|
|
869
872
|
* @type {Schema<undefined>}
|
|
@@ -917,9 +920,26 @@ export const $json = (() => {
|
|
|
917
920
|
* )
|
|
918
921
|
* )
|
|
919
922
|
* )
|
|
923
|
+
* } ReadSchemaOld
|
|
924
|
+
*/
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* @template {any} IN
|
|
928
|
+
* @typedef {[Extract<IN,Schema<any>>,Extract<IN,string|number|boolean|null>,Extract<IN,new (...args:any[])=>any>,Extract<IN,any[]>,Extract<Exclude<IN,Schema<any>|string|number|boolean|null|(new (...args:any[])=>any)|any[]>,object>] extends [infer Schemas, infer Primitives, infer Constructors, infer Arrs, infer Obj]
|
|
929
|
+
* ? Schema<
|
|
930
|
+
* (Schemas extends Schema<infer S> ? S : never)
|
|
931
|
+
* | Primitives
|
|
932
|
+
* | (Constructors extends new (...args:any[])=>any ? InstanceType<Constructors> : never)
|
|
933
|
+
* | (Arrs extends any[] ? { [K in keyof Arrs]: Unwrap<ReadSchema<Arrs[K]>> }[number] : never)
|
|
934
|
+
* | (Obj extends object ? Unwrap<(_ObjectDefToSchema<{[K in keyof Obj]:ReadSchema<Obj[K]>}> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never)> : never)>
|
|
935
|
+
* : never
|
|
920
936
|
* } ReadSchema
|
|
921
937
|
*/
|
|
922
938
|
|
|
939
|
+
/**
|
|
940
|
+
* @typedef {ReadSchema<{x:42}|{y:99}|Schema<string>|[1,2,{}]>} Q
|
|
941
|
+
*/
|
|
942
|
+
|
|
923
943
|
/**
|
|
924
944
|
* @template IN
|
|
925
945
|
* @param {IN} o
|
|
@@ -944,6 +964,7 @@ export const $ = o => {
|
|
|
944
964
|
} else if ($function.check(o)) {
|
|
945
965
|
return /** @type {any} */ ($constructedBy(/** @type {any} */ (o)))
|
|
946
966
|
}
|
|
967
|
+
/* c8 ignore next */
|
|
947
968
|
error.unexpectedCase()
|
|
948
969
|
}
|
|
949
970
|
|
|
@@ -963,3 +984,153 @@ export const assert = env.production
|
|
|
963
984
|
}
|
|
964
985
|
}
|
|
965
986
|
/* c8 ignore end */
|
|
987
|
+
|
|
988
|
+
/**
|
|
989
|
+
* @template In
|
|
990
|
+
* @template Out
|
|
991
|
+
* @typedef {{ if: Schema<In>, h: (o:In,state?:any)=>Out }} Pattern
|
|
992
|
+
*/
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* @template {Pattern<any,any>} P
|
|
996
|
+
* @template In
|
|
997
|
+
* @typedef {ReturnType<Extract<P,Pattern<In extends number ? number : (In extends string ? string : In),any>>['h']>} PatternMatchResult
|
|
998
|
+
*/
|
|
999
|
+
|
|
1000
|
+
/**
|
|
1001
|
+
* @todo move this to separate library
|
|
1002
|
+
* @template {any} [State=undefined]
|
|
1003
|
+
* @template {Pattern<any,any>} [Patterns=never]
|
|
1004
|
+
*/
|
|
1005
|
+
export class PatternMatcher {
|
|
1006
|
+
/**
|
|
1007
|
+
* @param {Schema<State>} [$state]
|
|
1008
|
+
*/
|
|
1009
|
+
constructor ($state) {
|
|
1010
|
+
/**
|
|
1011
|
+
* @type {Array<Patterns>}
|
|
1012
|
+
*/
|
|
1013
|
+
this.patterns = []
|
|
1014
|
+
this.$state = $state
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
/**
|
|
1018
|
+
* @template P
|
|
1019
|
+
* @template R
|
|
1020
|
+
* @param {P} pattern
|
|
1021
|
+
* @param {(o:NoInfer<Unwrap<ReadSchema<P>>>,s:State)=>R} handler
|
|
1022
|
+
* @return {PatternMatcher<State,Patterns|Pattern<Unwrap<ReadSchema<P>>,R>>}
|
|
1023
|
+
*/
|
|
1024
|
+
if (pattern, handler) {
|
|
1025
|
+
// @ts-ignore
|
|
1026
|
+
this.patterns.push({ if: $(pattern), h: handler })
|
|
1027
|
+
// @ts-ignore
|
|
1028
|
+
return this
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
/**
|
|
1032
|
+
* @template R
|
|
1033
|
+
* @param {(o:any,s:State)=>R} h
|
|
1034
|
+
*/
|
|
1035
|
+
else (h) {
|
|
1036
|
+
return this.if($any, h)
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
/**
|
|
1040
|
+
* @return {State extends undefined
|
|
1041
|
+
* ? <In extends Unwrap<Patterns['if']>>(o:In,state?:undefined)=>PatternMatchResult<Patterns,In>
|
|
1042
|
+
* : <In extends Unwrap<Patterns['if']>>(o:In,state:State)=>PatternMatchResult<Patterns,In>}
|
|
1043
|
+
*/
|
|
1044
|
+
done () {
|
|
1045
|
+
// @ts-ignore
|
|
1046
|
+
return /** @type {any} */ (o, s) => {
|
|
1047
|
+
for (let i = 0; i < this.patterns.length; i++) {
|
|
1048
|
+
const p = this.patterns[i]
|
|
1049
|
+
if (p.if.check(o)) {
|
|
1050
|
+
// @ts-ignore
|
|
1051
|
+
return p.h(o, s)
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
throw error.create('Unhandled pattern')
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
/**
|
|
1060
|
+
* @template [State=undefined]
|
|
1061
|
+
* @param {State} [state]
|
|
1062
|
+
* @return {PatternMatcher<State extends undefined ? undefined : Unwrap<ReadSchema<State>>>}
|
|
1063
|
+
*/
|
|
1064
|
+
export const match = state => new PatternMatcher(/** @type {any} */ (state))
|
|
1065
|
+
|
|
1066
|
+
/**
|
|
1067
|
+
* Helper function to generate a (non-exhaustive) sample set from a gives schema.
|
|
1068
|
+
*
|
|
1069
|
+
* @type {<T>(o:T,gen:prng.PRNG)=>T}
|
|
1070
|
+
*/
|
|
1071
|
+
const _random = /** @type {any} */ (match(/** @type {Schema<prng.PRNG>} */ ($any))
|
|
1072
|
+
.if($$number, (_o, gen) => prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER))
|
|
1073
|
+
.if($$string, (_o, gen) => prng.word(gen))
|
|
1074
|
+
.if($$boolean, (_o, gen) => prng.bool(gen))
|
|
1075
|
+
.if($$bigint, (_o, gen) => BigInt(prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER)))
|
|
1076
|
+
.if($$union, (o, gen) => random(gen, prng.oneOf(gen, o.shape)))
|
|
1077
|
+
.if($$object, (o, gen) => {
|
|
1078
|
+
/**
|
|
1079
|
+
* @type {any}
|
|
1080
|
+
*/
|
|
1081
|
+
const res = {}
|
|
1082
|
+
for (const k in o.shape) {
|
|
1083
|
+
let prop = o.shape[k]
|
|
1084
|
+
if ($$optional.check(prop)) {
|
|
1085
|
+
if (prng.bool(gen)) { continue }
|
|
1086
|
+
prop = prop.shape
|
|
1087
|
+
}
|
|
1088
|
+
res[k] = _random(prop, gen)
|
|
1089
|
+
}
|
|
1090
|
+
return res
|
|
1091
|
+
})
|
|
1092
|
+
.if($$array, (o, gen) => {
|
|
1093
|
+
const arr = []
|
|
1094
|
+
const n = prng.int32(gen, 0, 42)
|
|
1095
|
+
for (let i = 0; i < n; i++) {
|
|
1096
|
+
arr.push(random(gen, o.shape))
|
|
1097
|
+
}
|
|
1098
|
+
return arr
|
|
1099
|
+
})
|
|
1100
|
+
.if($$literal, (o, gen) => {
|
|
1101
|
+
return prng.oneOf(gen, o.shape)
|
|
1102
|
+
})
|
|
1103
|
+
.if($$null, (o, gen) => {
|
|
1104
|
+
return null
|
|
1105
|
+
})
|
|
1106
|
+
.if($$lambda, (o, gen) => {
|
|
1107
|
+
const res = random(gen, o.res)
|
|
1108
|
+
return () => res
|
|
1109
|
+
})
|
|
1110
|
+
.if($$any, (o, gen) => random(gen, prng.oneOf(gen, [
|
|
1111
|
+
$number, $string, $null, $undefined, $bigint, $boolean,
|
|
1112
|
+
$array($number),
|
|
1113
|
+
$record($union('a', 'b', 'c'), $number)
|
|
1114
|
+
])))
|
|
1115
|
+
.if($$record, (o, gen) => {
|
|
1116
|
+
/**
|
|
1117
|
+
* @type {any}
|
|
1118
|
+
*/
|
|
1119
|
+
const res = {}
|
|
1120
|
+
const keysN = prng.int53(gen, 0, 3)
|
|
1121
|
+
for (let i = 0; i < keysN; i++) {
|
|
1122
|
+
const key = random(gen, o.shape.keys)
|
|
1123
|
+
const val = random(gen, o.shape.values)
|
|
1124
|
+
res[key] = val
|
|
1125
|
+
}
|
|
1126
|
+
return res
|
|
1127
|
+
})
|
|
1128
|
+
.done())
|
|
1129
|
+
|
|
1130
|
+
/**
|
|
1131
|
+
* @template S
|
|
1132
|
+
* @param {prng.PRNG} gen
|
|
1133
|
+
* @param {S} schema
|
|
1134
|
+
* @return {Unwrap<ReadSchema<S>>}
|
|
1135
|
+
*/
|
|
1136
|
+
export const random = (gen, schema) => /** @type {any} */ (_random($(schema), gen))
|
package/schema.test.d.ts
CHANGED
|
@@ -7,5 +7,9 @@ export function testSchemaExtends(_tc: t.TestCase): void;
|
|
|
7
7
|
export function testSchemaErrors(_tc: t.TestCase): void;
|
|
8
8
|
export function testUnionMerging(_tc: t.TestCase): void;
|
|
9
9
|
export function testConvenienceHelper(): void;
|
|
10
|
+
export function testPatternMatcherBase(): void;
|
|
11
|
+
export function testPatternMatcherWithState(): void;
|
|
12
|
+
export function testPatternMatcherBenchmark(): void;
|
|
13
|
+
export function testRepeatRandomFromSchema(tc: t.TestCase): void;
|
|
10
14
|
import * as t from './testing.js';
|
|
11
15
|
//# sourceMappingURL=schema.test.d.ts.map
|
package/schema.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["schema.test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["schema.test.js"],"names":[],"mappings":"AAQO,iCAFI,CAAC,CAAC,QAAQ,QAqPpB;AAEM,yCAMN;AAKM,+CAFI,CAAC,CAAC,QAAQ,QAiBpB;AAKM,qCAFI,CAAC,CAAC,QAAQ,QA0BpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QAmBpB;AAKM,uCAFI,CAAC,CAAC,QAAQ,QAUpB;AAKM,sCAFI,CAAC,CAAC,QAAQ,QASpB;AAMM,sCAFI,CAAC,CAAC,QAAQ,QAcpB;AAEM,8CAqBN;AAEM,+CAmBN;AAEM,oDAuBN;AAEM,oDA8IN;AAKM,+CAFI,CAAC,CAAC,QAAQ,QA4BpB;mBAzmBkB,cAAc"}
|
package/test.html
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"lib0/conditions": "./conditions.js",
|
|
32
32
|
"lib0/crypto/jwt": "./crypto/jwt.js",
|
|
33
33
|
"lib0/crypto/aes-gcm": "./crypto/aes-gcm.js",
|
|
34
|
-
"lib0/delta": "./delta/
|
|
34
|
+
"lib0/delta": "./delta/delta.js",
|
|
35
35
|
"lib0/crypto/ecdsa": "./crypto/ecdsa.js",
|
|
36
36
|
"lib0/crypto/rsa-oaep": "./crypto/rsa-oaep.js",
|
|
37
37
|
"lib0/hash/rabin": "./hash/rabin.js",
|
|
@@ -133,9 +133,7 @@
|
|
|
133
133
|
"lib0/symbol.js": "./symbol.js",
|
|
134
134
|
"lib0/dist/symbol.cjs": "./dist/symbol.cjs",
|
|
135
135
|
"lib0/symbol": "./symbol.js",
|
|
136
|
-
"lib0/traits
|
|
137
|
-
"lib0/dist/traits.cjs": "./dist/traits.cjs",
|
|
138
|
-
"lib0/traits": "./traits.js",
|
|
136
|
+
"lib0/traits": "./trait/traits.js",
|
|
139
137
|
"lib0/testing.js": "./testing.js",
|
|
140
138
|
"lib0/dist/testing.cjs": "./dist/testing.cjs",
|
|
141
139
|
"lib0/testing": "./testing.js",
|
package/test.js
CHANGED
|
@@ -38,14 +38,11 @@ import * as storage from './storage.test.js'
|
|
|
38
38
|
import * as list from './list.test.js'
|
|
39
39
|
import * as cache from './cache.test.js'
|
|
40
40
|
import * as symbol from './symbol.test.js'
|
|
41
|
-
import * as traits from './traits.test.js'
|
|
41
|
+
import * as traits from './trait/traits.test.js'
|
|
42
42
|
import * as schema from './schema.test.js'
|
|
43
|
-
import * as
|
|
44
|
-
import * as
|
|
45
|
-
import * as
|
|
46
|
-
import * as deltaNode from './delta/node.test.js'
|
|
47
|
-
import * as deltaTransformer from './delta/transformer.test.js'
|
|
48
|
-
import * as deltaBinding from './delta/binding.test.js'
|
|
43
|
+
import * as delta from './delta/delta.test.js'
|
|
44
|
+
import * as deltaPitch from './delta/delta-pitch.test.js'
|
|
45
|
+
// import * as deltaBinding from './delta/binding.test.js'
|
|
49
46
|
import * as mutex from './mutex.test.js'
|
|
50
47
|
import { isBrowser, isNode } from './environment.js'
|
|
51
48
|
|
|
@@ -95,12 +92,9 @@ runTests({
|
|
|
95
92
|
symbol,
|
|
96
93
|
traits,
|
|
97
94
|
schema,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
deltaNode,
|
|
102
|
-
deltaTransformer,
|
|
103
|
-
deltaBinding,
|
|
95
|
+
delta,
|
|
96
|
+
deltaPitch,
|
|
97
|
+
// deltaBinding,
|
|
104
98
|
mutex
|
|
105
99
|
}).then(success => {
|
|
106
100
|
/* c8 ignore next */
|
package/testing.js
CHANGED
|
@@ -57,7 +57,7 @@ import * as json from './json.js'
|
|
|
57
57
|
import * as time from './time.js'
|
|
58
58
|
import * as promise from './promise.js'
|
|
59
59
|
import * as performance from 'lib0/performance'
|
|
60
|
-
import * as
|
|
60
|
+
import * as equalityTrait from './trait/equality.js'
|
|
61
61
|
|
|
62
62
|
export { production } from './environment.js'
|
|
63
63
|
export const extensive = env.hasConf('extensive')
|
|
@@ -435,8 +435,8 @@ const _compare = (a, b, path, message, customCompare) => {
|
|
|
435
435
|
if (a == null || b == null) {
|
|
436
436
|
return compareValues(null, a, b, path)
|
|
437
437
|
}
|
|
438
|
-
if (a[
|
|
439
|
-
if (a[
|
|
438
|
+
if (a[equalityTrait.EqualityTraitSymbol] != null) {
|
|
439
|
+
if (a[equalityTrait.EqualityTraitSymbol](b)) {
|
|
440
440
|
return true
|
|
441
441
|
} else {
|
|
442
442
|
_failMessage(message, 'Not equal by equality trait', path)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.d.ts","sourceRoot":"","sources":["equality.js"],"names":[],"mappings":"AAAA,gDAAqD;AAyB9C,uBALsB,CAAC,SAAhB,aAAc,KACjB,OAAO,CAAC,CAAC,CAAC,KACV,CAAC,GACA,OAAO,CAE4D;4BAtBlE;IAAE,CAAC,mBAAmB,CAAC,EAAC,CAAC,KAAK,EAAC,aAAa,KAAG,OAAO,CAAA;CAAE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const FingerprintTraitSymbol: unique symbol;
|
|
2
|
+
export function fingerprint(a: Fingerprintable): string;
|
|
3
|
+
/**
|
|
4
|
+
* When implementing this trait, it is recommended to write some sort of "magic number" first to
|
|
5
|
+
* ensure that different types of objects don't have the same fingerprint.
|
|
6
|
+
*
|
|
7
|
+
* The recommended pracice is to generate a random u32 number as your magic number. e.g. using
|
|
8
|
+
* `console.log(random.uint32().toString(16))`
|
|
9
|
+
*/
|
|
10
|
+
export type Fingerprintable = {
|
|
11
|
+
[FingerprintTraitSymbol]: () => string;
|
|
12
|
+
} | import("../encoding.js").AnyEncodable;
|
|
13
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["fingerprint.js"],"names":[],"mappings":"AAIA,mDAA2D;AAgBpD,+BAHI,eAAe,GACd,MAAM,CAE6P;;;;;;;;8BAPlQ;IAAE,CAAC,sBAAsB,CAAC,EAAC,MAAI,MAAM,CAAA;CAAE,GAAG,OAAO,gBAAgB,EAAE,YAAY"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as encoding from '../encoding.js'
|
|
2
|
+
import * as rabin from '../hash/rabin.js'
|
|
3
|
+
import * as buffer from '../buffer.js'
|
|
4
|
+
|
|
5
|
+
export const FingerprintTraitSymbol = Symbol('Fingerprint')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* When implementing this trait, it is recommended to write some sort of "magic number" first to
|
|
9
|
+
* ensure that different types of objects don't have the same fingerprint.
|
|
10
|
+
*
|
|
11
|
+
* The recommended pracice is to generate a random u32 number as your magic number. e.g. using
|
|
12
|
+
* `console.log(random.uint32().toString(16))`
|
|
13
|
+
*
|
|
14
|
+
* @typedef {{ [FingerprintTraitSymbol]:()=>string } | import('../encoding.js').AnyEncodable} Fingerprintable
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @param {Fingerprintable} a
|
|
19
|
+
* @return {string}
|
|
20
|
+
*/
|
|
21
|
+
export const fingerprint = a => (a != null && /** @type {any} */ (a)[FingerprintTraitSymbol]?.()) || buffer.toBase64(rabin.fingerprint(rabin.StandardIrreducible128, encoding.encode(encoder => { encoding.writeUint32(encoder, 0x8de1c475); encoding.writeAny(encoder, a) })))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traits.d.ts","sourceRoot":"","sources":["traits.js"],"names":[],"mappings":""}
|
package/trait/traits.js
ADDED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traits.test.d.ts","sourceRoot":"","sources":["traits.test.js"],"names":[],"mappings":"AAQO,wCAFI,CAAC,CAAC,QAAQ,QAwCpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QA2BpB;
|
|
1
|
+
{"version":3,"file":"traits.test.d.ts","sourceRoot":"","sources":["traits.test.js"],"names":[],"mappings":"AAQO,wCAFI,CAAC,CAAC,QAAQ,QAwCpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QA2BpB;AAEM,6CAMN;mBApFkB,eAAe"}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {Array<dops.DeltaJsonOp>} DeltaJson
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* @template {'array' | 'text' | 'custom'} Type
|
|
6
|
-
* @template {dops.AbstractDeltaArrayOps<any>} OPS
|
|
7
|
-
* @extends {d.AbstractDelta}
|
|
8
|
-
*/
|
|
9
|
-
export class AbstractDeltaArray<Type extends "array" | "text" | "custom", OPS extends dops.AbstractDeltaArrayOps<any>> extends d.AbstractDelta {
|
|
10
|
-
/**
|
|
11
|
-
* @param {Type} type
|
|
12
|
-
*/
|
|
13
|
-
constructor(type: Type);
|
|
14
|
-
type: Type;
|
|
15
|
-
/**
|
|
16
|
-
* @type {Array<OPS>}
|
|
17
|
-
*/
|
|
18
|
-
ops: Array<OPS>;
|
|
19
|
-
/**
|
|
20
|
-
* @template M
|
|
21
|
-
* @param {(d:OPS) => dops.AbstractDeltaArrayOps<M>} f
|
|
22
|
-
* @return {AbstractDeltaArrayBuilder<Type,M>}
|
|
23
|
-
*/
|
|
24
|
-
map<M>(f: (d: OPS) => dops.AbstractDeltaArrayOps<M>): AbstractDeltaArrayBuilder<Type, M>;
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* Iterate through the changes. There are two approches to iterate through the changes. The
|
|
28
|
-
* following examples achieve the same thing:
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* d.forEach((op, index) => {
|
|
32
|
-
* if (op instanceof delta.InsertArrayOp) {
|
|
33
|
-
* op.insert
|
|
34
|
-
* } else if (op instanceof delta.RetainOp ) {
|
|
35
|
-
* op.retain
|
|
36
|
-
* } else if (op instanceof delta.DeleteOp) {
|
|
37
|
-
* op.delete
|
|
38
|
-
* }
|
|
39
|
-
* })
|
|
40
|
-
*
|
|
41
|
-
* The second approach doesn't require instanceof checks.
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* d.forEach(null,
|
|
45
|
-
* (insertOp, index) => insertOp.insert,
|
|
46
|
-
* (retainOp, index) => insertOp.retain
|
|
47
|
-
* (deleteOp, index) => insertOp.delete
|
|
48
|
-
* )
|
|
49
|
-
*
|
|
50
|
-
* @param {null|((d:OPS,index:number)=>void)} f
|
|
51
|
-
* @param {null|((insertOp:Extract<OPS,InsertOp<any>|TextOp>,index:number)=>void)} insertHandler
|
|
52
|
-
* @param {null|((retainOp:RetainOp,index:number)=>void)} retainHandler
|
|
53
|
-
* @param {null|((deleteOp:DeleteOp,index:number)=>void)} deleteHandler
|
|
54
|
-
* @param {null|((modifyOp:OPS extends ModifyOp<infer M> ? ModifyOp<M> : never,index:number)=>void)} modifyHandler
|
|
55
|
-
*/
|
|
56
|
-
forEach(f?: null | ((d: OPS, index: number) => void), insertHandler?: null | ((insertOp: Extract<OPS, InsertOp<any> | TextOp>, index: number) => void), retainHandler?: null | ((retainOp: RetainOp, index: number) => void), deleteHandler?: null | ((deleteOp: DeleteOp, index: number) => void), modifyHandler?: null | ((modifyOp: OPS extends ModifyOp<infer M> ? ModifyOp<M> : never, index: number) => void)): void;
|
|
57
|
-
/**
|
|
58
|
-
* @param {AbstractDeltaArray<Type, OPS>} other
|
|
59
|
-
* @return {boolean}
|
|
60
|
-
*/
|
|
61
|
-
equals(other: AbstractDeltaArray<Type, OPS>): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* @returns {DeltaJson}
|
|
64
|
-
*/
|
|
65
|
-
toJSON(): DeltaJson;
|
|
66
|
-
get size(): number;
|
|
67
|
-
/**
|
|
68
|
-
* @param {AbstractDeltaArray<Type,OPS>} other
|
|
69
|
-
*/
|
|
70
|
-
[traits.EqualityTraitSymbol](other: AbstractDeltaArray<Type, OPS>): boolean;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* @template {'text' | 'array' | 'custom'} Type
|
|
74
|
-
* @template {dops.AbstractDeltaArrayOps<any>} OPS
|
|
75
|
-
* @extends {AbstractDeltaArray<Type,OPS>}
|
|
76
|
-
*/
|
|
77
|
-
export class AbstractDeltaArrayBuilder<Type extends "text" | "array" | "custom", OPS extends dops.AbstractDeltaArrayOps<any>> extends AbstractDeltaArray<Type, OPS> {
|
|
78
|
-
/**
|
|
79
|
-
* @param {Type} type
|
|
80
|
-
* @param {s.Schema<OPS extends dops.AbstractDeltaArrayOps<infer V> ? V : never>} $insert
|
|
81
|
-
*/
|
|
82
|
-
constructor(type: Type, $insert: s.Schema<OPS extends dops.AbstractDeltaArrayOps<infer V> ? V : never>);
|
|
83
|
-
$insert: s.Schema<OPS extends dops.AbstractDeltaArrayOps<infer V extends unknown> ? V : never>;
|
|
84
|
-
/**
|
|
85
|
-
* @type {dops.FormattingAttributes?}
|
|
86
|
-
*/
|
|
87
|
-
usedAttributes: dops.FormattingAttributes | null;
|
|
88
|
-
/**
|
|
89
|
-
* @type {d.Attribution?}
|
|
90
|
-
*/
|
|
91
|
-
usedAttribution: d.Attribution | null;
|
|
92
|
-
/**
|
|
93
|
-
* @type {dops.AbstractDeltaArrayOps<any>?}
|
|
94
|
-
*/
|
|
95
|
-
lastOp: dops.AbstractDeltaArrayOps<any> | null;
|
|
96
|
-
/**
|
|
97
|
-
* @return {this}
|
|
98
|
-
*/
|
|
99
|
-
clone(): this;
|
|
100
|
-
/**
|
|
101
|
-
* @param {dops.FormattingAttributes?} attributes
|
|
102
|
-
* @return {this}
|
|
103
|
-
*/
|
|
104
|
-
useAttributes(attributes: dops.FormattingAttributes | null): this;
|
|
105
|
-
/**
|
|
106
|
-
* @param {string} name
|
|
107
|
-
* @param {any} value
|
|
108
|
-
*/
|
|
109
|
-
updateUsedAttributes(name: string, value: any): this;
|
|
110
|
-
/**
|
|
111
|
-
* @template {keyof d.Attribution} NAME
|
|
112
|
-
* @param {NAME} name
|
|
113
|
-
* @param {d.Attribution[NAME]?} value
|
|
114
|
-
*/
|
|
115
|
-
updateUsedAttribution<NAME extends keyof d.Attribution>(name: NAME, value: d.Attribution[NAME] | null): this;
|
|
116
|
-
/**
|
|
117
|
-
* @param {d.Attribution?} attribution
|
|
118
|
-
*/
|
|
119
|
-
useAttribution(attribution: d.Attribution | null): this;
|
|
120
|
-
/**
|
|
121
|
-
* @param {(OPS extends TextOp ? string : never) | (OPS extends InsertOp<infer Content> ? Array<Content> : never) } insert
|
|
122
|
-
* @param {dops.FormattingAttributes?} attributes
|
|
123
|
-
* @param {d.Attribution?} attribution
|
|
124
|
-
* @return {this}
|
|
125
|
-
*/
|
|
126
|
-
insert(insert: (OPS extends TextOp ? string : never) | (OPS extends InsertOp<infer Content> ? Array<Content> : never), attributes?: dops.FormattingAttributes | null, attribution?: d.Attribution | null): this;
|
|
127
|
-
/**
|
|
128
|
-
* @param {OPS extends ModifyOp<infer Mod> ? Mod : never } modify
|
|
129
|
-
* @param {dops.FormattingAttributes?} attributes
|
|
130
|
-
* @param {d.Attribution?} attribution
|
|
131
|
-
* @return {this}
|
|
132
|
-
*/
|
|
133
|
-
modify(modify: OPS extends ModifyOp<infer Mod> ? Mod : never, attributes?: dops.FormattingAttributes | null, attribution?: d.Attribution | null): this;
|
|
134
|
-
/**
|
|
135
|
-
* @param {number} retain
|
|
136
|
-
* @param {dops.FormattingAttributes?} attributes
|
|
137
|
-
* @param {d.Attribution?} attribution
|
|
138
|
-
* @return {this}
|
|
139
|
-
*/
|
|
140
|
-
retain(retain: number, attributes?: dops.FormattingAttributes | null, attribution?: d.Attribution | null): this;
|
|
141
|
-
/**
|
|
142
|
-
* @param {number} len
|
|
143
|
-
* @return {this}
|
|
144
|
-
*/
|
|
145
|
-
delete(len: number): this;
|
|
146
|
-
/**
|
|
147
|
-
* @todo this is basically untested and is in dire need of randomized testing.
|
|
148
|
-
* @param {AbstractDeltaArray<Type, OPS>} other
|
|
149
|
-
*/
|
|
150
|
-
apply(other: AbstractDeltaArray<Type, OPS>): void;
|
|
151
|
-
/**
|
|
152
|
-
* @return {Type extends 'array' ? (OPS extends dops.InsertOp<infer C> ? import('./array.js').DeltaArray<C> : never) : (Type extends 'text' ? (OPS extends dops.DeltaTextOps<infer Embeds> ? import('./text.js').DeltaText<Embeds> : never) : AbstractDeltaArray<Type,OPS>)}
|
|
153
|
-
*/
|
|
154
|
-
done(): Type extends "array" ? (OPS extends dops.InsertOp<infer C> ? import("./array.js").DeltaArray<C> : never) : (Type extends "text" ? (OPS extends dops.DeltaTextOps<infer Embeds> ? import("./text.js").DeltaText<Embeds> : never) : AbstractDeltaArray<Type, OPS>);
|
|
155
|
-
}
|
|
156
|
-
export type DeltaJson = Array<dops.DeltaJsonOp>;
|
|
157
|
-
import * as dops from './ops.js';
|
|
158
|
-
import * as d from './abstract.js';
|
|
159
|
-
import { InsertOp } from './ops.js';
|
|
160
|
-
import { TextOp } from './ops.js';
|
|
161
|
-
import { RetainOp } from './ops.js';
|
|
162
|
-
import { DeleteOp } from './ops.js';
|
|
163
|
-
import { ModifyOp } from './ops.js';
|
|
164
|
-
import * as traits from '../traits.js';
|
|
165
|
-
import * as s from '../schema.js';
|
|
166
|
-
//# sourceMappingURL=abstract-array.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-array.d.ts","sourceRoot":"","sources":["abstract-array.js"],"names":[],"mappings":"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"}
|