decoders 2.2.0-test → 2.2.0-test2

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 (43) hide show
  1. package/{dist/chunk-Q3YXBCTD.cjs → chunk-BPSZE2VX.js} +1 -1
  2. package/{dist/chunk-2C72BP5L.cjs → chunk-RUMDX66L.js} +1 -1
  3. package/dist/annotate-0PUmWHxH.d.mts +33 -0
  4. package/dist/chunk-BPSZE2VX.js +5 -5
  5. package/dist/chunk-BPSZE2VX.js.map +1 -1
  6. package/dist/chunk-HBFFQIIN.mjs +13 -0
  7. package/dist/chunk-HBFFQIIN.mjs.map +1 -0
  8. package/dist/chunk-RUMDX66L.js +13 -13
  9. package/dist/chunk-RUMDX66L.js.map +1 -1
  10. package/dist/chunk-ZTKFAKRL.mjs +179 -0
  11. package/dist/chunk-ZTKFAKRL.mjs.map +1 -0
  12. package/dist/{format.d.cts → format.d.mts} +1 -1
  13. package/dist/format.js +12 -12
  14. package/dist/format.js.map +1 -1
  15. package/dist/format.mjs +13 -0
  16. package/dist/format.mjs.map +1 -0
  17. package/dist/{index.d.cts → index.d.mts} +2 -2
  18. package/dist/index.js +82 -82
  19. package/dist/index.js.map +1 -1
  20. package/dist/index.mjs +659 -0
  21. package/dist/index.mjs.map +1 -0
  22. package/dist/result.js +8 -8
  23. package/dist/result.js.map +1 -1
  24. package/dist/result.mjs +9 -0
  25. package/dist/result.mjs.map +1 -0
  26. package/format.d.ts +9 -0
  27. package/format.js +13 -0
  28. package/index.d.ts +454 -0
  29. package/{dist/index.cjs → index.js} +18 -18
  30. package/package.json +23 -23
  31. package/result.d.ts +26 -0
  32. package/result.js +9 -0
  33. package/dist/chunk-2C72BP5L.cjs.map +0 -1
  34. package/dist/chunk-Q3YXBCTD.cjs.map +0 -1
  35. package/dist/format.cjs +0 -13
  36. package/dist/format.cjs.map +0 -1
  37. package/dist/index.cjs.map +0 -1
  38. package/dist/result.cjs +0 -9
  39. package/dist/result.cjs.map +0 -1
  40. package/format.cjs +0 -13
  41. package/result.cjs +0 -9
  42. /package/{dist/annotate-0PUmWHxH.d.cts → annotate-0PUmWHxH.d.ts} +0 -0
  43. /package/dist/{result.d.cts → result.d.mts} +0 -0
