typeson-registry 9.2.1 → 11.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 (143) hide show
  1. package/README.md +4 -7
  2. package/dist/index.js +77 -47
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.min.js +1 -1
  5. package/dist/index.min.js.map +1 -1
  6. package/dist/index.umd.cjs +175 -184
  7. package/dist/index.umd.cjs.map +1 -1
  8. package/dist/index.umd.min.cjs +1 -1
  9. package/dist/index.umd.min.cjs.map +1 -1
  10. package/dist/polyfills/createObjectURL.d.ts.map +1 -1
  11. package/dist/presets/array-nonindex-keys.d.ts +1 -1
  12. package/dist/presets/array-nonindex-keys.umd.cjs +1 -1
  13. package/dist/presets/array-nonindex-keys.umd.cjs.map +1 -1
  14. package/dist/presets/builtin.d.ts +1 -1
  15. package/dist/presets/builtin.umd.cjs +1 -1
  16. package/dist/presets/builtin.umd.cjs.map +1 -1
  17. package/dist/presets/postmessage.d.ts +1 -1
  18. package/dist/presets/postmessage.umd.cjs +1 -1
  19. package/dist/presets/postmessage.umd.cjs.map +1 -1
  20. package/dist/presets/socketio.d.ts +1 -1
  21. package/dist/presets/socketio.umd.cjs +1 -1
  22. package/dist/presets/socketio.umd.cjs.map +1 -1
  23. package/dist/presets/sparse-undefined.d.ts +1 -1
  24. package/dist/presets/special-numbers.d.ts +1 -1
  25. package/dist/presets/structured-cloning-throwing.d.ts +1 -1
  26. package/dist/presets/structured-cloning-throwing.umd.cjs +1 -1
  27. package/dist/presets/structured-cloning-throwing.umd.cjs.map +1 -1
  28. package/dist/presets/structured-cloning.d.ts +1 -1
  29. package/dist/presets/structured-cloning.d.ts.map +1 -1
  30. package/dist/presets/structured-cloning.umd.cjs +1 -1
  31. package/dist/presets/structured-cloning.umd.cjs.map +1 -1
  32. package/dist/presets/undef.d.ts +1 -1
  33. package/dist/presets/undef.umd.cjs +1 -1
  34. package/dist/presets/undef.umd.cjs.map +1 -1
  35. package/dist/presets/universal.d.ts +1 -1
  36. package/dist/presets/universal.umd.cjs +1 -1
  37. package/dist/presets/universal.umd.cjs.map +1 -1
  38. package/dist/types/arraybuffer.d.ts +1 -1
  39. package/dist/types/arraybuffer.d.ts.map +1 -1
  40. package/dist/types/arraybuffer.umd.cjs +1 -1
  41. package/dist/types/arraybuffer.umd.cjs.map +1 -1
  42. package/dist/types/bigint-object.d.ts +1 -1
  43. package/dist/types/bigint-object.umd.cjs +1 -1
  44. package/dist/types/bigint-object.umd.cjs.map +1 -1
  45. package/dist/types/bigint.d.ts +1 -1
  46. package/dist/types/blob.d.ts +1 -1
  47. package/dist/types/blob.d.ts.map +1 -1
  48. package/dist/types/blob.umd.cjs +1 -1
  49. package/dist/types/blob.umd.cjs.map +1 -1
  50. package/dist/types/cloneable.d.ts +1 -1
  51. package/dist/types/cloneable.umd.cjs +1 -1
  52. package/dist/types/cloneable.umd.cjs.map +1 -1
  53. package/dist/types/cryptokey.d.ts +1 -1
  54. package/dist/types/cryptokey.d.ts.map +1 -1
  55. package/dist/types/cryptokey.umd.cjs +1 -1
  56. package/dist/types/cryptokey.umd.cjs.map +1 -1
  57. package/dist/types/dataview.d.ts +1 -1
  58. package/dist/types/dataview.d.ts.map +1 -1
  59. package/dist/types/dataview.umd.cjs +1 -1
  60. package/dist/types/dataview.umd.cjs.map +1 -1
  61. package/dist/types/date.d.ts +1 -1
  62. package/dist/types/date.umd.cjs +1 -1
  63. package/dist/types/date.umd.cjs.map +1 -1
  64. package/dist/types/domexception.d.ts +1 -1
  65. package/dist/types/domexception.umd.cjs +1 -1
  66. package/dist/types/domexception.umd.cjs.map +1 -1
  67. package/dist/types/dommatrix.d.ts +1 -1
  68. package/dist/types/dommatrix.umd.cjs +1 -1
  69. package/dist/types/dommatrix.umd.cjs.map +1 -1
  70. package/dist/types/dompoint.d.ts +1 -1
  71. package/dist/types/dompoint.umd.cjs +1 -1
  72. package/dist/types/dompoint.umd.cjs.map +1 -1
  73. package/dist/types/domquad.d.ts +1 -1
  74. package/dist/types/domquad.umd.cjs +1 -1
  75. package/dist/types/domquad.umd.cjs.map +1 -1
  76. package/dist/types/domrect.d.ts +1 -1
  77. package/dist/types/domrect.umd.cjs +1 -1
  78. package/dist/types/domrect.umd.cjs.map +1 -1
  79. package/dist/types/error.d.ts +1 -1
  80. package/dist/types/error.umd.cjs +1 -1
  81. package/dist/types/error.umd.cjs.map +1 -1
  82. package/dist/types/errors.d.ts +2 -2
  83. package/dist/types/errors.d.ts.map +1 -1
  84. package/dist/types/errors.umd.cjs +1 -1
  85. package/dist/types/errors.umd.cjs.map +1 -1
  86. package/dist/types/file.d.ts +1 -1
  87. package/dist/types/file.d.ts.map +1 -1
  88. package/dist/types/file.umd.cjs +1 -1
  89. package/dist/types/file.umd.cjs.map +1 -1
  90. package/dist/types/filelist.d.ts +1 -1
  91. package/dist/types/filelist.umd.cjs +1 -1
  92. package/dist/types/filelist.umd.cjs.map +1 -1
  93. package/dist/types/imagebitmap.d.ts +1 -1
  94. package/dist/types/imagebitmap.d.ts.map +1 -1
  95. package/dist/types/imagebitmap.umd.cjs +1 -1
  96. package/dist/types/imagebitmap.umd.cjs.map +1 -1
  97. package/dist/types/imagedata.d.ts +1 -1
  98. package/dist/types/imagedata.umd.cjs +1 -1
  99. package/dist/types/imagedata.umd.cjs.map +1 -1
  100. package/dist/types/infinity.d.ts +1 -1
  101. package/dist/types/intl-types.d.ts +3 -3
  102. package/dist/types/intl-types.umd.cjs +1 -1
  103. package/dist/types/intl-types.umd.cjs.map +1 -1
  104. package/dist/types/map.d.ts +1 -1
  105. package/dist/types/map.umd.cjs +1 -1
  106. package/dist/types/map.umd.cjs.map +1 -1
  107. package/dist/types/nan.d.ts +1 -1
  108. package/dist/types/negative-infinity.d.ts +1 -1
  109. package/dist/types/negative-zero.d.ts +1 -1
  110. package/dist/types/nonbuiltin-ignore.d.ts +1 -1
  111. package/dist/types/nonbuiltin-ignore.umd.cjs +1 -1
  112. package/dist/types/nonbuiltin-ignore.umd.cjs.map +1 -1
  113. package/dist/types/primitive-objects.d.ts +1 -1
  114. package/dist/types/primitive-objects.umd.cjs +1 -1
  115. package/dist/types/primitive-objects.umd.cjs.map +1 -1
  116. package/dist/types/regexp.d.ts +1 -1
  117. package/dist/types/regexp.umd.cjs +1 -1
  118. package/dist/types/regexp.umd.cjs.map +1 -1
  119. package/dist/types/resurrectable.d.ts +1 -1
  120. package/dist/types/resurrectable.umd.cjs +1 -1
  121. package/dist/types/resurrectable.umd.cjs.map +1 -1
  122. package/dist/types/set.d.ts +1 -1
  123. package/dist/types/set.umd.cjs +1 -1
  124. package/dist/types/set.umd.cjs.map +1 -1
  125. package/dist/types/typed-arrays-socketio.d.ts +1 -1
  126. package/dist/types/typed-arrays-socketio.umd.cjs +1 -1
  127. package/dist/types/typed-arrays-socketio.umd.cjs.map +1 -1
  128. package/dist/types/typed-arrays.d.ts +1 -1
  129. package/dist/types/typed-arrays.umd.cjs +1 -1
  130. package/dist/types/typed-arrays.umd.cjs.map +1 -1
  131. package/dist/types/undef.d.ts +1 -1
  132. package/dist/types/undef.umd.cjs +1 -1
  133. package/dist/types/undef.umd.cjs.map +1 -1
  134. package/dist/types/user-object.d.ts +1 -1
  135. package/dist/types/user-object.umd.cjs +1 -1
  136. package/dist/types/user-object.umd.cjs.map +1 -1
  137. package/dist/utils/generateUUID.d.ts.map +1 -1
  138. package/package.json +51 -49
  139. package/polyfills/createObjectURL.js +5 -9
  140. package/polyfills/createObjectURL.umd.cjs +1 -1
  141. package/polyfills/createObjectURL.umd.cjs.map +1 -1
  142. package/utils/generateUUID.js +1 -9
  143. package/tools/append-to-declaration-files.js +0 -13
