typeson-registry 5.0.0 → 7.0.0

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 (177) hide show
  1. package/README.md +2 -2
  2. package/dist/index.d.ts +42 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +382 -84
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.min.js +1 -1
  7. package/dist/index.min.js.map +1 -1
  8. package/dist/index.umd.js +789 -382
  9. package/dist/index.umd.js.map +1 -1
  10. package/dist/index.umd.min.js +1 -1
  11. package/dist/index.umd.min.js.map +1 -1
  12. package/dist/polyfills/createObjectURL.d.ts +25 -0
  13. package/dist/polyfills/createObjectURL.d.ts.map +1 -0
  14. package/dist/polyfills/createObjectURL.umd.d.ts +84 -0
  15. package/dist/polyfills/createObjectURL.umd.d.ts.map +1 -0
  16. package/dist/presets/array-nonindex-keys.d.ts +6 -0
  17. package/dist/presets/array-nonindex-keys.d.ts.map +1 -0
  18. package/dist/presets/array-nonindex-keys.umd.js +1 -1
  19. package/dist/presets/array-nonindex-keys.umd.js.map +1 -1
  20. package/dist/presets/builtin.d.ts +6 -0
  21. package/dist/presets/builtin.d.ts.map +1 -0
  22. package/dist/presets/builtin.umd.js +1 -1
  23. package/dist/presets/builtin.umd.js.map +1 -1
  24. package/dist/presets/postmessage.d.ts +6 -0
  25. package/dist/presets/postmessage.d.ts.map +1 -0
  26. package/dist/presets/postmessage.umd.js +1 -1
  27. package/dist/presets/postmessage.umd.js.map +1 -1
  28. package/dist/presets/socketio.d.ts +6 -0
  29. package/dist/presets/socketio.d.ts.map +1 -0
  30. package/dist/presets/socketio.umd.js +1 -1
  31. package/dist/presets/socketio.umd.js.map +1 -1
  32. package/dist/presets/sparse-undefined.d.ts +6 -0
  33. package/dist/presets/sparse-undefined.d.ts.map +1 -0
  34. package/dist/presets/sparse-undefined.umd.js.map +1 -1
  35. package/dist/presets/special-numbers.d.ts +6 -0
  36. package/dist/presets/special-numbers.d.ts.map +1 -0
  37. package/dist/presets/special-numbers.umd.js +1 -1
  38. package/dist/presets/special-numbers.umd.js.map +1 -1
  39. package/dist/presets/structured-cloning-throwing.d.ts +6 -0
  40. package/dist/presets/structured-cloning-throwing.d.ts.map +1 -0
  41. package/dist/presets/structured-cloning-throwing.umd.js +1 -1
  42. package/dist/presets/structured-cloning-throwing.umd.js.map +1 -1
  43. package/dist/presets/structured-cloning.d.ts +6 -0
  44. package/dist/presets/structured-cloning.d.ts.map +1 -0
  45. package/dist/presets/structured-cloning.umd.js +1 -1
  46. package/dist/presets/structured-cloning.umd.js.map +1 -1
  47. package/dist/presets/undef.d.ts +6 -0
  48. package/dist/presets/undef.d.ts.map +1 -0
  49. package/dist/presets/undef.umd.js +1 -1
  50. package/dist/presets/undef.umd.js.map +1 -1
  51. package/dist/presets/universal.d.ts +6 -0
  52. package/dist/presets/universal.d.ts.map +1 -0
  53. package/dist/presets/universal.umd.js +1 -1
  54. package/dist/presets/universal.umd.js.map +1 -1
  55. package/dist/types/arraybuffer.d.ts +6 -0
  56. package/dist/types/arraybuffer.d.ts.map +1 -0
  57. package/dist/types/arraybuffer.umd.js +1 -1
  58. package/dist/types/arraybuffer.umd.js.map +1 -1
  59. package/dist/types/bigint-object.d.ts +6 -0
  60. package/dist/types/bigint-object.d.ts.map +1 -0
  61. package/dist/types/bigint-object.umd.js +1 -1
  62. package/dist/types/bigint-object.umd.js.map +1 -1
  63. package/dist/types/bigint.d.ts +6 -0
  64. package/dist/types/bigint.d.ts.map +1 -0
  65. package/dist/types/bigint.umd.js +1 -1
  66. package/dist/types/bigint.umd.js.map +1 -1
  67. package/dist/types/blob.d.ts +6 -0
  68. package/dist/types/blob.d.ts.map +1 -0
  69. package/dist/types/blob.umd.js +1 -1
  70. package/dist/types/blob.umd.js.map +1 -1
  71. package/dist/types/cloneable.d.ts +6 -0
  72. package/dist/types/cloneable.d.ts.map +1 -0
  73. package/dist/types/cloneable.umd.js.map +1 -1
  74. package/dist/types/cryptokey.d.ts +6 -0
  75. package/dist/types/cryptokey.d.ts.map +1 -0
  76. package/dist/types/cryptokey.umd.js +1 -1
  77. package/dist/types/cryptokey.umd.js.map +1 -1
  78. package/dist/types/dataview.d.ts +6 -0
  79. package/dist/types/dataview.d.ts.map +1 -0
  80. package/dist/types/dataview.umd.js +1 -1
  81. package/dist/types/dataview.umd.js.map +1 -1
  82. package/dist/types/date.d.ts +6 -0
  83. package/dist/types/date.d.ts.map +1 -0
  84. package/dist/types/date.umd.js +1 -1
  85. package/dist/types/date.umd.js.map +1 -1
  86. package/dist/types/error.d.ts +6 -0
  87. package/dist/types/error.d.ts.map +1 -0
  88. package/dist/types/error.umd.js +1 -1
  89. package/dist/types/error.umd.js.map +1 -1
  90. package/dist/types/errors.d.ts +13 -0
  91. package/dist/types/errors.d.ts.map +1 -0
  92. package/dist/types/errors.umd.js +1 -1
  93. package/dist/types/errors.umd.js.map +1 -1
  94. package/dist/types/file.d.ts +6 -0
  95. package/dist/types/file.d.ts.map +1 -0
  96. package/dist/types/file.umd.js +1 -1
  97. package/dist/types/file.umd.js.map +1 -1
  98. package/dist/types/filelist.d.ts +6 -0
  99. package/dist/types/filelist.d.ts.map +1 -0
  100. package/dist/types/filelist.umd.js +1 -1
  101. package/dist/types/filelist.umd.js.map +1 -1
  102. package/dist/types/imagebitmap.d.ts +6 -0
  103. package/dist/types/imagebitmap.d.ts.map +1 -0
  104. package/dist/types/imagebitmap.umd.js +1 -1
  105. package/dist/types/imagebitmap.umd.js.map +1 -1
  106. package/dist/types/imagedata.d.ts +6 -0
  107. package/dist/types/imagedata.d.ts.map +1 -0
  108. package/dist/types/imagedata.umd.js +1 -1
  109. package/dist/types/imagedata.umd.js.map +1 -1
  110. package/dist/types/infinity.d.ts +6 -0
  111. package/dist/types/infinity.d.ts.map +1 -0
  112. package/dist/types/infinity.umd.js.map +1 -1
  113. package/dist/types/intl-types.d.ts +19 -0
  114. package/dist/types/intl-types.d.ts.map +1 -0
  115. package/dist/types/intl-types.umd.js +1 -1
  116. package/dist/types/intl-types.umd.js.map +1 -1
  117. package/dist/types/map.d.ts +6 -0
  118. package/dist/types/map.d.ts.map +1 -0
  119. package/dist/types/map.umd.js +1 -1
  120. package/dist/types/map.umd.js.map +1 -1
  121. package/dist/types/nan.d.ts +6 -0
  122. package/dist/types/nan.d.ts.map +1 -0
  123. package/dist/types/nan.umd.js.map +1 -1
  124. package/dist/types/negative-infinity.d.ts +6 -0
  125. package/dist/types/negative-infinity.d.ts.map +1 -0
  126. package/dist/types/negative-infinity.umd.js.map +1 -1
  127. package/dist/types/negative-zero.d.ts +6 -0
  128. package/dist/types/negative-zero.d.ts.map +1 -0
  129. package/dist/types/negative-zero.umd.js +2 -0
  130. package/dist/types/negative-zero.umd.js.map +1 -0
  131. package/dist/types/nonbuiltin-ignore.d.ts +6 -0
  132. package/dist/types/nonbuiltin-ignore.d.ts.map +1 -0
  133. package/dist/types/nonbuiltin-ignore.umd.js +1 -1
  134. package/dist/types/nonbuiltin-ignore.umd.js.map +1 -1
  135. package/dist/types/primitive-objects.d.ts +6 -0
  136. package/dist/types/primitive-objects.d.ts.map +1 -0
  137. package/dist/types/primitive-objects.umd.js +1 -1
  138. package/dist/types/primitive-objects.umd.js.map +1 -1
  139. package/dist/types/regexp.d.ts +6 -0
  140. package/dist/types/regexp.d.ts.map +1 -0
  141. package/dist/types/regexp.umd.js +1 -1
  142. package/dist/types/regexp.umd.js.map +1 -1
  143. package/dist/types/resurrectable.d.ts +6 -0
  144. package/dist/types/resurrectable.d.ts.map +1 -0
  145. package/dist/types/resurrectable.umd.js.map +1 -1
  146. package/dist/types/set.d.ts +6 -0
  147. package/dist/types/set.d.ts.map +1 -0
  148. package/dist/types/set.umd.js +1 -1
  149. package/dist/types/set.umd.js.map +1 -1
  150. package/dist/types/typed-arrays-socketio.d.ts +6 -0
  151. package/dist/types/typed-arrays-socketio.d.ts.map +1 -0
  152. package/dist/types/typed-arrays-socketio.umd.js +1 -1
  153. package/dist/types/typed-arrays-socketio.umd.js.map +1 -1
  154. package/dist/types/typed-arrays.d.ts +7 -0
  155. package/dist/types/typed-arrays.d.ts.map +1 -0
  156. package/dist/types/typed-arrays.umd.js +1 -1
  157. package/dist/types/typed-arrays.umd.js.map +1 -1
  158. package/dist/types/undef.d.ts +6 -0
  159. package/dist/types/undef.d.ts.map +1 -0
  160. package/dist/types/undef.umd.js +1 -1
  161. package/dist/types/undef.umd.js.map +1 -1
  162. package/dist/types/user-object.d.ts +6 -0
  163. package/dist/types/user-object.d.ts.map +1 -0
  164. package/dist/types/user-object.umd.js +1 -1
  165. package/dist/types/user-object.umd.js.map +1 -1
  166. package/dist/types/zero.umd.js +2 -0
  167. package/dist/types/zero.umd.js.map +1 -0
  168. package/dist/utils/generateUUID.d.ts +9 -0
  169. package/dist/utils/generateUUID.d.ts.map +1 -0
  170. package/dist/utils/stringArrayBuffer.d.ts +13 -0
  171. package/dist/utils/stringArrayBuffer.d.ts.map +1 -0
  172. package/package.json +29 -22
  173. package/polyfills/createObjectURL.js +43 -2
  174. package/polyfills/createObjectURL.umd.js +1 -1
  175. package/polyfills/createObjectURL.umd.js.map +1 -1
  176. package/tools/append-to-declaration-files.js +7 -0
  177. package/utils/stringArrayBuffer.js +1 -1
