lib0 0.2.109 → 0.2.111

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 (100) hide show
  1. package/array.d.ts +2 -2
  2. package/array.d.ts.map +1 -1
  3. package/array.js +5 -6
  4. package/bin/gentesthtml.js +16 -2
  5. package/coverage/tmp/coverage-37930-1752527249527-0.json +1 -0
  6. package/coverage/tmp/coverage-37931-1752527222567-0.json +1 -0
  7. package/dist/aes-gcm.cjs +4 -4
  8. package/dist/{array-f0f52786.cjs → array-f5410bdd.cjs} +6 -7
  9. package/dist/array-f5410bdd.cjs.map +1 -0
  10. package/dist/array.cjs +1 -1
  11. package/dist/array.d.ts +2 -2
  12. package/dist/array.d.ts.map +1 -1
  13. package/dist/{broadcastchannel-3f71755b.cjs → broadcastchannel-7479dcb7.cjs} +2 -2
  14. package/dist/{broadcastchannel-3f71755b.cjs.map → broadcastchannel-7479dcb7.cjs.map} +1 -1
  15. package/dist/broadcastchannel.cjs +9 -9
  16. package/dist/{buffer-c040e625.cjs → buffer-cba90761.cjs} +6 -6
  17. package/dist/{buffer-c040e625.cjs.map → buffer-cba90761.cjs.map} +1 -1
  18. package/dist/buffer.cjs +8 -8
  19. package/dist/cache.cjs +3 -3
  20. package/dist/component.cjs +5 -5
  21. package/dist/{decoding-7b1393a8.cjs → decoding-9732ddf2.cjs} +3 -3
  22. package/dist/{decoding-7b1393a8.cjs.map → decoding-9732ddf2.cjs.map} +1 -1
  23. package/dist/decoding.cjs +4 -4
  24. package/dist/{diff-117a5b30.cjs → diff-63d13d0f.cjs} +2 -2
  25. package/dist/{diff-117a5b30.cjs.map → diff-63d13d0f.cjs.map} +1 -1
  26. package/dist/diff.cjs +4 -4
  27. package/dist/{encoding-364fc682.cjs → encoding-62f41e96.cjs} +3 -3
  28. package/dist/{encoding-364fc682.cjs.map → encoding-62f41e96.cjs.map} +1 -1
  29. package/dist/encoding.cjs +3 -3
  30. package/dist/{environment-f28f4004.cjs → environment-2789c99d.cjs} +3 -3
  31. package/dist/{environment-f28f4004.cjs.map → environment-2789c99d.cjs.map} +1 -1
  32. package/dist/environment.cjs +5 -5
  33. package/dist/{function-e09c7eb7.cjs → function-6c17de82.cjs} +3 -3
  34. package/dist/{function-e09c7eb7.cjs.map → function-6c17de82.cjs.map} +1 -1
  35. package/dist/function.cjs +3 -3
  36. package/dist/index.cjs +12 -12
  37. package/dist/indexeddbV2.cjs +1 -1
  38. package/dist/jwt.cjs +8 -8
  39. package/dist/list.cjs +3 -3
  40. package/dist/logging.cjs +5 -5
  41. package/dist/logging.common.cjs +5 -5
  42. package/dist/logging.node.cjs +5 -5
  43. package/dist/{object-0dc73acd.cjs → object-491858d1.cjs} +24 -7
  44. package/dist/object-491858d1.cjs.map +1 -0
  45. package/dist/object.cjs +2 -1
  46. package/dist/object.cjs.map +1 -1
  47. package/dist/object.d.ts +12 -7
  48. package/dist/object.d.ts.map +1 -1
  49. package/dist/object.test.d.ts +1 -0
  50. package/dist/object.test.d.ts.map +1 -1
  51. package/dist/observable.cjs +1 -1
  52. package/dist/patience.cjs +1 -1
  53. package/dist/performance.node.cjs +3 -3
  54. package/dist/pledge.cjs +1 -1
  55. package/dist/{prng-57f83f83.cjs → prng-6cd9a82d.cjs} +3 -3
  56. package/dist/{prng-57f83f83.cjs.map → prng-6cd9a82d.cjs.map} +1 -1
  57. package/dist/prng.cjs +9 -9
  58. package/dist/prng.test.d.ts.map +1 -1
  59. package/dist/rabin-gf2-polynomial.cjs +8 -8
  60. package/dist/rabin-uncached.cjs +8 -8
  61. package/dist/rabin.cjs +8 -8
  62. package/dist/random.test.d.ts.map +1 -1
  63. package/dist/schema.cjs +545 -0
  64. package/dist/schema.cjs.map +1 -0
  65. package/dist/schema.d.ts +317 -0
  66. package/dist/schema.d.ts.map +1 -0
  67. package/dist/schema.test.d.ts +3 -0
  68. package/dist/schema.test.d.ts.map +1 -0
  69. package/dist/sort.test.d.ts.map +1 -1
  70. package/dist/{string-42009272.cjs → string-04e96f2d.cjs} +2 -2
  71. package/dist/{string-42009272.cjs.map → string-04e96f2d.cjs.map} +1 -1
  72. package/dist/string.cjs +2 -2
  73. package/dist/testing.cjs +10 -11
  74. package/dist/testing.cjs.map +1 -1
  75. package/dist/testing.d.ts.map +1 -1
  76. package/dist/url.cjs +1 -1
  77. package/dist/{websocket-3a481d20.cjs → websocket-2c325505.cjs} +1 -1
  78. package/dist/{websocket-3a481d20.cjs.map → websocket-2c325505.cjs.map} +1 -1
  79. package/dist/websocket.cjs +2 -2
  80. package/object.d.ts +12 -7
  81. package/object.d.ts.map +1 -1
  82. package/object.js +20 -5
  83. package/object.test.d.ts +1 -0
  84. package/object.test.d.ts.map +1 -1
  85. package/package.json +11 -5
  86. package/prng.test.d.ts.map +1 -1
  87. package/random.test.d.ts.map +1 -1
  88. package/schema.d.ts +317 -0
  89. package/schema.d.ts.map +1 -0
  90. package/schema.js +504 -0
  91. package/schema.test.d.ts +3 -0
  92. package/schema.test.d.ts.map +1 -0
  93. package/sort.test.d.ts.map +1 -1
  94. package/test.html +1 -0
  95. package/test.js +3 -2
  96. package/testing.d.ts.map +1 -1
  97. package/testing.js +0 -1
  98. package/coverage/tmp/coverage-32991-1750516864118-0.json +0 -1
  99. package/dist/array-f0f52786.cjs.map +0 -1
  100. package/dist/object-0dc73acd.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"prng.test.d.ts","sourceRoot":"","sources":["../prng.test.js"],"names":[],"mappings":"AA4LO,kDAFI,EAAE,QAAQ,QAE2E;AAKzF,4CAFI,EAAE,QAAQ,QAKpB;AAKM,yCAFI,EAAE,QAAQ,QAKpB;AA2BM,4CAFI,EAAE,QAAQ,QAOpB;mBAxOkB,cAAc"}