package/README.md CHANGED
@@ -50,10 +50,6 @@ The `imagedata` type requires a global `ImageData` polyfill (including an
50
50
  You may wish to see our `test-environment.js` file for how some
51
51
  polyfilling may be done (largely using `jsdom`).
52
52
 
53
- The `cloneable` and `resurrectable` types (and the `createObjectURL`
54
- polyill) each accept an optional global `performance` polyfill (through
55
- the common file `utils/generateUUID.js`).
56
-
57
53
  ### Building files from Git clone (as opposed to npm installs)
58
54
 
59
55
  If you have cloned the repo (and not the npm package), you must run
@@ -246,9 +242,10 @@ Note that the type name corresponds to the file name in the following manner:
246
242
  via deprecated means)
247
243
  - `filelist` - HTML does not provide a means of creating a `FileList` object
248
244
  dynamically, so we polyfill one for revival. This method also sets `File`
249
- - `imagebitmap` - Has sync and async revivers. The sync method does not produce
250
- a genuine `ImageBitmap` but instead produces a canvas element which can
251
- frequently be used in a similar context to `ImageBitmap`.
245
+ - `imagebitmap` - Has sync and async revivers. If `OffscreenCanvas` is not
246
+ supported, the sync method does not produce a genuine `ImageBitmap`
247
+ but instead produces a canvas element which can frequently be used in
248
+ a similar context to `ImageBitmap`.
252
249
  - `imagedata`
253
250
  - `infinity` - Preserves positive infinity
