typeson-registry 6.0.0 → 7.0.1

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 (173) hide show
  1. package/README.md +2 -2
  2. package/dist/index.d.ts +44 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +365 -83
  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 +772 -381
  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.map +1 -1
  38. package/dist/presets/structured-cloning-throwing.d.ts +6 -0
  39. package/dist/presets/structured-cloning-throwing.d.ts.map +1 -0
  40. package/dist/presets/structured-cloning-throwing.umd.js +1 -1
  41. package/dist/presets/structured-cloning-throwing.umd.js.map +1 -1
  42. package/dist/presets/structured-cloning.d.ts +6 -0
  43. package/dist/presets/structured-cloning.d.ts.map +1 -0
  44. package/dist/presets/structured-cloning.umd.js +1 -1
  45. package/dist/presets/structured-cloning.umd.js.map +1 -1
  46. package/dist/presets/undef.d.ts +6 -0
  47. package/dist/presets/undef.d.ts.map +1 -0
  48. package/dist/presets/undef.umd.js +1 -1
  49. package/dist/presets/undef.umd.js.map +1 -1
  50. package/dist/presets/universal.d.ts +6 -0
  51. package/dist/presets/universal.d.ts.map +1 -0
  52. package/dist/presets/universal.umd.js +1 -1
  53. package/dist/presets/universal.umd.js.map +1 -1
  54. package/dist/types/arraybuffer.d.ts +6 -0
  55. package/dist/types/arraybuffer.d.ts.map +1 -0
  56. package/dist/types/arraybuffer.umd.js +1 -1
  57. package/dist/types/arraybuffer.umd.js.map +1 -1
  58. package/dist/types/bigint-object.d.ts +6 -0
  59. package/dist/types/bigint-object.d.ts.map +1 -0
  60. package/dist/types/bigint-object.umd.js +1 -1
  61. package/dist/types/bigint-object.umd.js.map +1 -1
  62. package/dist/types/bigint.d.ts +6 -0
  63. package/dist/types/bigint.d.ts.map +1 -0
  64. package/dist/types/bigint.umd.js +1 -1
  65. package/dist/types/bigint.umd.js.map +1 -1
  66. package/dist/types/blob.d.ts +6 -0
  67. package/dist/types/blob.d.ts.map +1 -0
  68. package/dist/types/blob.umd.js +1 -1
  69. package/dist/types/blob.umd.js.map +1 -1
  70. package/dist/types/cloneable.d.ts +6 -0
  71. package/dist/types/cloneable.d.ts.map +1 -0
  72. package/dist/types/cloneable.umd.js.map +1 -1
  73. package/dist/types/cryptokey.d.ts +6 -0
  74. package/dist/types/cryptokey.d.ts.map +1 -0
  75. package/dist/types/cryptokey.umd.js +1 -1
  76. package/dist/types/cryptokey.umd.js.map +1 -1
  77. package/dist/types/dataview.d.ts +6 -0
  78. package/dist/types/dataview.d.ts.map +1 -0
  79. package/dist/types/dataview.umd.js +1 -1
  80. package/dist/types/dataview.umd.js.map +1 -1
  81. package/dist/types/date.d.ts +6 -0
  82. package/dist/types/date.d.ts.map +1 -0
  83. package/dist/types/date.umd.js +1 -1
  84. package/dist/types/date.umd.js.map +1 -1
  85. package/dist/types/error.d.ts +6 -0
  86. package/dist/types/error.d.ts.map +1 -0
  87. package/dist/types/error.umd.js +1 -1
  88. package/dist/types/error.umd.js.map +1 -1
  89. package/dist/types/errors.d.ts +13 -0
  90. package/dist/types/errors.d.ts.map +1 -0
  91. package/dist/types/errors.umd.js +1 -1
  92. package/dist/types/errors.umd.js.map +1 -1
  93. package/dist/types/file.d.ts +6 -0
  94. package/dist/types/file.d.ts.map +1 -0
  95. package/dist/types/file.umd.js +1 -1
  96. package/dist/types/file.umd.js.map +1 -1
  97. package/dist/types/filelist.d.ts +6 -0
  98. package/dist/types/filelist.d.ts.map +1 -0
  99. package/dist/types/filelist.umd.js +1 -1
  100. package/dist/types/filelist.umd.js.map +1 -1
  101. package/dist/types/imagebitmap.d.ts +6 -0
  102. package/dist/types/imagebitmap.d.ts.map +1 -0
  103. package/dist/types/imagebitmap.umd.js +1 -1
  104. package/dist/types/imagebitmap.umd.js.map +1 -1
  105. package/dist/types/imagedata.d.ts +6 -0
  106. package/dist/types/imagedata.d.ts.map +1 -0
  107. package/dist/types/imagedata.umd.js +1 -1
  108. package/dist/types/imagedata.umd.js.map +1 -1
  109. package/dist/types/infinity.d.ts +6 -0
  110. package/dist/types/infinity.d.ts.map +1 -0
  111. package/dist/types/infinity.umd.js.map +1 -1
  112. package/dist/types/intl-types.d.ts +19 -0
  113. package/dist/types/intl-types.d.ts.map +1 -0
  114. package/dist/types/intl-types.umd.js +1 -1
  115. package/dist/types/intl-types.umd.js.map +1 -1
  116. package/dist/types/map.d.ts +6 -0
  117. package/dist/types/map.d.ts.map +1 -0
  118. package/dist/types/map.umd.js +1 -1
  119. package/dist/types/map.umd.js.map +1 -1
  120. package/dist/types/nan.d.ts +6 -0
  121. package/dist/types/nan.d.ts.map +1 -0
  122. package/dist/types/nan.umd.js.map +1 -1
  123. package/dist/types/negative-infinity.d.ts +6 -0
  124. package/dist/types/negative-infinity.d.ts.map +1 -0
  125. package/dist/types/negative-infinity.umd.js.map +1 -1
  126. package/dist/types/negative-zero.d.ts +6 -0
  127. package/dist/types/negative-zero.d.ts.map +1 -0
  128. package/dist/types/negative-zero.umd.js.map +1 -1
  129. package/dist/types/nonbuiltin-ignore.d.ts +6 -0
  130. package/dist/types/nonbuiltin-ignore.d.ts.map +1 -0
  131. package/dist/types/nonbuiltin-ignore.umd.js +1 -1
  132. package/dist/types/nonbuiltin-ignore.umd.js.map +1 -1
  133. package/dist/types/primitive-objects.d.ts +6 -0
  134. package/dist/types/primitive-objects.d.ts.map +1 -0
  135. package/dist/types/primitive-objects.umd.js +1 -1
  136. package/dist/types/primitive-objects.umd.js.map +1 -1
  137. package/dist/types/regexp.d.ts +6 -0
  138. package/dist/types/regexp.d.ts.map +1 -0
  139. package/dist/types/regexp.umd.js +1 -1
  140. package/dist/types/regexp.umd.js.map +1 -1
  141. package/dist/types/resurrectable.d.ts +6 -0
  142. package/dist/types/resurrectable.d.ts.map +1 -0
  143. package/dist/types/resurrectable.umd.js.map +1 -1
  144. package/dist/types/set.d.ts +6 -0
  145. package/dist/types/set.d.ts.map +1 -0
  146. package/dist/types/set.umd.js +1 -1
  147. package/dist/types/set.umd.js.map +1 -1
  148. package/dist/types/typed-arrays-socketio.d.ts +6 -0
  149. package/dist/types/typed-arrays-socketio.d.ts.map +1 -0
  150. package/dist/types/typed-arrays-socketio.umd.js +1 -1
  151. package/dist/types/typed-arrays-socketio.umd.js.map +1 -1
  152. package/dist/types/typed-arrays.d.ts +7 -0
  153. package/dist/types/typed-arrays.d.ts.map +1 -0
  154. package/dist/types/typed-arrays.umd.js +1 -1
  155. package/dist/types/typed-arrays.umd.js.map +1 -1
  156. package/dist/types/undef.d.ts +6 -0
  157. package/dist/types/undef.d.ts.map +1 -0
  158. package/dist/types/undef.umd.js +1 -1
  159. package/dist/types/undef.umd.js.map +1 -1
  160. package/dist/types/user-object.d.ts +6 -0
  161. package/dist/types/user-object.d.ts.map +1 -0
  162. package/dist/types/user-object.umd.js +1 -1
  163. package/dist/types/user-object.umd.js.map +1 -1
  164. package/dist/utils/generateUUID.d.ts +9 -0
  165. package/dist/utils/generateUUID.d.ts.map +1 -0
  166. package/dist/utils/stringArrayBuffer.d.ts +13 -0
  167. package/dist/utils/stringArrayBuffer.d.ts.map +1 -0
  168. package/package.json +19 -12
  169. package/polyfills/createObjectURL.js +43 -2
  170. package/polyfills/createObjectURL.umd.js +1 -1
  171. package/polyfills/createObjectURL.umd.js.map +1 -1
  172. package/tools/append-to-declaration-files.js +13 -0
  173. 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 || 0 === r ? (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
920
+ });
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);
861
928
  });