package/dist/index.mjs ADDED
@@ -0,0 +1,659 @@
1
+ import {
2
+ asDate,
3
+ formatInline,
4
+ indent,
5
+ isPojo,
6
+ lazyval,
7
+ subtract,
8
+ summarize
9
+ } from "./chunk-ZTKFAKRL.mjs";
10
+ import {
11
+ err,
12
+ ok
13
+ } from "./chunk-HBFFQIIN.mjs";
14
+
15
+ // src/annotate.ts
16
+ var _register = /* @__PURE__ */ new WeakSet();
17
+ function brand(ann) {
18
+ _register.add(ann);
19
+ return ann;
20
+ }
21
+ function object(fields, text) {
22
+ return brand({ type: "object", fields, text });
23
+ }
24
+ function array(items, text) {
25
+ return brand({
26
+ type: "array",
27
+ items,
28
+ text
29
+ });
30
+ }
31
+ function func(text) {
32
+ return brand({
33
+ type: "function",
34
+ text
35
+ });
36
+ }
37
+ function unknown(value, text) {
38
+ return brand({
39
+ type: "unknown",
40
+ value,
41
+ text
42
+ });
43
+ }
44
+ function scalar(value, text) {
45
+ return brand({
46
+ type: "scalar",
47
+ value,
48
+ text
49
+ });
50
+ }
51
+ function circularRef(text) {
52
+ return brand({
53
+ type: "circular-ref",
54
+ text
55
+ });
56
+ }
57
+ function updateText(annotation, text) {
58
+ if (text !== void 0) {
59
+ return brand({ ...annotation, text });
60
+ } else {
61
+ return annotation;
62
+ }
63
+ }
64
+ function merge(objAnnotation, fields) {
65
+ const newFields = { ...objAnnotation.fields, ...fields };
66
+ return object(newFields, objAnnotation.text);
67
+ }
68
+ function asAnnotation(thing) {
69
+ return typeof thing === "object" && thing !== null && _register.has(thing) ? thing : void 0;
70
+ }
71
+ function annotateArray(value, text, seen) {
72
+ seen.add(value);
73
+ const items = value.map((v) => annotate(v, void 0, seen));
74
+ return array(items, text);
75
+ }
76
+ function annotateObject(obj, text, seen) {
77
+ seen.add(obj);
78
+ const fields = {};
79
+ for (const key of Object.keys(obj)) {
80
+ const value = obj[key];
81
+ fields[key] = annotate(value, void 0, seen);
82
+ }
83
+ return object(fields, text);
84
+ }
85
+ function annotate(value, text, seen) {
86
+ if (value === null || value === void 0 || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "symbol" || typeof value.getMonth === "function") {
87
+ return scalar(value, text);
88
+ }
89
+ const ann = asAnnotation(value);
90
+ if (ann) {
91
+ return updateText(ann, text);
92
+ }
93
+ if (Array.isArray(value)) {
94
+ if (seen.has(value)) {
95
+ return circularRef(text);
96
+ } else {
97
+ return annotateArray(value, text, seen);
98
+ }
99
+ }
100
+ if (isPojo(value)) {
101
+ if (seen.has(value)) {
102
+ return circularRef(text);
103
+ } else {
104
+ return annotateObject(value, text, seen);
105
+ }
106
+ }
107
+ if (typeof value === "function") {
108
+ return func(text);
109
+ }
110
+ return unknown(value, text);
111
+ }
112
+ function public_annotate(value, text) {
113
+ return annotate(value, text, /* @__PURE__ */ new WeakSet());
114
+ }
115
+ function public_annotateObject(obj, text) {
116
+ return annotateObject(obj, text, /* @__PURE__ */ new WeakSet());
117
+ }
118
+
119
+ // src/Decoder.ts
120
+ function noThrow(fn) {
121
+ return (t) => {
122
+ try {
123
+ const v = fn(t);
124
+ return ok(v);
125
+ } catch (e) {
126
+ return err(public_annotate(t, e instanceof Error ? e.message : String(e)));
127
+ }
128
+ };
129
+ }
130
+ function format(err2, formatter) {
131
+ const formatted = formatter(err2);
132
+ if (typeof formatted === "string") {
133
+ const err3 = new Error(`
134
+ ${formatted}`);
135
+ err3.name = "Decoding error";
136
+ return err3;
137
+ } else {
138
+ return formatted;
139
+ }
140
+ }
141
+ function define(fn) {
142
+ function decode(blob) {
143
+ return fn(
144
+ blob,
145
+ ok,
146
+ (msg) => err(typeof msg === "string" ? public_annotate(blob, msg) : msg)
147
+ );
148
+ }
149
+ function verify(blob, formatter = formatInline) {
150
+ const result = decode(blob);
151
+ if (result.ok) {
152
+ return result.value;
153
+ } else {
154
+ throw format(result.error, formatter);
155
+ }
156
+ }
157
+ function value(blob) {
158
+ return decode(blob).value;
159
+ }
160
+ function transform(transformFn) {
161
+ return then(noThrow(transformFn));
162
+ }
163
+ function refine(predicateFn, errmsg) {
164
+ return reject(
165
+ (value2) => predicateFn(value2) ? (
166
+ // Don't reject
167
+ null
168
+ ) : (
169
+ // Reject with the given error message
170
+ errmsg
171
+ )
172
+ );
173
+ }
174
+ function then(next) {
175
+ return define((blob, ok2, err2) => {
176
+ const result = decode(blob);
177
+ return result.ok ? next(result.value, ok2, err2) : result;
178
+ });
179
+ }
180
+ function reject(rejectFn) {
181
+ return then((value2, ok2, err2) => {
182
+ const errmsg = rejectFn(value2);
183
+ return errmsg === null ? ok2(value2) : err2(typeof errmsg === "string" ? public_annotate(value2, errmsg) : errmsg);
184
+ });
185
+ }
186
+ function describe(message) {
187
+ return define((blob, _, err2) => {
188
+ const result = decode(blob);
189
+ if (result.ok) {
190
+ return result;
191
+ } else {
192
+ return err2(public_annotate(result.error, message));
193
+ }
194
+ });
195
+ }
196
+ function peek_UNSTABLE(next) {
197
+ return define((blob, ok2, err2) => {
198
+ const result = decode(blob);
199
+ return result.ok ? next([blob, result.value], ok2, err2) : result;
200
+ });
201
+ }
202
+ return Object.freeze({
203
+ verify,
204
+ value,
205
+ decode,
206
+ transform,
207
+ refine,
208
+ reject,
209
+ describe,
210
+ then,
211
+ // EXPERIMENTAL - please DO NOT rely on this method
212
+ peek_UNSTABLE
213
+ });
214
+ }
215
+
216
+ // src/lib/objects.ts
217
+ var pojo = define(
218
+ (blob, ok2, err2) => isPojo(blob) ? ok2(blob) : err2("Must be an object")
219
+ );
220
+ function object2(decodersByKey) {
221
+ const knownKeys = new Set(Object.keys(decodersByKey));
222
+ return pojo.then((plainObj, ok2, err2) => {
223
+ const actualKeys = new Set(Object.keys(plainObj));
224
+ const missingKeys = subtract(knownKeys, actualKeys);
225
+ const record = {};
226
+ let errors = null;
227
+ for (const key of Object.keys(decodersByKey)) {
228
+ const decoder = decodersByKey[key];
229
+ const rawValue = plainObj[key];
230
+ const result = decoder.decode(rawValue);
231
+ if (result.ok) {
232
+ const value = result.value;
233
+ if (value !== void 0) {
234
+ record[key] = value;
235
+ }
236
+ missingKeys.delete(key);
237
+ } else {
238
+ const ann = result.error;
239
+ if (rawValue === void 0) {
240
+ missingKeys.add(key);
241
+ } else {
242
+ if (errors === null) {
243
+ errors = {};
244
+ }
245
+ errors[key] = ann;
246
+ }
247
+ }
248
+ }
249
+ if (errors || missingKeys.size > 0) {
250
+ let objAnn = public_annotateObject(plainObj);
251
+ if (errors) {
252
+ objAnn = merge(objAnn, errors);
253
+ }
254
+ if (missingKeys.size > 0) {
255
+ const errMsg = Array.from(missingKeys).map((key) => `"${key}"`).join(", ");
256
+ const pluralized = missingKeys.size > 1 ? "keys" : "key";
257
+ objAnn = updateText(objAnn, `Missing ${pluralized}: ${errMsg}`);
258
+ }
259
+ return err2(objAnn);
260
+ }
261
+ return ok2(record);
262
+ });
263
+ }
264
+ function exact(decodersByKey) {
265
+ const allowedKeys = new Set(Object.keys(decodersByKey));
266
+ const checked = pojo.reject((plainObj) => {
267
+ const actualKeys = new Set(Object.keys(plainObj));
268
+ const extraKeys = subtract(actualKeys, allowedKeys);
269
+ return extraKeys.size > 0 ? `Unexpected extra keys: ${Array.from(extraKeys).join(", ")}` : (
270
+ // Don't reject
271
+ null
272
+ );
273
+ });
274
+ return checked.then(object2(decodersByKey).decode);
275
+ }
276
+ function inexact(decodersByKey) {
277
+ return pojo.then((plainObj) => {
278
+ const allkeys = new Set(Object.keys(plainObj));
279
+ const decoder = object2(decodersByKey).transform((safepart) => {
280
+ const safekeys = new Set(Object.keys(decodersByKey));
281
+ for (const k of safekeys)
282
+ allkeys.add(k);
283
+ const rv = {};
284
+ for (const k of allkeys) {
285
+ if (safekeys.has(k)) {
286
+ const value = safepart[k];
287
+ if (value !== void 0) {
288
+ rv[k] = value;
289
+ }
290
+ } else {
291
+ rv[k] = plainObj[k];
292
+ }
293
+ }
294
+ return rv;
295
+ });
296
+ return decoder.decode(plainObj);
297
+ });
298
+ }
299
+ function dict(decoder) {
300
+ return pojo.then((plainObj, ok2, err2) => {
301
+ let rv = {};
302
+ let errors = null;
303
+ for (const key of Object.keys(plainObj)) {
304
+ const value = plainObj[key];
305
+ const result = decoder.decode(value);
306
+ if (result.ok) {
307
+ if (errors === null) {
308
+ rv[key] = result.value;
309
+ }
310
+ } else {
311
+ rv = {};
312
+ if (errors === null) {
313
+ errors = {};
314
+ }
315
+ errors[key] = result.error;
316
+ }
317
+ }
318
+ if (errors !== null) {
319
+ return err2(merge(public_annotateObject(plainObj), errors));
320
+ } else {
321
+ return ok2(rv);
322
+ }
323
+ });
324
+ }
325
+ function mapping(decoder) {
326
+ return dict(decoder).transform(
327
+ (obj) => new Map(
328
+ // This is effectively Object.entries(obj), but in a way that Flow
329
+ // will know the types are okay
330
+ Object.keys(obj).map((key) => [key, obj[key]])
331
+ )
332
+ );
333
+ }
334
+
335
+ // src/lib/utilities.ts
336
+ function instanceOf(klass) {
337
+ return define(
338
+ (blob, ok2, err2) => blob instanceof klass ? ok2(blob) : err2(`Must be ${klass.name} instance`)
339
+ );
340
+ }
341
+ function lazy(decoderFn) {
342
+ return define((blob) => decoderFn().decode(blob));
343
+ }
344
+ function prep(mapperFn, decoder) {
345
+ return define((originalInput, _, err2) => {
346
+ let blob;
347
+ try {
348
+ blob = mapperFn(originalInput);
349
+ } catch (e) {
350
+ return err2(
351
+ public_annotate(
352
+ originalInput,
353
+ // istanbul ignore next
354
+ e instanceof Error ? e.message : String(e)
355
+ )
356
+ );
357
+ }
358
+ const r = decoder.decode(blob);
359
+ return r.ok ? r : err2(public_annotate(originalInput, r.error.text));
360
+ });
361
+ }
362
+ function never(msg) {
363
+ return define((_, __, err2) => err2(msg));
364
+ }
365
+ var fail = never;
366
+
367
+ // src/lib/unions.ts
368
+ var EITHER_PREFIX = "Either:\n";
369
+ function itemize(s) {
370
+ return `-${indent(s).substring(1)}`;
371
+ }
372
+ function nest(errText) {
373
+ return errText.startsWith(EITHER_PREFIX) ? errText.substr(EITHER_PREFIX.length) : itemize(errText);
374
+ }
375
+ function either(...decoders) {
376
+ if (decoders.length === 0) {
377
+ throw new Error("Pass at least one decoder to either()");
378
+ }
379
+ return define((blob, _, err2) => {
380
+ const errors = [];
381
+ for (let i = 0; i < decoders.length; i++) {
382
+ const result = decoders[i].decode(blob);
383
+ if (result.ok) {
384
+ return result;
385
+ } else {
386
+ errors.push(result.error);
387
+ }
388
+ }
389
+ const text = EITHER_PREFIX + errors.map((err3) => nest(summarize(err3).join("\n"))).join("\n");
390
+ return err2(text);
391
+ });
392
+ }
393
+ function oneOf(constants) {
394
+ return define((blob, ok2, err2) => {
395
+ const winner = constants.find((c) => c === blob);
396
+ if (winner !== void 0) {
397
+ return ok2(winner);
398
+ }
399
+ return err2(
400
+ `Must be one of ${constants.map((value) => JSON.stringify(value)).join(", ")}`
401
+ );
402
+ });
403
+ }
404
+ function taggedUnion(field, mapping2) {
405
+ const base = object2({
406
+ [field]: prep(String, oneOf(Object.keys(mapping2)))
407
+ }).transform((o) => o[field]);
408
+ return base.peek_UNSTABLE(([blob, key]) => {
409
+ const decoder = mapping2[key];
410
+ return decoder.decode(blob);
411
+ });
412
+ }
413
+
414
+ // src/lib/basics.ts
415
+ var null_ = define(
416
+ (blob, ok2, err2) => blob === null ? ok2(blob) : err2("Must be null")
417
+ );
418
+ var undefined_ = define(
419
+ (blob, ok2, err2) => blob === void 0 ? ok2(blob) : err2("Must be undefined")
420
+ );
421
+ var undefined_or_null = define(
422
+ (blob, ok2, err2) => blob === void 0 || blob === null ? ok2(blob) : (
423
+ // Combine error message into a single line for readability
424
+ err2("Must be undefined or null")
425
+ )
426
+ );
427
+ function optional(decoder, defaultValue) {
428
+ const rv = either(undefined_, decoder);
429
+ return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;
430
+ }
431
+ function nullable(decoder, defaultValue) {
432
+ const rv = either(null_, decoder);
433
+ return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;
434
+ }
435
+ function maybe(decoder, defaultValue) {
436
+ const rv = either(undefined_or_null, decoder);
437
+ return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;
438
+ }
439
+ function constant(value) {
440
+ return define(
441
+ (blob, ok2, err2) => blob === value ? ok2(value) : err2(`Must be constant ${String(value)}`)
442
+ );
443
+ }
444
+ function always(value) {
445
+ return define(
446
+ typeof value === "function" ? (_, ok2) => ok2(value()) : (_, ok2) => ok2(value)
447
+ );
448
+ }
449
+ var hardcoded = always;
450
+ var unknown2 = define((blob, ok2, _) => ok2(blob));
451
+ var mixed = unknown2;
452
+
453
+ // src/lib/arrays.ts
454
+ var poja = define((blob, ok2, err2) => {
455
+ if (!Array.isArray(blob)) {
456
+ return err2("Must be an array");
457
+ }
458
+ return ok2(blob);
459
+ });
460
+ function all(items, blobs, ok2, err2) {
461
+ const results = [];
462
+ for (let index = 0; index < items.length; ++index) {
463
+ const result = items[index];
464
+ if (result.ok) {
465
+ results.push(result.value);
466
+ } else {
467
+ const ann = result.error;
468
+ const clone = blobs.slice();
469
+ clone.splice(
470
+ index,
471
+ 1,
472
+ public_annotate(ann, ann.text ? `${ann.text} (at index ${index})` : `index ${index}`)
473
+ );
474
+ return err2(public_annotate(clone));
475
+ }
476
+ }
477
+ return ok2(results);
478
+ }
479
+ function array2(decoder) {
480
+ const decodeFn = decoder.decode;
481
+ return poja.then((blobs, ok2, err2) => {
482
+ const results = blobs.map(decodeFn);
483
+ return all(results, blobs, ok2, err2);
484
+ });
485
+ }
486
+ function isNonEmpty(arr) {
487
+ return arr.length > 0;
488
+ }
489
+ function nonEmptyArray(decoder) {
490
+ return array2(decoder).refine(isNonEmpty, "Must be non-empty array");
491
+ }
492
+ function set(decoder) {
493
+ return array2(decoder).transform((items) => new Set(items));
494
+ }
495
+ var ntuple = (n) => poja.refine((arr) => arr.length === n, `Must be a ${n}-tuple`);
496
+ function tuple(...decoders) {
497
+ return ntuple(decoders.length).then((blobs, ok2, err2) => {
498
+ let allOk = true;
499
+ const rvs = decoders.map((decoder, i) => {
500
+ const blob = blobs[i];
501
+ const result = decoder.decode(blob);
502
+ if (result.ok) {
503
+ return result.value;
504
+ } else {
505
+ allOk = false;
506
+ return result.error;
507
+ }
508
+ });
509
+ if (allOk) {
510
+ return ok2(rvs);
511
+ } else {
512
+ return err2(public_annotate(rvs));
513
+ }
514
+ });
515
+ }
516
+
517
+ // src/lib/numbers.ts
518
+ var anyNumber = define(
519
+ (blob, ok2, err2) => typeof blob === "number" ? ok2(blob) : err2("Must be number")
520
+ );
521
+ var number = anyNumber.refine(
522
+ (n) => Number.isFinite(n),
523
+ "Number must be finite"
524
+ );
525
+ var integer = number.refine(
526
+ (n) => Number.isInteger(n),
527
+ "Number must be an integer"
528
+ );
529
+ var positiveNumber = number.refine((n) => n >= 0, "Number must be positive").transform(Math.abs);
530
+ var positiveInteger = integer.refine((n) => n >= 0, "Number must be positive").transform(Math.abs);
531
+
532
+ // src/lib/booleans.ts
533
+ var boolean = define((blob, ok2, err2) => {
534
+ return typeof blob === "boolean" ? ok2(blob) : err2("Must be boolean");
535
+ });
536
+ var truthy = define((blob, ok2, _) => ok2(!!blob));
537
+ var numericBoolean = number.transform((n) => !!n);
538
+
539
+ // src/lib/strings.ts
540
+ var url_re = /^([A-Za-z]{3,9}(?:[+][A-Za-z]{3,9})?):\/\/(?:([-;:&=+$,\w]+)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\/(?:[-+~%/.,\w]*)?(?:\?[-+=&;%@.,/\w]*)?(?:#[.,!/\w]*)?)?$/;
541
+ var string = define(
542
+ (blob, ok2, err2) => typeof blob === "string" ? ok2(blob) : err2("Must be string")
543
+ );
544
+ var nonEmptyString = regex(/\S/, "Must be non-empty string");
545
+ function regex(regex2, msg) {
546
+ return string.refine((s) => regex2.test(s), msg);
547
+ }
548
+ var email = regex(
549
+ // The almost perfect email regex, taken from https://emailregex.com/
550
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
551
+ "Must be email"
552
+ );
553
+ var url = either(
554
+ regex(url_re, "Must be URL").transform((value) => new URL(value)),
555
+ instanceOf(URL)
556
+ );
557
+ var httpsUrl = url.refine(
558
+ (value) => value.protocol === "https:",
559
+ "Must be an HTTPS URL"
560
+ );
561
+ var uuid = regex(
562
+ /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
563
+ "Must be uuid"
564
+ );
565
+ var uuidv1 = (
566
+ // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)
567
+ uuid.refine((value) => value[14] === "1", "Must be uuidv1")
568
+ );
569
+ var uuidv4 = (
570
+ // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)
571
+ uuid.refine((value) => value[14] === "4", "Must be uuidv4")
572
+ );
573
+
574
+ // src/lib/dates.ts
575
+ var iso8601_re = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:[.]\d+)?(?:Z|[+-]\d{2}:?\d{2})$/;
576
+ var date = define((blob, ok2, err2) => {
577
+ const date2 = asDate(blob);
578
+ return date2 !== null ? ok2(date2) : err2("Must be a Date");
579
+ });
580
+ var iso8601 = (
581
+ // Input itself needs to match the ISO8601 regex...
582
+ regex(iso8601_re, "Must be ISO8601 format").transform(
583
+ // Make sure it is a _valid_ date
584
+ (value) => {
585
+ const date2 = new Date(value);
586
+ if (isNaN(date2.getTime())) {
587
+ throw new Error("Must be valid date/time value");
588
+ }
589
+ return date2;
590
+ }
591
+ )
592
+ );
593
+
594
+ // src/lib/json.ts
595
+ var jsonObject = lazy(() => dict(json));
596
+ var jsonArray = lazy(() => array2(json));
597
+ var json = either(
598
+ null_,
599
+ string,
600
+ number,
601
+ boolean,
602
+ jsonObject,
603
+ jsonArray
604
+ ).describe("Must be valid JSON value");
605
+ export {
606
+ always,
607
+ anyNumber,
608
+ array2 as array,
609
+ boolean,
610
+ constant,
611
+ date,
612
+ define,
613
+ dict,
614
+ either,
615
+ email,
616
+ exact,
617
+ fail,
618
+ hardcoded,
619
+ httpsUrl,
620
+ inexact,
621
+ instanceOf,
622
+ integer,
623
+ iso8601,
624
+ json,
625
+ jsonArray,
626
+ jsonObject,
627
+ lazy,
628
+ mapping,
629
+ maybe,
630
+ mixed,
631
+ never,
632
+ nonEmptyArray,
633
+ nonEmptyString,
634
+ null_,
635
+ nullable,
636
+ number,
637
+ numericBoolean,
638
+ object2 as object,
639
+ oneOf,
640
+ optional,
641
+ poja,
642
+ pojo,
643
+ positiveInteger,
644
+ positiveNumber,
645
+ prep,
646
+ regex,
647
+ set,
648
+ string,
649
+ taggedUnion,
650
+ truthy,
651
+ tuple,
652
+ undefined_,
653
+ unknown2 as unknown,
654
+ url,
655
+ uuid,
656
+ uuidv1,
657
+ uuidv4
658
+ };
659
+ //# sourceMappingURL=index.mjs.map