254
251
  - `intl-types.js` (`Intl.Collator`, `Intl.DateTimeFormat`, `Intl.NumberFormat`) -
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n);}return r}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t));}));}return e}function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,_toPropertyKey(n.key),n);}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,t,r){return (t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _slicedToArray(e,t){return function _arrayWithHoles(e){if(Array.isArray(e))return e}(e)||function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],s=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1;}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){u=!0,o=e;}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(e,t)||_unsupportedIterableToArray(e,t)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(e){return function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}(e)||function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_unsupportedIterableToArray(e)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return "Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _toPropertyKey(e){var t=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return ("string"===t?String:Number)(e)}(e,"string");return "symbol"==typeof t?t:String(t)}var e=_createClass((function TypesonPromise(e){_classCallCheck(this,TypesonPromise),this.p=new Promise(e);}));e.__typeson__type__="TypesonPromise","undefined"!=typeof Symbol&&Object.defineProperty(e.prototype,Symbol.toStringTag,{get:function get(){return "TypesonPromise"}}),e.prototype.then=function(t,r){var n=this;return new e((function(e,o){n.p.then((function(r){e(t?t(r):r);})).catch((function(e){return r?r(e):Promise.reject(e)})).then(e,o);}))},e.prototype.catch=function(e){return this.then((function(){}),e)},e.resolve=function(t){return new e((function(e){e(t);}))},e.reject=function(t){return new e((function(e,r){r(t);}))},e.all=function(t){return new e((function(e,r){Promise.all(t.map((function(e){return null!=e&&e.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,r);}))},e.race=function(t){return new e((function(e,r){Promise.race(t.map((function(e){return null!=e&&e.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,r);}))},e.allSettled=function(t){return new e((function(e,r){Promise.allSettled(t.map((function(e){return null!=e&&e.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,r);}))};var t=Object.hasOwn,r=Object.getPrototypeOf;function isThenable(e,t){return isObject(e)&&"function"==typeof e.then&&(!t||"function"==typeof e.catch)}function toStringTag(e){return Object.prototype.toString.call(e).slice(8,-1)}function hasConstructorOf(e,n){if(!e||"object"!==_typeof(e))return !1;var o=r(e);if(!o)return null===n;var i=t(o,"constructor")&&o.constructor;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__)}function isPlainObject(e){return !(!e||"Object"!==toStringTag(e))&&(!r(e)||hasConstructorOf(e,Object))}function isUserObject(e){if(!e||"Object"!==toStringTag(e))return !1;var t=r(e);return !t||(hasConstructorOf(e,Object)||isUserObject(t))}function isObject(e){return null!==e&&"object"===_typeof(e)}function escapeKeyPathComponent(e){return e.replaceAll("''","''''").replace(/^$/,"''").replaceAll("~","~0").replaceAll(".","~1")}function unescapeKeyPathComponent(e){return e.replaceAll("~1",".").replaceAll("~0","~").replace(/^''$/,"").replaceAll("''''","''")}function getByKeyPath(e,t){if(""===t)return e;if(null===e||"object"!==_typeof(e))throw new TypeError("Unexpected non-object type");var r=t.indexOf(".");if(r>-1){var n=e[unescapeKeyPathComponent(t.slice(0,r))];return void 0===n?void 0:getByKeyPath(n,t.slice(r+1))}return e[unescapeKeyPathComponent(t)]}function setAtKeyPath(e,t,r){if(""===t)return r;if(!e||"object"!==_typeof(e))throw new TypeError("Unexpected non-object type");var n=t.indexOf(".");return n>-1?setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0,n))],t.slice(n+1),r):(e[unescapeKeyPathComponent(t)]=r,e)}function getJSONType(e){return null===e?"null":Array.isArray(e)?"array":_typeof(e)}function _await(e,t,r){return r?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var n=Object.keys,o=Object.hasOwn,i$1=Array.isArray,a=["type","replaced","iterateIn","iterateUnsetNumeric","addLength"];function _async(e){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}function nestedPathsFirst(e,t){var r,n;if(""===e.keypath)return -1;var o=null!==(r=e.keypath.match(/\./g))&&void 0!==r?r:0,i=null!==(n=t.keypath.match(/\./g))&&void 0!==n?n:0;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}var c=function(){function Typeson(e){_classCallCheck(this,Typeson),this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={};}return _createClass(Typeson,[{key:"stringify",value:function stringify(e,t,r,n){n=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),n),{},{stringification:!0});var o=this.encapsulate(e,null,n);return i$1(o)?JSON.stringify(o[0],t,r):o.then((function(e){return JSON.stringify(e,t,r)}))}},{key:"stringifySync",value:function stringifySync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!0}))}},{key:"stringifyAsync",value:function stringifyAsync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!1}))}},{key:"parse",value:function parse(e,t,r){return r=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),r),{},{parse:!0}),this.revive(JSON.parse(e,t),r)}},{key:"parseSync",value:function parseSync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"parseAsync",value:function parseAsync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"specialTypeNames",value:function specialTypeNames(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.returnTypeNames=!0,this.encapsulate(e,t,r)}},{key:"rootTypeName",value:function rootTypeName(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.iterateNone=!0,this.encapsulate(e,t,r)}},{key:"encapsulate",value:function encapsulate(t,r,c){var s=this,u=_objectSpread2(_objectSpread2({sync:!0},this.options),c),l=u.sync,y={},p=[],f=[],v=[],h=!("cyclic"in u)||u.cyclic,d=u.encapsulateObserver,b=function finish(e){var t=Object.values(y);if(u.iterateNone)return t.length?t[0]:getJSONType(e);if(t.length){if(u.returnTypeNames)return _toConsumableArray(new Set(t));e&&isPlainObject(e)&&!o(e,"$types")?e.$types=y:e={$:e,$types:{$:y}};}else isObject(e)&&o(e,"$types")&&(e={$:e,$types:!0});return !u.returnTypeNames&&e},_=_async((function(t,r){return _await(Promise.all(r.map((function(e){return e[1].p}))),(function(n){return _await(Promise.all(n.map(_async((function(n){var o=!1,i=[],a=_slicedToArray(r.splice(0,1),1),c=_slicedToArray(a[0],7),s=c[0],u=c[2],l=c[3],y=c[4],p=c[5],f=c[6],v=m(s,n,u,l,i,!0,f),h=hasConstructorOf(v,e);return function _invoke(e,t){var r=e();return r&&r.then?r.then(t):t(r)}((function(){if(s&&h)return _await(v.p,(function(e){y[p]=e;var r=_(t,i);return o=!0,r}))}),(function(e){return o?e:(s?y[p]=v:t=h?v.p:v,_(t,i))}))})))),(function(){return t}))}))})),O=function _adaptBuiltinStateObjectProperties(e,t,r){Object.assign(e,t);var n=a.map((function(t){var r=e[t];return delete e[t],r}));r(),a.forEach((function(t,r){e[t]=n[r];}));},m=function _encapsulate(t,r,a,c,l,v,h){var b,_={},m=_typeof(r),g=d?function(n){var o,i=null!==(o=null!=h?h:c.type)&&void 0!==o?o:getJSONType(r);d(Object.assign(null!=n?n:_,{keypath:t,value:r,cyclic:a,stateObj:c,promisesData:l,resolvingTypesonPromise:v,awaitingTypesonPromise:hasConstructorOf(r,e)},{type:i}));}:null;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,l,!1,v,g))!==r&&(_={replaced:b}):b=r,g&&g(),b;if(null===r)return g&&g(),r;if(a&&!c.iterateIn&&!c.iterateUnsetNumeric&&r&&"object"===_typeof(r)){var S=p.indexOf(r);if(!(S<0))return y[t]="#",g&&g({cyclicKeypath:f[S]}),"#"+f[S];!0===a&&(p.push(r),f.push(t));}var P,T,w=isPlainObject(r),A=i$1(r),C=(w||A)&&(!s.plainObjectReplacers.length||c.replaced)||c.iterateIn?r:j(t,r,c,l,w||A,null,g);if(C!==r?(b=C,_={replaced:C}):""===t&&hasConstructorOf(r,e)?(l.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),_={clone:P}):(["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),_={clone:P}),g&&g(),u.iterateNone)return null!==(T=P)&&void 0!==T?T:b;if(!P)return b;if(c.iterateIn){var k=function _loop(n){var i={ownKeys:o(r,n)};O(c,i,(function(){var o=t+(t?".":"")+escapeKeyPathComponent(n),i=_encapsulate(o,r[n],Boolean(a),c,l,v);hasConstructorOf(i,e)?l.push([o,i,Boolean(a),c,P,n,c.type]):void 0!==i&&(P[n]=i);}));};for(var N in r)k(N);g&&g({endIterateIn:!0,end:!0});}else n(r).forEach((function(n){var o=t+(t?".":"")+escapeKeyPathComponent(n);O(c,{ownKeys:!0},(function(){var t=_encapsulate(o,r[n],Boolean(a),c,l,v);hasConstructorOf(t,e)?l.push([o,t,Boolean(a),c,P,n,c.type]):void 0!==t&&(P[n]=t);}));})),g&&g({endIterateOwn:!0,end:!0});if(c.iterateUnsetNumeric){for(var I=r.length,E=function _loop2(n){if(!(n in r)){var o="".concat(t).concat(t?".":"").concat(n);O(c,{ownKeys:!1},(function(){var t=_encapsulate(o,void 0,Boolean(a),c,l,v);hasConstructorOf(t,e)?l.push([o,t,Boolean(a),c,P,n,c.type]):void 0!==t&&(P[n]=t);}));}},K=0;K<I;K++)E(K);g&&g({endIterateUnsetNumeric:!0,end:!0});}return P},j=function replace(e,t,r,n,o,i,a){for(var c=o?s.plainObjectReplacers:s.nonplainObjectReplacers,u=c.length;u--;){var p=c[u];if(p.test(t,r)){var f=p.type;if(s.revivers[f]){var v=y[e];y[e]=v?[f].concat(v):f;}if(Object.assign(r,{type:f,replaced:!0}),(l||!p.replaceAsync)&&!p.replace)return a&&a({typeDetected:!0}),m(e,t,h&&"readonly",r,n,i,f);a&&a({replacing:!0});var d=void 0;if(l||!p.replaceAsync){if(void 0===p.replace)throw new TypeError("Missing replacer");d=p.replace(t,r);}else d=p.replaceAsync(t,r);return m(e,d,h&&"readonly",r,n,i,f)}}return t},g=m("",t,h,null!=r?r:{},v);if(v.length)return l&&u.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(_(g,v)).then(b);if(!l&&u.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return u.stringification&&l?[b(g)]:l?b(g):Promise.resolve(b(g))}},{key:"encapsulateSync",value:function encapsulateSync(e,t,r){return this.encapsulate(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"encapsulateAsync",value:function encapsulateAsync(e,t,r){return this.encapsulate(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"revive",value:function revive(t,r){var o=this,a=_objectSpread2(_objectSpread2({sync:!0},this.options),r),c=a.sync;function finishRevival(e){if(c)return e;if(a.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return Promise.resolve(e)}if(!t||"object"!==_typeof(t)||Array.isArray(t))return finishRevival(t);var u=t.$types;if(!0===u)return finishRevival(t.$);if(!u||"object"!==_typeof(u)||Array.isArray(u))return finishRevival(t);var l=[],y={},p=!0;u.$&&isPlainObject(u.$)&&(t=t.$,u=u.$,p=!1);var f=function executeReviver(e,t){var r,n=_slicedToArray(null!==(r=o.revivers[e])&&void 0!==r?r:[],1)[0];if(!n)throw new Error("Unregistered type: "+e);if(c&&!("revive"in n))return t;if(!c&&n.reviveAsync)return n.reviveAsync(t,y);if(n.revive)return n.revive(t,y);throw new Error("Missing reviver")},v=[];function checkUndefined(e){return hasConstructorOf(e,s)?void 0:e}var h,d=function revivePlainObjects(){var r=[];if(!u)throw new Error("Found bad `types`");if(Object.entries(u).forEach((function(e){var t=_slicedToArray(e,2),n=t[0],i=t[1];"#"!==i&&[].concat(i).forEach((function(e){var t;_slicedToArray(null!==(t=o.revivers[e])&&void 0!==t?t:[null,{}],2)[1].plain&&(r.push({keypath:n,type:e}),delete u[n]);}));})),r.length)return r.sort(nestedPathsFirst).reduce((function reducer(r,n){var o=n.keypath,i=n.type;if(isThenable(r))return r.then((function(e){return reducer(e,{keypath:o,type:i})}));var a=getByKeyPath(t,o);if(hasConstructorOf(a=f(i,a),e))return a.then((function(e){var r=setAtKeyPath(t,o,e);r===e&&(t=r);}));var c=setAtKeyPath(t,o,a);c===a&&(t=c);}),void 0)}();return hasConstructorOf(d,e)?h=d.then((function(){return t})):(h=function _revive(t,r,o,a,c){if(!p||"$types"!==t){var y=u[t],h=i$1(r);if(h||isPlainObject(r)){var d=h?new Array(r.length):{};for(n(r).forEach((function(n){var i=_revive(t+(t?".":"")+escapeKeyPathComponent(n),r[n],null!=o?o:d,d,n),a=function set(e){return hasConstructorOf(e,s)?d[n]=void 0:void 0!==e&&(d[n]=e),e};hasConstructorOf(i,e)?v.push(i.then((function(e){return a(e)}))):a(i);})),r=d;l.length;){var b=_slicedToArray(l[0],4),_=b[0],O=b[1],m=b[2],j=b[3],g=getByKeyPath(_,O);if(void 0===g)break;m[j]=g,l.splice(0,1);}}if(!y)return r;if("#"===y){var S=getByKeyPath(o,r.slice(1));return void 0===S&&l.push([o,r.slice(1),a,c]),S}return [].concat(y).reduce((function reducer(t,r){if(hasConstructorOf(t,e))return t.then((function(e){return reducer(e,r)}));if("string"!=typeof r)throw new TypeError("Bad type JSON");return f(r,t)}),r)}}("",t,null),v.length&&(h=e.resolve(h).then((function(t){return e.all([t].concat(v))})).then((function(e){return _slicedToArray(e,1)[0]})))),isThenable(h)?c&&a.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():hasConstructorOf(h,e)?h.p.then(checkUndefined):h:!c&&a.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():c?checkUndefined(h):Promise.resolve(checkUndefined(h))}},{key:"reviveSync",value:function reviveSync(e,t){return this.revive(e,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},t),{},{sync:!0}))}},{key:"reviveAsync",value:function reviveAsync(e,t){return this.revive(e,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},t),{},{sync:!1}))}},{key:"register",value:function register(e,t){var r=this,o=null!=t?t:{},a=function R(e){i$1(e)?e.forEach((function(e){return R(e)})):n(e).forEach((function(t){var n;if("#"===t)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(u.includes(t))throw new TypeError("Plain JSON object types are reserved as type names");var a=e[t],c=a&&"function"!=typeof a&&!Array.isArray(a)&&a.testPlainObjects?r.plainObjectReplacers:r.nonplainObjectReplacers,s=c.filter((function(e){return e.type===t}));if(s.length&&(c.splice(c.indexOf(s[0]),1),delete r.revivers[t],delete r.types[t]),"function"==typeof a){var l=a;a={test:function test(e){return e&&e.constructor===l},replace:function replace(e){return _objectSpread2({},e)},revive:function revive(e){return Object.assign(Object.create(l.prototype),e)}};}else if(i$1(a)){var y=_slicedToArray(a,3);a={test:y[0],replace:y[1],revive:y[2]};}if(null!==(n=a)&&void 0!==n&&n.test){var p={type:t,test:a.test.bind(a)};a.replace&&(p.replace=a.replace.bind(a)),a.replaceAsync&&(p.replaceAsync=a.replaceAsync.bind(a));var f="number"==typeof o.fallback?o.fallback:o.fallback?0:Number.POSITIVE_INFINITY;if(a.testPlainObjects?r.plainObjectReplacers.splice(f,0,p):r.nonplainObjectReplacers.splice(f,0,p),a.revive||a.reviveAsync){var v={};a.revive&&(v.revive=a.revive.bind(a)),a.reviveAsync&&(v.reviveAsync=a.reviveAsync.bind(a)),r.revivers[t]=[v,{plain:a.testPlainObjects}];}r.types[t]=a;}}));};return [].concat(e).forEach((function(e){return a(e)})),this}}]),Typeson}(),s=_createClass((function Undefined(){_classCallCheck(this,Undefined);}));s.__typeson__type__="TypesonUndefined";var u=["null","boolean","number","string","array","object"];
1
+ function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n);}return r}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t));}));}return e}function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,_toPropertyKey(n.key),n);}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,t,r){return (t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _slicedToArray(e,t){return function _arrayWithHoles(e){if(Array.isArray(e))return e}(e)||function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],s=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1;}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){u=!0,o=e;}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(e,t)||_unsupportedIterableToArray(e,t)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(e){return function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}(e)||function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_unsupportedIterableToArray(e)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return "Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _toPropertyKey(e){var t=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return ("string"===t?String:Number)(e)}(e,"string");return "symbol"==typeof t?t:String(t)}var e=_createClass((function TypesonPromise(e){_classCallCheck(this,TypesonPromise),this.p=new Promise(e);}));e.__typeson__type__="TypesonPromise","undefined"!=typeof Symbol&&Object.defineProperty(e.prototype,Symbol.toStringTag,{get:function get(){return "TypesonPromise"}}),e.prototype.then=function(t,r){var n=this;return new e((function(e,o){n.p.then((function(r){e(t?t(r):r);})).catch((function(e){return r?r(e):Promise.reject(e)})).then(e,o);}))},e.prototype.catch=function(e){return this.then((function(){}),e)},e.resolve=function(t){return new e((function(e){e(t);}))},e.reject=function(t){return new e((function(e,r){r(t);}))},e.all=function(t){return new e((function(e,r){Promise.all(t.map((function(e){return null!=e&&e.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,r);}))},e.race=function(t){return new e((function(e,r){Promise.race(t.map((function(e){return null!=e&&e.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,r);}))},e.allSettled=function(t){return new e((function(e,r){Promise.allSettled(t.map((function(e){return null!=e&&e.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,r);}))};var t=Object.hasOwn,r=Object.getPrototypeOf;function isThenable(e,t){return isObject(e)&&"function"==typeof e.then&&(!t||"function"==typeof e.catch)}function toStringTag(e){return Object.prototype.toString.call(e).slice(8,-1)}function hasConstructorOf(e,n){if(!e||"object"!==_typeof(e))return !1;var o=r(e);if(!o)return null===n;var i=t(o,"constructor")&&o.constructor;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__)}function isPlainObject(e){return !(!e||"Object"!==toStringTag(e))&&(!r(e)||hasConstructorOf(e,Object))}function isUserObject(e){if(!e||"Object"!==toStringTag(e))return !1;var t=r(e);return !t||(hasConstructorOf(e,Object)||isUserObject(t))}function isObject(e){return null!==e&&"object"===_typeof(e)}function escapeKeyPathComponent(e){return e.replaceAll("''","''''").replace(/^$/,"''").replaceAll("~","~0").replaceAll(".","~1")}function unescapeKeyPathComponent(e){return e.replaceAll("~1",".").replaceAll("~0","~").replace(/^''$/,"").replaceAll("''''","''")}function getByKeyPath(e,t){if(""===t)return e;if(null===e||"object"!==_typeof(e))throw new TypeError("Unexpected non-object type");var r=t.indexOf(".");if(r>-1){var n=e[unescapeKeyPathComponent(t.slice(0,r))];return void 0===n?void 0:getByKeyPath(n,t.slice(r+1))}return e[unescapeKeyPathComponent(t)]}function setAtKeyPath(e,t,r){if(""===t)return r;if(!e||"object"!==_typeof(e))throw new TypeError("Unexpected non-object type");var n=t.indexOf(".");return n>-1?setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0,n))],t.slice(n+1),r):(e[unescapeKeyPathComponent(t)]=r,e)}function getJSONType(e){return null===e?"null":Array.isArray(e)?"array":_typeof(e)}function _await(e,t,r){return (e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var n=Object.keys,o=Object.hasOwn,i$1=Array.isArray,a=["type","replaced","iterateIn","iterateUnsetNumeric","addLength"];function _async(e){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}function nestedPathsFirst(e,t){var r,n;if(""===e.keypath)return -1;var o=null!==(r=e.keypath.match(/\./g))&&void 0!==r?r:0,i=null!==(n=t.keypath.match(/\./g))&&void 0!==n?n:0;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}var c=function(){function Typeson(e){_classCallCheck(this,Typeson),this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={};}return _createClass(Typeson,[{key:"stringify",value:function stringify(e,t,r,n){n=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),n),{},{stringification:!0});var o=this.encapsulate(e,null,n);return i$1(o)?JSON.stringify(o[0],t,r):o.then((function(e){return JSON.stringify(e,t,r)}))}},{key:"stringifySync",value:function stringifySync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!0}))}},{key:"stringifyAsync",value:function stringifyAsync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!1}))}},{key:"parse",value:function parse(e,t,r){return r=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),r),{},{parse:!0}),this.revive(JSON.parse(e,t),r)}},{key:"parseSync",value:function parseSync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"parseAsync",value:function parseAsync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"specialTypeNames",value:function specialTypeNames(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.returnTypeNames=!0,this.encapsulate(e,t,r)}},{key:"rootTypeName",value:function rootTypeName(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.iterateNone=!0,this.encapsulate(e,t,r)}},{key:"encapsulate",value:function encapsulate(t,r,c){var s=this,u=_objectSpread2(_objectSpread2({sync:!0},this.options),c),l=u.sync,y={},p=[],f=[],v=[],h=!("cyclic"in u)||u.cyclic,d=u.encapsulateObserver,b=function finish(e){var t=Object.values(y);if(u.iterateNone)return t.length?t[0]:getJSONType(e);if(t.length){if(u.returnTypeNames)return _toConsumableArray(new Set(t));e&&isPlainObject(e)&&!o(e,"$types")?e.$types=y:e={$:e,$types:{$:y}};}else isObject(e)&&o(e,"$types")&&(e={$:e,$types:!0});return !u.returnTypeNames&&e},_=_async((function(t,r){return _await(Promise.all(r.map((function(e){return e[1].p}))),(function(n){return _await(Promise.all(n.map(_async((function(n){var o=!1,i=[],a=_slicedToArray(r.splice(0,1),1),c=_slicedToArray(a[0],7),s=c[0],u=c[2],l=c[3],y=c[4],p=c[5],f=c[6],v=m(s,n,u,l,i,!0,f),h=hasConstructorOf(v,e);return function _invoke(e,t){var r=e();return r&&r.then?r.then(t):t(r)}((function(){if(s&&h)return _await(v.p,(function(e){y[p]=e;var r=_(t,i);return o=!0,r}))}),(function(e){return o?e:(s?y[p]=v:t=h?v.p:v,_(t,i))}))})))),(function(){return t}))}))})),O=function _adaptBuiltinStateObjectProperties(e,t,r){Object.assign(e,t);var n=a.map((function(t){var r=e[t];return delete e[t],r}));r(),a.forEach((function(t,r){e[t]=n[r];}));},m=function _encapsulate(t,r,a,c,l,v,h){var b,_={},m=_typeof(r),g=d?function(n){var o,i=null!==(o=null!=h?h:c.type)&&void 0!==o?o:getJSONType(r);d(Object.assign(null!=n?n:_,{keypath:t,value:r,cyclic:a,stateObj:c,promisesData:l,resolvingTypesonPromise:v,awaitingTypesonPromise:hasConstructorOf(r,e)},{type:i}));}:null;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,l,!1,v,g))!==r&&(_={replaced:b}):b=r,g&&g(),b;if(null===r)return g&&g(),r;if(a&&!c.iterateIn&&!c.iterateUnsetNumeric&&r&&"object"===_typeof(r)){var S=p.indexOf(r);if(!(S<0))return y[t]="#",g&&g({cyclicKeypath:f[S]}),"#"+f[S];!0===a&&(p.push(r),f.push(t));}var P,T,w=isPlainObject(r),A=i$1(r),C=(w||A)&&(!s.plainObjectReplacers.length||c.replaced)||c.iterateIn?r:j(t,r,c,l,w||A,null,g);if(C!==r?(b=C,_={replaced:C}):""===t&&hasConstructorOf(r,e)?(l.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),_={clone:P}):(["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),_={clone:P}),g&&g(),u.iterateNone)return null!==(T=P)&&void 0!==T?T:b;if(!P)return b;if(c.iterateIn){var k=function _loop(n){var i={ownKeys:o(r,n)};O(c,i,(function(){var o=t+(t?".":"")+escapeKeyPathComponent(n),i=_encapsulate(o,r[n],Boolean(a),c,l,v);hasConstructorOf(i,e)?l.push([o,i,Boolean(a),c,P,n,c.type]):void 0!==i&&(P[n]=i);}));};for(var N in r)k(N);g&&g({endIterateIn:!0,end:!0});}else n(r).forEach((function(n){var o=t+(t?".":"")+escapeKeyPathComponent(n);O(c,{ownKeys:!0},(function(){var t=_encapsulate(o,r[n],Boolean(a),c,l,v);hasConstructorOf(t,e)?l.push([o,t,Boolean(a),c,P,n,c.type]):void 0!==t&&(P[n]=t);}));})),g&&g({endIterateOwn:!0,end:!0});if(c.iterateUnsetNumeric){for(var I=r.length,E=function _loop2(n){if(!(n in r)){var o="".concat(t).concat(t?".":"").concat(n);O(c,{ownKeys:!1},(function(){var t=_encapsulate(o,void 0,Boolean(a),c,l,v);hasConstructorOf(t,e)?l.push([o,t,Boolean(a),c,P,n,c.type]):void 0!==t&&(P[n]=t);}));}},K=0;K<I;K++)E(K);g&&g({endIterateUnsetNumeric:!0,end:!0});}return P},j=function replace(e,t,r,n,o,i,a){for(var c=o?s.plainObjectReplacers:s.nonplainObjectReplacers,u=c.length;u--;){var p=c[u];if(p.test(t,r)){var f=p.type;if(s.revivers[f]){var v=y[e];y[e]=v?[f].concat(v):f;}if(Object.assign(r,{type:f,replaced:!0}),(l||!p.replaceAsync)&&!p.replace)return a&&a({typeDetected:!0}),m(e,t,h&&"readonly",r,n,i,f);a&&a({replacing:!0});var d=void 0;if(l||!p.replaceAsync){if(void 0===p.replace)throw new TypeError("Missing replacer");d=p.replace(t,r);}else d=p.replaceAsync(t,r);return m(e,d,h&&"readonly",r,n,i,f)}}return t},g=m("",t,h,null!=r?r:{},v);if(v.length)return l&&u.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(_(g,v)).then(b);if(!l&&u.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return u.stringification&&l?[b(g)]:l?b(g):Promise.resolve(b(g))}},{key:"encapsulateSync",value:function encapsulateSync(e,t,r){return this.encapsulate(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"encapsulateAsync",value:function encapsulateAsync(e,t,r){return this.encapsulate(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"revive",value:function revive(t,r){var o=this,a=_objectSpread2(_objectSpread2({sync:!0},this.options),r),c=a.sync;function finishRevival(e){if(c)return e;if(a.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return Promise.resolve(e)}if(!t||"object"!==_typeof(t)||Array.isArray(t))return finishRevival(t);var u=t.$types;if(!0===u)return finishRevival(t.$);if(!u||"object"!==_typeof(u)||Array.isArray(u))return finishRevival(t);var l=[],y={},p=!0;u.$&&isPlainObject(u.$)&&(t=t.$,u=u.$,p=!1);var f=function executeReviver(e,t){var r,n=_slicedToArray(null!==(r=o.revivers[e])&&void 0!==r?r:[],1)[0];if(!n)throw new Error("Unregistered type: "+e);if(c&&!("revive"in n))return t;if(!c&&n.reviveAsync)return n.reviveAsync(t,y);if(n.revive)return n.revive(t,y);throw new Error("Missing reviver")},v=[];function checkUndefined(e){return hasConstructorOf(e,s)?void 0:e}var h,d=function revivePlainObjects(){var r=[];if(!u)throw new Error("Found bad `types`");if(Object.entries(u).forEach((function(e){var t=_slicedToArray(e,2),n=t[0],i=t[1];"#"!==i&&[].concat(i).forEach((function(e){var t;_slicedToArray(null!==(t=o.revivers[e])&&void 0!==t?t:[null,{}],2)[1].plain&&(r.push({keypath:n,type:e}),delete u[n]);}));})),r.length)return r.sort(nestedPathsFirst).reduce((function reducer(r,n){var o=n.keypath,i=n.type;if(isThenable(r))return r.then((function(e){return reducer(e,{keypath:o,type:i})}));var a=getByKeyPath(t,o);if(hasConstructorOf(a=f(i,a),e))return a.then((function(e){var r=setAtKeyPath(t,o,e);r===e&&(t=r);}));var c=setAtKeyPath(t,o,a);c===a&&(t=c);}),void 0)}();return hasConstructorOf(d,e)?h=d.then((function(){return t})):(h=function _revive(t,r,o,a,c){if(!p||"$types"!==t){var y=u[t],h=i$1(r);if(h||isPlainObject(r)){var d=h?new Array(r.length):{};for(n(r).forEach((function(n){var i=_revive(t+(t?".":"")+escapeKeyPathComponent(n),r[n],null!=o?o:d,d,n),a=function set(e){return hasConstructorOf(e,s)?d[n]=void 0:void 0!==e&&(d[n]=e),e};hasConstructorOf(i,e)?v.push(i.then((function(e){return a(e)}))):a(i);})),r=d;l.length;){var b=_slicedToArray(l[0],4),_=b[0],O=b[1],m=b[2],j=b[3],g=getByKeyPath(_,O);if(void 0===g)break;m[j]=g,l.splice(0,1);}}if(!y)return r;if("#"===y){var S=getByKeyPath(o,r.slice(1));return void 0===S&&l.push([o,r.slice(1),a,c]),S}return [].concat(y).reduce((function reducer(t,r){if(hasConstructorOf(t,e))return t.then((function(e){return reducer(e,r)}));if("string"!=typeof r)throw new TypeError("Bad type JSON");return f(r,t)}),r)}}("",t,null),v.length&&(h=e.resolve(h).then((function(t){return e.all([t].concat(v))})).then((function(e){return _slicedToArray(e,1)[0]})))),isThenable(h)?c&&a.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():hasConstructorOf(h,e)?h.p.then(checkUndefined):h:!c&&a.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():c?checkUndefined(h):Promise.resolve(checkUndefined(h))}},{key:"reviveSync",value:function reviveSync(e,t){return this.revive(e,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},t),{},{sync:!0}))}},{key:"reviveAsync",value:function reviveAsync(e,t){return this.revive(e,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},t),{},{sync:!1}))}},{key:"register",value:function register(e,t){var r=this,o=null!=t?t:{},a=function R(e){i$1(e)?e.forEach((function(e){return R(e)})):n(e).forEach((function(t){var n;if("#"===t)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(u.includes(t))throw new TypeError("Plain JSON object types are reserved as type names");var a=e[t],c=a&&"function"!=typeof a&&!Array.isArray(a)&&a.testPlainObjects?r.plainObjectReplacers:r.nonplainObjectReplacers,s=c.filter((function(e){return e.type===t}));if(s.length&&(c.splice(c.indexOf(s[0]),1),delete r.revivers[t],delete r.types[t]),"function"==typeof a){var l=a;a={test:function test(e){return e&&e.constructor===l},replace:function replace(e){return _objectSpread2({},e)},revive:function revive(e){return Object.assign(Object.create(l.prototype),e)}};}else if(i$1(a)){var y=_slicedToArray(a,3);a={test:y[0],replace:y[1],revive:y[2]};}if(null!==(n=a)&&void 0!==n&&n.test){var p={type:t,test:a.test.bind(a)};a.replace&&(p.replace=a.replace.bind(a)),a.replaceAsync&&(p.replaceAsync=a.replaceAsync.bind(a));var f="number"==typeof o.fallback?o.fallback:o.fallback?0:Number.POSITIVE_INFINITY;if(a.testPlainObjects?r.plainObjectReplacers.splice(f,0,p):r.nonplainObjectReplacers.splice(f,0,p),a.revive||a.reviveAsync){var v={};a.revive&&(v.revive=a.revive.bind(a)),a.reviveAsync&&(v.reviveAsync=a.reviveAsync.bind(a)),r.revivers[t]=[v,{plain:a.testPlainObjects}];}r.types[t]=a;}}));};return [].concat(e).forEach((function(e){return a(e)})),this}}]),Typeson}(),s=_createClass((function Undefined(){_classCallCheck(this,Undefined);}));s.__typeson__type__="TypesonUndefined";var u=["null","boolean","number","string","array","object"];
2
2
 