1
+ {"version":3,"file":"prng.test.d.ts","sourceRoot":"","sources":["../prng.test.js"],"names":[],"mappings":"AA4LO,kDAFI,EAAE,QAAQ,QAE2E;AAKzF,4CAFI,EAAE,QAAQ,QAIpB;AAKM,yCAFI,EAAE,QAAQ,QAIpB;AA2BM,4CAFI,EAAE,QAAQ,QAOpB;mBAtOkB,cAAc"}
@@ -4,21 +4,21 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var math = require('./math-08e068f9.cjs');
6
6
  var webcrypto = require('lib0/webcrypto');
7
- var array = require('./array-f0f52786.cjs');
8
- var buffer = require('./buffer-c040e625.cjs');
7
+ var array = require('./array-f5410bdd.cjs');
8
+ var buffer = require('./buffer-cba90761.cjs');
9
9
  require('./set-a0a3ea69.cjs');
10
- require('./string-42009272.cjs');
11
- require('./environment-f28f4004.cjs');
10
+ require('./string-04e96f2d.cjs');
11
+ require('./environment-2789c99d.cjs');
12
12
  require('./map-0dabcc55.cjs');
13
13
  require('./conditions-f5c0c102.cjs');
14
14
  require('./storage.cjs');
15
- require('./function-e09c7eb7.cjs');
16
- require('./object-0dc73acd.cjs');
15
+ require('./function-6c17de82.cjs');
16
+ require('./object-491858d1.cjs');
17
17
  require('./traits.cjs');
18
- require('./encoding-364fc682.cjs');
18
+ require('./encoding-62f41e96.cjs');
19
19
  require('./number-466d8922.cjs');
20
20
  require('./binary-ac8e39e2.cjs');
21
- require('./decoding-7b1393a8.cjs');
21
+ require('./decoding-9732ddf2.cjs');
22
22
  require('./error-8582d695.cjs');
23
23
 