package/dist/index.umd.js CHANGED
@@ -4,6 +4,33 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TypesonNamespace = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
+ function _iterableToArrayLimit(arr, i) {
8
+ var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
9
+ if (null != _i) {
10
+ var _s,
11
+ _e,
12
+ _x,
13
+ _r,
14
+ _arr = [],
15
+ _n = !0,
16
+ _d = !1;
17
+ try {
18
+ if (_x = (_i = _i.call(arr)).next, 0 === i) {
19
+ if (Object(_i) !== _i) return;
20
+ _n = !1;
21
+ } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
22
+ } catch (err) {
23
+ _d = !0, _e = err;
24
+ } finally {
25
+ try {
26
+ if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
27
+ } finally {
28
+ if (_d) throw _e;
29
+ }
30
+ }
31
+ return _arr;
32
+ }
33
+ }
7
34
  function ownKeys$1(object, enumerableOnly) {
8
35
  var keys = Object.keys(object);
9
36
  if (Object.getOwnPropertySymbols) {
@@ -401,12 +428,18 @@
401
428
  }
402
429
  return obj;
403
430
  }
431
+ function _slicedToArray$1(arr, i) {
432
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
433
+ }
404
434
  function _toConsumableArray$1(arr) {
405
435
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
406
436
  }
407
437
  function _arrayWithoutHoles(arr) {
408
438
  if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
409
439
  }
440
+ function _arrayWithHoles(arr) {
441
+ if (Array.isArray(arr)) return arr;
442
+ }
410
443
  function _iterableToArray(iter) {
411
444
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
412
445
  }
@@ -426,6 +459,9 @@
426
459
  function _nonIterableSpread() {
427
460
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
428
461
  }