3
3
  /*
4
4
  * base64-arraybuffer
@@ -31,7 +31,7 @@ var encode = function encode(arraybuffer, byteOffset, lngth) {
31
31
  lngth = arraybuffer.byteLength; // Needed for Safari
32
32
  }
33
33
 
34
- var bytes = new Uint8Array(arraybuffer, byteOffset || 0,
34
+ var bytes = new Uint8Array(arraybuffer, 0,
35
35
  // Default needed for Safari
36
36
  lngth);
37
37
  var len = bytes.length;
@@ -52,9 +52,12 @@ var encode = function encode(arraybuffer, byteOffset, lngth) {
52
52
 
53
53
  /**
54
54
  * @param {string} base64
55
+ * @param {{
56
+ * maxByteLength: number
57
+ * }} [options]
55
58
  * @returns {ArrayBuffer}
56
59
  */
57
- var decode = function decode(base64) {
60
+ var decode = function decode(base64, options) {
58
61
  var len = base64.length;
59
62
  if (len % 4) {
60
63
  throw new Error('Bad base64 length: not divisible by four');
@@ -68,7 +71,9 @@ var decode = function decode(base64) {
68
71
  bufferLength--;
69
72
  }
70
73
  }
71
- var arraybuffer = new ArrayBuffer(bufferLength),
74
+
75
+ // @ts-expect-error Second argument is not yet standard
76
+ var arraybuffer = new ArrayBuffer(bufferLength, options),
72
77
  bytes = new Uint8Array(arraybuffer);
73
78
  for (var _i2 = 0; _i2 < len; _i2 += 4) {
74
79
  // We know the result will not be undefined, as we have a text
@@ -106,7 +111,10 @@ const arraybuffer = {
106
111
  return {index};
107
112
  }
108
113
  stateObj.buffers.push(b);
109
- return encode(b);
114
+ return {
115
+ s: encode(b),
116
+ maxByteLength: b.maxByteLength
117
+ };
110
118
  },
111
119
  revive (
112
120
  b64,
@@ -119,7 +127,7 @@ const arraybuffer = {
119
127
  if (!stateObj.buffers) {
120
128
  stateObj.buffers = [];
121
129
  }
122
- if (typeof b64 === 'object') {
130
+ if (Object.hasOwn(b64, 'index')) {
123
131
  return stateObj.buffers[
124
132
  /**
125
133
  * @type {{index: import('typeson').Integer}}
@@ -127,7 +135,10 @@ const arraybuffer = {
127
135
  (b64).index
128
136
  ];
129
137
  }
130
- const buffer = decode(/** @type {string} */ (b64));
138
+ const buffer = decode(
139
+ /** @type {string} */ (b64.s),
140
+ {maxByteLength: b64.maxByteLength}
141
+ );
131
142
  stateObj.buffers.push(buffer);
132
143
  return buffer;
133
144
  }
@@ -174,6 +185,11 @@ const bigint = {
174
185
  * @param {ArrayBuffer} buf
175
186
  * @returns {string}
176
187
  */
188
+ function arraybuffer2string (buf) {
189
+ return new Uint8Array(buf).reduce(
190
+ (s, byte) => s + String.fromCodePoint(byte), ''
191
+ );
192
+ }
177
193
 
178
194
  /**
179
195
  *
@@ -236,7 +252,7 @@ function string2arraybuffer (str) {
236
252
  return array.buffer;
237
253
  }
238
254
 
239
- /* globals XMLHttpRequest, Blob, FileReader */
255
+ /* globals XMLHttpRequest, FileReader */
240
256
 
241
257
  /**
242
258
  * @type {import('typeson').TypeSpecSet}
@@ -278,7 +294,9 @@ const blob = {
278
294
  reader.addEventListener('load', () => {
279
295
  resolve({
280
296
  type: b.type,
281
- stringContents: reader.result
297
+ stringContents: arraybuffer2string(
298
+ /** @type {ArrayBuffer} */ (reader.result)
299
+ )
282
300
  });
283
301
  });
284
302
  // Seems not feasible to accurately simulate
@@ -286,14 +304,14 @@ const blob = {
286
304
  reader.addEventListener('error', () => {
287
305
  reject(reader.error);
288
306
  });
289
- reader.readAsBinaryString(b);
307
+ // eslint-disable-next-line @stylistic/max-len -- Long
308
+ // eslint-disable-next-line unicorn/prefer-blob-reading-methods -- Too new?
309
+ reader.readAsArrayBuffer(b);
290
310
  });
