typeson-registry 13.0.0 → 13.1.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.
- package/README.md +5 -8
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.umd.cjs +238 -188
- package/dist/index.umd.cjs.map +1 -1
- package/dist/index.umd.min.cjs +3 -3
- package/dist/index.umd.min.cjs.map +1 -1
- package/dist/polyfills/createObjectURL.d.ts.map +1 -1
- package/dist/presets/array-nonindex-keys.umd.cjs +1 -1
- package/dist/presets/array-nonindex-keys.umd.cjs.map +1 -1
- package/dist/presets/builtin.umd.cjs +1 -1
- package/dist/presets/builtin.umd.cjs.map +1 -1
- package/dist/presets/postmessage.umd.cjs +1 -1
- package/dist/presets/postmessage.umd.cjs.map +1 -1
- package/dist/presets/socketio.umd.cjs +1 -1
- package/dist/presets/socketio.umd.cjs.map +1 -1
- package/dist/presets/sparse-undefined.umd.cjs +1 -1
- package/dist/presets/sparse-undefined.umd.cjs.map +1 -1
- package/dist/presets/special-numbers.umd.cjs +1 -1
- package/dist/presets/special-numbers.umd.cjs.map +1 -1
- package/dist/presets/structured-cloning-throwing.umd.cjs +2 -2
- package/dist/presets/structured-cloning-throwing.umd.cjs.map +1 -1
- package/dist/presets/structured-cloning.umd.cjs +2 -2
- package/dist/presets/structured-cloning.umd.cjs.map +1 -1
- package/dist/presets/undef.umd.cjs +1 -1
- package/dist/presets/undef.umd.cjs.map +1 -1
- package/dist/presets/universal.umd.cjs +1 -1
- package/dist/presets/universal.umd.cjs.map +1 -1
- package/dist/types/arraybuffer.umd.cjs +1 -1
- package/dist/types/arraybuffer.umd.cjs.map +1 -1
- package/dist/types/bigint-object.umd.cjs +1 -1
- package/dist/types/bigint-object.umd.cjs.map +1 -1
- package/dist/types/bigint.umd.cjs +1 -1
- package/dist/types/bigint.umd.cjs.map +1 -1
- package/dist/types/blob.umd.cjs +1 -1
- package/dist/types/blob.umd.cjs.map +1 -1
- package/dist/types/cloneable.umd.cjs +1 -1
- package/dist/types/cloneable.umd.cjs.map +1 -1
- package/dist/types/cryptokey.umd.cjs +2 -2
- package/dist/types/cryptokey.umd.cjs.map +1 -1
- package/dist/types/dataview.umd.cjs +1 -1
- package/dist/types/dataview.umd.cjs.map +1 -1
- package/dist/types/date.umd.cjs +1 -1
- package/dist/types/date.umd.cjs.map +1 -1
- package/dist/types/domexception.umd.cjs +1 -1
- package/dist/types/domexception.umd.cjs.map +1 -1
- package/dist/types/dommatrix.umd.cjs +1 -1
- package/dist/types/dommatrix.umd.cjs.map +1 -1
- package/dist/types/dompoint.umd.cjs +1 -1
- package/dist/types/dompoint.umd.cjs.map +1 -1
- package/dist/types/domquad.umd.cjs +1 -1
- package/dist/types/domquad.umd.cjs.map +1 -1
- package/dist/types/domrect.umd.cjs +1 -1
- package/dist/types/domrect.umd.cjs.map +1 -1
- package/dist/types/error.umd.cjs +1 -1
- package/dist/types/error.umd.cjs.map +1 -1
- package/dist/types/errors.umd.cjs +1 -1
- package/dist/types/errors.umd.cjs.map +1 -1
- package/dist/types/file.umd.cjs +1 -1
- package/dist/types/file.umd.cjs.map +1 -1
- package/dist/types/filelist.umd.cjs +1 -1
- package/dist/types/filelist.umd.cjs.map +1 -1
- package/dist/types/imagebitmap.umd.cjs +2 -2
- package/dist/types/imagebitmap.umd.cjs.map +1 -1
- package/dist/types/imagedata.umd.cjs +1 -1
- package/dist/types/imagedata.umd.cjs.map +1 -1
- package/dist/types/infinity.umd.cjs +1 -1
- package/dist/types/infinity.umd.cjs.map +1 -1
- package/dist/types/intl-types.umd.cjs +1 -1
- package/dist/types/intl-types.umd.cjs.map +1 -1
- package/dist/types/map.umd.cjs +1 -1
- package/dist/types/map.umd.cjs.map +1 -1
- package/dist/types/nan.umd.cjs +1 -1
- package/dist/types/nan.umd.cjs.map +1 -1
- package/dist/types/negative-infinity.umd.cjs +1 -1
- package/dist/types/negative-infinity.umd.cjs.map +1 -1
- package/dist/types/negative-zero.umd.cjs +1 -1
- package/dist/types/negative-zero.umd.cjs.map +1 -1
- package/dist/types/nonbuiltin-ignore.umd.cjs +1 -1
- package/dist/types/nonbuiltin-ignore.umd.cjs.map +1 -1
- package/dist/types/primitive-objects.umd.cjs +1 -1
- package/dist/types/primitive-objects.umd.cjs.map +1 -1
- package/dist/types/promise.umd.cjs +2 -2
- package/dist/types/promise.umd.cjs.map +1 -1
- package/dist/types/regexp.umd.cjs +1 -1
- package/dist/types/regexp.umd.cjs.map +1 -1
- package/dist/types/resurrectable.umd.cjs +1 -1
- package/dist/types/resurrectable.umd.cjs.map +1 -1
- package/dist/types/set.umd.cjs +1 -1
- package/dist/types/set.umd.cjs.map +1 -1
- package/dist/types/symbol.umd.cjs +1 -1
- package/dist/types/symbol.umd.cjs.map +1 -1
- package/dist/types/typed-arrays-socketio.umd.cjs +1 -1
- package/dist/types/typed-arrays-socketio.umd.cjs.map +1 -1
- package/dist/types/typed-arrays.umd.cjs +1 -1
- package/dist/types/typed-arrays.umd.cjs.map +1 -1
- package/dist/types/undef.umd.cjs +1 -1
- package/dist/types/undef.umd.cjs.map +1 -1
- package/dist/types/user-object.umd.cjs +1 -1
- package/dist/types/user-object.umd.cjs.map +1 -1
- package/package.json +18 -19
- package/polyfills/createObjectURL.cjs +3231 -0
- package/polyfills/createObjectURL.cjs.map +1 -0
- package/polyfills/createObjectURL.js +4 -4
- package/polyfills/createObjectURL.umd.cjs +0 -4
- package/polyfills/createObjectURL.umd.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -25,10 +25,8 @@ Note that our `URL.createObjectURL` polyfill expects a global
|
|
|
25
25
|
which can handle `data:` URLs). For Node, you can add it like this:
|
|
26
26
|
|
|
27
27
|
```js
|
|
28
|
-
const
|
|
29
|
-
const {createObjectURL} = require('typeson-registry/polyfills/createObjectURL.umd.cjs');
|
|
28
|
+
const {createObjectURL} = require('typeson-registry/polyfills/createObjectURL.cjs');
|
|
30
29
|
|
|
31
|
-
const URL = url.Url; // This line only needed to support Node < 10.0.0
|
|
32
30
|
URL.createObjectURL = createObjectURL;
|
|
33
31
|
```
|
|
34
32
|
|
|
@@ -138,7 +136,7 @@ const TSON = new Typeson().register([
|
|
|
138
136
|
|
|
139
137
|
## Usage (with plain script tags without own Rollup)
|
|
140
138
|
|
|
141
|
-
All
|
|
139
|
+
All presets under `dist/` are UMD modules so you could also
|
|
142
140
|
require them as AMD modules with requirejs if you prefer.
|
|
143
141
|
|
|
144
142
|
```html
|
|
@@ -338,10 +336,9 @@ On Windows, besides following the
|
|
|
338
336
|
helped complete the installation. If you need to have it rebuilt, you can
|
|
339
337
|
run `npm i` inside of the `node_modules/canvas` directory.
|
|
340
338
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
if you have deleted your local `node-canvas` copy.
|
|
339
|
+
The older repo-specific Windows DLL copy workaround is no longer needed with
|
|
340
|
+
modern `canvas` versions. Follow the official node-canvas Windows installation
|
|
341
|
+
instructions for your toolchain, and then run the project normally.
|
|
345
342
|
|
|
346
343
|
## See also
|
|
347
344
|
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
class TypesonPromise{constructor(e){this.p=new Promise(e);}}TypesonPromise.__typeson__type__="TypesonPromise","undefined"!=typeof Symbol&&Object.defineProperty(TypesonPromise.prototype,Symbol.toStringTag,{get:()=>"TypesonPromise"}),TypesonPromise.prototype.then=function(e,t){return new TypesonPromise((n,r)=>{this.p.then(function(t){n(e?e(t):t);}).catch(function(e){return t?t(e):Promise.reject(e)}).then(n,r);})},TypesonPromise.prototype.catch=function(e){return this.then(
|
|
1
|
+
class TypesonPromise{constructor(e){this.p=new Promise(e);}}TypesonPromise.__typeson__type__="TypesonPromise","undefined"!=typeof Symbol&&Object.defineProperty(TypesonPromise.prototype,Symbol.toStringTag,{get:()=>"TypesonPromise"}),TypesonPromise.prototype.then=function(e,t){return new TypesonPromise((n,r)=>{this.p.then(function(t){n(e?e(t):t);}).catch(function(e){return t?t(e):Promise.reject(e)}).then(n,r);})},TypesonPromise.prototype.catch=function(e){return this.then(void 0,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(t=>{t(e);})},TypesonPromise.reject=function(e){return new TypesonPromise((t,n)=>{n(e);})},TypesonPromise.all=function(e){return new TypesonPromise(function(t,n){Promise.all(e.map(e=>e?.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e)).then(t,n);})},TypesonPromise.race=function(e){return new TypesonPromise(function(t,n){Promise.race(e.map(e=>e?.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e)).then(t,n);})},TypesonPromise.allSettled=function(e){return new TypesonPromise(function(t,n){Promise.allSettled(e.map(e=>e?.constructor&&"__typeson__type__"in e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e)).then(t,n);})};const{hasOwn:e}=Object,t=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(n,r){if(!n||"object"!=typeof n)return false;const s=t(n);if(!s)return null===r;const o=e(s,"constructor")&&s.constructor;return "function"!=typeof o?null===r:r===o||(null!==r&&Function.prototype.toString.call(o)===Function.prototype.toString.call(r)||"function"==typeof r&&"string"==typeof o.__typeson__type__&&o.__typeson__type__===r.__typeson__type__)}function isPlainObject(e){if(!e||"Object"!==toStringTag(e))return false;return !t(e)||hasConstructorOf(e,Object)}function isUserObject(e){if(!e||"Object"!==toStringTag(e))return false;const n=t(e);return !n||(hasConstructorOf(e,Object)||isUserObject(n))}function isObject(e){return null!==e&&"object"==typeof e}function escapeKeyPathComponent(e){return e.replaceAll("''","''''").replace(/^$/u,"''").replaceAll("~","~0").replaceAll(".","~1")}function unescapeKeyPathComponent(e){return e.replaceAll("~1",".").replaceAll("~0","~").replace(/^''$/u,"").replaceAll("''''","''")}function getByKeyPath(t,n,r){if(""===n)return t;if(null===t||"object"!=typeof t)throw new TypeError("Unexpected non-object type");const s=n.indexOf("."),o=unescapeKeyPathComponent(-1===s?n:n.slice(0,s));if(!r||e(t,o)){if(-1!==s){const e=t[o];return void 0===e?void 0:getByKeyPath(e,n.slice(s+1),r)}return t[o]}}function setAtKeyPath(t,n,r,s){if(""===n)return r;let o=t,i=n;for(;;){if(!o||"object"!=typeof o)throw new TypeError("Unexpected non-object type");const n=i.indexOf("."),c=unescapeKeyPathComponent(-1===n?i:i.slice(0,n));if("__proto__"===c)throw new TypeError("Invalid property");if(-1===n)return o[c]=r,t;if(s&&!e(o,c))throw new TypeError("Invalid property");o=o[c],i=i.slice(n+1);}}function getJSONType(e){return null===e?"null":Array.isArray(e)?"array":typeof e}
|
|
2
2
|
/**
|
|
3
3
|
* @file Typeson - JSON with types.
|
|
4
4
|
* @license The MIT License (MIT)
|
|
5
5
|
* @copyright (c) 2016-2018 David Fahlander, Brett Zamir
|
|
6
|
-
*/const{keys:n,hasOwn:r}=Object,{isArray:s}=Array,o=["type","replaced","iterateIn","iterateUnsetNumeric","addLength"];function nestedPathsFirst(e,t){if(""===e.keypath)return -1;let n=e.keypath.match(/\./gu)??0,r=t.keypath.match(/\./gu)??0;return n&&(n=n.length),r&&(r=r.length),n>r?-1:n<r?1:e.keypath<t.keypath?-1:e.keypath>t.keypath?1:0}class Typeson{constructor(e){this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={};}stringify(e,t,n,r){r={...this.options,...r,stringification:true};const o=this.encapsulate(e,null,r);return s(o)?JSON.stringify(o[0],t,n):o.then(e=>JSON.stringify(e,t,n))}stringifySync(e,t,n,r){return this.stringify(e,t,n,{throwOnBadSyncType:true,...r,sync:true})}stringifyAsync(e,t,n,r){return this.stringify(e,t,n,{throwOnBadSyncType:true,...r,sync:false})}parse(e,t,n){return n={...this.options,...n,parse:true},this.revive(JSON.parse(e,t),n)}parseSync(e,t,n){return this.parse(e,t,{throwOnBadSyncType:true,...n,sync:true})}parseAsync(e,t,n){return this.parse(e,t,{throwOnBadSyncType:true,...n,sync:false})}specialTypeNames(e,t,n={}){return n.returnTypeNames=true,this.encapsulate(e,t,n)}rootTypeName(e,t,n={}){return n.iterateNone=true,this.encapsulate(e,t,n)}encapsulate(e,t,i){const c={sync:true,...this.options,...i},{sync:a}=c,p={},y=[],u=[],l=[],h=!("cyclic"in c)||c.cyclic,{encapsulateObserver:f}=c,finish=e=>{const t=Object.values(p);if(c.iterateNone)return t.length?t[0]:getJSONType(e);if(t.length){if(c.returnTypeNames)return [...new Set(t)];e&&isPlainObject(e)&&!r(e,"$types")?e.$types=p:e={$:e,$types:{$:p}};}else isObject(e)&&r(e,"$types")&&(e={$:e,$types:true});return !c.returnTypeNames&&e},checkPromises=async(e,t)=>{const n=await Promise.all(t.map(e=>e[1].p));return await Promise.all(n.map(async function(n){const r=[],[s]=t.splice(0,1),[o,,i,c,a,p,y]=s,u=_encapsulate(o,n,i,c,r,true,y),l=hasConstructorOf(u,TypesonPromise);if(o&&l){const t=await u.p;return a[p]=t,checkPromises(e,r)}return o?a[p]=u:e=l?u.p:u,checkPromises(e,r)})),e},_adaptBuiltinStateObjectProperties=(e,t,n)=>{Object.assign(e,t);const r=o.map(t=>{const n=e[t];return delete e[t],n});n(),o.forEach((t,n)=>{e[t]=r[n];});},_encapsulate=(e,t,o,i,a,l,h)=>{let d,O={};const v=f?function(n){const r=h??i.type??getJSONType(t);f(Object.assign(n??O,{keypath:e,value:t,cyclic:o,stateObj:i,promisesData:a,resolvingTypesonPromise:l,awaitingTypesonPromise:hasConstructorOf(t,TypesonPromise)},{type:r}));}:null;if(["string","boolean","number","undefined"].includes(typeof t))return void 0===t||t===1/0||0===t||t===-1/0||Number.isNaN(t)?(d=i.replaced?t:replace(e,t,i,a,false,l,v),d!==t&&(O={replaced:d})):d=t,v&&v(),d;if(null===t)return v&&v(),t;if(o&&t&&"object"==typeof t&&!i.iterateIn&&!i.iterateUnsetNumeric){const n=y.indexOf(t);if(-1!==n)return p[e]="#",v&&v({cyclicKeypath:u[n]}),"#"+u[n];true===o&&(y.push(t),u.push(e));}const m=isPlainObject(t),b=s(t),P=(m||b)&&(!this.plainObjectReplacers.length||i.replaced)||i.iterateIn?t:replace(e,t,i,a,m||b,null,v);let T;if(P!==t?(d=P,O={replaced:P}):""===e&&hasConstructorOf(t,TypesonPromise)?(a.push([e,t,o,i,void 0,void 0,i.type]),d=t):b&&"object"!==i.iterateIn||"array"===i.iterateIn?(T=new Array(t.length),O={clone:T}):!m&&(["function","symbol"].includes(typeof t)||"toJSON"in t||hasConstructorOf(t,TypesonPromise)||hasConstructorOf(t,Promise)||hasConstructorOf(t,ArrayBuffer))&&"object"!==i.iterateIn?d=t:(T={},i.addLength&&(T.length=t.length),O={clone:T}),v&&v(),c.iterateNone)return T??d;if(!T)return d;if(i.iterateIn){for(const n in t){const s={ownKeys:r(t,n)};_adaptBuiltinStateObjectProperties(i,s,()=>{const r=e+(e?".":"")+escapeKeyPathComponent(n),s=_encapsulate(r,t[n],Boolean(o),i,a,l);hasConstructorOf(s,TypesonPromise)?a.push([r,s,Boolean(o),i,T,n,i.type]):void 0!==s&&(T[n]=s);});}v&&v({endIterateIn:true,end:true});}else n(t).forEach(function(n){const r=e+(e?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(i,{ownKeys:true},()=>{const e=_encapsulate(r,t[n],Boolean(o),i,a,l);hasConstructorOf(e,TypesonPromise)?a.push([r,e,Boolean(o),i,T,n,i.type]):void 0!==e&&(T[n]=e);});}),v&&v({endIterateOwn:true,end:true});if(i.iterateUnsetNumeric){const n=t.length;for(let r=0;r<n;r++){if(r in t)continue;const n=`${e}${e?".":""}${String(r)}`;_adaptBuiltinStateObjectProperties(i,{ownKeys:false},()=>{const e=_encapsulate(n,void 0,Boolean(o),i,a,l);hasConstructorOf(e,TypesonPromise)?a.push([n,e,Boolean(o),i,T,r,i.type]):void 0!==e&&(T[r]=e);});}v&&v({endIterateUnsetNumeric:true,end:true});}return T},replace=(e,t,n,r,s,o,i)=>{const c=s?this.plainObjectReplacers:this.nonplainObjectReplacers;let y=c.length;for(;y--;){const s=c[y];if(s.test(t,n)){const{type:c}=s;if(Object.hasOwn(this.revivers,c)){const t=p[e];p[e]=t?[c].concat(t):c;}if(Object.assign(n,{type:c,replaced:true}),(a||!s.replaceAsync)&&!s.replace)return i&&i({typeDetected:true}),_encapsulate(e,t,h&&"readonly",n,r,o,c);let y;if(i&&i({replacing:true}),a||!s.replaceAsync){if(void 0===s.replace)throw new TypeError("Missing replacer");y=s.replace(t,n);}else y=s.replaceAsync(t,n);return _encapsulate(e,y,h&&"readonly",n,r,o,c)}}return t},d=_encapsulate("",e,h,t??{},l);if(l.length)return a&&c.throwOnBadSyncType?(()=>{throw new TypeError("Sync method requested but async result obtained")})():Promise.resolve(checkPromises(d,l)).then(finish);if(!a&&c.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return a&&c.stringification?[finish(d)]:a?finish(d):Promise.resolve(finish(d))}encapsulateSync(e,t,n){return this.encapsulate(e,t,{throwOnBadSyncType:true,...n,sync:true})}encapsulateAsync(e,t,n){return this.encapsulate(e,t,{throwOnBadSyncType:true,...n,sync:false})}revive(e,t){const o={sync:true,...this.options,...t},{sync:i}=o;function finishRevival(e){if(i)return e;if(o.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return Promise.resolve(e)}if(!e||"object"!=typeof e||Array.isArray(e))return finishRevival(e);let c=e.$types;if(true===c)return finishRevival(e.$);if(!c||"object"!=typeof c||Array.isArray(c))return finishRevival(e);const a=[],p=Object.create(null),y={};let u=true;c.$&&isPlainObject(c.$)&&(e=e.$,c=c.$,u=false);const executeReviver=(e,t)=>{const[n]=this.revivers[e]??[];if(!n)throw new Error("Unregistered type: "+e);if(i&&!("revive"in n))return t;if(!i&&n.reviveAsync)return n.reviveAsync(t,y);if(n.revive)return n.revive(t,y);throw new Error("Missing reviver")},l=[];function checkUndefined(e){return hasConstructorOf(e,Undefined)?void 0:e}const h=(()=>{if(!c)throw new Error("Found bad `types`");const t=[];if(Object.entries(c).forEach(([e,n])=>{"#"!==n&&[].concat(n).forEach(n=>{const[,{plain:r}]=this.revivers[n]??[null,{}];r&&(t.push({keypath:e,type:n}),delete c[e]);});}),t.length)return t.sort(nestedPathsFirst),t.reduce(function reducer(t,{keypath:n,type:r}){if(isThenable(t))return t.then(e=>reducer(e,{keypath:n,type:r}));let s=getByKeyPath(e,n);if(s=executeReviver(r,s),hasConstructorOf(s,TypesonPromise))return s.then(t=>{const r=setAtKeyPath(e,n,t);r===t&&(e=r);});const o=setAtKeyPath(e,n,s);o===s&&(e=o);},void 0)})();let f;return hasConstructorOf(h,TypesonPromise)?f=h.then(()=>e):(f=function _revive(e,t,o,y,h){if(u&&"$types"===e)return;const f=l.length,d=c[e],O=s(t);if(O||isPlainObject(t)){const s=O?new Array(t.length):{};for(n(t).forEach(n=>{const r=_revive(e+(e?".":"")+escapeKeyPathComponent(n),t[n],o??s,s,n),set=e=>(hasConstructorOf(e,Undefined)?s[n]=void 0:void 0!==e&&(s[n]=e),e);hasConstructorOf(r,TypesonPromise)?l.push(r.then(e=>set(e))):set(r);}),t=s;a.length;){const[[e,t,n,s]]=a,o=r(p,t),i=o?p[t]:getByKeyPath(e,t);if(!o&&void 0===i)break;n[s]=i,a.shift();}}if(!d)return p[e]=t,t;if("#"===d){const e=t.slice(1),n=r(p,e),s=n?p[e]:getByKeyPath(o,e);return n||void 0!==s||a.push([o,e,y,h]),s}const applyType=t=>{const n=[].concat(d).reduce(function reducer(e,t){if(hasConstructorOf(e,TypesonPromise))return e.then(e=>reducer(e,t));if("string"!=typeof t)throw new TypeError("Bad type JSON");return executeReviver(t,e)},t);return hasConstructorOf(n,TypesonPromise)?n.then(t=>(p[e]=t,t)):(p[e]=n,n)};return !i&&l.length>f?TypesonPromise.all(l.slice(f)).then(()=>applyType(t)):applyType(t)}("",e,null),l.length&&(f=TypesonPromise.resolve(f).then(e=>TypesonPromise.all([e,...l])).then(([e])=>e))),isThenable(f)?i&&o.throwOnBadSyncType?(()=>{throw new TypeError("Sync method requested but async result obtained")})():hasConstructorOf(f,TypesonPromise)?f.p.then(checkUndefined):f:!i&&o.throwOnBadSyncType?(()=>{throw new TypeError("Async method requested but sync result obtained")})():i?checkUndefined(f):Promise.resolve(checkUndefined(f))}reviveSync(e,t){return this.revive(e,{throwOnBadSyncType:true,...t,sync:true})}reviveAsync(e,t){return this.revive(e,{throwOnBadSyncType:true,...t,sync:false})}register(e,t){const r=t??{},reg=e=>{s(e)?e.forEach(e=>{reg(e);}):n(e).forEach(t=>{if("#"===t)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(i$1.includes(t))throw new TypeError("Plain JSON object types are reserved as type names");let n=e[t];const o=n&&"function"!=typeof n&&!Array.isArray(n)&&n.testPlainObjects?this.plainObjectReplacers:this.nonplainObjectReplacers,c=o.filter(function(e){return e.type===t});if(c.length&&(o.splice(o.indexOf(c[0]),1),delete this.revivers[t],delete this.types[t]),"function"==typeof n){const e=n;n={test:t=>t&&t.constructor===e,replace:e=>({...e}),revive:t=>Object.assign(Object.create(e.prototype),t)};}else if(s(n)){const[e,t,r]=n;n={test:e,replace:t,revive:r};}if(!n?.test)return;const a={type:t,test:n.test.bind(n)};n.replace&&(a.replace=n.replace.bind(n)),n.replaceAsync&&(a.replaceAsync=n.replaceAsync.bind(n));const p="number"==typeof r.fallback?r.fallback:r.fallback?0:1/0;if(n.testPlainObjects?this.plainObjectReplacers.splice(p,0,a):this.nonplainObjectReplacers.splice(p,0,a),n.revive||n.reviveAsync){const e={};n.revive&&(e.revive=n.revive.bind(n)),n.reviveAsync&&(e.reviveAsync=n.reviveAsync.bind(n)),this.revivers[t]=[e,{plain:n.testPlainObjects}];}this.types[t]=n;});};return [].concat(e).forEach(e=>{reg(e);}),this}}class Undefined{}Undefined.__typeson__type__="TypesonUndefined";const i$1=["null","boolean","number","string","array","object"];
|
|
6
|
+
*/const{keys:n,hasOwn:r}=Object,{isArray:s}=Array,o=["type","replaced","iterateIn","iterateUnsetNumeric","addLength"];function setOwnEnumerable(e,t,n){Object.defineProperty(e,t,{configurable:true,enumerable:true,value:n,writable:true});}function nestedPathsFirst(e,t){if(""===e.keypath)return -1;let n=e.keypath.match(/\./gu)??0,r=t.keypath.match(/\./gu)??0;return n&&(n=n.length),r&&(r=r.length),n>r?-1:n<r?1:e.keypath<t.keypath?-1:e.keypath>t.keypath?1:0}class Typeson{constructor(e){this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={};}stringify(e,t,n,r){r={...this.options,...r,stringification:true};const o=this.encapsulate(e,null,r);return s(o)?JSON.stringify(o[0],t,n):o.then(e=>JSON.stringify(e,t,n))}stringifySync(e,t,n,r){return this.stringify(e,t,n,{throwOnBadSyncType:true,...r,sync:true})}stringifyAsync(e,t,n,r){return this.stringify(e,t,n,{throwOnBadSyncType:true,...r,sync:false})}parse(e,t,n){return n={...this.options,...n,parse:true},this.revive(JSON.parse(e,t),n)}parseSync(e,t,n){return this.parse(e,t,{throwOnBadSyncType:true,...n,sync:true})}parseAsync(e,t,n){return this.parse(e,t,{throwOnBadSyncType:true,...n,sync:false})}specialTypeNames(e,t,n={}){return this.encapsulate(e,t,{...n,returnTypeNames:true})}rootTypeName(e,t,n={}){return this.encapsulate(e,t,{...n,iterateNone:true})}encapsulate(e,t,i){const c={sync:true,...this.options,...i},{sync:a}=c,p={},y=[],u=[],l=[],h=!("cyclic"in c)||c.cyclic,{encapsulateObserver:f,encapsulateError:d}=c,finish=e=>{const t=Object.values(p);if(c.iterateNone)return t.length?t[0]:getJSONType(e);if(t.length){if(c.returnTypeNames)return [...new Set(t)];e&&isPlainObject(e)&&!r(e,"$types")?e.$types=p:e={$:e,$types:{$:p}};}else isObject(e)&&r(e,"$types")&&(e={$:e,$types:true});return !c.returnTypeNames&&e},checkPromises=async(e,t)=>{const n=await Promise.all(t.map(e=>e[1].p));return await Promise.all(n.map(async function(n){const r=[],[s]=t.splice(0,1),[o,,i,c,a,p,y]=s,u=_encapsulate(o,n,i,c,r,true,y),l=hasConstructorOf(u,TypesonPromise);if(o&&l){return setOwnEnumerable(a,p,await u.p),checkPromises(e,r)}return o?setOwnEnumerable(a,p,u):e=l?u.p:u,checkPromises(e,r)})),e},_adaptBuiltinStateObjectProperties=(e,t,n)=>{Object.assign(e,t);const r=o.map(t=>{const n=e[t];return delete e[t],n});n(),o.forEach((t,n)=>{e[t]=r[n];});},_encapsulate=(e,t,o,i,a,l,h)=>{let b,O={};const v=f?function(n){const r=h??i.type??getJSONType(t);f(Object.assign(n??O,{keypath:e,value:t,cyclic:o,stateObj:i,promisesData:a,resolvingTypesonPromise:l,awaitingTypesonPromise:hasConstructorOf(t,TypesonPromise)},{type:r}));}:null,getEncapsulatedValue=(e,t,n)=>{try{return {value:_encapsulate(e,t[n],Boolean(o),i,a,l)}}catch(r){if(!d)throw r;const s=h??i.type??getJSONType(t),o=d({keypath:e,error:r,parent:t,key:n,stateObj:i,type:s});if(!o)throw r;if("substitute"in o)return {value:o.substitute,substitute:true};if(o.ignore)return;throw r}};if(["string","boolean","number","undefined"].includes(typeof t))return void 0===t||t===1/0||0===t||t===-1/0||Number.isNaN(t)?(b=i.replaced?t:replace(e,t,i,a,false,l,v),b!==t&&(O={replaced:b})):b=t,v&&v(),b;if(null===t)return v&&v(),t;if(o&&t&&"object"==typeof t&&!i.iterateIn&&!i.iterateUnsetNumeric){const n=y.indexOf(t);if(-1!==n)return p[e]="#",v&&v({cyclicKeypath:u[n]}),"#"+u[n];true===o&&(y.push(t),u.push(e));}const m=isPlainObject(t),T=s(t),P=(m||T)&&(!this.plainObjectReplacers.length||i.replaced)||i.iterateIn?t:replace(e,t,i,a,m||T,null,v);let w;if(P!==t?(b=P,O={replaced:P}):""===e&&hasConstructorOf(t,TypesonPromise)?(a.push([e,t,o,i,void 0,void 0,i.type]),b=t):T&&"object"!==i.iterateIn||"array"===i.iterateIn?(w=new Array(t.length),O={clone:w}):!m&&("object"!=typeof t||"toJSON"in t||hasConstructorOf(t,TypesonPromise)||hasConstructorOf(t,Promise)||hasConstructorOf(t,ArrayBuffer))&&"object"!==i.iterateIn?b=t:(w={},i.addLength&&(w.length=t.length),O={clone:w}),v&&v(),c.iterateNone)return w??b;if(!w)return b;if(i.iterateIn){for(const n in t){const s={ownKeys:r(t,n)};_adaptBuiltinStateObjectProperties(i,s,()=>{const r=e+(e?".":"")+escapeKeyPathComponent(n),s=getEncapsulatedValue(r,t,n),c=s&&s.value;hasConstructorOf(c,TypesonPromise)?a.push([r,c,Boolean(o),i,w,n,i.type]):s&&(void 0!==c||"substitute"in s)&&setOwnEnumerable(w,n,c);});}v&&v({endIterateIn:true,end:true});}else n(t).forEach(function(n){const r=e+(e?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(i,{ownKeys:true},()=>{const e=getEncapsulatedValue(r,t,n),s=e&&e.value;hasConstructorOf(s,TypesonPromise)?a.push([r,s,Boolean(o),i,w,n,i.type]):e&&(void 0!==s||"substitute"in e)&&setOwnEnumerable(w,n,s);});}),v&&v({endIterateOwn:true,end:true});if(i.iterateUnsetNumeric){const n=t.length;for(let r=0;r<n;r++){if(r in t)continue;const n=`${e}${e?".":""}${String(r)}`;_adaptBuiltinStateObjectProperties(i,{ownKeys:false},()=>{const e=_encapsulate(n,void 0,Boolean(o),i,a,l);hasConstructorOf(e,TypesonPromise)?a.push([n,e,Boolean(o),i,w,r,i.type]):void 0!==e&&setOwnEnumerable(w,r,e);});}v&&v({endIterateUnsetNumeric:true,end:true});}return w},replace=(e,t,n,r,s,o,i)=>{const c=s?this.plainObjectReplacers:this.nonplainObjectReplacers;let y=c.length;for(;y--;){const s=c[y];if(s.test(t,n)){const{type:c}=s;if(Object.hasOwn(this.revivers,c)){const t=p[e];p[e]=t?[c].concat(t):c;}if(Object.assign(n,{type:c,replaced:true}),(a||!s.replaceAsync)&&!s.replace)return i&&i({typeDetected:true}),_encapsulate(e,t,h&&"readonly",n,r,o,c);let y;if(i&&i({replacing:true}),a||!s.replaceAsync){if(void 0===s.replace)throw new TypeError("Missing replacer");y=s.replace(t,n);}else y=s.replaceAsync(t,n);return _encapsulate(e,y,h&&"readonly",n,r,o,c)}}return t},b=_encapsulate("",e,h,t??{},l);if(l.length)return a&&c.throwOnBadSyncType?(()=>{throw new TypeError("Sync method requested but async result obtained")})():Promise.resolve(checkPromises(b,l)).then(finish);if(!a&&c.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return a&&c.stringification?[finish(b)]:a?finish(b):Promise.resolve(finish(b))}encapsulateSync(e,t,n){return this.encapsulate(e,t,{throwOnBadSyncType:true,...n,sync:true})}encapsulateAsync(e,t,n){return this.encapsulate(e,t,{throwOnBadSyncType:true,...n,sync:false})}revive(e,t){const o={sync:true,...this.options,...t},{sync:i}=o;function finishRevival(e){if(i)return e;if(o.throwOnBadSyncType)throw new TypeError("Async method requested but sync result obtained");return Promise.resolve(e)}if(!e||"object"!=typeof e||Array.isArray(e))return finishRevival(e);let c=e.$types;if(true===c)return finishRevival(e.$);if(!c||"object"!=typeof c||Array.isArray(c))return finishRevival(e);const a=[],p=Object.create(null),y={};let u=true;c.$&&isPlainObject(c.$)&&(e=e.$,c=c.$,u=false);const executeReviver=(e,t)=>{const[n]=this.revivers[e]??[];if(!n)throw new Error("Unregistered type: "+e);if(i&&!("revive"in n))return t;if(!i&&n.reviveAsync)return n.reviveAsync(t,y);if(n.revive)return n.revive(t,y);throw new Error("Missing reviver")},l=[];function checkUndefined(e){return hasConstructorOf(e,Undefined)?void 0:e}const h=(()=>{if(!c)throw new Error("Found bad `types`");const t=[];if(Object.entries(c).forEach(([e,n])=>{"#"!==n&&[].concat(n).forEach(n=>{const[,{plain:r}]=this.revivers[n]??[null,{}];r&&(t.push({keypath:e,type:n}),delete c[e]);});}),t.length)return t.sort(nestedPathsFirst),t.reduce(function reducer(t,{keypath:n,type:r}){if(isThenable(t))return t.then(e=>reducer(e,{keypath:n,type:r}));let s=getByKeyPath(e,n,true);if(s=executeReviver(r,s),hasConstructorOf(s,TypesonPromise))return s.then(t=>{const r=setAtKeyPath(e,n,t,true);r===t&&(e=r);});const o=setAtKeyPath(e,n,s,true);o===s&&(e=o);},void 0)})();let f;return hasConstructorOf(h,TypesonPromise)?f=h.then(()=>e):(f=function _revive(e,t,o,y,h){if(u&&"$types"===e)return;const f=l.length,d=r(c,e)?c[e]:void 0,b=s(t);if(b||isPlainObject(t)){const s=b?new Array(t.length):{};for(n(t).forEach(n=>{const r=_revive(e+(e?".":"")+escapeKeyPathComponent(n),t[n],o??s,s,n),set=e=>(hasConstructorOf(e,Undefined)?setOwnEnumerable(s,n,void 0):void 0!==e&&setOwnEnumerable(s,n,e),e);hasConstructorOf(r,TypesonPromise)?l.push(r.then(e=>set(e))):set(r);}),t=s;a.length;){const[[e,t,n,s]]=a,o=r(p,t),i=o?p[t]:getByKeyPath(e,t,true);if(!o&&void 0===i)break;setOwnEnumerable(n,s,i),a.shift();}}if(!d)return p[e]=t,t;if("#"===d){const e=t.slice(1),n=r(p,e),s=n?p[e]:getByKeyPath(o,e,true);return n||void 0!==s||a.push([o,e,y,h]),s}const applyType=t=>{const n=[].concat(d).reduce(function reducer(e,t){if(hasConstructorOf(e,TypesonPromise))return e.then(e=>reducer(e,t));if("string"!=typeof t)throw new TypeError("Bad type JSON");return executeReviver(t,e)},t);return hasConstructorOf(n,TypesonPromise)?n.then(t=>(p[e]=t,t)):(p[e]=n,n)};return !i&&l.length>f?TypesonPromise.all(l.slice(f)).then(()=>applyType(t)):applyType(t)}("",e,null),l.length&&(f=TypesonPromise.resolve(f).then(e=>TypesonPromise.all([e,...l])).then(([e])=>e))),isThenable(f)?i&&o.throwOnBadSyncType?(()=>{throw new TypeError("Sync method requested but async result obtained")})():hasConstructorOf(f,TypesonPromise)?f.p.then(checkUndefined):f:!i&&o.throwOnBadSyncType?(()=>{throw new TypeError("Async method requested but sync result obtained")})():i?checkUndefined(f):Promise.resolve(checkUndefined(f))}reviveSync(e,t){return this.revive(e,{throwOnBadSyncType:true,...t,sync:true})}reviveAsync(e,t){return this.revive(e,{throwOnBadSyncType:true,...t,sync:false})}register(e,t){const r=t??{},reg=e=>{s(e)?e.forEach(e=>{reg(e);}):n(e).forEach(t=>{if("#"===t)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(i$1.includes(t))throw new TypeError("Plain JSON object types are reserved as type names");let n=e[t];if([this.plainObjectReplacers,this.nonplainObjectReplacers].forEach(e=>{const n=e.findIndex(e=>e.type===t);-1!==n&&e.splice(n,1);}),delete this.revivers[t],delete this.types[t],"function"==typeof n){const e=n;n={test:t=>t&&t.constructor===e,replace:e=>({...e}),revive:t=>Object.assign(Object.create(e.prototype),t)};}else if(s(n)){const[e,t,r]=n;n={test:e,replace:t,revive:r};}if(!n?.test)return;const o={type:t,test:n.test.bind(n)};n.replace&&(o.replace=n.replace.bind(n)),n.replaceAsync&&(o.replaceAsync=n.replaceAsync.bind(n));const c="number"==typeof r.fallback?r.fallback:r.fallback?0:1/0;if(n.testPlainObjects?this.plainObjectReplacers.splice(c,0,o):this.nonplainObjectReplacers.splice(c,0,o),n.revive||n.reviveAsync){const e={};n.revive&&(e.revive=n.revive.bind(n)),n.reviveAsync&&(e.reviveAsync=n.reviveAsync.bind(n)),this.revivers[t]=[e,{plain:n.testPlainObjects}];}this.types[t]=n;});};return [].concat(e).forEach(e=>{reg(e);}),this}}class Undefined{}Undefined.__typeson__type__="TypesonUndefined";const i$1=["null","boolean","number","string","array","object"];
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
9
|
* base64-arraybuffer
|
|
@@ -405,12 +405,12 @@ const cryptokey = {
|
|
|
405
405
|
const {
|
|
406
406
|
jwk, algorithm, usages
|
|
407
407
|
} = /**
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
408
|
+
* @type {{
|
|
409
|
+
* jwk: JsonWebKey,
|
|
410
|
+
* algorithm: KeyAlgorithm,
|
|
411
|
+
* usages: KeyUsage[]
|
|
412
|
+
* }}
|
|
413
|
+
*/ (obj);
|
|
414
414
|
|
|
415
415
|
return crypto.subtle.importKey(
|
|
416
416
|
'jwk', jwk, algorithm, true, usages
|
|
@@ -703,15 +703,15 @@ const error = {
|
|
|
703
703
|
},
|
|
704
704
|
revive (obj) {
|
|
705
705
|
const e = /**
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
706
|
+
* @type {{
|
|
707
|
+
* name: string,
|
|
708
|
+
* cause: Error,
|
|
709
|
+
* stack: string,
|
|
710
|
+
* fileName?: string,
|
|
711
|
+
* lineNumber?: import('typeson').Integer,
|
|
712
|
+
* columnNumber?: import('typeson').Integer
|
|
713
|
+
* }}
|
|
714
|
+
*/ (new Error(obj.message));
|
|
715
715
|
/* eslint-disable unicorn/no-error-property-assignment -- Ok */
|
|
716
716
|
e.name = obj.name;
|
|
717
717
|
e.cause = obj.cause;
|
|
@@ -785,24 +785,24 @@ function create$2 (Ctor) {
|
|
|
785
785
|
const isAggregateError = typeof AggregateError !== 'undefined' &&
|
|
786
786
|
Ctor === AggregateError;
|
|
787
787
|
const e = /**
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
788
|
+
* @type {{
|
|
789
|
+
* name: string,
|
|
790
|
+
* cause: Error,
|
|
791
|
+
* stack: string,
|
|
792
|
+
* fileName?: string,
|
|
793
|
+
* lineNumber?: import('typeson').Integer,
|
|
794
|
+
* columnNumber?: import('typeson').Integer
|
|
795
|
+
* }}
|
|
796
|
+
*/ (isAggregateError
|
|
797
797
|
? new /** @type {AggregateErrorConstructor} */ (
|
|
798
798
|
Ctor
|
|
799
799
|
)(obj.errors, obj.message)
|
|
800
800
|
: new /**
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
801
|
+
* @type {TypeErrorConstructor|RangeErrorConstructor|
|
|
802
|
+
* SyntaxErrorConstructor|ReferenceErrorConstructor|
|
|
803
|
+
* EvalErrorConstructor|URIErrorConstructor|
|
|
804
|
+
* InternalErrorConstructor}
|
|
805
|
+
*/ (Ctor)(obj.message));
|
|
806
806
|
|
|
807
807
|
e.name = obj.name;
|
|
808
808
|
e.cause = obj.cause;
|