462
+ function _nonIterableRest() {
463
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
464
+ }
429
465
  function _toPrimitive(input, hint) {
430
466
  if (typeof input !== "object" || input === null) return input;
431
467
  var prim = input[Symbol.toPrimitive];
@@ -499,21 +535,21 @@
499
535
  if (null != r) {
500
536
  var n,
501
537
  o,
502
- a,
503
538
  i,
539
+ a,
504
540
  c = [],
505
541
  s = !0,
506
542
  u = !1;
507
543
  try {
508
- if (a = (r = r.call(e)).next, 0 === t) {
544
+ if (i = (r = r.call(e)).next, 0 === t) {
509
545
  if (Object(r) !== r) return;
510
546
  s = !1;
511
- } else for (; !(s = (n = a.call(r)).done) && (c.push(n.value), c.length !== t); s = !0);
547
+ } else for (; !(s = (n = i.call(r)).done) && (c.push(n.value), c.length !== t); s = !0);
512
548
  } catch (e) {
513
549
  u = !0, o = e;
514
550
  } finally {
515
551
  try {
516
- if (!s && null != r["return"] && (i = r["return"](), Object(i) !== i)) return;
552
+ if (!s && null != r["return"] && (a = r["return"](), Object(a) !== a)) return;
517
553
  } finally {
518
554
  if (u) throw o;
519
555
  }
@@ -561,7 +597,11 @@
561
597
  var e = _createClass(function TypesonPromise(e) {
562
598
  _classCallCheck(this, TypesonPromise), this.p = new Promise(e);
563
599
  });
564
- e.__typeson__type__ = "TypesonPromise", "undefined" != typeof Symbol && (e.prototype[Symbol.toStringTag] = "TypesonPromise"), e.prototype.then = function (t, r) {
600
+ e.__typeson__type__ = "TypesonPromise", "undefined" != typeof Symbol && Object.defineProperty(e.prototype, Symbol.toStringTag, {
601
+ get: function get() {
602
+ return "TypesonPromise";
603
+ }
604
+ }), e.prototype.then = function (t, r) {
565
605
  var n = this;
566
606
  return new e(function (e, o) {
567
607
  n.p.then(function (r) {
@@ -571,7 +611,7 @@
571
611
  }).then(e, o);
572
612
  });
573
613
  }, e.prototype["catch"] = function (e) {
574
- return this.then(null, e);
614
+ return this.then(function () {}, e);
575
615
  }, e.resolve = function (t) {
576
616
  return new e(function (e) {
577
617
  e(t);
@@ -580,42 +620,50 @@
580
620
  return new e(function (e, r) {
581
621
  r(t);
582
622
  });
583
- }, ["all", "race", "allSettled"].forEach(function (t) {
584
- e[t] = function (r) {
585
- return new e(function (e, n) {
586
- Promise[t](r.map(function (e) {
587
- return e && e.constructor && "TypesonPromise" === e.constructor.__typeson__type__ ? e.p : e;
588
- })).then(e, n);
589
- });
590
- };
591
- });
592
- var t = {}.toString,
593
- r = {}.hasOwnProperty,
594
- n = Object.getPrototypeOf,
595
- o = r.toString;
623
+ }, e.all = function (t) {
624
+ return new e(function (e, r) {
625
+ Promise.all(t.map(function (e) {
626
+ return null != e && e.constructor && "__typeson__type__" in e.constructor && "TypesonPromise" === e.constructor.__typeson__type__ ? e.p : e;
627
+ })).then(e, r);
628
+ });
629
+ }, e.race = function (t) {
630
+ return new e(function (e, r) {
631
+ Promise.race(t.map(function (e) {
632
+ return null != e && e.constructor && "__typeson__type__" in e.constructor && "TypesonPromise" === e.constructor.__typeson__type__ ? e.p : e;
633
+ })).then(e, r);
634
+ });
635
+ }, e.allSettled = function (t) {
636
+ return new e(function (e, r) {
637
+ Promise.allSettled(t.map(function (e) {
638
+ return null != e && e.constructor && "__typeson__type__" in e.constructor && "TypesonPromise" === e.constructor.__typeson__type__ ? e.p : e;
639
+ })).then(e, r);
640
+ });
641
+ };
642
+ var t = Object.hasOwn,
643
+ r = Object.getPrototypeOf;
596
644
  function isThenable(e, t) {
597
645
  return isObject(e) && "function" == typeof e.then && (!t || "function" == typeof e["catch"]);
598
646
  }
599
647
  function toStringTag(e) {
600
- return t.call(e).slice(8, -1);
648
+ return Object.prototype.toString.call(e).slice(8, -1);
601
649
  }
602
- function hasConstructorOf(e, t) {
650
+ function hasConstructorOf(e, n) {
603
651
  if (!e || "object" !== _typeof(e)) return !1;
604
- var a = n(e);
605
- if (!a) return null === t;
606
- var i = r.call(a, "constructor") && a.constructor;
607
- return "function" != typeof i ? null === t : t === i || null !== t && o.call(i) === o.call(t) || "function" == typeof t && "string" == typeof i.__typeson__type__ && i.__typeson__type__ === t.__typeson__type__;
652
+ var o = r(e);
653
+ if (!o) return null === n;
654
+ var i = t(o, "constructor") && o.constructor;
655
+ return "function" != typeof i ? null === n : n === i || null !== n && Function.prototype.toString.call(i) === Function.prototype.toString.call(n) || "function" == typeof n && "string" == typeof i.__typeson__type__ && i.__typeson__type__ === n.__typeson__type__;
608
656
  }
609
657
  function isPlainObject(e) {
610
- return !(!e || "Object" !== toStringTag(e)) && (!n(e) || hasConstructorOf(e, Object));
658
+ return !(!e || "Object" !== toStringTag(e)) && (!r(e) || hasConstructorOf(e, Object));
611
659
  }
612
660
  function isUserObject(e) {
613
661
  if (!e || "Object" !== toStringTag(e)) return !1;
614
- var t = n(e);
662
+ var t = r(e);
615
663
  return !t || hasConstructorOf(e, Object) || isUserObject(t);
616
664
  }
617
665
  function isObject(e) {
618
- return e && "object" === _typeof(e);
666
+ return null !== e && "object" === _typeof(e);
619
667
  }
620
668
  function escapeKeyPathComponent(e) {
621
669
  return e.replace(/''/g, "''''").replace(/^$/, "''").replace(/~/g, "~0").replace(/\./g, "~1");
@@ -625,6 +673,7 @@
625
673
  }
626
674
  function getByKeyPath(e, t) {
627
675
  if ("" === t) return e;
676
+ if (null === e || "object" !== _typeof(e)) throw new TypeError("Unexpected non-object type");
628
677
  var r = t.indexOf(".");
629
678
  if (r > -1) {
630
679
  var n = e[unescapeKeyPathComponent(t.slice(0, r))];
@@ -634,6 +683,7 @@
634
683
  }
635
684
  function setAtKeyPath(e, t, r) {
636
685
  if ("" === t) return r;
686
+ if (!e || "object" !== _typeof(e)) throw new TypeError("Unexpected non-object type");
637
687
  var n = t.indexOf(".");
638
688
  return n > -1 ? setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0, n))], t.slice(n + 1), r) : (e[unescapeKeyPathComponent(t)] = r, e);
639
689
  }
@@ -643,10 +693,10 @@
643
693
  function _await(e, t, r) {
644
694
  return r ? t ? t(e) : e : (e && e.then || (e = Promise.resolve(e)), t ? e.then(t) : e);
645
695
  }
646
- var a = Object.keys,
696
+ var n = Object.keys,
697
+ o = Object.hasOwn,
647
698
  i$1 = Array.isArray,
648
- c = {}.hasOwnProperty,
649
- s = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"];
699
+ a = ["type", "replaced", "iterateIn", "iterateUnsetNumeric", "addLength"];
650
700
  function _async(e) {
651
701
  return function () {
652
702
  for (var t = [], r = 0; r < arguments.length; r++) t[r] = arguments[r];
@@ -658,12 +708,13 @@
658
708
  };
659
709
  }
660
710
  function nestedPathsFirst(e, t) {
711
+ var r, n;
661
712
  if ("" === e.keypath) return -1;
662
- var r = e.keypath.match(/\./g) || 0,
663
- n = t.keypath.match(/\./g) || 0;
664
- return r && (r = r.length), n && (n = n.length), r > n ? -1 : r < n ? 1 : e.keypath < t.keypath ? -1 : e.keypath > t.keypath;
713
+ var o = null !== (r = e.keypath.match(/\./g)) && void 0 !== r ? r : 0,
714
+ i = null !== (n = t.keypath.match(/\./g)) && void 0 !== n ? n : 0;
715
+ return o && (o = o.length), i && (i = i.length), o > i ? -1 : o < i ? 1 : e.keypath < t.keypath ? -1 : e.keypath > t.keypath ? 1 : 0;
665
716
  }
666
- var u = function () {
717
+ var c = function () {
667
718
  function Typeson(e) {
668
719
  _classCallCheck(this, Typeson), this.options = e, this.plainObjectReplacers = [], this.nonplainObjectReplacers = [], this.revivers = {}, this.types = {};
669
720
  }
@@ -735,193 +786,203 @@
735
786
  }
736
787
  }, {
737
788
  key: "encapsulate",
738
- value: function encapsulate(t, r, n) {
739
- var o = _async(function (t, r) {
789
+ value: function encapsulate(t, r, c) {
790
+ var s = this,
791
+ u = _objectSpread2(_objectSpread2({
792
+ sync: !0
793
+ }, this.options), c),
794
+ y = u.sync,
795
+ p = {},
796
+ l = [],
797
+ f = [],
798
+ v = [],
799
+ h = !("cyclic" in u) || u.cyclic,
800
+ d = u.encapsulateObserver,
801
+ b = function finish(e) {
802
+ var t = Object.values(p);
803
+ if (u.iterateNone) return t.length ? t[0] : getJSONType(e);
804
+ if (t.length) {
805
+ if (u.returnTypeNames) return _toConsumableArray(new Set(t));
806
+ e && isPlainObject(e) && !o(e, "$types") ? e.$types = p : e = {
807
+ $: e,
808
+ $types: {
809
+ $: p
810
+ }
811
+ };
812
+ } else isObject(e) && o(e, "$types") && (e = {
813
+ $: e,
814
+ $types: !0
815
+ });
816
+ return !u.returnTypeNames && e;
817
+ },
818
+ _ = _async(function (t, r) {
740
819
  return _await(Promise.all(r.map(function (e) {
741
820
  return e[1].p;
742
821
  })), function (n) {
743
822
  return _await(Promise.all(n.map(_async(function (n) {
744
- var a = !1,
823
+ var o = !1,
745
824
  i = [],
746
- c = _slicedToArray(r.splice(0, 1), 1),
747
- s = _slicedToArray(c[0], 7),
748
- u = s[0],
749
- p = s[2],
750
- l = s[3],
751
- y = s[4],
752
- f = s[5],
753
- h = s[6],
754
- v = _encapsulate(u, n, p, l, i, !0, h),
755
- b = hasConstructorOf(v, e);
825
+ a = _slicedToArray(r.splice(0, 1), 1),
826
+ c = _slicedToArray(a[0], 7),
827
+ s = c[0],
828
+ u = c[2],
829
+ y = c[3],
830
+ p = c[4],
831
+ l = c[5],
832
+ f = c[6],
833
+ v = m(s, n, u, y, i, !0, f),
834
+ h = hasConstructorOf(v, e);
756
835
  return function _invoke(e, t) {
757
836
  var r = e();
758
837
  return r && r.then ? r.then(t) : t(r);
759
838
  }(function () {
760
- if (u && b) return _await(v.p, function (e) {
761
- y[f] = e;
762
- var r = o(t, i);
763
- return a = !0, r;
839
+ if (s && h) return _await(v.p, function (e) {
840
+ p[l] = e;
841
+ var r = _(t, i);
842
+ return o = !0, r;
764
843
  });
765
844
  }, function (e) {
766
- return a ? e : (u ? y[f] = v : t = b ? v.p : v, o(t, i));
845
+ return o ? e : (s ? p[l] = v : t = h ? v.p : v, _(t, i));
767
846
  });
768
847
  }))), function () {
769
848
  return t;
770
849
  });
771
850
  });
772
851
  }),
773
- u = (n = _objectSpread2(_objectSpread2({
774
- sync: !0
775
- }, this.options), n)).sync,
776
- p = this,
777
- l = {},
778
- y = [],
779
- f = [],
780
- h = [],
781
- v = !("cyclic" in n) || n.cyclic,
782
- b = n.encapsulateObserver,
783
- d = _encapsulate("", t, v, r || {}, h);
784
- function finish(e) {
785
- var t = Object.values(l);
786
- if (n.iterateNone) return t.length ? t[0] : getJSONType(e);
787
- if (t.length) {
788
- if (n.returnTypeNames) return _toConsumableArray(new Set(t));
789
- e && isPlainObject(e) && !c.call(e, "$types") ? e.$types = l : e = {
790
- $: e,
791
- $types: {
792
- $: l
793
- }
794
- };
795
- } else isObject(e) && c.call(e, "$types") && (e = {
796
- $: e,
797
- $types: !0
798
- });
799
- return !n.returnTypeNames && e;
800
- }
801
- function _adaptBuiltinStateObjectProperties(e, t, r) {
802
- Object.assign(e, t);
803
- var n = s.map(function (t) {
804
- var r = e[t];
805
- return delete e[t], r;
806
- });
807
- r(), s.forEach(function (t, r) {
808
- e[t] = n[r];
809
- });
810
- }
811
- function _encapsulate(t, r, o, s, u, h, v) {
812
- var d,
813
- _ = {},
814
- O = _typeof(r),
815
- j = b ? function (n) {
816
- var a = v || s.type || getJSONType(r);
817
- b(Object.assign(n || _, {
818
- keypath: t,
819
- value: r,
820
- cyclic: o,
821
- stateObj: s,
822
- promisesData: u,
823
- resolvingTypesonPromise: h,
824
- awaitingTypesonPromise: hasConstructorOf(r, e)
825
- }, {
826
- type: a
827
- }));
828
- } : null;
829
- if (["string", "boolean", "number", "undefined"].includes(O)) return void 0 === r || Number.isNaN(r) || r === Number.NEGATIVE_INFINITY || r === Number.POSITIVE_INFINITY ? (d = s.replaced ? r : replace(t, r, s, u, !1, h, j)) !== r && (_ = {
830
- replaced: d
831
- }) : d = r, j && j(), d;
832
- if (null === r) return j && j(), r;
833
- if (o && !s.iterateIn && !s.iterateUnsetNumeric && r && "object" === _typeof(r)) {
834
- var m = y.indexOf(r);
835
- if (!(m < 0)) return l[t] = "#", j && j({
836
- cyclicKeypath: f[m]
837
- }), "#" + f[m];
838
- !0 === o && (y.push(r), f.push(t));
839
- }
840
- var g,
841
- S = isPlainObject(r),
842
- P = i$1(r),
843
- T = (S || P) && (!p.plainObjectReplacers.length || s.replaced) || s.iterateIn ? r : replace(t, r, s, u, S || P, null, j);
844
- if (T !== r ? (d = T, _ = {
845
- replaced: T
846
- }) : "" === t && hasConstructorOf(r, e) ? (u.push([t, r, o, s, void 0, void 0, s.type]), d = r) : P && "object" !== s.iterateIn || "array" === s.iterateIn ? (g = new Array(r.length), _ = {
847
- clone: g
848
- }) : (["function", "symbol"].includes(_typeof(r)) || "toJSON" in r || hasConstructorOf(r, e) || hasConstructorOf(r, Promise) || hasConstructorOf(r, ArrayBuffer)) && !S && "object" !== s.iterateIn ? d = r : (g = {}, s.addLength && (g.length = r.length), _ = {
849
- clone: g
850
- }), j && j(), n.iterateNone) return g || d;
851
- if (!g) return d;
852
- if (s.iterateIn) {
853
- var w = function _loop(n) {
854
- var a = {
855
- ownKeys: c.call(r, n)
852
+ O = function _adaptBuiltinStateObjectProperties(e, t, r) {
853
+ Object.assign(e, t);
854
+ var n = a.map(function (t) {
855
+ var r = e[t];
856
+ return delete e[t], r;
857
+ });
858
+ r(), a.forEach(function (t, r) {
859
+ e[t] = n[r];
860
+ });
861
+ },
862
+ m = function _encapsulate(t, r, a, c, y, v, h) {
863
+ var b,
864
+ _ = {},
865
+ m = _typeof(r),
866
+ g = d ? function (n) {
867
+ var o,
868
+ i = null !== (o = null != h ? h : c.type) && void 0 !== o ? o : getJSONType(r);
869
+ d(Object.assign(null != n ? n : _, {
870
+ keypath: t,
871
+ value: r,
872
+ cyclic: a,
873
+ stateObj: c,
874
+ promisesData: y,
875
+ resolvingTypesonPromise: v,
876
+ awaitingTypesonPromise: hasConstructorOf(r, e)
877
+ }, {
878
+ type: i
879
+ }));
880
+ } : null;
881
+ if (["string", "boolean", "number", "undefined"].includes(m)) return void 0 === r || Number.isNaN(r) || r === Number.NEGATIVE_INFINITY || r === Number.POSITIVE_INFINITY || 0 === r ? (b = c.replaced ? r : j(t, r, c, y, !1, v, g)) !== r && (_ = {
882
+ replaced: b
883
+ }) : b = r, g && g(), b;
884
+ if (null === r) return g && g(), r;
885
+ if (a && !c.iterateIn && !c.iterateUnsetNumeric && r && "object" === _typeof(r)) {
886
+ var S = l.indexOf(r);
887
+ if (!(S < 0)) return p[t] = "#", g && g({
888
+ cyclicKeypath: f[S]
889
+ }), "#" + f[S];
890
+ !0 === a && (l.push(r), f.push(t));
891
+ }
892
+ var P,
893
+ T,
894
+ w = isPlainObject(r),
895
+ A = i$1(r),
896
+ C = (w || A) && (!s.plainObjectReplacers.length || c.replaced) || c.iterateIn ? r : j(t, r, c, y, w || A, null, g);
897
+ if (C !== r ? (b = C, _ = {
898
+ replaced: C
899
+ }) : "" === t && hasConstructorOf(r, e) ? (y.push([t, r, a, c, void 0, void 0, c.type]), b = r) : A && "object" !== c.iterateIn || "array" === c.iterateIn ? (P = new Array(r.length), _ = {
900
+ clone: P
901
+ }) : (["function", "symbol"].includes(_typeof(r)) || "toJSON" in r || hasConstructorOf(r, e) || hasConstructorOf(r, Promise) || hasConstructorOf(r, ArrayBuffer)) && !w && "object" !== c.iterateIn ? b = r : (P = {}, c.addLength && (P.length = r.length), _ = {
902
+ clone: P
903
+ }), g && g(), u.iterateNone) return null !== (T = P) && void 0 !== T ? T : b;
904
+ if (!P) return b;
905
+ if (c.iterateIn) {
906
+ var k = function _loop(n) {
907
+ var i = {
908
+ ownKeys: o(r, n)
909
+ };
910
+ O(c, i, function () {
911
+ var o = t + (t ? "." : "") + escapeKeyPathComponent(n),
912
+ i = _encapsulate(o, r[n], Boolean(a), c, y, v);
913
+ hasConstructorOf(i, e) ? y.push([o, i, Boolean(a), c, P, n, c.type]) : void 0 !== i && (P[n] = i);
914
+ });
856
915
  };
857
- _adaptBuiltinStateObjectProperties(s, a, function () {
858
- var a = t + (t ? "." : "") + escapeKeyPathComponent(n),
859
- i = _encapsulate(a, r[n], Boolean(o), s, u, h);
860
- hasConstructorOf(i, e) ? u.push([a, i, Boolean(o), s, g, n, s.type]) : void 0 !== i && (g[n] = i);
916
+ for (var N in r) k(N);
917
+ g && g({
918
+ endIterateIn: !0,
919
+ end: !0
861
920
  });
862
- };
863
- for (var A in r) w(A);
864
- j && j({
865
- endIterateIn: !0,
921
+ } else n(r).forEach(function (n) {
922
+ var o = t + (t ? "." : "") + escapeKeyPathComponent(n);
923
+ O(c, {
924
+ ownKeys: !0
925
+ }, function () {
926
+ var t = _encapsulate(o, r[n], Boolean(a), c, y, v);
927
+ hasConstructorOf(t, e) ? y.push([o, t, Boolean(a), c, P, n, c.type]) : void 0 !== t && (P[n] = t);
928
+ });
929
+ }), g && g({
930
+ endIterateOwn: !0,
866
931
  end: !0
867
932
  });
868
- } else a(r).forEach(function (n) {
869
- var a = t + (t ? "." : "") + escapeKeyPathComponent(n);
870
- _adaptBuiltinStateObjectProperties(s, {
871
- ownKeys: !0
872
- }, function () {
873
- var t = _encapsulate(a, r[n], Boolean(o), s, u, h);
874
- hasConstructorOf(t, e) ? u.push([a, t, Boolean(o), s, g, n, s.type]) : void 0 !== t && (g[n] = t);
875
- });
876
- }), j && j({
877
- endIterateOwn: !0,
878
- end: !0
879
- });
880
- if (s.iterateUnsetNumeric) {
881
- for (var C = r.length, k = function _loop2(n) {
882
- if (!(n in r)) {
883
- var a = t + (t ? "." : "") + n;
884
- _adaptBuiltinStateObjectProperties(s, {
885
- ownKeys: !1
886
- }, function () {
887
- var t = _encapsulate(a, void 0, Boolean(o), s, u, h);
888
- hasConstructorOf(t, e) ? u.push([a, t, Boolean(o), s, g, n, s.type]) : void 0 !== t && (g[n] = t);
889
- });
933
+ if (c.iterateUnsetNumeric) {
934
+ for (var I = r.length, E = function _loop2(n) {
935
+ if (!(n in r)) {
936
+ var o = "".concat(t).concat(t ? "." : "").concat(n);
937
+ O(c, {
938
+ ownKeys: !1
939
+ }, function () {
940
+ var t = _encapsulate(o, void 0, Boolean(a), c, y, v);
941
+ hasConstructorOf(t, e) ? y.push([o, t, Boolean(a), c, P, n, c.type]) : void 0 !== t && (P[n] = t);
942
+ });
943
+ }
944
+ }, K = 0; K < I; K++) E(K);
945
+ g && g({
946
+ endIterateUnsetNumeric: !0,
947
+ end: !0
948
+ });
949
+ }
950
+ return P;
951
+ },
952
+ j = function replace(e, t, r, n, o, i, a) {
953
+ for (var c = o ? s.plainObjectReplacers : s.nonplainObjectReplacers, u = c.length; u--;) {
954
+ var l = c[u];
955
+ if (l.test(t, r)) {
956
+ var f = l.type;
957
+ if (s.revivers[f]) {
958
+ var v = p[e];
959
+ p[e] = v ? [f].concat(v) : f;
890
960
  }
891
- }, N = 0; N < C; N++) k(N);
892
- j && j({
893
- endIterateUnsetNumeric: !0,
894
- end: !0
895
- });
896
- }
897
- return g;
898
- }
899
- function replace(e, t, r, n, o, a, i) {
900
- for (var c = o ? p.plainObjectReplacers : p.nonplainObjectReplacers, s = c.length; s--;) {
901
- var y = c[s];
902
- if (y.test(t, r)) {
903
- var f = y.type;
904
- if (p.revivers[f]) {
905
- var h = l[e];
906
- l[e] = h ? [f].concat(h) : f;
961
+ if (Object.assign(r, {
962
+ type: f,
963
+ replaced: !0
964
+ }), (y || !l.replaceAsync) && !l.replace) return a && a({
965
+ typeDetected: !0
966
+ }), m(e, t, h && "readonly", r, n, i, f);
967
+ a && a({
968
+ replacing: !0
969
+ });
970
+ var d = void 0;
971
+ if (y || !l.replaceAsync) {
972
+ if (void 0 === l.replace) throw new TypeError("Missing replacer");
973
+ d = l.replace(t, r);
974
+ } else d = l.replaceAsync(t, r);
975
+ return m(e, d, h && "readonly", r, n, i, f);
907
976
  }
908
- return Object.assign(r, {
909
- type: f,
910
- replaced: !0
911
- }), !u && y.replaceAsync || y.replace ? (i && i({
912
- replacing: !0
913
- }), _encapsulate(e, y[u || !y.replaceAsync ? "replace" : "replaceAsync"](t, r), v && "readonly", r, n, a, f)) : (i && i({
914
- typeDetected: !0
915
- }), _encapsulate(e, t, v && "readonly", r, n, a, f));
916
977
  }
917
- }
918
- return t;
919
- }
920
- return h.length ? u && n.throwOnBadSyncType ? function () {
978
+ return t;
979
+ },
980
+ g = m("", t, h, null != r ? r : {}, v);
981
+ if (v.length) return y && u.throwOnBadSyncType ? function () {
921
982
  throw new TypeError("Sync method requested but async result obtained");
922
- }() : Promise.resolve(o(d, h)).then(finish) : !u && n.throwOnBadSyncType ? function () {
923
- throw new TypeError("Async method requested but sync result obtained");
924
- }() : n.stringification && u ? [finish(d)] : u ? finish(d) : Promise.resolve(finish(d));
983
+ }() : Promise.resolve(_(g, v)).then(b);
984
+ if (!y && u.throwOnBadSyncType) throw new TypeError("Async method requested but sync result obtained");
985
+ return u.stringification && y ? [b(g)] : y ? b(g) : Promise.resolve(b(g));
925
986
  }
926
987
  }, {
927
988
  key: "encapsulateSync",
@@ -944,104 +1005,119 @@
944
1005
  }, {
945
1006
  key: "revive",
946
1007
  value: function revive(t, r) {
947
- var n = t && t.$types;
948
- if (!n) return t;
949
- if (!0 === n) return t.$;
950
- var o = (r = _objectSpread2(_objectSpread2({
1008
+ var o = this,
1009
+ a = _objectSpread2(_objectSpread2({
951
1010
  sync: !0
952
- }, this.options), r)).sync,
953
- c = [],
954
- s = {},
955
- u = !0;
956
- n.$ && isPlainObject(n.$) && (t = t.$, n = n.$, u = !1);
957
- var l = this;
958
- function executeReviver(e, t) {
959
- var r = _slicedToArray(l.revivers[e] || [], 1)[0];
960
- if (!r) throw new Error("Unregistered type: " + e);
961
- return o && !("revive" in r) ? t : r[o && r.revive ? "revive" : !o && r.reviveAsync ? "reviveAsync" : "revive"](t, s);
1011
+ }, this.options), r),
1012
+ c = a.sync;
1013
+ function finishRevival(e) {
1014
+ if (c) return e;
1015
+ if (a.throwOnBadSyncType) throw new TypeError("Async method requested but sync result obtained");
1016
+ return Promise.resolve(e);
962
1017
  }
963
- var y = [];
1018
+ if (!t || "object" !== _typeof(t) || Array.isArray(t)) return finishRevival(t);
1019
+ var u = t.$types;
1020
+ if (!0 === u) return finishRevival(t.$);
1021
+ if (!u || "object" !== _typeof(u) || Array.isArray(u)) return finishRevival(t);
1022
+ var y = [],
1023
+ p = {},
1024
+ l = !0;
1025
+ u.$ && isPlainObject(u.$) && (t = t.$, u = u.$, l = !1);
1026
+ var f = function executeReviver(e, t) {
1027
+ var r,
1028
+ n = _slicedToArray(null !== (r = o.revivers[e]) && void 0 !== r ? r : [], 1)[0];
1029
+ if (!n) throw new Error("Unregistered type: " + e);
1030
+ if (c && !("revive" in n)) return t;
1031
+ if (!c && n.reviveAsync) return n.reviveAsync(t, p);
1032
+ if (n.revive) return n.revive(t, p);
1033
+ throw new Error("Missing reviver");
1034
+ },
1035
+ v = [];
964
1036
  function checkUndefined(e) {
965
- return hasConstructorOf(e, p) ? void 0 : e;
1037
+ return hasConstructorOf(e, s) ? void 0 : e;
966
1038
  }
967
- var f,
968
- h = function revivePlainObjects() {
1039
+ var h,
1040
+ d = function revivePlainObjects() {
969
1041
  var r = [];
970
- if (Object.entries(n).forEach(function (e) {
1042
+ if (!u) throw new Error("Found bad `types`");
1043
+ if (Object.entries(u).forEach(function (e) {
971
1044
  var t = _slicedToArray(e, 2),
972
- o = t[0],
973
- a = t[1];
974
- "#" !== a && [].concat(a).forEach(function (e) {
975
- _slicedToArray(l.revivers[e] || [null, {}], 2)[1].plain && (r.push({
976
- keypath: o,
1045
+ n = t[0],
1046
+ i = t[1];
1047
+ "#" !== i && [].concat(i).forEach(function (e) {
1048
+ var t;
1049
+ _slicedToArray(null !== (t = o.revivers[e]) && void 0 !== t ? t : [null, {}], 2)[1].plain && (r.push({
1050
+ keypath: n,
977
1051
  type: e
978
- }), delete n[o]);
1052
+ }), delete u[n]);
979
1053
  });
980
1054
  }), r.length) return r.sort(nestedPathsFirst).reduce(function reducer(r, n) {
981
1055
  var o = n.keypath,
982
- a = n.type;
1056
+ i = n.type;
983
1057
  if (isThenable(r)) return r.then(function (e) {
984
1058
  return reducer(e, {
985
1059
  keypath: o,
986
- type: a
1060
+ type: i
987
1061
  });
988
1062
  });
989
- var i = getByKeyPath(t, o);
990
- if (hasConstructorOf(i = executeReviver(a, i), e)) return i.then(function (e) {
1063
+ var a = getByKeyPath(t, o);
1064
+ if (hasConstructorOf(a = f(i, a), e)) return a.then(function (e) {
991
1065
  var r = setAtKeyPath(t, o, e);
992
1066
  r === e && (t = r);
993
1067
  });
994
- var c = setAtKeyPath(t, o, i);
995
- c === i && (t = c);
1068
+ var c = setAtKeyPath(t, o, a);
1069
+ c === a && (t = c);
996
1070
  }, void 0);
997
1071
  }();
998
- return hasConstructorOf(h, e) ? f = h.then(function () {
1072
+ return hasConstructorOf(d, e) ? h = d.then(function () {
999
1073
  return t;
1000
- }) : (f = function _revive(t, r, o, s, l) {
1001
- if (!u || "$types" !== t) {
1002
- var f = n[t],
1074
+ }) : (h = function _revive(t, r, o, a, c) {
1075
+ if (!l || "$types" !== t) {
1076
+ var p = u[t],
1003
1077
  h = i$1(r);
1004
1078
  if (h || isPlainObject(r)) {
1005
- var v = h ? new Array(r.length) : {};
1006
- for (a(r).forEach(function (n) {
1007
- var a = _revive(t + (t ? "." : "") + escapeKeyPathComponent(n), r[n], o || v, v, n),
1008
- i = function set(e) {
1009
- return hasConstructorOf(e, p) ? v[n] = void 0 : void 0 !== e && (v[n] = e), e;
1079
+ var d = h ? new Array(r.length) : {};
1080
+ for (n(r).forEach(function (n) {
1081
+ var i = _revive(t + (t ? "." : "") + escapeKeyPathComponent(n), r[n], null != o ? o : d, d, n),
1082
+ a = function set(e) {
1083
+ return hasConstructorOf(e, s) ? d[n] = void 0 : void 0 !== e && (d[n] = e), e;
1010
1084
  };
1011
- hasConstructorOf(a, e) ? y.push(a.then(function (e) {
1012
- return i(e);
1013
- })) : i(a);
1014
- }), r = v; c.length;) {
1015
- var b = _slicedToArray(c[0], 4),
1016
- d = b[0],
1017
- _ = b[1],
1018
- O = b[2],
1085
+ hasConstructorOf(i, e) ? v.push(i.then(function (e) {
1086
+ return a(e);
1087
+ })) : a(i);
1088
+ }), r = d; y.length;) {
1089
+ var b = _slicedToArray(y[0], 4),
1090
+ _ = b[0],
1091
+ O = b[1],
1092
+ m = b[2],
1019
1093
  j = b[3],
1020
- m = getByKeyPath(d, _);
1021
- if (void 0 === m) break;
1022
- O[j] = m, c.splice(0, 1);
1094
+ g = getByKeyPath(_, O);
1095
+ if (void 0 === g) break;
1096
+ m[j] = g, y.splice(0, 1);
1023
1097
  }
1024
1098
  }
1025
- if (!f) return r;
1026
- if ("#" === f) {
1027
- var g = getByKeyPath(o, r.slice(1));
1028
- return void 0 === g && c.push([o, r.slice(1), s, l]), g;
1099
+ if (!p) return r;
1100
+ if ("#" === p) {
1101
+ var S = getByKeyPath(o, r.slice(1));
1102
+ return void 0 === S && y.push([o, r.slice(1), a, c]), S;
1029
1103
  }
1030
- return [].concat(f).reduce(function reducer(t, r) {
1031
- return hasConstructorOf(t, e) ? t.then(function (e) {
1104
+ return [].concat(p).reduce(function reducer(t, r) {
1105
+ if (hasConstructorOf(t, e)) return t.then(function (e) {
1032
1106
  return reducer(e, r);
1033
- }) : executeReviver(r, t);
1107
+ });
1108
+ if ("string" != typeof r) throw new TypeError("Bad type JSON");
1109
+ return f(r, t);
1034
1110
  }, r);
1035
1111
  }
1036
- }("", t, null), y.length && (f = e.resolve(f).then(function (t) {
1037
- return e.all([t].concat(y));
1112
+ }("", t, null), v.length && (h = e.resolve(h).then(function (t) {
1113
+ return e.all([t].concat(v));
1038
1114
  }).then(function (e) {
1039
1115
  return _slicedToArray(e, 1)[0];
1040
- }))), isThenable(f) ? o && r.throwOnBadSyncType ? function () {
1116
+ }))), isThenable(h) ? c && a.throwOnBadSyncType ? function () {
1041
1117
  throw new TypeError("Sync method requested but async result obtained");
1042
- }() : hasConstructorOf(f, e) ? f.p.then(checkUndefined) : f : !o && r.throwOnBadSyncType ? function () {
1118
+ }() : hasConstructorOf(h, e) ? h.p.then(checkUndefined) : h : !c && a.throwOnBadSyncType ? function () {
1043
1119
  throw new TypeError("Async method requested but sync result obtained");
1044
- }() : o ? checkUndefined(f) : Promise.resolve(checkUndefined(f));
1120
+ }() : c ? checkUndefined(h) : Promise.resolve(checkUndefined(h));
1045
1121
  }
1046
1122
  }, {
1047
1123
  key: "reviveSync",
@@ -1064,89 +1140,96 @@
1064
1140
  }, {
1065
1141
  key: "register",
1066
1142
  value: function register(e, t) {
1067
- var r = this;
1068
- t = t || {};
1069
- var n = function R(e) {
1070
- i$1(e) ? e.forEach(function (e) {
1071
- return R(e);
1072
- }) : e && a(e).forEach(function (n) {
1073
- if ("#" === n) throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");
1074
- if (l.includes(n)) throw new TypeError("Plain JSON object types are reserved as type names");
1075
- var o = e[n],
1076
- a = o && o.testPlainObjects ? r.plainObjectReplacers : r.nonplainObjectReplacers,
1077
- c = a.filter(function (e) {
1078
- return e.type === n;
1079
- });
1080
- if (c.length && (a.splice(a.indexOf(c[0]), 1), delete r.revivers[n], delete r.types[n]), "function" == typeof o) {
1081
- var s = o;
1082
- o = {
1083
- test: function test(e) {
1084
- return e && e.constructor === s;
1085
- },
1086
- replace: function replace(e) {
1087
- return _objectSpread2({}, e);
1088
- },
1089
- revive: function revive(e) {
1090
- return Object.assign(Object.create(s.prototype), e);
1143
+ var r = this,
1144
+ o = null != t ? t : {},
1145
+ a = function R(e) {
1146
+ i$1(e) ? e.forEach(function (e) {
1147
+ return R(e);
1148
+ }) : n(e).forEach(function (t) {
1149
+ var n;
1150
+ if ("#" === t) throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");
1151
+ if (u.includes(t)) throw new TypeError("Plain JSON object types are reserved as type names");
1152
+ var a = e[t],
1153
+ c = a && "function" != typeof a && !Array.isArray(a) && a.testPlainObjects ? r.plainObjectReplacers : r.nonplainObjectReplacers,
1154
+ s = c.filter(function (e) {
1155
+ return e.type === t;
1156
+ });
1157
+ if (s.length && (c.splice(c.indexOf(s[0]), 1), delete r.revivers[t], delete r.types[t]), "function" == typeof a) {
1158
+ var y = a;
1159
+ a = {
1160
+ test: function test(e) {
1161
+ return e && e.constructor === y;
1162
+ },
1163
+ replace: function replace(e) {
1164
+ return _objectSpread2({}, e);
1165
+ },
1166
+ revive: function revive(e) {
1167
+ return Object.assign(Object.create(y.prototype), e);
1168
+ }
1169
+ };
1170
+ } else if (i$1(a)) {
1171
+ var p = _slicedToArray(a, 3);
1172
+ a = {
1173
+ test: p[0],
1174
+ replace: p[1],
1175
+ revive: p[2]
1176
+ };
1177
+ }
1178
+ if (null !== (n = a) && void 0 !== n && n.test) {
1179
+ var l = {
1180
+ type: t,
1181
+ test: a.test.bind(a)
1182
+ };
1183
+ a.replace && (l.replace = a.replace.bind(a)), a.replaceAsync && (l.replaceAsync = a.replaceAsync.bind(a));
1184
+ var f = "number" == typeof o.fallback ? o.fallback : o.fallback ? 0 : Number.POSITIVE_INFINITY;
1185
+ if (a.testPlainObjects ? r.plainObjectReplacers.splice(f, 0, l) : r.nonplainObjectReplacers.splice(f, 0, l), a.revive || a.reviveAsync) {
1186
+ var v = {};
1187
+ a.revive && (v.revive = a.revive.bind(a)), a.reviveAsync && (v.reviveAsync = a.reviveAsync.bind(a)), r.revivers[t] = [v, {
1188
+ plain: a.testPlainObjects
1189
+ }];
1091
1190
  }
1092
- };
1093
- } else if (i$1(o)) {
1094
- var u = _slicedToArray(o, 3);
1095
- o = {
1096
- test: u[0],
1097
- replace: u[1],
1098
- revive: u[2]
1099
- };
1100
- }
1101
- if (o && o.test) {
1102
- var p = {
1103
- type: n,
1104
- test: o.test.bind(o)
1105
- };
1106
- o.replace && (p.replace = o.replace.bind(o)), o.replaceAsync && (p.replaceAsync = o.replaceAsync.bind(o));
1107
- var y = "number" == typeof t.fallback ? t.fallback : t.fallback ? 0 : Number.POSITIVE_INFINITY;
1108
- if (o.testPlainObjects ? r.plainObjectReplacers.splice(y, 0, p) : r.nonplainObjectReplacers.splice(y, 0, p), o.revive || o.reviveAsync) {
1109
- var f = {};
1110
- o.revive && (f.revive = o.revive.bind(o)), o.reviveAsync && (f.reviveAsync = o.reviveAsync.bind(o)), r.revivers[n] = [f, {
1111
- plain: o.testPlainObjects
1112
- }];
1191
+ r.types[t] = a;
1113
1192
  }
1114
- r.types[n] = o;
1115
- }
1116
- });
1117
- };
1193
+ });
1194
+ };
1118
1195
  return [].concat(e).forEach(function (e) {
1119
- return n(e);
1196
+ return a(e);
1120
1197
  }), this;
1121
1198
  }
1122
1199
  }]), Typeson;
1123
1200
  }(),
1124
- p = _createClass(function Undefined() {
1201
+ s = _createClass(function Undefined() {
1125
1202
  _classCallCheck(this, Undefined);
1126
1203
  });
1127
- p.__typeson__type__ = "TypesonUndefined";
1128
- var l = ["null", "boolean", "number", "string", "array", "object"];
1204
+ s.__typeson__type__ = "TypesonUndefined";
1205
+ var u = ["null", "boolean", "number", "string", "array", "object"];
1129
1206
 
1130
1207
  /*
1131
1208
  * base64-arraybuffer
1132
1209
  * https://github.com/niklasvh/base64-arraybuffer
1133
1210
  *
1134
- * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen
1211
+ * Copyright (c) 2017-2023 Brett Zamir, 2012 Niklas von Hertzen
1135
1212
  * Licensed under the MIT license.
1136
1213
  */
1137
- var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.
1138
1214
 
1215
+ /**
1216
+ * @typedef {number} Integer
1217
+ */
1218
+
1219
+ var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
1220
+
1221
+ // Use a lookup table to find the index.
1139
1222
  var lookup = new Uint8Array(256);
1140
1223
  for (var i = 0; i < chars.length; i++) {
1141
- lookup[chars.codePointAt(i)] = i;
1224
+ lookup[/** @type {number} */chars.codePointAt(i)] = i;
1142
1225
  }
1226
+
1143
1227
  /**
1144
1228
  * @param {ArrayBuffer} arraybuffer
1145
- * @param {Integer} byteOffset
1146
- * @param {Integer} lngth
1229
+ * @param {Integer} [byteOffset]
1230
+ * @param {Integer} [lngth]
1147
1231
  * @returns {string}
1148
1232
  */
1149
-
1150
1233
  var encode = function encode(arraybuffer, byteOffset, lngth) {
1151
1234
  if (lngth === null || lngth === undefined) {
1152
1235
  lngth = arraybuffer.byteLength; // Needed for Safari
@@ -1170,13 +1253,16 @@
1170
1253
  }
1171
1254
  return base64;
1172
1255
  };
1256
+
1173
1257
  /**
1174
1258
  * @param {string} base64
1175
1259
  * @returns {ArrayBuffer}
1176
1260
  */
1177
-
1178
1261
  var decode = function decode(base64) {
1179
1262
  var len = base64.length;
1263
+ if (len % 4) {
1264
+ throw new Error('Bad base64 length: not divisible by four');
1265
+ }
1180
1266
  var bufferLength = base64.length * 0.75;
1181
1267
  var p = 0;
1182
1268
  var encoded1, encoded2, encoded3, encoded4;
@@ -1189,10 +1275,12 @@
1189
1275
  var arraybuffer = new ArrayBuffer(bufferLength),
1190
1276
  bytes = new Uint8Array(arraybuffer);
1191
1277
  for (var _i2 = 0; _i2 < len; _i2 += 4) {
1192
- encoded1 = lookup[base64.codePointAt(_i2)];
1193
- encoded2 = lookup[base64.codePointAt(_i2 + 1)];
1194
- encoded3 = lookup[base64.codePointAt(_i2 + 2)];
1195
- encoded4 = lookup[base64.codePointAt(_i2 + 3)];
1278
+ // We know the result will not be undefined, as we have a text
1279
+ // length divisible by four
1280
+ encoded1 = lookup[/** @type {number} */base64.codePointAt(_i2)];
1281
+ encoded2 = lookup[/** @type {number} */base64.codePointAt(_i2 + 1)];
1282
+ encoded3 = lookup[/** @type {number} */base64.codePointAt(_i2 + 2)];
1283
+ encoded4 = lookup[/** @type {number} */base64.codePointAt(_i2 + 3)];
1196
1284
  bytes[p++] = encoded1 << 2 | encoded2 >> 4;
1197
1285
  bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
1198
1286
  bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
@@ -1200,12 +1288,20 @@
1200
1288
  return arraybuffer;
1201
1289
  };
1202
1290
 
1291
+ /**
1292
+ * @type {import('typeson').TypeSpecSet}
1293
+ */
1203
1294
  var arraybuffer = {
1204
1295
  arraybuffer: {
1205
1296
  test: function test(x) {
1206
1297
  return toStringTag(x) === 'ArrayBuffer';
1207
1298
  },
1208
- replace: function replace(b, stateObj) {
1299
+ replace: function replace(b,
1300
+ /**
1301
+ * @type {import('typeson').StateObject &
1302
+ * {buffers?: ArrayBuffer[]}}
1303
+ */
1304
+ stateObj) {
1209
1305
  if (!stateObj.buffers) {
1210
1306
  stateObj.buffers = [];
1211
1307
  }
@@ -1218,14 +1314,23 @@
1218
1314
  stateObj.buffers.push(b);
1219
1315
  return encode(b);
1220
1316
  },
1221
- revive: function revive(b64, stateObj) {
1317
+ revive: function revive(b64,
1318
+ /**
1319
+ * @type {import('typeson').StateObject &
1320
+ * {buffers?: ArrayBuffer[]}}
1321
+ */
1322
+ stateObj) {
1222
1323
  if (!stateObj.buffers) {
1223
1324
  stateObj.buffers = [];
1224
1325
  }
1225
1326
  if (_typeof$1(b64) === 'object') {
1226
- return stateObj.buffers[b64.index];
1327
+ return stateObj.buffers[
1328
+ /**
1329
+ * @type {{index: import('typeson').Integer}}
1330
+ */
1331
+ b64.index];
1227
1332
  }
1228
- var buffer = decode(b64);
1333
+ var buffer = decode( /** @type {string} */b64);
1229
1334
  stateObj.buffers.push(buffer);
1230
1335
  return buffer;
1231
1336
  }
@@ -1234,6 +1339,9 @@
1234
1339
 
1235
1340
  // See also typed-arrays!
1236
1341
 
1342
+ /**
1343
+ * @type {import('typeson').TypeSpecSet}
1344
+ */
1237
1345
  var bigintObject = {
1238
1346
  bigintObject: {
1239
1347
  test: function test(x) {
@@ -1243,27 +1351,33 @@
1243
1351
  revive: function revive(s) {
1244
1352
  // Filed this to avoid error: https://github.com/eslint/eslint/issues/11810
1245
1353
  // eslint-disable-next-line no-new-object
1246
- return new Object(BigInt(s));
1354
+ return new Object(BigInt( /** @type {string} */s));
1247
1355
  }
1248
1356
  }
1249
1357
  };
1250
1358
 
1251
1359
  /* globals BigInt */
1252
1360
 
1361
+ /**
1362
+ * @type {import('typeson').TypeSpecSet}
1363
+ */
1253
1364
  var bigint = {
1254
1365
  bigint: {
1255
1366
  test: function test(x) {
1256
1367
  return typeof x === 'bigint';
1257
1368
  },
1258
1369
  replace: String,
1259
- revive: BigInt
1370
+ // eslint-disable-next-line unicorn/prefer-native-coercion-functions
1371
+ revive: function revive(s) {
1372
+ return BigInt( /** @type {string} */s);
1373
+ }
1260
1374
  }
1261
1375
  };
1262
1376
 
1263
1377
  /**
1264
1378
  * Not currently in use internally, but provided for parity.
1265
1379
  * @param {ArrayBuffer} buf
1266
- * @returns {Uint8Array}
1380
+ * @returns {string}
1267
1381
  */
1268
1382
 
1269
1383
  /**
@@ -1328,6 +1442,10 @@
1328
1442
  }
1329
1443
 
1330
1444
  /* globals XMLHttpRequest, Blob, FileReader */
1445
+
1446
+ /**
1447
+ * @type {import('typeson').TypeSpecSet}
1448
+ */
1331
1449
  var blob = {
1332
1450
  blob: {
1333
1451
  test: function test(x) {
@@ -1350,9 +1468,9 @@
1350
1468
  stringContents: req.responseText
1351
1469
  };
1352
1470
  },
1353
- revive: function revive(_ref) {
1354
- var type = _ref.type,
1355
- stringContents = _ref.stringContents;
1471
+ revive: function revive(obj) {
1472
+ var type = /** @type {{type: string, stringContents: string}} */obj.type,
1473
+ stringContents = /** @type {{type: string, stringContents: string}} */obj.stringContents;
1356
1474
  return new Blob([string2arraybuffer(stringContents)], {
1357
1475
  type: type
1358
1476
  });
@@ -1410,7 +1528,14 @@
1410
1528
  });
1411
1529
  }
1412
1530
 
1531
+ /**
1532
+ * @type {{[key: (symbol|string)]: any}}
1533
+ */
1413
1534
  var cloneableObjectsByUUID = {};
1535
+
1536
+ /**
1537
+ * @type {import('typeson').TypeSpecSet}
1538
+ */
1414
1539
  var cloneable = {
1415
1540
  cloneable: {
1416
1541
  test: function test(x) {
@@ -1425,20 +1550,24 @@
1425
1550
  encapsulated: encapsulated
1426
1551
  };
1427
1552
  },
1428
- revive: function revive(_ref) {
1429
- var uuid = _ref.uuid,
1430
- encapsulated = _ref.encapsulated;
1553
+ revive: function revive(obj) {
1554
+ var uuid = /** @type {{uuid: string, encapsulated: any}} */obj.uuid,
1555
+ encapsulated = /** @type {{uuid: string, encapsulated: any}} */obj.encapsulated;
1431
1556
  return cloneableObjectsByUUID[uuid][Symbol["for"]('cloneRevive')](encapsulated);
1432
1557
  }
1433
1558
  }
1434
1559
  };
1435
1560
 
1561
+ /**
1562
+ * @type {import('typeson').TypeSpecSet}
1563
+ */
1436
1564
  var cryptokey = {
1437
1565
  cryptokey: {
1438
1566
  test: function test(x) {
1439
1567
  return toStringTag(x) === 'CryptoKey' && x.extractable;
1440
1568
  },
1441
- replaceAsync: function replaceAsync(key) {
1569
+ replaceAsync: function replaceAsync( /** @type {CryptoKey} */
1570
+ key) {
1442
1571
  return new e( /*#__PURE__*/function () {
1443
1572
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {
1444
1573
  var jwk;
@@ -1474,21 +1603,54 @@
1474
1603
  };
1475
1604
  }());
1476
1605
  },
1477
- revive: function revive(_ref2) {
1478
- var jwk = _ref2.jwk,
1479
- algorithm = _ref2.algorithm,
1480
- usages = _ref2.usages;
1606
+ revive: function revive(obj) {
1607
+ var jwk =
1608
+ /**
1609
+ * @type {{
1610
+ * jwk: JsonWebKey,
1611
+ * algorithm: KeyAlgorithm,
1612
+ * usages: KeyUsage[]
1613
+ * }}
1614
+ */
1615
+ obj.jwk,
1616
+ algorithm =
1617
+ /**
1618
+ * @type {{
1619
+ * jwk: JsonWebKey,
1620
+ * algorithm: KeyAlgorithm,
1621
+ * usages: KeyUsage[]
1622
+ * }}
1623
+ */
1624
+ obj.algorithm,
1625
+ usages =
1626
+ /**
1627
+ * @type {{
1628
+ * jwk: JsonWebKey,
1629
+ * algorithm: KeyAlgorithm,
1630
+ * usages: KeyUsage[]
1631
+ * }}
1632
+ */
1633
+ obj.usages;
1481
1634
  return crypto.subtle.importKey('jwk', jwk, algorithm, true, usages);
1482
1635
  }
1483
1636
  }
1484
1637
  };
1485
1638
 
1639
+ /**
1640
+ * @type {import('typeson').TypeSpecSet}
1641
+ */
1486
1642
  var dataview = {
1487
1643
  dataview: {
1488
1644
  test: function test(x) {
1489
1645
  return toStringTag(x) === 'DataView';
1490
1646
  },
1491
- replace: function replace(_ref, stateObj) {
1647
+ replace: function replace(_ref,
1648
+ /**
1649
+ * @type {import('typeson').StateObject & {
1650
+ * buffers?: ArrayBuffer[]
1651
+ * }}
1652
+ */
1653
+ stateObj) {
1492
1654
  var buffer = _ref.buffer,
1493
1655
  byteOffset = _ref.byteOffset,
1494
1656
  byteLength = _ref.byteLength;
@@ -1510,7 +1672,13 @@
1510
1672
  byteLength: byteLength
1511
1673
  };
1512
1674
  },
1513
- revive: function revive(b64Obj, stateObj) {
1675
+ revive: function revive(b64Obj,
1676
+ /**
1677
+ * @type {import('typeson').StateObject & {
1678
+ * buffers?: ArrayBuffer[]
1679
+ * }}
1680
+ */
1681
+ stateObj) {
1514
1682
  if (!stateObj.buffers) {
1515
1683
  stateObj.buffers = [];
1516
1684
  }
@@ -1530,6 +1698,9 @@
1530
1698
  }
1531
1699
  };
1532
1700
 
1701
+ /**
1702
+ * @type {import('typeson').TypeSpecSet}
1703
+ */
1533
1704
  var date = {
1534
1705
  date: {
1535
1706
  test: function test(x) {
@@ -1551,6 +1722,9 @@
1551
1722
  }
1552
1723
  };
1553
1724
 
1725
+ /**
1726
+ * @type {import('typeson').TypeSpecSet}
1727
+ */
1554
1728
  var error = {
1555
1729
  error: {
1556
1730
  test: function test(x) {
@@ -1575,16 +1749,34 @@
1575
1749
  };
1576
1750
  },
1577
1751
  revive: function revive(obj) {
1578
- var e = new Error(obj.message);
1579
- ['name', 'cause', 'stack', 'fileName', 'lineNumber', 'columnNumber'].forEach(function (prop) {
1580
- e[prop] = obj[prop];
1581
- });
1752
+ var e =
1753
+ /**
1754
+ * @type {{
1755
+ * name: string,
1756
+ * cause: Error,
1757
+ * stack: string,
1758
+ * fileName?: string,
1759
+ * lineNumber?: import('typeson').Integer,
1760
+ * columnNumber?: import('typeson').Integer
1761
+ * }}
1762
+ */
1763
+ new Error(obj.message);
1764
+ e.name = obj.name;
1765
+ e.cause = obj.cause;
1766
+ e.stack = obj.stack;
1767
+ e.fileName = obj.fileName;
1768
+ e.lineNumber = obj.lineNumber;
1769
+ e.columnNumber = obj.columnNumber;
1582
1770
  return e;
1583
1771
  }
1584
1772
  }
1585
1773
  };
1586
1774
 
1587
1775
  /* globals InternalError */
1776
+
1777
+ /**
1778
+ * @type {import('typeson').TypeSpecSet}
1779
+ */
1588
1780
  var errors = {};
1589
1781
 
1590
1782
  // JS standard
@@ -1601,11 +1793,22 @@
1601
1793
  // @ts-ignore Non-standard
1602
1794
  typeof InternalError === 'function' && create$2(InternalError);
1603
1795
 
1796
+ /* eslint-disable jsdoc/valid-types -- https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131 */
1797
+ /**
1798
+ * Non-standard.
1799
+ * @typedef {{
1800
+ * new (message?: string, options?: ErrorOptions): EvalError;
1801
+ * (message?: string, options?: ErrorOptions): EvalError;
1802
+ * }} InternalErrorConstructor
1803
+ */
1804
+ /* eslint-enable jsdoc/valid-types -- https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131 */
1805
+
1604
1806
  /**
1605
1807
  * Comprises all built-in errors.
1606
- * @param {
1607
- * TypeError|RangeError|SyntaxError|ReferenceError|EvalError|URIError|
1608
- * AggregateError|InternalError
1808
+ * @param {TypeErrorConstructor|RangeErrorConstructor|
1809
+ * SyntaxErrorConstructor|ReferenceErrorConstructor|
1810
+ * EvalErrorConstructor|URIErrorConstructor|
1811
+ * AggregateErrorConstructor|InternalErrorConstructor
1609
1812
  * } Ctor
1610
1813
  * @returns {void}
1611
1814
  */
@@ -1636,13 +1839,36 @@
1636
1839
  },
1637
1840
  revive: function revive(obj) {
1638
1841
  var isAggregateError = typeof AggregateError !== 'undefined' && Ctor === AggregateError;
1639
- var e = isAggregateError ? new Ctor(obj.errors, obj.message) : new Ctor(obj.message);
1640
- ['name', 'cause', 'stack', 'fileName', 'lineNumber', 'columnNumber'].forEach(function (prop) {
1641
- e[prop] = obj[prop];
1642
- });
1842
+ var e =
1843
+ /**
1844
+ * @type {{
1845
+ * name: string,
1846
+ * cause: Error,
1847
+ * stack: string,
1848
+ * fileName?: string,
1849
+ * lineNumber?: import('typeson').Integer,
1850
+ * columnNumber?: import('typeson').Integer
1851
+ * }}
1852
+ */
1853
+ isAggregateError ? new /** @type {AggregateErrorConstructor} */
1854
+ Ctor(obj.errors, obj.message) : new
1855
+ /**
1856
+ * @type {TypeErrorConstructor|RangeErrorConstructor|
1857
+ * SyntaxErrorConstructor|ReferenceErrorConstructor|
1858
+ * EvalErrorConstructor|URIErrorConstructor|
1859
+ * InternalErrorConstructor}
1860
+ */
1861
+ Ctor(obj.message);
1862
+ e.name = obj.name;
1863
+ e.cause = obj.cause;
1864
+ e.stack = obj.stack;
1865
+ e.fileName = obj.fileName;
1866
+ e.lineNumber = obj.lineNumber;
1867
+ e.columnNumber = obj.columnNumber;
1868
+
1643
1869
  /* c8 ignore next 6 */
1644
1870
  if (isAggregateError) {
1645
- e.errors = obj.errors;
1871
+ /** @type {AggregateError} */e.errors = obj.errors;
1646
1872
  }
1647
1873
  return e;
1648
1874
  }
@@ -1650,6 +1876,10 @@
1650
1876
  }
1651
1877
 
1652
1878
  /* globals XMLHttpRequest, File, FileReader */
1879
+
1880
+ /**
1881
+ * @type {import('typeson').TypeSpecSet}
1882
+ */
1653
1883
  var file = {
1654
1884
  file: {
1655
1885
  test: function test(x) {
@@ -1712,6 +1942,9 @@
1712
1942
  }
1713
1943
  };
1714
1944
 
1945
+ /**
1946
+ * @type {import('typeson').TypeSpecSet}
1947
+ */
1715
1948
  var filelist = {
1716
1949
  file: file.file,
1717
1950
  filelist: {
@@ -1740,7 +1973,7 @@
1740
1973
  this.length = this._files.length;
1741
1974
  }
1742
1975
  /**
1743
- * @param {Integer} index
1976
+ * @param {import('typeson').Integer} index
1744
1977
  * @returns {File}
1745
1978
  */
1746
1979
  _createClass$1(FileList, [{
@@ -1766,7 +1999,9 @@
1766
1999
  }
1767
2000
  };
1768
2001
 
1769
- /* globals createImageBitmap */
2002
+ /**
2003
+ * @type {import('typeson').TypeSpecSet}
2004
+ */
1770
2005
  var imagebitmap = {
1771
2006
  imagebitmap: {
1772
2007
  test: function test(x) {
@@ -1777,7 +2012,8 @@
1777
2012
  },
1778
2013
  replace: function replace(bm) {
1779
2014
  var canvas = document.createElement('canvas');
1780
- var ctx = canvas.getContext('2d');
2015
+ var ctx = /** @type {CanvasRenderingContext2D} */
2016
+ canvas.getContext('2d');
1781
2017
  ctx.drawImage(bm, 0, 0);
1782
2018
  // Although `width` and `height` are part of `ImageBitMap`,
1783
2019
  // these will be auto-created for us when reviving with the
@@ -1798,7 +2034,8 @@
1798
2034
  return req.responseText;
1799
2035
  */
1800
2036
  var canvas = document.createElement('canvas');
1801
- var ctx = canvas.getContext('2d');
2037
+ var ctx = /** @type {CanvasRenderingContext2D} */
2038
+ canvas.getContext('2d');
1802
2039
  var img = document.createElement('img');
1803
2040
  // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577
1804
2041
  img.addEventListener('load', function () {
@@ -1811,18 +2048,51 @@
1811
2048
  },
1812
2049
  reviveAsync: function reviveAsync(o) {
1813
2050
  var canvas = document.createElement('canvas');
1814
- var ctx = canvas.getContext('2d');
2051
+ var ctx = /** @type {CanvasRenderingContext2D} */
2052
+ canvas.getContext('2d');
1815
2053
  var img = document.createElement('img');
1816
2054
  // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577
1817
2055
  img.addEventListener('load', function () {
1818
2056
  ctx.drawImage(img, 0, 0);
1819
2057
  });
1820
2058
  img.src = o; // o.dataURL;
1821
- return createImageBitmap(canvas); // Returns a promise
2059
+
2060
+ return new e( /*#__PURE__*/function () {
2061
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {
2062
+ var resp;
2063
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
2064
+ while (1) switch (_context.prev = _context.next) {
2065
+ case 0:
2066
+ _context.prev = 0;
2067
+ _context.next = 3;
2068
+ return createImageBitmap(canvas);
2069
+ case 3:
2070
+ resp = _context.sent;
2071
+ resolve(resp);
2072
+ /* c8 ignore next 3 */
2073
+ _context.next = 10;
2074
+ break;
2075
+ case 7:
2076
+ _context.prev = 7;
2077
+ _context.t0 = _context["catch"](0);
2078
+ reject(_context.t0);
2079
+ case 10:
2080
+ case "end":
2081
+ return _context.stop();
2082
+ }
2083
+ }, _callee, null, [[0, 7]]);
2084
+ }));
2085
+ return function (_x, _x2) {
2086
+ return _ref.apply(this, arguments);
2087
+ };
2088
+ }());
1822
2089
  }
1823
2090
  }
1824
2091
  };
1825
2092
 
2093
+ /**
2094
+ * @type {import('typeson').TypeSpecSet}
2095
+ */
1826
2096
  var imagedata = {
1827
2097
  imagedata: {
1828
2098
  test: function test(x) {
@@ -1842,6 +2112,9 @@
1842
2112
  }
1843
2113
  };
1844
2114
 
2115
+ /**
2116
+ * @type {import('typeson').TypeSpecSet}
2117
+ */
1845
2118
  var infinity = {
1846
2119
  infinity: {
1847
2120
  test: function test(x) {
@@ -1856,6 +2129,9 @@
1856
2129
  }
1857
2130
  };
1858
2131
 
2132
+ /**
2133
+ * @type {import('typeson').Spec}
2134
+ */
1859
2135
  var IntlCollator = {
1860
2136
  test: function test(x) {
1861
2137
  return hasConstructorOf(x, Intl.Collator);
@@ -1867,6 +2143,10 @@
1867
2143
  return new Intl.Collator(options.locale, options);
1868
2144
  }
1869
2145
  };
2146
+
2147
+ /**
2148
+ * @type {import('typeson').Spec}
2149
+ */
1870
2150
  var IntlDateTimeFormat = {
1871
2151
  test: function test(x) {
1872
2152
  return hasConstructorOf(x, Intl.DateTimeFormat);
@@ -1878,6 +2158,10 @@
1878
2158
  return new Intl.DateTimeFormat(options.locale, options);
1879
2159
  }
1880
2160
  };
2161
+
2162
+ /**
2163
+ * @type {import('typeson').Spec}
2164
+ */
1881
2165
  var IntlNumberFormat = {
1882
2166
  test: function test(x) {
1883
2167
  return hasConstructorOf(x, Intl.NumberFormat);
@@ -1895,6 +2179,9 @@
1895
2179
  IntlNumberFormat: IntlNumberFormat
1896
2180
  };
1897
2181
 
2182
+ /**
2183
+ * @type {import('typeson').TypeSpecSet}
2184
+ */
1898
2185
  var map = {
1899
2186
  map: {
1900
2187
  test: function test(x) {
@@ -1909,6 +2196,9 @@
1909
2196
  }
1910
2197
  };
1911
2198
 
2199
+ /**
2200
+ * @type {import('typeson').TypeSpecSet}
2201
+ */
1912
2202
  var nan = {
1913
2203
  nan: {
1914
2204
  test: function test(x) {
@@ -1923,6 +2213,9 @@
1923
2213
  }
1924
2214
  };
1925
2215
 
2216
+ /**
2217
+ * @type {import('typeson').TypeSpecSet}
2218
+ */
1926
2219
  var negativeInfinity = {
1927
2220
  negativeInfinity: {
1928
2221
  test: function test(x) {
@@ -1937,6 +2230,27 @@
1937
2230
  }
1938
2231
  };
1939
2232
 
2233
+ /**
2234
+ * @type {import('typeson').TypeSpecSet}
2235
+ */
2236
+ var negativeZero = {
2237
+ negativeZero: {
2238
+ test: function test(x) {
2239
+ return Object.is(x, -0);
2240
+ },
2241
+ replace: function replace(n) {
2242
+ // Just adding 0 here for minimized space; will still revive as -0
2243
+ return 0;
2244
+ },
2245
+ revive: function revive(s) {
2246
+ return -0;
2247
+ }
2248
+ }
2249
+ };
2250
+
2251
+ /**
2252
+ * @type {import('typeson').TypeSpecSet}
2253
+ */
1940
2254
  var nonbuiltinIgnore = {
1941
2255
  nonbuiltinIgnore: {
1942
2256
  test: function test(x) {
@@ -1952,6 +2266,9 @@
1952
2266
  }
1953
2267
  };
1954
2268
 
2269
+ /**
2270
+ * @type {import('typeson').TypeSpecSet}
2271
+ */
1955
2272
  var primitiveObjects = {
1956
2273
  // String Object (not primitive string which need no type spec)
1957
2274
  StringObject: {
@@ -1989,6 +2306,9 @@
1989
2306
  }
1990
2307
  };
1991
2308
 
2309
+ /**
2310
+ * @type {import('typeson').TypeSpecSet}
2311
+ */
1992
2312
  var regexp = {
1993
2313
  regexp: {
1994
2314
  test: function test(x) {
@@ -2008,7 +2328,14 @@
2008
2328
  }
2009
2329
  };
2010
2330
 
2331
+ /**
2332
+ * @type {{[key: string]: any}}
2333
+ */
2011
2334
  var resurrectableObjectsByUUID = {};
2335
+
2336
+ /**
2337
+ * @type {import('typeson').TypeSpecSet}
2338
+ */
2012
2339
  var resurrectable = {
2013
2340
  resurrectable: {
2014
2341
  test: function test(x) {
@@ -2025,6 +2352,9 @@
2025
2352
  }
2026
2353
  };
2027
2354
 
2355
+ /**
2356
+ * @type {import('typeson').TypeSpecSet}
2357
+ */
2028
2358
  var set = {
2029
2359
  set: {
2030
2360
  test: function test(x) {
@@ -2042,12 +2372,18 @@
2042
2372
  /* eslint-env browser, node */
2043
2373
 
2044
2374
  // Support all kinds of typed arrays (views of ArrayBuffers)
2375
+
2376
+ /**
2377
+ * @type {import('typeson').TypeSpecSet}
2378
+ */
2045
2379
  var typedArraysSocketIO = {};
2046
2380
 
2047
2381
  /**
2048
- * @param {
2049
- * Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|
2050
- * Uint32Array|Float32Array|Float64Array
2382
+ * @param {Int8ArrayConstructor|Uint8ArrayConstructor|
2383
+ * Uint8ClampedArrayConstructor|Int16ArrayConstructor|
2384
+ * Uint16ArrayConstructor|Int32ArrayConstructor|
2385
+ * Uint32ArrayConstructor|Float32ArrayConstructor|
2386
+ * Float64ArrayConstructor
2051
2387
  * } TypedArray
2052
2388
  * @returns {void}
2053
2389
  */
@@ -2086,22 +2422,42 @@
2086
2422
  }
2087
2423
 
2088
2424
  /* eslint-env browser, node */
2425
+
2426
+ /**
2427
+ * @type {import('typeson').TypeSpecSet}
2428
+ */
2089
2429
  var typedArrays = {};
2090
2430
 
2091
2431
  /**
2092
- * @param {
2093
- * Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|
2094
- * Uint32Array|Float32Array|Float64Array
2095
- * } TypedArray
2432
+ * @typedef {Int8ArrayConstructor|Uint8ArrayConstructor|
2433
+ * Uint8ClampedArrayConstructor|
2434
+ * Int16ArrayConstructor|Uint16ArrayConstructor|
2435
+ * Int32ArrayConstructor|Uint32ArrayConstructor|
2436
+ * Float32ArrayConstructor|
2437
+ * Float64ArrayConstructor} TypedArrayConstructor
2438
+ */
2439
+
2440
+ /**
2441
+ * @param {TypedArrayConstructor} TypedArray
2096
2442
  * @returns {void}
2097
2443
  */
2098
2444
  function create(TypedArray) {
2099
- var typeName = TypedArray.name;
2445
+ var typeName =
2446
+ /**
2447
+ * @type {TypedArrayConstructor & {name: string}}
2448
+ */
2449
+ TypedArray.name;
2100
2450
  typedArrays[typeName.toLowerCase()] = {
2101
2451
  test: function test(x) {
2102
2452
  return toStringTag(x) === typeName;
2103
2453
  },
2104
- replace: function replace(_ref, stateObj) {
2454
+ replace: function replace(_ref,
2455
+ /**
2456
+ * @type {import('typeson').StateObject & {
2457
+ * buffers?: ArrayBuffer[]
2458
+ * }}
2459
+ */
2460
+ stateObj) {
2105
2461
  var buffer = _ref.buffer,
2106
2462
  byteOffset = _ref.byteOffset,
2107
2463
  l = _ref.length;
@@ -2123,7 +2479,13 @@
2123
2479
  length: l
2124
2480
  };
2125
2481
  },
2126
- revive: function revive(b64Obj, stateObj) {
2482
+ revive: function revive(b64Obj,
2483
+ /**
2484
+ * @type {import('typeson').StateObject & {
2485
+ * buffers?: ArrayBuffer[]
2486
+ * }}
2487
+ */
2488
+ stateObj) {
2127
2489
  if (!stateObj.buffers) {
2128
2490
  stateObj.buffers = [];
2129
2491
  }
@@ -2151,6 +2513,10 @@
2151
2513
  }
2152
2514
 
2153
2515
  // This does not preserve `undefined` in sparse arrays; see the `undef`
2516
+
2517
+ /**
2518
+ * @type {import('typeson').TypeSpecSet}
2519
+ */
2154
2520
  var undef$1 = {
2155
2521
  undef: {
2156
2522
  test: function test(x, stateObj) {
@@ -2159,14 +2525,17 @@
2159
2525
  replace: function replace(n) {
2160
2526
  return 0;
2161
2527
  },
2162
- revive: function revive(s) {
2528
+ revive: function revive(s$1) {
2163
2529
  // Will add `undefined` (returning `undefined` would instead
2164
2530
  // avoid explicitly setting)
2165
- return new p();
2531
+ return new s();
2166
2532
  }
2167
2533
  }
2168
2534
  };
2169
2535
 
2536
+ /**
2537
+ * @type {import('typeson').TypeSpecSet}
2538
+ */
2170
2539
  var userObject = {
2171
2540
  userObject: {
2172
2541
  test: function test(x, stateObj) {
@@ -2181,6 +2550,9 @@
2181
2550
  }
2182
2551
  };
2183
2552
 
2553
+ /**
2554
+ * @type {import('typeson').Preset}
2555
+ */
2184
2556
  var arrayNonindexKeys = [{
2185
2557
  arrayNonindexKeys: {
2186
2558
  testPlainObjects: true,
@@ -2217,13 +2589,17 @@
2217
2589
  if (Array.isArray(o)) {
2218
2590
  return o;
2219
2591
  }
2592
+
2593
+ /**
2594
+ * @type {{[key: string]: any}}
2595
+ */
2220
2596
  var arr = [];
2221
2597
  // No map here as may be a sparse array (including
2222
2598
  // with `length` set)
2223
- // Todo: Reenable when Node `engines` >= 7
2224
- // Object.entries(o).forEach(([key, val]) => {
2225
- Object.keys(o).forEach(function (key) {
2226
- var val = o[key];
2599
+ Object.entries(o).forEach(function (_ref) {
2600
+ var _ref2 = _slicedToArray$1(_ref, 2),
2601
+ key = _ref2[0],
2602
+ val = _ref2[1];
2227
2603
  arr[key] = val;
2228
2604
  });
2229
2605
  return arr;
@@ -2243,7 +2619,10 @@
2243
2619
  }
2244
2620
  }];
2245
2621
 
2246
- var specialNumbers = [nan, infinity, negativeInfinity];
2622
+ /**
2623
+ * @type {import('typeson').Preset}
2624
+ */
2625
+ var specialNumbers = [nan, infinity, negativeInfinity, negativeZero];
2247
2626
 
2248
2627
  /* This preset includes types that are built-in into the JavaScript
2249
2628
  language itself, this should work universally.
@@ -2260,6 +2639,10 @@
2260
2639
 
2261
2640
  Symbols are similarly not included.
2262
2641
  */
2642
+
2643
+ /**
2644
+ * @type {import('typeson').Preset}
2645
+ */
2263
2646
  var expObj$1 = [undef$1,
2264
2647
  // ES5
2265
2648
  arrayNonindexKeys, primitiveObjects, specialNumbers, date, error, errors, regexp].concat(
@@ -2288,8 +2671,15 @@
2288
2671
  This preset will only include the Error types and you can register your
2289
2672
  custom types after having registered these.
2290
2673
  */
2674
+
2675
+ /**
2676
+ * @type {import('typeson').Preset}
2677
+ */
2291
2678
  var postmessage = [error, errors];
2292
2679
 
2680
+ /**
2681
+ * @type {import('typeson').Preset}
2682
+ */
2293
2683
  var socketio = [expObj$1,
2294
2684
  // Leave ArrayBuffer as is, and let socket.io stream it instead.
2295
2685
  {
@@ -2298,6 +2688,9 @@
2298
2688
  // Encapsulate TypedArrays in ArrayBuffers instead of base64 strings.
2299
2689
  typedArraysSocketIO];
2300
2690
 
2691
+ /**
2692
+ * @type {import('typeson').Preset}
2693
+ */
2301
2694
  var sparseUndefined = [{
2302
2695
  sparseArrays: {
2303
2696
  testPlainObjects: true,
@@ -2324,6 +2717,10 @@
2324
2717
  }];
2325
2718
 
2326
2719
  /* This preset includes types for the Structured Cloning Algorithm. */
2720
+
2721
+ /**
2722
+ * @type {import('typeson').Preset}
2723
+ */
2327
2724
  var expObj = [
2328
2725
  // Todo: Might also register synchronous `ImageBitmap` and
2329
2726
  // `Blob`/`File`/`FileList`?
@@ -2347,6 +2744,9 @@
2347
2744
  typeof crypto !== 'undefined' ? cryptokey : [], /* c8 ignore next */
2348
2745
  typeof BigInt !== 'undefined' ? [bigint, bigintObject] : []);
2349
2746
 
2747
+ /**
2748
+ * @type {import('typeson').Preset}
2749
+ */
2350
2750
  var structuredCloningThrowing = expObj.concat({
2351
2751
  checkDataCloneException: {
2352
2752
  test: function test(val) {
@@ -2413,17 +2813,23 @@
2413
2813
  }
2414
2814
  });
2415
2815
 
2816
+ /**
2817
+ * @type {import('typeson').Preset}
2818
+ */
2416
2819
  var undef = [sparseUndefined, undef$1];
2417
2820
 
2821
+ /**
2822
+ * @type {import('typeson').Preset}
2823
+ */
2418
2824
  var universal = [expObj$1
2419
2825
  // TODO: Add types that are de-facto universal even though not
2420
2826
  // built-in into ecmasript standard.
2421
2827
  ];
2422
2828
 
2423
- exports.JSON_TYPES = l;
2424
- exports.Typeson = u;
2829
+ exports.JSON_TYPES = u;
2830
+ exports.Typeson = c;
2425
2831
  exports.TypesonPromise = e;
2426
- exports.Undefined = p;
2832
+ exports.Undefined = s;
2427
2833
  exports.arrayNonindexKeys = arrayNonindexKeys;
2428
2834
  exports.arraybuffer = arraybuffer;
2429
2835
  exports.bigint = bigint;
@@ -2453,6 +2859,7 @@
2453
2859
  exports.map = map;
2454
2860
  exports.nan = nan;
2455
2861
  exports.negativeInfinity = negativeInfinity;
2862
+ exports.negativeZero = negativeZero;
2456
2863
  exports.nonbuiltinIgnore = nonbuiltinIgnore;
2457
2864
  exports.postmessage = postmessage;
2458
2865
  exports.primitiveObjects = primitiveObjects;