291
311
  }
292
312
  }
293
313
  };
294
314
 
295
- // The `performance` global is optional
296
-
297
315
  /**
298
316
  * @todo We could use `import generateUUID from 'uuid/v4';` (but it needs
299
317
  * crypto library, etc.; `rollup-plugin-node-builtins` doesn't recommend
@@ -303,13 +321,7 @@ const blob = {
303
321
  */
304
322
  function generateUUID () { // Adapted from original: public domain/MIT: http://stackoverflow.com/a/8809472/271577
305
323
  /* c8 ignore next */
306
- let d = Date.now() +
307
- // use high-precision timer if available
308
- /* c8 ignore next 4 */
309
- (typeof performance !== 'undefined' &&
310
- typeof performance.now === 'function'
311
- ? performance.now()
312
- : 0);
324
+ let d = Date.now();
313
325
 
314
326
  // eslint-disable-next-line @stylistic/max-len -- Long
315
327
  // eslint-disable-next-line no-use-extend-native/no-use-extend-native -- Need to update plugin
@@ -354,8 +366,6 @@ const cloneable = {
354
366
  }
355
367
  };
356
368
 
357
- /* globals crypto */
358
-
359
369
  /**
360
370
  * @type {import('typeson').TypeSpecSet}
361
371
  */