24
24
  function _interopNamespace(e) {
@@ -3,21 +3,21 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var math = require('./math-08e068f9.cjs');
6
- var buffer = require('./buffer-c040e625.cjs');
7
- require('./string-42009272.cjs');
8
- require('./array-f0f52786.cjs');
6
+ var buffer = require('./buffer-cba90761.cjs');
7
+ require('./string-04e96f2d.cjs');
8
+ require('./array-f5410bdd.cjs');
9
9
  require('./set-a0a3ea69.cjs');
10
- require('./environment-f28f4004.cjs');
10
+ require('./environment-2789c99d.cjs');
11
11
  require('./map-0dabcc55.cjs');
12
12
  require('./conditions-f5c0c102.cjs');
13
13
  require('./storage.cjs');
14
- require('./function-e09c7eb7.cjs');
15
- require('./object-0dc73acd.cjs');
14
+ require('./function-6c17de82.cjs');
15
+ require('./object-491858d1.cjs');
16
16
  require('./traits.cjs');
17
- require('./encoding-364fc682.cjs');
17
+ require('./encoding-62f41e96.cjs');
18
18
  require('./number-466d8922.cjs');
19
19
  require('./binary-ac8e39e2.cjs');
20
- require('./decoding-7b1393a8.cjs');
20
+ require('./decoding-9732ddf2.cjs');
21
21
  require('./error-8582d695.cjs');
22
22
 
23
23
  /**
package/dist/rabin.cjs CHANGED
@@ -2,22 +2,22 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var buffer = require('./buffer-c040e625.cjs');
5
+ var buffer = require('./buffer-cba90761.cjs');
6
6
  var map = require('./map-0dabcc55.cjs');
7
- require('./string-42009272.cjs');
8
- require('./array-f0f52786.cjs');
7
+ require('./string-04e96f2d.cjs');
8
+ require('./array-f5410bdd.cjs');
9
9
  require('./set-a0a3ea69.cjs');
10
- require('./environment-f28f4004.cjs');
10
+ require('./environment-2789c99d.cjs');
11
11
  require('./conditions-f5c0c102.cjs');
12
12
  require('./storage.cjs');
13
- require('./function-e09c7eb7.cjs');
14
- require('./object-0dc73acd.cjs');
13
+ require('./function-6c17de82.cjs');
14
+ require('./object-491858d1.cjs');
15
15
  require('./traits.cjs');
16
16
  require('./math-08e068f9.cjs');
17
- require('./encoding-364fc682.cjs');
17
+ require('./encoding-62f41e96.cjs');
18
18
  require('./number-466d8922.cjs');
19
19
  require('./binary-ac8e39e2.cjs');
20
- require('./decoding-7b1393a8.cjs');
20
+ require('./decoding-9732ddf2.cjs');
21
21
  require('./error-8582d695.cjs');
22
22
 
23
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../random.test.js"],"names":[],"mappings":"AASO,+BAFI,EAAE,QAAQ,QAKpB;AAKM,+BAFI,EAAE,QAAQ,QA0BpB;AAKM,+BAFI,EAAE,QAAQ,QAyBpB;AAKM,+BAFI,EAAE,QAAQ,QAIpB;AAKM,uCAFI,EAAE,QAAQ,QAkBpB;mBAhGkB,cAAc"}
1
+ {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../random.test.js"],"names":[],"mappings":"AASO,+BAFI,EAAE,QAAQ,QAKpB;AAKM,+BAFI,EAAE,QAAQ,QA0BpB;AAKM,+BAFI,EAAE,QAAQ,QAyBpB;AAKM,+BAFI,EAAE,QAAQ,QAIpB;AAKM,uCAFI,EAAE,QAAQ,QAiBpB;mBA/FkB,cAAc"}
@@ -0,0 +1,545 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var object$1 = require('./object-491858d1.cjs');
6
+ var array$1 = require('./array-f5410bdd.cjs');
7
+ var error = require('./error-8582d695.cjs');
8
+ var environment = require('./environment-2789c99d.cjs');
9
+ require('./set-a0a3ea69.cjs');
10
+ require('./map-0dabcc55.cjs');
11
+ require('./string-04e96f2d.cjs');
12
+ require('./conditions-f5c0c102.cjs');
13
+ require('./storage.cjs');
14
+ require('./function-6c17de82.cjs');
15
+ require('./traits.cjs');
16
+
17
+ /**
18
+ * @experimental WIP
19
+ *
20
+ * Simple & efficient schemas for your data.
21
+ */
22
+
23
+ /**
24
+ * @typedef {string|number|bigint|boolean|null|undefined} LiteralType
25
+ */
26
+
27
+ /**
28
+ * @typedef {{ [k:string|number|symbol]: any }} AnyObject
29
+ */
30
+
31
+ /**
32
+ * @template T
33
+ * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema
34
+ */
35
+
36
+ /**
37
+ * @template {readonly unknown[]} T
38
+ * @typedef {T extends []
39
+ * ? {}
40
+ * : T extends [infer First]
41
+ * ? First
42
+ * : T extends [infer First, ...infer Rest]
43
+ * ? First & Intersect<Rest>
44
+ * : never
45
+ * } Intersect
46
+ */
47
+
48
+ /**
49
+ * @template {readonly unknown[]} T
50
+ * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray
51
+ */
52
+
53
+ /**
54
+ * @template T
55
+ * @typedef {T extends $Schema<infer S> ? $Schema<S> : never} CastToSchema
56
+ */
57
+
58
+ /**
59
+ * @template {unknown[]} Arr
60
+ * @typedef {Arr extends [...unknown[], infer L] ? L : never} TupleLast
61
+ */
62
+
63
+ /**
64
+ * @template {unknown[]} Arr
65
+ * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop
66
+ */
67
+
68
+ const schemaSymbol = Symbol('0schema');
69
+
70
+ /**
71
+ * @template T
72
+ */
73
+ class $Schema {
74
+ get [schemaSymbol] () { return true }
75
+ /**
76
+ * Use `schema.validate(obj)` with a typed parameter that is already of typed to be an instance of
77
+ * Schema. Validate will check the structure of the parameter and return true iff the instance
78
+ * really is an instance of Schema.
79
+ *
80
+ * @param {T} o
81
+ * @return {boolean}
82
+ */
83
+ validate (o) {
84
+ return this.check(o)
85
+ }
86
+
87
+ /* c8 ignore start */
88
+ /**
89
+ * Similar to validate, but this method accepts untyped parameters.
90
+ *
91
+ * @param {any} _o
92
+ * @return {_o is T}
93
+ */
94
+ check (_o) {
95
+ error.methodUnimplemented();
96
+ }
97
+ /* c8 ignore stop */
98
+
99
+ /**
100
+ * @type {$Schema<T?>}
101
+ */
102
+ get nullable () {
103
+ return union(this, null_)
104
+ }
105
+
106
+ /**
107
+ * @type {$Schema<T|undefined>}
108
+ */
109
+ get optional () {
110
+ return union(this, undefined_)
111
+ }
112
+
113
+ /**
114
+ * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.
115
+ * Use this if you know that the type is of a specific type and you just want to convince the type
116
+ * system.
117
+ *
118
+ * **Do not rely on these error messages!**
119
+ * Performs an assertion check only if not in a production environment.
120
+ *
121
+ * @param {any} o
122
+ * @return {o extends T ? T : never}
123
+ */
124
+ cast (o) {
125
+ assert(o, this);
126
+ return o
127
+ }
128
+
129
+ /**
130
+ * Ensures that a variable is a a specific type. Returns the value, or throws an exception if the assertion check failed.
131
+ * Use this if you know that the type is of a specific type and you just want to convince the type
132
+ * system.
133
+ *
134
+ * Can be useful when defining lambdas: `s.lambda(s.$number, s.$void).ensure((n) => n + 1)`
135
+ *
136
+ * **Do not rely on these error messages!**
137
+ * Performs an assertion check if not in a production environment.
138
+ *
139
+ * @param {T} o
140
+ * @return {o extends T ? T : never}
141
+ */
142
+ ensure (o) {
143
+ assert(o, this);
144
+ return o
145
+ }
146
+ }
147
+
148
+ /**
149
+ * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C
150
+ * @extends {$Schema<C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)>}
151
+ */
152
+ class $ConstructedBy extends $Schema {
153
+ /**
154
+ * @param {C} c
155
+ */
156
+ constructor (c) {
157
+ super();
158
+ this.v = c;
159
+ }
160
+
161
+ /**
162
+ * @param {any} o
163
+ * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o
164
+ */
165
+ check (o) {
166
+ return o?.constructor === this.v
167
+ }
168
+ }
169
+
170
+ /**
171
+ * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C
172
+ * @param {C} c
173
+ * @return {CastToSchema<$ConstructedBy<C>>}
174
+ */
175
+ const constructedBy = c => new $ConstructedBy(c);
176
+
177
+ /**
178
+ * @template {LiteralType} T
179
+ * @extends {$Schema<T>}
180
+ */
181
+ class $Literal extends $Schema {
182
+ /**
183
+ * @param {Array<T>} literals
184
+ */
185
+ constructor (literals) {
186
+ super();
187
+ this.v = literals;
188
+ }
189
+
190
+ /**
191
+ * @param {any} o
192
+ * @return {o is T}
193
+ */
194
+ check (o) {
195
+ return this.v.some(a => a === o)
196
+ }
197
+ }
198
+
199
+ /**
200
+ * @template {LiteralType[]} T
201
+ * @param {T} literals
202
+ * @return {CastToSchema<$Literal<T[number]>>}
203
+ */
204
+ const literal = (...literals) => new $Literal(literals);
205
+
206
+ /**
207
+ * @template {{[key:string|symbol|number]: $Schema<any>}} S
208
+ * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
209
+ */
210
+ class $Object extends $Schema {
211
+ /**
212
+ * @param {S} v
213
+ */
214
+ constructor (v) {
215
+ super();
216
+ this.v = v;
217
+ }
218
+
219
+ /**
220
+ * @param {any} o
221
+ * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}
222
+ */
223
+ check (o) {
224
+ return o != null && object$1.every(this.v, (vv, vk) => vv.check(o[vk]))
225
+ }
226
+ }
227
+
228
+ /**
229
+ * @template {{ [key:string|symbol|number]: $Schema<any> }} T
230
+ * @param {T} def
231
+ * @return {CastToSchema<$Object<T>>}
232
+ */
233
+ const object = def => new $Object(def);
234
+
235
+ /**
236
+ * @template {$Schema<string|number|symbol>} Keys
237
+ * @template {$Schema<any>} Values
238
+ * @extends {$Schema<Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>>}
239
+ */
240
+ class $Record extends $Schema {
241
+ /**
242
+ * @param {Keys} keys
243
+ * @param {Values} values
244
+ */
245
+ constructor (keys, values) {
246
+ super();
247
+ this.keys = keys;
248
+ this.values = values;
249
+ }
250
+
251
+ /**
252
+ * @param {any} o
253
+ * @return {o is Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>}
254
+ */
255
+ check (o) {
256
+ return o != null && object$1.every(o, (vv, vk) => this.keys.check(vk) && this.values.check(vv))
257
+ }
258
+ }
259
+
260
+ /**
261
+ * @template {$Schema<string|number|symbol>} Keys
262
+ * @template {$Schema<any>} Values
263
+ * @param {Keys} keys
264
+ * @param {Values} values
265
+ * @return {CastToSchema<$Record<Keys,Values>>}
266
+ */
267
+ const record = (keys, values) => new $Record(keys, values);
268
+
269
+ /**
270
+ * @template {$Schema<any>[]} S
271
+ * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
272
+ */
273
+ class $Tuple extends $Schema {
274
+ /**
275
+ * @param {S} v
276
+ */
277
+ constructor (v) {
278
+ super();
279
+ this.v = v;
280
+ }
281
+
282
+ /**
283
+ * @param {any} o
284
+ * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}
285
+ */
286
+ check (o) {
287
+ return o != null && object$1.every(this.v, (vv, vk) => /** @type {$Schema<any>} */ (vv).check(o[vk]))
288
+ }
289
+ }
290
+
291
+ /**
292
+ * @template {Array<$Schema<any>>} T
293
+ * @param {T} def
294
+ * @return {CastToSchema<$Tuple<T>>}
295
+ */
296
+ const tuple = (...def) => new $Tuple(def);
297
+
298
+ /**
299
+ * @template {$Schema<any>} S
300
+ * @extends {$Schema<Array<S extends $Schema<infer T> ? T : never>>}
301
+ */
302
+ class $Array extends $Schema {
303
+ /**
304
+ * @param {Array<S>} v
305
+ */
306
+ constructor (v) {
307
+ super();
308
+ /**
309
+ * @type {$Schema<S extends $Schema<infer T> ? T : never>}
310
+ */
311
+ this.v = v.length === 1 ? v[0] : new $Union(v);
312
+ }
313
+
314
+ /**
315
+ * @param {any} o
316
+ * @return {o is Array<S extends $Schema<infer T> ? T : never>} o
317
+ */
318
+ check (o) {
319
+ return array$1.isArray(o) && array$1.every(o, oi => this.v.check(oi))
320
+ }
321
+ }
322
+
323
+ /**
324
+ * @template {Array<$Schema<any>>} T
325
+ * @param {T} def
326
+ * @return {$Schema<Array<T extends Array<$Schema<infer S>> ? S : never>>}
327
+ */
328
+ const array = (...def) => new $Array(def);
329
+
330
+ /**
331
+ * @template T
332
+ * @extends {$Schema<T>}
333
+ */
334
+ class $InstanceOf extends $Schema {
335
+ /**
336
+ * @param {new (...args:any) => T} constructor
337
+ */
338
+ constructor (constructor) {
339
+ super();
340
+ this.v = constructor;
341
+ }
342
+
343
+ /**
344
+ * @param {any} o
345
+ * @return {o is T}
346
+ */
347
+ check (o) {
348
+ return o instanceof this.v
349
+ }
350
+ }
351
+
352
+ /**
353
+ * @template T
354
+ * @param {new (...args:any) => T} c
355
+ * @return {$Schema<T>}
356
+ */
357
+ const instance = c => new $InstanceOf(c);
358
+
359
+ /**
360
+ * @template {$Schema<any>[]} Args
361
+ * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef
362
+ */
363
+
364
+ /**
365
+ * @template {Array<$Schema<any>>} Args
366
+ * @extends {$Schema<_LArgsToLambdaDef<Args>>}
367
+ */
368
+ class $Lambda extends $Schema {
369
+ /**
370
+ * @param {Args} args
371
+ */
372
+ constructor (args) {
373
+ super();
374
+ this.len = args.length - 1;
375
+ this.args = tuple(...args.slice(-1));
376
+ this.res = args[this.len];
377
+ }
378
+
379
+ /**
380
+ * @param {any} f
381
+ * @return {f is _LArgsToLambdaDef<Args>}
382
+ */
383
+ check (f) {
384
+ return f.constructor === Function && f.length <= this.len
385
+ }
386
+ }
387
+
388
+ /**
389
+ * @template {$Schema<any>[]} Args
390
+ * @param {Args} args
391
+ * @return {$Schema<(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>>}
392
+ */
393
+ const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_]);
394
+
395
+ /**
396
+ * @template {Array<$Schema<any>>} T
397
+ * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}
398
+ */
399
+ class $Intersection extends $Schema {
400
+ /**
401
+ * @param {T} v
402
+ */
403
+ constructor (v) {
404
+ super();
405
+ /**
406
+ * @type {T}
407
+ */
408
+ this.v = v;
409
+ }
410
+
411
+ /**
412
+ * @param {any} o
413
+ * @return {o is Intersect<ExtractTypesFromSchemaArray<T>>}
414
+ */
415
+ check (o) {
416
+ // @ts-ignore
417
+ return array$1.every(this.v, check => check.check(o))
418
+ }
419
+ }
420
+
421
+ /**
422
+ * @template {$Schema<any>[]} T
423
+ * @param {T} def
424
+ * @return {CastToSchema<$Intersection<T>>}
425
+ */
426
+ const intersect = (...def) => new $Intersection(def);
427
+
428
+ /**
429
+ * @template S
430
+ * @extends {$Schema<S>}
431
+ */
432
+ class $Union extends $Schema {
433
+ /**
434
+ * @param {Array<$Schema<S>>} v
435
+ */
436
+ constructor (v) {
437
+ super();
438
+ this.v = v;
439
+ }
440
+
441
+ /**
442
+ * @param {any} o
443
+ * @return {o is S}
444
+ */
445
+ check (o) {
446
+ return array$1.some(this.v, (vv) => vv.check(o))
447
+ }
448
+
449
+ static schema = constructedBy($Union)
450
+ }
451
+
452
+ /**
453
+ * @template {Array<$Schema<any>>} T
454
+ * @param {T} def
455
+ * @return {CastToSchema<$Union<T extends Array<$Schema<infer S>> ? S : never>>}
456
+ */
457
+ const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def);
458
+
459
+ /**
460
+ * @type {$Schema<any>}
461
+ */
462
+ const any = intersect();
463
+
464
+ /**
465
+ * @type {$Schema<bigint>}
466
+ */
467
+ const bigint = constructedBy(BigInt);
468
+
469
+ /**
470
+ * @type {$Schema<Symbol>}
471
+ */
472
+ const symbol = constructedBy(Symbol);
473
+
474
+ /**
475
+ * @type {$Schema<number>}
476
+ */
477
+ const number = constructedBy(Number);
478
+
479
+ /**
480
+ * @type {$Schema<string>}
481
+ */
482
+ const string = constructedBy(String);
483
+
484
+ /**
485
+ * @type {$Schema<undefined>}
486
+ */
487
+ const undefined_ = literal(undefined);
488
+
489
+ /**
490
+ * @type {$Schema<void>}
491
+ */
492
+ const void_ = undefined_;
493
+
494
+ /**
495
+ * @type {$Schema<null>}
496
+ */
497
+ const null_ = literal(null);
498
+
499
+ /* c8 ignore start */
500
+ /**
501
+ * Assert that a variable is of this specific type.
502
+ * The assertion check is only performed in non-production environments.
503
+ *
504
+ * @type {<T>(o:any,schema:$Schema<T>) => asserts o is T}
505
+ */
506
+ const assert = environment.production
507
+ ? () => {}
508
+ : (o, schema) => {
509
+ if (!schema.check(o)) {
510
+ throw error.create(`Expected value to be of type ${schema.constructor.name}.`)
511
+ }
512
+ };
513
+ /* c8 ignore end */
514
+
515
+ exports.$Array = $Array;
516
+ exports.$ConstructedBy = $ConstructedBy;
517
+ exports.$InstanceOf = $InstanceOf;
518
+ exports.$Intersection = $Intersection;
519
+ exports.$Lambda = $Lambda;
520
+ exports.$Literal = $Literal;
521
+ exports.$Object = $Object;
522
+ exports.$Record = $Record;
523
+ exports.$Schema = $Schema;
524
+ exports.$Tuple = $Tuple;
525
+ exports.$Union = $Union;
526
+ exports.any = any;
527
+ exports.array = array;
528
+ exports.assert = assert;
529
+ exports.bigint = bigint;
530
+ exports.constructedBy = constructedBy;
531
+ exports.instance = instance;
532
+ exports.intersect = intersect;
533
+ exports.lambda = lambda;
534
+ exports.literal = literal;
535
+ exports["null"] = null_;
536
+ exports.number = number;
537
+ exports.object = object;
538
+ exports.record = record;
539
+ exports.string = string;
540
+ exports.symbol = symbol;
541
+ exports.tuple = tuple;
542
+ exports["undefined"] = undefined_;
543
+ exports.union = union;
544
+ exports["void"] = void_;
545
+ //# sourceMappingURL=schema.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.cjs","sources":["../schema.js"],"sourcesContent":["/**\n * @experimental WIP\n *\n * Simple & efficient schemas for your data.\n */\n\nimport * as obj from './object.js'\nimport * as arr from './array.js'\nimport * as error from './error.js'\nimport * as env from './environment.js'\n\n/**\n * @typedef {string|number|bigint|boolean|null|undefined} LiteralType\n */\n\n/**\n * @typedef {{ [k:string|number|symbol]: any }} AnyObject\n */\n\n/**\n * @template T\n * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends []\n * ? {}\n * : T extends [infer First]\n * ? First\n * : T extends [infer First, ...infer Rest]\n * ? First & Intersect<Rest>\n * : never\n * } Intersect\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray\n */\n\n/**\n * @template T\n * @typedef {T extends $Schema<infer S> ? $Schema<S> : never} CastToSchema\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...unknown[], infer L] ? L : never} TupleLast\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop\n */\n\nconst schemaSymbol = Symbol('0schema')\n\n/**\n * @template T\n */\nexport class $Schema {\n get [schemaSymbol] () { return true }\n /**\n * Use `schema.validate(obj)` with a typed parameter that is already of typed to be an instance of\n * Schema. Validate will check the structure of the parameter and return true iff the instance\n * really is an instance of Schema.\n *\n * @param {T} o\n * @return {boolean}\n */\n validate (o) {\n return this.check(o)\n }\n\n /* c8 ignore start */\n /**\n * Similar to validate, but this method accepts untyped parameters.\n *\n * @param {any} _o\n * @return {_o is T}\n */\n check (_o) {\n error.methodUnimplemented()\n }\n /* c8 ignore stop */\n\n /**\n * @type {$Schema<T?>}\n */\n get nullable () {\n return union(this, null_)\n }\n\n /**\n * @type {$Schema<T|undefined>}\n */\n get optional () {\n return union(this, undefined_)\n }\n\n /**\n * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check only if not in a production environment.\n *\n * @param {any} o\n * @return {o extends T ? T : never}\n */\n cast (o) {\n assert(o, this)\n return o\n }\n\n /**\n * Ensures that a variable is a a specific type. Returns the value, or throws an exception if the assertion check failed.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * Can be useful when defining lambdas: `s.lambda(s.$number, s.$void).ensure((n) => n + 1)`\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check if not in a production environment.\n *\n * @param {T} o\n * @return {o extends T ? T : never}\n */\n ensure (o) {\n assert(o, this)\n return o\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @extends {$Schema<C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)>}\n */\nexport class $ConstructedBy extends $Schema {\n /**\n * @param {C} c\n */\n constructor (c) {\n super()\n this.v = c\n }\n\n /**\n * @param {any} o\n * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o\n */\n check (o) {\n return o?.constructor === this.v\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @param {C} c\n * @return {CastToSchema<$ConstructedBy<C>>}\n */\nexport const constructedBy = c => new $ConstructedBy(c)\n\n/**\n * @template {LiteralType} T\n * @extends {$Schema<T>}\n */\nexport class $Literal extends $Schema {\n /**\n * @param {Array<T>} literals\n */\n constructor (literals) {\n super()\n this.v = literals\n }\n\n /**\n * @param {any} o\n * @return {o is T}\n */\n check (o) {\n return this.v.some(a => a === o)\n }\n}\n\n/**\n * @template {LiteralType[]} T\n * @param {T} literals\n * @return {CastToSchema<$Literal<T[number]>>}\n */\nexport const literal = (...literals) => new $Literal(literals)\n\n/**\n * @template {{[key:string|symbol|number]: $Schema<any>}} S\n * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}\n */\nexport class $Object extends $Schema {\n /**\n * @param {S} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}\n */\n check (o) {\n return o != null && obj.every(this.v, (vv, vk) => vv.check(o[vk]))\n }\n}\n\n/**\n * @template {{ [key:string|symbol|number]: $Schema<any> }} T\n * @param {T} def\n * @return {CastToSchema<$Object<T>>}\n */\nexport const object = def => new $Object(def)\n\n/**\n * @template {$Schema<string|number|symbol>} Keys\n * @template {$Schema<any>} Values\n * @extends {$Schema<Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>>}\n */\nexport class $Record extends $Schema {\n /**\n * @param {Keys} keys\n * @param {Values} values\n */\n constructor (keys, values) {\n super()\n this.keys = keys\n this.values = values\n }\n\n /**\n * @param {any} o\n * @return {o is Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>}\n */\n check (o) {\n return o != null && obj.every(o, (vv, vk) => this.keys.check(vk) && this.values.check(vv))\n }\n}\n\n/**\n * @template {$Schema<string|number|symbol>} Keys\n * @template {$Schema<any>} Values\n * @param {Keys} keys\n * @param {Values} values\n * @return {CastToSchema<$Record<Keys,Values>>}\n */\nexport const record = (keys, values) => new $Record(keys, values)\n\n/**\n * @template {$Schema<any>[]} S\n * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}\n */\nexport class $Tuple extends $Schema {\n /**\n * @param {S} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}\n */\n check (o) {\n return o != null && obj.every(this.v, (vv, vk) => /** @type {$Schema<any>} */ (vv).check(o[vk]))\n }\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Tuple<T>>}\n */\nexport const tuple = (...def) => new $Tuple(def)\n\n/**\n * @template {$Schema<any>} S\n * @extends {$Schema<Array<S extends $Schema<infer T> ? T : never>>}\n */\nexport class $Array extends $Schema {\n /**\n * @param {Array<S>} v\n */\n constructor (v) {\n super()\n /**\n * @type {$Schema<S extends $Schema<infer T> ? T : never>}\n */\n this.v = v.length === 1 ? v[0] : new $Union(v)\n }\n\n /**\n * @param {any} o\n * @return {o is Array<S extends $Schema<infer T> ? T : never>} o\n */\n check (o) {\n return arr.isArray(o) && arr.every(o, oi => this.v.check(oi))\n }\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {$Schema<Array<T extends Array<$Schema<infer S>> ? S : never>>}\n */\nexport const array = (...def) => new $Array(def)\n\n/**\n * @template T\n * @extends {$Schema<T>}\n */\nexport class $InstanceOf extends $Schema {\n /**\n * @param {new (...args:any) => T} constructor\n */\n constructor (constructor) {\n super()\n this.v = constructor\n }\n\n /**\n * @param {any} o\n * @return {o is T}\n */\n check (o) {\n return o instanceof this.v\n }\n}\n\n/**\n * @template T\n * @param {new (...args:any) => T} c\n * @return {$Schema<T>}\n */\nexport const instance = c => new $InstanceOf(c)\n\n/**\n * @template {$Schema<any>[]} Args\n * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef\n */\n\n/**\n * @template {Array<$Schema<any>>} Args\n * @extends {$Schema<_LArgsToLambdaDef<Args>>}\n */\nexport class $Lambda extends $Schema {\n /**\n * @param {Args} args\n */\n constructor (args) {\n super()\n this.len = args.length - 1\n this.args = tuple(...args.slice(-1))\n this.res = args[this.len]\n }\n\n /**\n * @param {any} f\n * @return {f is _LArgsToLambdaDef<Args>}\n */\n check (f) {\n return f.constructor === Function && f.length <= this.len\n }\n}\n\n/**\n * @template {$Schema<any>[]} Args\n * @param {Args} args\n * @return {$Schema<(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>>}\n */\nexport const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_])\n\n/**\n * @template {Array<$Schema<any>>} T\n * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}\n */\nexport class $Intersection extends $Schema {\n /**\n * @param {T} v\n */\n constructor (v) {\n super()\n /**\n * @type {T}\n */\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is Intersect<ExtractTypesFromSchemaArray<T>>}\n */\n check (o) {\n // @ts-ignore\n return arr.every(this.v, check => check.check(o))\n }\n}\n\n/**\n * @template {$Schema<any>[]} T\n * @param {T} def\n * @return {CastToSchema<$Intersection<T>>}\n */\nexport const intersect = (...def) => new $Intersection(def)\n\n/**\n * @template S\n * @extends {$Schema<S>}\n */\nexport class $Union extends $Schema {\n /**\n * @param {Array<$Schema<S>>} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is S}\n */\n check (o) {\n return arr.some(this.v, (vv) => vv.check(o))\n }\n\n static schema = constructedBy($Union)\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Union<T extends Array<$Schema<infer S>> ? S : never>>}\n */\nexport const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def)\n\n/**\n * @type {$Schema<any>}\n */\nexport const any = intersect()\n\n/**\n * @type {$Schema<bigint>}\n */\nexport const bigint = constructedBy(BigInt)\n\n/**\n * @type {$Schema<Symbol>}\n */\nexport const symbol = constructedBy(Symbol)\n\n/**\n * @type {$Schema<number>}\n */\nexport const number = constructedBy(Number)\n\n/**\n * @type {$Schema<string>}\n */\nexport const string = constructedBy(String)\n\n/**\n * @type {$Schema<undefined>}\n */\nconst undefined_ = literal(undefined)\n\n/**\n * @type {$Schema<void>}\n */\nconst void_ = undefined_\n\n/**\n * @type {$Schema<null>}\n */\nconst null_ = literal(null)\n\nexport { null_ as null, void_ as void, undefined_ as undefined }\n\n/* c8 ignore start */\n/**\n * Assert that a variable is of this specific type.\n * The assertion check is only performed in non-production environments.\n *\n * @type {<T>(o:any,schema:$Schema<T>) => asserts o is T}\n */\nexport const assert = env.production\n ? () => {}\n : (o, schema) => {\n if (!schema.check(o)) {\n throw error.create(`Expected value to be of type ${schema.constructor.name}.`)\n }\n }\n/* c8 ignore end */\n"],"names":["error.methodUnimplemented","obj.every","arr.isArray","arr.every","arr.some","env.production","error.create"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAC;AACtC;AACA;AACA;AACA;AACO,MAAM,OAAO,CAAC;AACrB,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE;AACb,IAAIA,yBAAyB,GAAE;AAC/B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAClC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AACX,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAC;AACnB,IAAI,OAAO,CAAC;AACZ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAC;AACnB,IAAI,OAAO,CAAC;AACZ,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"}