862
- };
863
- for (var A in r) w(A);
864
- j && j({
865
- endIterateIn: !0,
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,9 @@
1937
2230
  }
1938
2231
  };
1939
2232
 
2233
+ /**
2234
+ * @type {import('typeson').TypeSpecSet}
2235
+ */
1940
2236
  var negativeZero = {
1941
2237
  negativeZero: {
1942
2238
  test: function test(x) {
@@ -1952,6 +2248,9 @@
1952
2248
  }
1953
2249
  };
1954
2250
 
2251
+ /**
2252
+ * @type {import('typeson').TypeSpecSet}
2253
+ */
1955
2254
  var nonbuiltinIgnore = {
1956
2255
  nonbuiltinIgnore: {
1957
2256
  test: function test(x) {
@@ -1967,6 +2266,9 @@
1967
2266
  }
1968
2267
  };
1969
2268
 
2269
+ /**
2270
+ * @type {import('typeson').TypeSpecSet}
2271
+ */
1970
2272
  var primitiveObjects = {
1971
2273
  // String Object (not primitive string which need no type spec)
1972
2274
  StringObject: {
@@ -2004,6 +2306,9 @@
2004
2306
  }
2005
2307
  };
2006
2308
 
2309
+ /**
2310
+ * @type {import('typeson').TypeSpecSet}
2311
+ */
2007
2312
  var regexp = {
2008
2313
  regexp: {
2009
2314
  test: function test(x) {
@@ -2023,7 +2328,14 @@
2023
2328
  }
2024
2329
  };
2025
2330
 
2331
+ /**
2332
+ * @type {{[key: string]: any}}
2333
+ */
2026
2334
  var resurrectableObjectsByUUID = {};
2335
+
2336
+ /**
2337
+ * @type {import('typeson').TypeSpecSet}
2338
+ */
2027
2339
  var resurrectable = {
2028
2340
  resurrectable: {
2029
2341
  test: function test(x) {
@@ -2040,6 +2352,9 @@
2040
2352
  }
2041
2353
  };
2042
2354
 
2355
+ /**
2356
+ * @type {import('typeson').TypeSpecSet}
2357
+ */
2043
2358
  var set = {
2044
2359
  set: {
2045
2360
  test: function test(x) {
@@ -2057,12 +2372,18 @@
2057
2372
  /* eslint-env browser, node */
2058
2373
 
2059
2374
  // Support all kinds of typed arrays (views of ArrayBuffers)
2375
+
2376
+ /**
2377
+ * @type {import('typeson').TypeSpecSet}
2378
+ */
2060
2379
  var typedArraysSocketIO = {};
2061
2380
 
2062
2381
  /**
2063
- * @param {
2064
- * Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|
2065
- * Uint32Array|Float32Array|Float64Array
2382
+ * @param {Int8ArrayConstructor|Uint8ArrayConstructor|
2383
+ * Uint8ClampedArrayConstructor|Int16ArrayConstructor|
2384
+ * Uint16ArrayConstructor|Int32ArrayConstructor|
2385
+ * Uint32ArrayConstructor|Float32ArrayConstructor|
2386
+ * Float64ArrayConstructor
2066
2387
  * } TypedArray
2067
2388
  * @returns {void}
2068
2389
  */
@@ -2101,22 +2422,42 @@
2101
2422
  }
2102
2423
 
2103
2424
  /* eslint-env browser, node */
2425
+
2426
+ /**
2427
+ * @type {import('typeson').TypeSpecSet}
2428
+ */
2104
2429
  var typedArrays = {};
2105
2430
 
2106
2431
  /**
2107
- * @param {
2108
- * Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|
2109
- * Uint32Array|Float32Array|Float64Array
2110
- * } 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
2111
2442
  * @returns {void}
2112
2443
  */
2113
2444
  function create(TypedArray) {
2114
- var typeName = TypedArray.name;
2445
+ var typeName =
2446
+ /**
2447
+ * @type {TypedArrayConstructor & {name: string}}
2448
+ */
2449
+ TypedArray.name;
2115
2450
  typedArrays[typeName.toLowerCase()] = {
2116
2451
  test: function test(x) {
2117
2452
  return toStringTag(x) === typeName;
2118
2453
  },
2119
- replace: function replace(_ref, stateObj) {
2454
+ replace: function replace(_ref,
2455
+ /**
2456
+ * @type {import('typeson').StateObject & {
2457
+ * buffers?: ArrayBuffer[]
2458
+ * }}
2459
+ */
2460
+ stateObj) {
2120
2461
  var buffer = _ref.buffer,
2121
2462
  byteOffset = _ref.byteOffset,
2122
2463
  l = _ref.length;
@@ -2138,7 +2479,13 @@
2138
2479
  length: l
2139
2480
  };
2140
2481
  },
2141
- revive: function revive(b64Obj, stateObj) {
2482
+ revive: function revive(b64Obj,
2483
+ /**
2484
+ * @type {import('typeson').StateObject & {
2485
+ * buffers?: ArrayBuffer[]
2486
+ * }}
2487
+ */
2488
+ stateObj) {
2142
2489
  if (!stateObj.buffers) {
2143
2490
  stateObj.buffers = [];
2144
2491
  }
@@ -2166,6 +2513,10 @@
2166
2513
  }
2167
2514
 
2168
2515
  // This does not preserve `undefined` in sparse arrays; see the `undef`
2516
+
2517
+ /**
2518
+ * @type {import('typeson').TypeSpecSet}
2519
+ */
2169
2520
  var undef$1 = {
2170
2521
  undef: {
2171
2522
  test: function test(x, stateObj) {
@@ -2174,14 +2525,17 @@
2174
2525
  replace: function replace(n) {
2175
2526
  return 0;
2176
2527
  },
2177
- revive: function revive(s) {
2528
+ revive: function revive(s$1) {
2178
2529
  // Will add `undefined` (returning `undefined` would instead
2179
2530
  // avoid explicitly setting)
2180
- return new p();
2531
+ return new s();
2181
2532
  }
2182
2533
  }
2183
2534
  };
2184
2535
 
2536
+ /**
2537
+ * @type {import('typeson').TypeSpecSet}
2538
+ */
2185
2539
  var userObject = {
2186
2540
  userObject: {
2187
2541
  test: function test(x, stateObj) {
@@ -2196,6 +2550,9 @@
2196
2550
  }
2197
2551
  };
2198
2552
 
2553
+ /**
2554
+ * @type {import('typeson').Preset}
2555
+ */
2199
2556
  var arrayNonindexKeys = [{
2200
2557
  arrayNonindexKeys: {
2201
2558
  testPlainObjects: true,
@@ -2232,13 +2589,17 @@
2232
2589
  if (Array.isArray(o)) {
2233
2590
  return o;
2234
2591
  }
2592
+
2593
+ /**
2594
+ * @type {{[key: string]: any}}
2595
+ */
2235
2596
  var arr = [];
2236
2597
  // No map here as may be a sparse array (including
2237
2598
  // with `length` set)
2238
- // Todo: Reenable when Node `engines` >= 7
2239
- // Object.entries(o).forEach(([key, val]) => {
2240
- Object.keys(o).forEach(function (key) {
2241
- 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];
2242
2603
  arr[key] = val;
2243
2604
  });
2244
2605
  return arr;
@@ -2258,6 +2619,9 @@
2258
2619
  }
2259
2620
  }];
2260
2621
 
2622
+ /**
2623
+ * @type {import('typeson').Preset}
2624
+ */
2261
2625
  var specialNumbers = [nan, infinity, negativeInfinity, negativeZero];
2262
2626
 
2263
2627
  /* This preset includes types that are built-in into the JavaScript
@@ -2275,6 +2639,10 @@
2275
2639
 
2276
2640
  Symbols are similarly not included.
2277
2641
  */
2642
+
2643
+ /**
2644
+ * @type {import('typeson').Preset}
2645
+ */
2278
2646
  var expObj$1 = [undef$1,
2279
2647
  // ES5
2280
2648
  arrayNonindexKeys, primitiveObjects, specialNumbers, date, error, errors, regexp].concat(
@@ -2303,8 +2671,15 @@
2303
2671
  This preset will only include the Error types and you can register your
2304
2672
  custom types after having registered these.
2305
2673
  */
2674
+
2675
+ /**
2676
+ * @type {import('typeson').Preset}
2677
+ */
2306
2678
  var postmessage = [error, errors];
2307
2679
 
2680
+ /**
2681
+ * @type {import('typeson').Preset}
2682
+ */
2308
2683
  var socketio = [expObj$1,
2309
2684
  // Leave ArrayBuffer as is, and let socket.io stream it instead.
2310
2685
  {
@@ -2313,6 +2688,9 @@
2313
2688
  // Encapsulate TypedArrays in ArrayBuffers instead of base64 strings.
2314
2689
  typedArraysSocketIO];
2315
2690
 
2691
+ /**
2692
+ * @type {import('typeson').Preset}
2693
+ */
2316
2694
  var sparseUndefined = [{
2317
2695
  sparseArrays: {
2318
2696
  testPlainObjects: true,
@@ -2339,6 +2717,10 @@
2339
2717
  }];
2340
2718
 
2341
2719
  /* This preset includes types for the Structured Cloning Algorithm. */
2720
+
2721
+ /**
2722
+ * @type {import('typeson').Preset}
2723
+ */
2342
2724
  var expObj = [
2343
2725
  // Todo: Might also register synchronous `ImageBitmap` and
2344
2726
  // `Blob`/`File`/`FileList`?
@@ -2362,6 +2744,9 @@
2362
2744
  typeof crypto !== 'undefined' ? cryptokey : [], /* c8 ignore next */
2363
2745
  typeof BigInt !== 'undefined' ? [bigint, bigintObject] : []);
2364
2746
 
2747
+ /**
2748
+ * @type {import('typeson').Preset}
2749
+ */
2365
2750
  var structuredCloningThrowing = expObj.concat({
2366
2751
  checkDataCloneException: {
2367
2752
  test: function test(val) {
@@ -2428,17 +2813,23 @@
2428
2813
  }
2429
2814
  });
2430
2815
 
2816
+ /**
2817
+ * @type {import('typeson').Preset}
2818
+ */
2431
2819
  var undef = [sparseUndefined, undef$1];
2432
2820
 
2821
+ /**
2822
+ * @type {import('typeson').Preset}
2823
+ */
2433
2824
  var universal = [expObj$1
2434
2825
  // TODO: Add types that are de-facto universal even though not
2435
2826
  // built-in into ecmasript standard.
2436
2827
  ];
2437
2828
 
2438
- exports.JSON_TYPES = l;
2439
- exports.Typeson = u;
2829
+ exports.JSON_TYPES = u;
2830
+ exports.Typeson = c;
2440
2831
  exports.TypesonPromise = e;
2441
- exports.Undefined = p;
2832
+ exports.Undefined = s;
2442
2833
  exports.arrayNonindexKeys = arrayNonindexKeys;
2443
2834
  exports.arraybuffer = arraybuffer;
2444
2835
  exports.bigint = bigint;