@@ -429,6 +439,7 @@ const dataview = {
429
439
  stateObj.buffers.push(buffer);
430
440
  return {
431
441
  encoded: encode(buffer),
442
+ maxByteLength: buffer.maxByteLength,
432
443
  byteOffset,
433
444
  byteLength
434
445
  };
@@ -445,12 +456,20 @@ const dataview = {
445
456
  if (!stateObj.buffers) {
446
457
  stateObj.buffers = [];
447
458
  }
448
- const {byteOffset, byteLength, encoded, index} = b64Obj;
459
+ const {
460
+ byteOffset, byteLength, encoded, index, maxByteLength
461
+ } = b64Obj;
449
462
  let buffer;
450
463
  if ('index' in b64Obj) {
451
464
  buffer = stateObj.buffers[index];
452
465
  } else {
453
- buffer = decode(encoded);
466
+ buffer = decode(
467
+ encoded,
468
+ /* c8 ignore next 3 -- Depends on Node version */
469
+ maxByteLength === undefined
470
+ ? maxByteLength
471
+ : {maxByteLength}
472
+ );
454
473
  stateObj.buffers.push(buffer);
455
474
  }
456
475
  return new DataView(buffer, byteOffset, byteLength);
@@ -791,7 +810,7 @@ function create$2 (Ctor) {
791
810
  };
792
811
  }
793
812
 
794
- /* globals XMLHttpRequest, File, FileReader */
813
+ /* globals XMLHttpRequest, FileReader */
795
814
 
796
815
  /**
797
816
  * @type {import('typeson').TypeSpecSet}
@@ -835,7 +854,9 @@ const file = {
835
854
  reader.addEventListener('load', function () {
836
855
  resolve({
837
856
  type: f.type,
838
- stringContents: reader.result,
857
+ stringContents: arraybuffer2string(
858
+ /** @type {ArrayBuffer} */ (reader.result)
859
+ ),
839
860
  name: f.name,
840
861
  lastModified: f.lastModified
841
862
  });
@@ -845,7 +866,9 @@ const file = {
845
866
  reader.addEventListener('error', function () {
846
867
  reject(reader.error);
847
868
  });
848
- reader.readAsBinaryString(f);
869
+ // eslint-disable-next-line @stylistic/max-len -- Long
870
+ // eslint-disable-next-line unicorn/prefer-blob-reading-methods -- Too new?
871
+ reader.readAsArrayBuffer(f);
849
872
  });
850
873
  }
851
874
  }
@@ -899,7 +922,7 @@ const filelist = {
899
922
  }
900
923
  };
901
924
 
902
- /* globals document, createImageBitmap */
925
+ /* globals document, OffscreenCanvas, createImageBitmap */
903
926
  // `ImageBitmap` is browser / DOM specific. It also can only work
904
927
  // same-domain (or CORS)
905
928
 
@@ -921,15 +944,15 @@ const imagebitmap = {
921
944
  canvas.getContext('2d')
922
945
  );
923
946
  ctx.drawImage(bm, 0, 0);
924
- // Although `width` and `height` are part of `ImageBitMap`,
925
- // these will be auto-created for us when reviving with the
926
- // data URL (and they are not settable even if they weren't)
927
- // return {
928
- // width: bm.width, height: bm.height, dataURL: canvas.toDataURL()
929
- // };
930
- return canvas.toDataURL();
947
+ return {
948
+ width: bm.width, height: bm.height, dataURL: canvas.toDataURL()
949
+ };
931
950
  },
932
951
  revive (o) {
952
+ const canvas = typeof OffscreenCanvas === 'undefined'
953
+ ? document.createElement('canvas')
954
+ /* c8 ignore next -- Browser only */
955
+ : new OffscreenCanvas(o.width, o.height);
933
956
  /*
934
957
  var req = new XMLHttpRequest();
935
958
  req.open('GET', o, false); // Sync
@@ -939,7 +962,6 @@ const imagebitmap = {
939
962
  req.send();
940
963
  return req.responseText;
941
964
  */
942
- const canvas = document.createElement('canvas');
943
965
  const ctx = /** @type {CanvasRenderingContext2D} */ (
944
966
  canvas.getContext('2d')
945
967
  );
@@ -948,10 +970,15 @@ const imagebitmap = {
948
970
  img.addEventListener('load', function () {
949
971
  ctx.drawImage(img, 0, 0);
950
972
  });
951
- img.src = o;
973
+ img.src = o.dataURL;
952
974
  // Works in contexts allowing an `ImageBitmap` (We might use
953
975
  // `OffscreenCanvas.transferToBitmap` when supported)
954
- return canvas;
976
+ return typeof OffscreenCanvas === 'undefined'
977
+ ? canvas
978
+ /* c8 ignore next 3 -- Browser only */
979
+ : /** @type {OffscreenCanvas} */ (
980
+ canvas
981
+ ).transferToImageBitmap();
955
982
  },
956
983
  reviveAsync (o) {
957
984
  const canvas = document.createElement('canvas');
@@ -963,7 +990,7 @@ const imagebitmap = {
963
990
  img.addEventListener('load', function () {
964
991
  ctx.drawImage(img, 0, 0);
965
992
  });
966
- img.src = o; // o.dataURL;
993
+ img.src = o.dataURL;
967
994
 
968
995
  return new e(async (resolve, reject) => {
969
996
  try {
@@ -1329,11 +1356,7 @@ const typedArrays = {};
1329
1356
  * @returns {void}
1330
1357
  */
1331
1358
  function create (TypedArray) {
1332
- const typeName =
1333
- /**
1334
- * @type {TypedArrayConstructor & {name: string}}
1335
- */
1336
- (TypedArray).name;
1359
+ const typeName = TypedArray.name;
1337
1360
 
1338
1361
  typedArrays[typeName.toLowerCase()] = {
1339
1362
  test (x) { return toStringTag(x) === typeName; },
@@ -1355,6 +1378,7 @@ function create (TypedArray) {
1355
1378
  }
1356
1379
  stateObj.buffers.push(buffer);
1357
1380
  return {
1381
+ maxByteLength: buffer.maxByteLength,
1358
1382
  encoded: encode(buffer),
1359
1383
  byteOffset,
1360
1384
  length: l
@@ -1372,12 +1396,20 @@ function create (TypedArray) {
1372
1396
  if (!stateObj.buffers) {
1373
1397
  stateObj.buffers = [];
1374
1398
  }
1375
- const {byteOffset, length: len, encoded, index} = b64Obj;
1399
+ const {
1400
+ byteOffset, length: len, encoded, index, maxByteLength
1401
+ } = b64Obj;
1376
1402
  let buffer;
1377
1403
  if ('index' in b64Obj) {
1378
1404
  buffer = stateObj.buffers[index];
1379
1405
  } else {
1380
- buffer = decode(encoded);
1406
+ buffer = decode(
1407
+ encoded,
1408
+ /* c8 ignore next 3 -- Depends on Node version */
1409
+ maxByteLength === undefined
1410
+ ? undefined
1411
+ : {maxByteLength}
1412
+ );
1381
1413
  stateObj.buffers.push(buffer);
1382
1414
  }
1383
1415
  return new TypedArray(buffer, byteOffset, len);
@@ -1625,8 +1657,6 @@ const sparseUndefined = [
1625
1657
  * @type {import('typeson').Preset}
1626
1658
  */
1627
1659
  const expObj = [
1628
- // Todo: Might also register synchronous `ImageBitmap` and
1629
- // `Blob`/`File`/`FileList`?
1630
1660
  // ES5
1631
1661
  userObject, // Processed last (non-builtin)
1632
1662