Socket
Socket
Sign inDemoInstall

typeson

Package Overview
Dependencies
0
Maintainers
2
Versions
58
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.9.0 to 5.10.0

7

CHANGES.md
# typeson
## 5.10.0
- Fix: Give string tag to `TypesonPromise` to prevent it from passing
`isUserObject`
- Linting (Markdown): Update per newer API
- npm: Update devDeps
## 5.9.0

@@ -4,0 +11,0 @@

2

dist/typeson-commonjs2.js

@@ -1,1 +0,1 @@

"use strict";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})(e)}function _slicedToArray(e,n){return _arrayWithHoles(e)||_iterableToArrayLimit(e,n)||_nonIterableRest()}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_nonIterableSpread()}function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n<e.length;n++)t[n]=e[n];return t}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _iterableToArrayLimit(e,n){var t=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(t.push(s.value),!n||t.length!==n);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return t}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var keys=Object.keys,isArray=Array.isArray,_ref={},toString=_ref.toString,getProto=Object.getPrototypeOf,hasOwn={}.hasOwnProperty,fnToString=hasOwn.toString,internalStateObjPropsToIgnore=["type","replaced","iterateIn","iterateUnsetNumeric"];function isThenable(e,n){return Typeson.isObject(e)&&"function"==typeof e.then&&(!n||"function"==typeof e.catch)}function toStringTag(e){return toString.call(e).slice(8,-1)}function hasConstructorOf(e,n){if(!e||"object"!==_typeof(e))return!1;var t=getProto(e);if(!t)return!1;var r=hasOwn.call(t,"constructor")&&t.constructor;return"function"!=typeof r?null===n:"function"==typeof r&&null!==n&&fnToString.call(r)===fnToString.call(n)}function isPlainObject(e){return!(!e||"Object"!==toStringTag(e))&&(!getProto(e)||hasConstructorOf(e,Object))}function isUserObject(e){if(!e||"Object"!==toStringTag(e))return!1;var n=getProto(e);return!n||(hasConstructorOf(e,Object)||isUserObject(n))}function isObject(e){return e&&"object"===_typeof(e)}function Typeson(e){var n=[],t=[],r={},o=this.types={},i=this.stringify=function(n,t,r,o){o=Object.assign({},e,o,{stringification:!0});var i=a(n,null,o);return isArray(i)?JSON.stringify(i[0],t,r):i.then(function(e){return JSON.stringify(e,t,r)})};this.stringifySync=function(e,n,t,r){return i(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!0}))},this.stringifyAsync=function(e,n,t,r){return i(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!1}))};var s=this.parse=function(n,t,r){return r=Object.assign({},e,r,{parse:!0}),c(JSON.parse(n,t),r)};this.parseSync=function(e,n,t){return s(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.parseAsync=function(e,n,t){return s(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))},this.specialTypeNames=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.returnTypeNames=!0,this.encapsulate(e,n,t)},this.rootTypeName=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.iterateNone=!0,this.encapsulate(e,n,t)};var a=this.encapsulate=function(o,i,s){var a=(s=Object.assign({sync:!0},e,s)).sync,c={},u=[],y=[],p=[],f=!(s&&"cyclic"in s)||s.cyclic,l=s.encapsulateObserver,h=_encapsulate("",o,f,i||{},p);function finish(e){var n=Object.values(c);if(s.iterateNone)return n.length?n[0]:Typeson.getJSONType(e);if(n.length){if(s.returnTypeNames)return _toConsumableArray(new Set(n));e&&isPlainObject(e)&&!e.hasOwnProperty("$types")?e.$types=c:e={$:e,$types:{$:c}}}else isObject(e)&&e.hasOwnProperty("$types")&&(e={$:e,$types:!0});return!s.returnTypeNames&&e}return p.length?a&&s.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(function checkPromises(e,n){return Promise.all(n.map(function(e){return e[1].p})).then(function(t){return Promise.all(t.map(function(t){var r=[],o=_slicedToArray(n.splice(0,1)[0],7),i=o[0],s=o[2],a=o[3],c=o[4],u=o[5],y=o[6],p=_encapsulate(i,t,s,a,r,!0,y),f=hasConstructorOf(p,TypesonPromise);return i&&f?p.p.then(function(n){return c[u]=n,checkPromises(e,r)}):(i?c[u]=p:e=f?p.p:p,checkPromises(e,r))}))}).then(function(){return e})}(h,p)).then(finish):!a&&s.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():s.stringification&&a?[finish(h)]:a?finish(h):Promise.resolve(finish(h));function _adaptBuiltinStateObjectProperties(e,n,t){Object.assign(e,n);var r=internalStateObjPropsToIgnore.map(function(n){var t=e[n];return delete e[n],t});t(),internalStateObjPropsToIgnore.forEach(function(n,t){e[n]=r[t]})}function _encapsulate(e,t,r,o,i,a,p){var f,h={},v=_typeof(t),b=l?function(n){var s=p||o.type||Typeson.getJSONType(t);l(Object.assign(n||h,{keypath:e,value:t,cyclic:r,stateObj:o,promisesData:i,resolvingTypesonPromise:a,awaitingTypesonPromise:hasConstructorOf(t,TypesonPromise)},void 0!==s?{type:s}:{}))}:null;if(v in{string:1,boolean:1,number:1,undefined:1})return void 0===t||"number"===v&&(isNaN(t)||t===-1/0||t===1/0)?(f=replace(e,t,o,i,!1,a,b))!==t&&(h={replaced:f}):f=t,b&&b(),f;if(null===t)return b&&b(),t;if(r&&!o.iterateIn&&!o.iterateUnsetNumeric){var d=u.indexOf(t);if(!(d<0))return c[e]="#",b&&b({cyclicKeypath:y[d]}),"#"+y[d];!0===r&&(u.push(t),y.push(e))}var O,T=isPlainObject(t),g=isArray(t),m=(T||g)&&(!n.length||o.replaced)||o.iterateIn?t:replace(e,t,o,i,T||g,null,b);if(m!==t?(f=m,h={replaced:m}):g||"array"===o.iterateIn?(O=new Array(t.length),h={clone:O}):T||"object"===o.iterateIn?h={clone:O={}}:""===e&&hasConstructorOf(t,TypesonPromise)?(i.push([e,t,r,o,void 0,void 0,o.type]),f=t):f=t,b&&b(),s.iterateNone)return O||f;if(!O)return f;if(o.iterateIn){var P=function _loop(n){var s={ownKeys:t.hasOwnProperty(n)};_adaptBuiltinStateObjectProperties(o,s,function(){var s=e+(e?".":"")+escapeKeyPathComponent(n),c=_encapsulate(s,t[n],!!r,o,i,a);hasConstructorOf(c,TypesonPromise)?i.push([s,c,!!r,o,O,n,o.type]):void 0!==c&&(O[n]=c)})};for(var j in t)P(j);b&&b({endIterateIn:!0,end:!0})}else keys(t).forEach(function(n){var s=e+(e?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(o,{ownKeys:!0},function(){var e=_encapsulate(s,t[n],!!r,o,i,a);hasConstructorOf(e,TypesonPromise)?i.push([s,e,!!r,o,O,n,o.type]):void 0!==e&&(O[n]=e)})}),b&&b({endIterateOwn:!0,end:!0});if(o.iterateUnsetNumeric){for(var S=t.length,w=function _loop2(n){if(!(n in t)){var s=e+(e?".":"")+n;_adaptBuiltinStateObjectProperties(o,{ownKeys:!1},function(){var e=_encapsulate(s,void 0,!!r,o,i,a);hasConstructorOf(e,TypesonPromise)?i.push([s,e,!!r,o,O,n,o.type]):void 0!==e&&(O[n]=e)})}},A=0;A<S;A++)w(A);b&&b({endIterateUnsetNumeric:!0,end:!0})}return O}function replace(e,o,i,s,u,y,p){for(var l=u?n:t,h=l.length;h--;){var v=l[h];if(v.test(o,i)){var b=v.type;if(r[b]){var d=c[e];c[e]=d?[b].concat(d):b}return Object.assign(i,{type:b,replaced:!0}),!a&&v.replaceAsync||v.replace?(p&&p({replacing:!0}),_encapsulate(e,v[a||!v.replaceAsync?"replace":"replaceAsync"](o,i),f&&"readonly",i,s,y,b)):(p&&p({typeDetected:!0}),_encapsulate(e,o,f&&"readonly",i,s,y,b))}}return o}};this.encapsulateSync=function(e,n,t){return a(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.encapsulateAsync=function(e,n,t){return a(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))};var c=this.revive=function(n,t){var o=(t=Object.assign({sync:!0},e,t)).sync,i=n&&n.$types,s=!0;if(!i)return n;if(!0===i)return n.$;i.$&&isPlainObject(i.$)&&(n=n.$,i=i.$,s=!1);var a=[],c={},u=function _revive(e,n,t,o,u,y){if(s&&"$types"===e)return;var p=i[e];if(isArray(n)||isPlainObject(n)){var f=isArray(n)?new Array(n.length):{};for(keys(n).forEach(function(r){var i=_revive(e+(e?".":"")+escapeKeyPathComponent(r),n[r],t||f,o,f,r);hasConstructorOf(i,Undefined)?f[r]=void 0:void 0!==i&&(f[r]=i)}),n=f;a.length;){var l=_slicedToArray(a[0],4),h=l[0],v=l[1],b=l[2],d=l[3],O=getByKeyPath(h,v);if(hasConstructorOf(O,Undefined))b[d]=void 0;else{if(void 0===O)break;b[d]=O}a.splice(0,1)}}if(!p)return n;if("#"===p){var T=getByKeyPath(t,n.substr(1));return void 0===T&&a.push([t,n.substr(1),u,y]),T}var g=o.sync;return[].concat(p).reduce(function(e,n){var t=r[n];if(!t)throw new Error("Unregistered type: "+n);return t[g&&t.revive?"revive":!g&&t.reviveAsync?"reviveAsync":"revive"](e,c)},n)}("",n,null,t);return isThenable(u=hasConstructorOf(u,Undefined)?void 0:u)?o&&t.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():u:!o&&t.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():o?u:Promise.resolve(u)};this.reviveSync=function(e,n){return c(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!0}))},this.reviveAsync=function(e,n){return c(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!1}))},this.register=function(e,i){return i=i||{},[].concat(e).forEach(function R(e){if(isArray(e))return e.map(R);e&&keys(e).forEach(function(s){if("#"===s)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(Typeson.JSON_TYPES.includes(s))throw new TypeError("Plain JSON object types are reserved as type names");var a=e[s],c=a.testPlainObjects?n:t,u=c.filter(function(e){return e.type===s});if(u.length&&(c.splice(c.indexOf(u[0]),1),delete r[s],delete o[s]),a){if("function"==typeof a){var y=a;a={test:function test(e){return e&&e.constructor===y},replace:function replace(e){return assign({},e)},revive:function revive(e){return assign(Object.create(y.prototype),e)}}}else isArray(a)&&(a={test:a[0],replace:a[1],revive:a[2]});var p={type:s,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 i.fallback?i.fallback:i.fallback?0:1/0;if(a.testPlainObjects?n.splice(f,0,p):t.splice(f,0,p),a.revive||a.reviveAsync){var l={};a.revive&&(l.revive=a.revive.bind(a)),a.reviveAsync&&(l.reviveAsync=a.reviveAsync.bind(a)),r[s]=l}o[s]=a}})}),this}}function assign(e,n){return keys(n).map(function(t){e[t]=n[t]}),e}function escapeKeyPathComponent(e){return e.replace(/~/g,"~0").replace(/\./g,"~1")}function unescapeKeyPathComponent(e){return e.replace(/~1/g,".").replace(/~0/g,"~")}function getByKeyPath(e,n){if(""===n)return e;var t=n.indexOf(".");if(t>-1){var r=e[unescapeKeyPathComponent(n.substr(0,t))];return void 0===r?void 0:getByKeyPath(r,n.substr(t+1))}return e[unescapeKeyPathComponent(n)]}function Undefined(){}function TypesonPromise(e){this.p=new Promise(e)}TypesonPromise.prototype.then=function(e,n){var t=this;return new TypesonPromise(function(r,o){t.p.then(function(n){r(e?e(n):n)},function(e){t.p.catch(function(e){return n?n(e):Promise.reject(e)}).then(r,o)})})},TypesonPromise.prototype.catch=function(e){return this.then(null,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(function(n){n(e)})},TypesonPromise.reject=function(e){return new TypesonPromise(function(n,t){t(e)})},["all","race"].map(function(e){TypesonPromise[e]=function(n){return new TypesonPromise(function(t,r){Promise[e](n.map(function(e){return e.p})).then(t,r)})}}),Typeson.Undefined=Undefined,Typeson.Promise=TypesonPromise,Typeson.isThenable=isThenable,Typeson.toStringTag=toStringTag,Typeson.hasConstructorOf=hasConstructorOf,Typeson.isObject=isObject,Typeson.isPlainObject=isPlainObject,Typeson.isUserObject=isUserObject,Typeson.escapeKeyPathComponent=escapeKeyPathComponent,Typeson.unescapeKeyPathComponent=unescapeKeyPathComponent,Typeson.getByKeyPath=getByKeyPath,Typeson.getJSONType=function(e){return null===e?"null":isArray(e)?"array":_typeof(e)},Typeson.JSON_TYPES=["null","boolean","number","string","array","object"],module.exports=Typeson;
"use strict";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})(e)}function _slicedToArray(e,n){return _arrayWithHoles(e)||_iterableToArrayLimit(e,n)||_nonIterableRest()}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_nonIterableSpread()}function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n<e.length;n++)t[n]=e[n];return t}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _iterableToArrayLimit(e,n){var t=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(t.push(s.value),!n||t.length!==n);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return t}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var keys=Object.keys,isArray=Array.isArray,_ref={},toString=_ref.toString,getProto=Object.getPrototypeOf,hasOwn={}.hasOwnProperty,fnToString=hasOwn.toString,internalStateObjPropsToIgnore=["type","replaced","iterateIn","iterateUnsetNumeric"];function isThenable(e,n){return Typeson.isObject(e)&&"function"==typeof e.then&&(!n||"function"==typeof e.catch)}function toStringTag(e){return toString.call(e).slice(8,-1)}function hasConstructorOf(e,n){if(!e||"object"!==_typeof(e))return!1;var t=getProto(e);if(!t)return!1;var r=hasOwn.call(t,"constructor")&&t.constructor;return"function"!=typeof r?null===n:"function"==typeof r&&null!==n&&fnToString.call(r)===fnToString.call(n)}function isPlainObject(e){return!(!e||"Object"!==toStringTag(e))&&(!getProto(e)||hasConstructorOf(e,Object))}function isUserObject(e){if(!e||"Object"!==toStringTag(e))return!1;var n=getProto(e);return!n||(hasConstructorOf(e,Object)||isUserObject(n))}function isObject(e){return e&&"object"===_typeof(e)}function Typeson(e){var n=[],t=[],r={},o=this.types={},i=this.stringify=function(n,t,r,o){o=Object.assign({},e,o,{stringification:!0});var i=a(n,null,o);return isArray(i)?JSON.stringify(i[0],t,r):i.then(function(e){return JSON.stringify(e,t,r)})};this.stringifySync=function(e,n,t,r){return i(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!0}))},this.stringifyAsync=function(e,n,t,r){return i(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!1}))};var s=this.parse=function(n,t,r){return r=Object.assign({},e,r,{parse:!0}),c(JSON.parse(n,t),r)};this.parseSync=function(e,n,t){return s(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.parseAsync=function(e,n,t){return s(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))},this.specialTypeNames=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.returnTypeNames=!0,this.encapsulate(e,n,t)},this.rootTypeName=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.iterateNone=!0,this.encapsulate(e,n,t)};var a=this.encapsulate=function(o,i,s){var a=(s=Object.assign({sync:!0},e,s)).sync,c={},u=[],y=[],p=[],f=!(s&&"cyclic"in s)||s.cyclic,l=s.encapsulateObserver,h=_encapsulate("",o,f,i||{},p);function finish(e){var n=Object.values(c);if(s.iterateNone)return n.length?n[0]:Typeson.getJSONType(e);if(n.length){if(s.returnTypeNames)return _toConsumableArray(new Set(n));e&&isPlainObject(e)&&!e.hasOwnProperty("$types")?e.$types=c:e={$:e,$types:{$:c}}}else isObject(e)&&e.hasOwnProperty("$types")&&(e={$:e,$types:!0});return!s.returnTypeNames&&e}return p.length?a&&s.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(function checkPromises(e,n){return Promise.all(n.map(function(e){return e[1].p})).then(function(t){return Promise.all(t.map(function(t){var r=[],o=_slicedToArray(n.splice(0,1)[0],7),i=o[0],s=o[2],a=o[3],c=o[4],u=o[5],y=o[6],p=_encapsulate(i,t,s,a,r,!0,y),f=hasConstructorOf(p,TypesonPromise);return i&&f?p.p.then(function(n){return c[u]=n,checkPromises(e,r)}):(i?c[u]=p:e=f?p.p:p,checkPromises(e,r))}))}).then(function(){return e})}(h,p)).then(finish):!a&&s.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():s.stringification&&a?[finish(h)]:a?finish(h):Promise.resolve(finish(h));function _adaptBuiltinStateObjectProperties(e,n,t){Object.assign(e,n);var r=internalStateObjPropsToIgnore.map(function(n){var t=e[n];return delete e[n],t});t(),internalStateObjPropsToIgnore.forEach(function(n,t){e[n]=r[t]})}function _encapsulate(e,t,r,o,i,a,p){var f,h={},v=_typeof(t),b=l?function(n){var s=p||o.type||Typeson.getJSONType(t);l(Object.assign(n||h,{keypath:e,value:t,cyclic:r,stateObj:o,promisesData:i,resolvingTypesonPromise:a,awaitingTypesonPromise:hasConstructorOf(t,TypesonPromise)},void 0!==s?{type:s}:{}))}:null;if(v in{string:1,boolean:1,number:1,undefined:1})return void 0===t||"number"===v&&(isNaN(t)||t===-1/0||t===1/0)?(f=replace(e,t,o,i,!1,a,b))!==t&&(h={replaced:f}):f=t,b&&b(),f;if(null===t)return b&&b(),t;if(r&&!o.iterateIn&&!o.iterateUnsetNumeric){var d=u.indexOf(t);if(!(d<0))return c[e]="#",b&&b({cyclicKeypath:y[d]}),"#"+y[d];!0===r&&(u.push(t),y.push(e))}var O,T=isPlainObject(t),m=isArray(t),g=(T||m)&&(!n.length||o.replaced)||o.iterateIn?t:replace(e,t,o,i,T||m,null,b);if(g!==t?(f=g,h={replaced:g}):m||"array"===o.iterateIn?(O=new Array(t.length),h={clone:O}):T||"object"===o.iterateIn?h={clone:O={}}:""===e&&hasConstructorOf(t,TypesonPromise)?(i.push([e,t,r,o,void 0,void 0,o.type]),f=t):f=t,b&&b(),s.iterateNone)return O||f;if(!O)return f;if(o.iterateIn){var P=function _loop(n){var s={ownKeys:t.hasOwnProperty(n)};_adaptBuiltinStateObjectProperties(o,s,function(){var s=e+(e?".":"")+escapeKeyPathComponent(n),c=_encapsulate(s,t[n],!!r,o,i,a);hasConstructorOf(c,TypesonPromise)?i.push([s,c,!!r,o,O,n,o.type]):void 0!==c&&(O[n]=c)})};for(var S in t)P(S);b&&b({endIterateIn:!0,end:!0})}else keys(t).forEach(function(n){var s=e+(e?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(o,{ownKeys:!0},function(){var e=_encapsulate(s,t[n],!!r,o,i,a);hasConstructorOf(e,TypesonPromise)?i.push([s,e,!!r,o,O,n,o.type]):void 0!==e&&(O[n]=e)})}),b&&b({endIterateOwn:!0,end:!0});if(o.iterateUnsetNumeric){for(var j=t.length,w=function _loop2(n){if(!(n in t)){var s=e+(e?".":"")+n;_adaptBuiltinStateObjectProperties(o,{ownKeys:!1},function(){var e=_encapsulate(s,void 0,!!r,o,i,a);hasConstructorOf(e,TypesonPromise)?i.push([s,e,!!r,o,O,n,o.type]):void 0!==e&&(O[n]=e)})}},A=0;A<j;A++)w(A);b&&b({endIterateUnsetNumeric:!0,end:!0})}return O}function replace(e,o,i,s,u,y,p){for(var l=u?n:t,h=l.length;h--;){var v=l[h];if(v.test(o,i)){var b=v.type;if(r[b]){var d=c[e];c[e]=d?[b].concat(d):b}return Object.assign(i,{type:b,replaced:!0}),!a&&v.replaceAsync||v.replace?(p&&p({replacing:!0}),_encapsulate(e,v[a||!v.replaceAsync?"replace":"replaceAsync"](o,i),f&&"readonly",i,s,y,b)):(p&&p({typeDetected:!0}),_encapsulate(e,o,f&&"readonly",i,s,y,b))}}return o}};this.encapsulateSync=function(e,n,t){return a(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.encapsulateAsync=function(e,n,t){return a(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))};var c=this.revive=function(n,t){var o=(t=Object.assign({sync:!0},e,t)).sync,i=n&&n.$types,s=!0;if(!i)return n;if(!0===i)return n.$;i.$&&isPlainObject(i.$)&&(n=n.$,i=i.$,s=!1);var a=[],c={},u=function _revive(e,n,t,o,u,y){if(s&&"$types"===e)return;var p=i[e];if(isArray(n)||isPlainObject(n)){var f=isArray(n)?new Array(n.length):{};for(keys(n).forEach(function(r){var i=_revive(e+(e?".":"")+escapeKeyPathComponent(r),n[r],t||f,o,f,r);hasConstructorOf(i,Undefined)?f[r]=void 0:void 0!==i&&(f[r]=i)}),n=f;a.length;){var l=_slicedToArray(a[0],4),h=l[0],v=l[1],b=l[2],d=l[3],O=getByKeyPath(h,v);if(hasConstructorOf(O,Undefined))b[d]=void 0;else{if(void 0===O)break;b[d]=O}a.splice(0,1)}}if(!p)return n;if("#"===p){var T=getByKeyPath(t,n.substr(1));return void 0===T&&a.push([t,n.substr(1),u,y]),T}var m=o.sync;return[].concat(p).reduce(function(e,n){var t=r[n];if(!t)throw new Error("Unregistered type: "+n);return t[m&&t.revive?"revive":!m&&t.reviveAsync?"reviveAsync":"revive"](e,c)},n)}("",n,null,t);return isThenable(u=hasConstructorOf(u,Undefined)?void 0:u)?o&&t.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():u:!o&&t.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():o?u:Promise.resolve(u)};this.reviveSync=function(e,n){return c(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!0}))},this.reviveAsync=function(e,n){return c(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!1}))},this.register=function(e,i){return i=i||{},[].concat(e).forEach(function R(e){if(isArray(e))return e.map(R);e&&keys(e).forEach(function(s){if("#"===s)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(Typeson.JSON_TYPES.includes(s))throw new TypeError("Plain JSON object types are reserved as type names");var a=e[s],c=a.testPlainObjects?n:t,u=c.filter(function(e){return e.type===s});if(u.length&&(c.splice(c.indexOf(u[0]),1),delete r[s],delete o[s]),a){if("function"==typeof a){var y=a;a={test:function test(e){return e&&e.constructor===y},replace:function replace(e){return assign({},e)},revive:function revive(e){return assign(Object.create(y.prototype),e)}}}else isArray(a)&&(a={test:a[0],replace:a[1],revive:a[2]});var p={type:s,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 i.fallback?i.fallback:i.fallback?0:1/0;if(a.testPlainObjects?n.splice(f,0,p):t.splice(f,0,p),a.revive||a.reviveAsync){var l={};a.revive&&(l.revive=a.revive.bind(a)),a.reviveAsync&&(l.reviveAsync=a.reviveAsync.bind(a)),r[s]=l}o[s]=a}})}),this}}function assign(e,n){return keys(n).map(function(t){e[t]=n[t]}),e}function escapeKeyPathComponent(e){return e.replace(/~/g,"~0").replace(/\./g,"~1")}function unescapeKeyPathComponent(e){return e.replace(/~1/g,".").replace(/~0/g,"~")}function getByKeyPath(e,n){if(""===n)return e;var t=n.indexOf(".");if(t>-1){var r=e[unescapeKeyPathComponent(n.substr(0,t))];return void 0===r?void 0:getByKeyPath(r,n.substr(t+1))}return e[unescapeKeyPathComponent(n)]}function Undefined(){}function TypesonPromise(e){this.p=new Promise(e)}"undefined"!=typeof Symbol&&(TypesonPromise.prototype[Symbol.toStringTag]="TypesonPromise"),TypesonPromise.prototype.then=function(e,n){var t=this;return new TypesonPromise(function(r,o){t.p.then(function(n){r(e?e(n):n)},function(e){t.p.catch(function(e){return n?n(e):Promise.reject(e)}).then(r,o)})})},TypesonPromise.prototype.catch=function(e){return this.then(null,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(function(n){n(e)})},TypesonPromise.reject=function(e){return new TypesonPromise(function(n,t){t(e)})},["all","race"].map(function(e){TypesonPromise[e]=function(n){return new TypesonPromise(function(t,r){Promise[e](n.map(function(e){return e.p})).then(t,r)})}}),Typeson.Undefined=Undefined,Typeson.Promise=TypesonPromise,Typeson.isThenable=isThenable,Typeson.toStringTag=toStringTag,Typeson.hasConstructorOf=hasConstructorOf,Typeson.isObject=isObject,Typeson.isPlainObject=isPlainObject,Typeson.isUserObject=isUserObject,Typeson.escapeKeyPathComponent=escapeKeyPathComponent,Typeson.unescapeKeyPathComponent=unescapeKeyPathComponent,Typeson.getByKeyPath=getByKeyPath,Typeson.getJSONType=function(e){return null===e?"null":isArray(e)?"array":_typeof(e)},Typeson.JSON_TYPES=["null","boolean","number","string","array","object"],module.exports=Typeson;

@@ -1,1 +0,1 @@

!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.Typeson=n()}(this,function(){"use strict";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})(e)}function _slicedToArray(e,n){return function _arrayWithHoles(e){if(Array.isArray(e))return e}(e)||function _iterableToArrayLimit(e,n){var t=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(t.push(s.value),!n||t.length!==n);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return t}(e,n)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function _toConsumableArray(e){return function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n<e.length;n++)t[n]=e[n];return t}}(e)||function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var e=Object.keys,n=Array.isArray,t={}.toString,r=Object.getPrototypeOf,o={}.hasOwnProperty,i=o.toString,s=["type","replaced","iterateIn","iterateUnsetNumeric"];function isThenable(e,n){return Typeson.isObject(e)&&"function"==typeof e.then&&(!n||"function"==typeof e.catch)}function toStringTag(e){return t.call(e).slice(8,-1)}function hasConstructorOf(e,n){if(!e||"object"!==_typeof(e))return!1;var t=r(e);if(!t)return!1;var s=o.call(t,"constructor")&&t.constructor;return"function"!=typeof s?null===n:"function"==typeof s&&null!==n&&i.call(s)===i.call(n)}function isPlainObject(e){return!(!e||"Object"!==toStringTag(e))&&(!r(e)||hasConstructorOf(e,Object))}function isObject(e){return e&&"object"===_typeof(e)}function Typeson(t){var r=[],o=[],i={},a=this.types={},c=this.stringify=function(e,r,o,i){i=Object.assign({},t,i,{stringification:!0});var s=y(e,null,i);return n(s)?JSON.stringify(s[0],r,o):s.then(function(e){return JSON.stringify(e,r,o)})};this.stringifySync=function(e,n,t,r){return c(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!0}))},this.stringifyAsync=function(e,n,t,r){return c(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!1}))};var u=this.parse=function(e,n,r){return r=Object.assign({},t,r,{parse:!0}),p(JSON.parse(e,n),r)};this.parseSync=function(e,n,t){return u(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.parseAsync=function(e,n,t){return u(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))},this.specialTypeNames=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.returnTypeNames=!0,this.encapsulate(e,n,t)},this.rootTypeName=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.iterateNone=!0,this.encapsulate(e,n,t)};var y=this.encapsulate=function(a,c,u){var y=(u=Object.assign({sync:!0},t,u)).sync,p={},f=[],l=[],h=[],v=!(u&&"cyclic"in u)||u.cyclic,d=u.encapsulateObserver,b=_encapsulate("",a,v,c||{},h);function finish(e){var n=Object.values(p);if(u.iterateNone)return n.length?n[0]:Typeson.getJSONType(e);if(n.length){if(u.returnTypeNames)return _toConsumableArray(new Set(n));e&&isPlainObject(e)&&!e.hasOwnProperty("$types")?e.$types=p:e={$:e,$types:{$:p}}}else isObject(e)&&e.hasOwnProperty("$types")&&(e={$:e,$types:!0});return!u.returnTypeNames&&e}return h.length?y&&u.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(function checkPromises(e,n){return Promise.all(n.map(function(e){return e[1].p})).then(function(t){return Promise.all(t.map(function(t){var r=[],o=_slicedToArray(n.splice(0,1)[0],7),i=o[0],s=o[2],a=o[3],c=o[4],u=o[5],y=o[6],p=_encapsulate(i,t,s,a,r,!0,y),f=hasConstructorOf(p,TypesonPromise);return i&&f?p.p.then(function(n){return c[u]=n,checkPromises(e,r)}):(i?c[u]=p:e=f?p.p:p,checkPromises(e,r))}))}).then(function(){return e})}(b,h)).then(finish):!y&&u.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():u.stringification&&y?[finish(b)]:y?finish(b):Promise.resolve(finish(b));function _adaptBuiltinStateObjectProperties(e,n,t){Object.assign(e,n);var r=s.map(function(n){var t=e[n];return delete e[n],t});t(),s.forEach(function(n,t){e[n]=r[t]})}function _encapsulate(t,o,i,s,a,c,y){var h,v={},b=_typeof(o),O=d?function(e){var n=y||s.type||Typeson.getJSONType(o);d(Object.assign(e||v,{keypath:t,value:o,cyclic:i,stateObj:s,promisesData:a,resolvingTypesonPromise:c,awaitingTypesonPromise:hasConstructorOf(o,TypesonPromise)},void 0!==n?{type:n}:{}))}:null;if(b in{string:1,boolean:1,number:1,undefined:1})return void 0===o||"number"===b&&(isNaN(o)||o===-1/0||o===1/0)?(h=replace(t,o,s,a,!1,c,O))!==o&&(v={replaced:h}):h=o,O&&O(),h;if(null===o)return O&&O(),o;if(i&&!s.iterateIn&&!s.iterateUnsetNumeric){var m=f.indexOf(o);if(!(m<0))return p[t]="#",O&&O({cyclicKeypath:l[m]}),"#"+l[m];!0===i&&(f.push(o),l.push(t))}var T,g=isPlainObject(o),P=n(o),j=(g||P)&&(!r.length||s.replaced)||s.iterateIn?o:replace(t,o,s,a,g||P,null,O);if(j!==o?(h=j,v={replaced:j}):P||"array"===s.iterateIn?(T=new Array(o.length),v={clone:T}):g||"object"===s.iterateIn?v={clone:T={}}:""===t&&hasConstructorOf(o,TypesonPromise)?(a.push([t,o,i,s,void 0,void 0,s.type]),h=o):h=o,O&&O(),u.iterateNone)return T||h;if(!T)return h;if(s.iterateIn){var S=function _loop(e){var n={ownKeys:o.hasOwnProperty(e)};_adaptBuiltinStateObjectProperties(s,n,function(){var n=t+(t?".":"")+escapeKeyPathComponent(e),r=_encapsulate(n,o[e],!!i,s,a,c);hasConstructorOf(r,TypesonPromise)?a.push([n,r,!!i,s,T,e,s.type]):void 0!==r&&(T[e]=r)})};for(var w in o)S(w);O&&O({endIterateIn:!0,end:!0})}else e(o).forEach(function(e){var n=t+(t?".":"")+escapeKeyPathComponent(e);_adaptBuiltinStateObjectProperties(s,{ownKeys:!0},function(){var t=_encapsulate(n,o[e],!!i,s,a,c);hasConstructorOf(t,TypesonPromise)?a.push([n,t,!!i,s,T,e,s.type]):void 0!==t&&(T[e]=t)})}),O&&O({endIterateOwn:!0,end:!0});if(s.iterateUnsetNumeric){for(var A=o.length,_=function _loop2(e){if(!(e in o)){var n=t+(t?".":"")+e;_adaptBuiltinStateObjectProperties(s,{ownKeys:!1},function(){var t=_encapsulate(n,void 0,!!i,s,a,c);hasConstructorOf(t,TypesonPromise)?a.push([n,t,!!i,s,T,e,s.type]):void 0!==t&&(T[e]=t)})}},C=0;C<A;C++)_(C);O&&O({endIterateUnsetNumeric:!0,end:!0})}return T}function replace(e,n,t,s,a,c,u){for(var f=a?r:o,l=f.length;l--;){var h=f[l];if(h.test(n,t)){var d=h.type;if(i[d]){var b=p[e];p[e]=b?[d].concat(b):d}return Object.assign(t,{type:d,replaced:!0}),!y&&h.replaceAsync||h.replace?(u&&u({replacing:!0}),_encapsulate(e,h[y||!h.replaceAsync?"replace":"replaceAsync"](n,t),v&&"readonly",t,s,c,d)):(u&&u({typeDetected:!0}),_encapsulate(e,n,v&&"readonly",t,s,c,d))}}return n}};this.encapsulateSync=function(e,n,t){return y(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.encapsulateAsync=function(e,n,t){return y(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))};var p=this.revive=function(r,o){var s=(o=Object.assign({sync:!0},t,o)).sync,a=r&&r.$types,c=!0;if(!a)return r;if(!0===a)return r.$;a.$&&isPlainObject(a.$)&&(r=r.$,a=a.$,c=!1);var u=[],y={},p=function _revive(t,r,o,s,p,f){if(c&&"$types"===t)return;var l=a[t];if(n(r)||isPlainObject(r)){var h=n(r)?new Array(r.length):{};for(e(r).forEach(function(e){var n=_revive(t+(t?".":"")+escapeKeyPathComponent(e),r[e],o||h,s,h,e);hasConstructorOf(n,Undefined)?h[e]=void 0:void 0!==n&&(h[e]=n)}),r=h;u.length;){var v=_slicedToArray(u[0],4),d=v[0],b=v[1],O=v[2],m=v[3],T=getByKeyPath(d,b);if(hasConstructorOf(T,Undefined))O[m]=void 0;else{if(void 0===T)break;O[m]=T}u.splice(0,1)}}if(!l)return r;if("#"===l){var g=getByKeyPath(o,r.substr(1));return void 0===g&&u.push([o,r.substr(1),p,f]),g}var P=s.sync;return[].concat(l).reduce(function(e,n){var t=i[n];if(!t)throw new Error("Unregistered type: "+n);return t[P&&t.revive?"revive":!P&&t.reviveAsync?"reviveAsync":"revive"](e,y)},r)}("",r,null,o);return isThenable(p=hasConstructorOf(p,Undefined)?void 0:p)?s&&o.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():p:!s&&o.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():s?p:Promise.resolve(p)};this.reviveSync=function(e,n){return p(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!0}))},this.reviveAsync=function(e,n){return p(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!1}))},this.register=function(t,s){return s=s||{},[].concat(t).forEach(function R(t){if(n(t))return t.map(R);t&&e(t).forEach(function(e){if("#"===e)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(Typeson.JSON_TYPES.includes(e))throw new TypeError("Plain JSON object types are reserved as type names");var c=t[e],u=c.testPlainObjects?r:o,y=u.filter(function(n){return n.type===e});if(y.length&&(u.splice(u.indexOf(y[0]),1),delete i[e],delete a[e]),c){if("function"==typeof c){var p=c;c={test:function test(e){return e&&e.constructor===p},replace:function replace(e){return assign({},e)},revive:function revive(e){return assign(Object.create(p.prototype),e)}}}else n(c)&&(c={test:c[0],replace:c[1],revive:c[2]});var f={type:e,test:c.test.bind(c)};c.replace&&(f.replace=c.replace.bind(c)),c.replaceAsync&&(f.replaceAsync=c.replaceAsync.bind(c));var l="number"==typeof s.fallback?s.fallback:s.fallback?0:1/0;if(c.testPlainObjects?r.splice(l,0,f):o.splice(l,0,f),c.revive||c.reviveAsync){var h={};c.revive&&(h.revive=c.revive.bind(c)),c.reviveAsync&&(h.reviveAsync=c.reviveAsync.bind(c)),i[e]=h}a[e]=c}})}),this}}function assign(n,t){return e(t).map(function(e){n[e]=t[e]}),n}function escapeKeyPathComponent(e){return e.replace(/~/g,"~0").replace(/\./g,"~1")}function unescapeKeyPathComponent(e){return e.replace(/~1/g,".").replace(/~0/g,"~")}function getByKeyPath(e,n){if(""===n)return e;var t=n.indexOf(".");if(t>-1){var r=e[unescapeKeyPathComponent(n.substr(0,t))];return void 0===r?void 0:getByKeyPath(r,n.substr(t+1))}return e[unescapeKeyPathComponent(n)]}function Undefined(){}function TypesonPromise(e){this.p=new Promise(e)}return TypesonPromise.prototype.then=function(e,n){var t=this;return new TypesonPromise(function(r,o){t.p.then(function(n){r(e?e(n):n)},function(e){t.p.catch(function(e){return n?n(e):Promise.reject(e)}).then(r,o)})})},TypesonPromise.prototype.catch=function(e){return this.then(null,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(function(n){n(e)})},TypesonPromise.reject=function(e){return new TypesonPromise(function(n,t){t(e)})},["all","race"].map(function(e){TypesonPromise[e]=function(n){return new TypesonPromise(function(t,r){Promise[e](n.map(function(e){return e.p})).then(t,r)})}}),Typeson.Undefined=Undefined,Typeson.Promise=TypesonPromise,Typeson.isThenable=isThenable,Typeson.toStringTag=toStringTag,Typeson.hasConstructorOf=hasConstructorOf,Typeson.isObject=isObject,Typeson.isPlainObject=isPlainObject,Typeson.isUserObject=function isUserObject(e){if(!e||"Object"!==toStringTag(e))return!1;var n=r(e);return!n||hasConstructorOf(e,Object)||isUserObject(n)},Typeson.escapeKeyPathComponent=escapeKeyPathComponent,Typeson.unescapeKeyPathComponent=unescapeKeyPathComponent,Typeson.getByKeyPath=getByKeyPath,Typeson.getJSONType=function(e){return null===e?"null":n(e)?"array":_typeof(e)},Typeson.JSON_TYPES=["null","boolean","number","string","array","object"],Typeson});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.Typeson=n()}(this,function(){"use strict";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})(e)}function _slicedToArray(e,n){return function _arrayWithHoles(e){if(Array.isArray(e))return e}(e)||function _iterableToArrayLimit(e,n){var t=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(t.push(s.value),!n||t.length!==n);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return t}(e,n)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function _toConsumableArray(e){return function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n<e.length;n++)t[n]=e[n];return t}}(e)||function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var e=Object.keys,n=Array.isArray,t={}.toString,r=Object.getPrototypeOf,o={}.hasOwnProperty,i=o.toString,s=["type","replaced","iterateIn","iterateUnsetNumeric"];function isThenable(e,n){return Typeson.isObject(e)&&"function"==typeof e.then&&(!n||"function"==typeof e.catch)}function toStringTag(e){return t.call(e).slice(8,-1)}function hasConstructorOf(e,n){if(!e||"object"!==_typeof(e))return!1;var t=r(e);if(!t)return!1;var s=o.call(t,"constructor")&&t.constructor;return"function"!=typeof s?null===n:"function"==typeof s&&null!==n&&i.call(s)===i.call(n)}function isPlainObject(e){return!(!e||"Object"!==toStringTag(e))&&(!r(e)||hasConstructorOf(e,Object))}function isObject(e){return e&&"object"===_typeof(e)}function Typeson(t){var r=[],o=[],i={},a=this.types={},c=this.stringify=function(e,r,o,i){i=Object.assign({},t,i,{stringification:!0});var s=y(e,null,i);return n(s)?JSON.stringify(s[0],r,o):s.then(function(e){return JSON.stringify(e,r,o)})};this.stringifySync=function(e,n,t,r){return c(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!0}))},this.stringifyAsync=function(e,n,t,r){return c(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!1}))};var u=this.parse=function(e,n,r){return r=Object.assign({},t,r,{parse:!0}),p(JSON.parse(e,n),r)};this.parseSync=function(e,n,t){return u(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.parseAsync=function(e,n,t){return u(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))},this.specialTypeNames=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.returnTypeNames=!0,this.encapsulate(e,n,t)},this.rootTypeName=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.iterateNone=!0,this.encapsulate(e,n,t)};var y=this.encapsulate=function(a,c,u){var y=(u=Object.assign({sync:!0},t,u)).sync,p={},f=[],l=[],h=[],v=!(u&&"cyclic"in u)||u.cyclic,d=u.encapsulateObserver,b=_encapsulate("",a,v,c||{},h);function finish(e){var n=Object.values(p);if(u.iterateNone)return n.length?n[0]:Typeson.getJSONType(e);if(n.length){if(u.returnTypeNames)return _toConsumableArray(new Set(n));e&&isPlainObject(e)&&!e.hasOwnProperty("$types")?e.$types=p:e={$:e,$types:{$:p}}}else isObject(e)&&e.hasOwnProperty("$types")&&(e={$:e,$types:!0});return!u.returnTypeNames&&e}return h.length?y&&u.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(function checkPromises(e,n){return Promise.all(n.map(function(e){return e[1].p})).then(function(t){return Promise.all(t.map(function(t){var r=[],o=_slicedToArray(n.splice(0,1)[0],7),i=o[0],s=o[2],a=o[3],c=o[4],u=o[5],y=o[6],p=_encapsulate(i,t,s,a,r,!0,y),f=hasConstructorOf(p,TypesonPromise);return i&&f?p.p.then(function(n){return c[u]=n,checkPromises(e,r)}):(i?c[u]=p:e=f?p.p:p,checkPromises(e,r))}))}).then(function(){return e})}(b,h)).then(finish):!y&&u.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():u.stringification&&y?[finish(b)]:y?finish(b):Promise.resolve(finish(b));function _adaptBuiltinStateObjectProperties(e,n,t){Object.assign(e,n);var r=s.map(function(n){var t=e[n];return delete e[n],t});t(),s.forEach(function(n,t){e[n]=r[t]})}function _encapsulate(t,o,i,s,a,c,y){var h,v={},b=_typeof(o),m=d?function(e){var n=y||s.type||Typeson.getJSONType(o);d(Object.assign(e||v,{keypath:t,value:o,cyclic:i,stateObj:s,promisesData:a,resolvingTypesonPromise:c,awaitingTypesonPromise:hasConstructorOf(o,TypesonPromise)},void 0!==n?{type:n}:{}))}:null;if(b in{string:1,boolean:1,number:1,undefined:1})return void 0===o||"number"===b&&(isNaN(o)||o===-1/0||o===1/0)?(h=replace(t,o,s,a,!1,c,m))!==o&&(v={replaced:h}):h=o,m&&m(),h;if(null===o)return m&&m(),o;if(i&&!s.iterateIn&&!s.iterateUnsetNumeric){var O=f.indexOf(o);if(!(O<0))return p[t]="#",m&&m({cyclicKeypath:l[O]}),"#"+l[O];!0===i&&(f.push(o),l.push(t))}var T,g=isPlainObject(o),P=n(o),j=(g||P)&&(!r.length||s.replaced)||s.iterateIn?o:replace(t,o,s,a,g||P,null,m);if(j!==o?(h=j,v={replaced:j}):P||"array"===s.iterateIn?(T=new Array(o.length),v={clone:T}):g||"object"===s.iterateIn?v={clone:T={}}:""===t&&hasConstructorOf(o,TypesonPromise)?(a.push([t,o,i,s,void 0,void 0,s.type]),h=o):h=o,m&&m(),u.iterateNone)return T||h;if(!T)return h;if(s.iterateIn){var S=function _loop(e){var n={ownKeys:o.hasOwnProperty(e)};_adaptBuiltinStateObjectProperties(s,n,function(){var n=t+(t?".":"")+escapeKeyPathComponent(e),r=_encapsulate(n,o[e],!!i,s,a,c);hasConstructorOf(r,TypesonPromise)?a.push([n,r,!!i,s,T,e,s.type]):void 0!==r&&(T[e]=r)})};for(var w in o)S(w);m&&m({endIterateIn:!0,end:!0})}else e(o).forEach(function(e){var n=t+(t?".":"")+escapeKeyPathComponent(e);_adaptBuiltinStateObjectProperties(s,{ownKeys:!0},function(){var t=_encapsulate(n,o[e],!!i,s,a,c);hasConstructorOf(t,TypesonPromise)?a.push([n,t,!!i,s,T,e,s.type]):void 0!==t&&(T[e]=t)})}),m&&m({endIterateOwn:!0,end:!0});if(s.iterateUnsetNumeric){for(var A=o.length,_=function _loop2(e){if(!(e in o)){var n=t+(t?".":"")+e;_adaptBuiltinStateObjectProperties(s,{ownKeys:!1},function(){var t=_encapsulate(n,void 0,!!i,s,a,c);hasConstructorOf(t,TypesonPromise)?a.push([n,t,!!i,s,T,e,s.type]):void 0!==t&&(T[e]=t)})}},C=0;C<A;C++)_(C);m&&m({endIterateUnsetNumeric:!0,end:!0})}return T}function replace(e,n,t,s,a,c,u){for(var f=a?r:o,l=f.length;l--;){var h=f[l];if(h.test(n,t)){var d=h.type;if(i[d]){var b=p[e];p[e]=b?[d].concat(b):d}return Object.assign(t,{type:d,replaced:!0}),!y&&h.replaceAsync||h.replace?(u&&u({replacing:!0}),_encapsulate(e,h[y||!h.replaceAsync?"replace":"replaceAsync"](n,t),v&&"readonly",t,s,c,d)):(u&&u({typeDetected:!0}),_encapsulate(e,n,v&&"readonly",t,s,c,d))}}return n}};this.encapsulateSync=function(e,n,t){return y(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!0}))},this.encapsulateAsync=function(e,n,t){return y(e,n,Object.assign({},{throwOnBadSyncType:!0},t,{sync:!1}))};var p=this.revive=function(r,o){var s=(o=Object.assign({sync:!0},t,o)).sync,a=r&&r.$types,c=!0;if(!a)return r;if(!0===a)return r.$;a.$&&isPlainObject(a.$)&&(r=r.$,a=a.$,c=!1);var u=[],y={},p=function _revive(t,r,o,s,p,f){if(c&&"$types"===t)return;var l=a[t];if(n(r)||isPlainObject(r)){var h=n(r)?new Array(r.length):{};for(e(r).forEach(function(e){var n=_revive(t+(t?".":"")+escapeKeyPathComponent(e),r[e],o||h,s,h,e);hasConstructorOf(n,Undefined)?h[e]=void 0:void 0!==n&&(h[e]=n)}),r=h;u.length;){var v=_slicedToArray(u[0],4),d=v[0],b=v[1],m=v[2],O=v[3],T=getByKeyPath(d,b);if(hasConstructorOf(T,Undefined))m[O]=void 0;else{if(void 0===T)break;m[O]=T}u.splice(0,1)}}if(!l)return r;if("#"===l){var g=getByKeyPath(o,r.substr(1));return void 0===g&&u.push([o,r.substr(1),p,f]),g}var P=s.sync;return[].concat(l).reduce(function(e,n){var t=i[n];if(!t)throw new Error("Unregistered type: "+n);return t[P&&t.revive?"revive":!P&&t.reviveAsync?"reviveAsync":"revive"](e,y)},r)}("",r,null,o);return isThenable(p=hasConstructorOf(p,Undefined)?void 0:p)?s&&o.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():p:!s&&o.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():s?p:Promise.resolve(p)};this.reviveSync=function(e,n){return p(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!0}))},this.reviveAsync=function(e,n){return p(e,Object.assign({},{throwOnBadSyncType:!0},n,{sync:!1}))},this.register=function(t,s){return s=s||{},[].concat(t).forEach(function R(t){if(n(t))return t.map(R);t&&e(t).forEach(function(e){if("#"===e)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(Typeson.JSON_TYPES.includes(e))throw new TypeError("Plain JSON object types are reserved as type names");var c=t[e],u=c.testPlainObjects?r:o,y=u.filter(function(n){return n.type===e});if(y.length&&(u.splice(u.indexOf(y[0]),1),delete i[e],delete a[e]),c){if("function"==typeof c){var p=c;c={test:function test(e){return e&&e.constructor===p},replace:function replace(e){return assign({},e)},revive:function revive(e){return assign(Object.create(p.prototype),e)}}}else n(c)&&(c={test:c[0],replace:c[1],revive:c[2]});var f={type:e,test:c.test.bind(c)};c.replace&&(f.replace=c.replace.bind(c)),c.replaceAsync&&(f.replaceAsync=c.replaceAsync.bind(c));var l="number"==typeof s.fallback?s.fallback:s.fallback?0:1/0;if(c.testPlainObjects?r.splice(l,0,f):o.splice(l,0,f),c.revive||c.reviveAsync){var h={};c.revive&&(h.revive=c.revive.bind(c)),c.reviveAsync&&(h.reviveAsync=c.reviveAsync.bind(c)),i[e]=h}a[e]=c}})}),this}}function assign(n,t){return e(t).map(function(e){n[e]=t[e]}),n}function escapeKeyPathComponent(e){return e.replace(/~/g,"~0").replace(/\./g,"~1")}function unescapeKeyPathComponent(e){return e.replace(/~1/g,".").replace(/~0/g,"~")}function getByKeyPath(e,n){if(""===n)return e;var t=n.indexOf(".");if(t>-1){var r=e[unescapeKeyPathComponent(n.substr(0,t))];return void 0===r?void 0:getByKeyPath(r,n.substr(t+1))}return e[unescapeKeyPathComponent(n)]}function Undefined(){}function TypesonPromise(e){this.p=new Promise(e)}return"undefined"!=typeof Symbol&&(TypesonPromise.prototype[Symbol.toStringTag]="TypesonPromise"),TypesonPromise.prototype.then=function(e,n){var t=this;return new TypesonPromise(function(r,o){t.p.then(function(n){r(e?e(n):n)},function(e){t.p.catch(function(e){return n?n(e):Promise.reject(e)}).then(r,o)})})},TypesonPromise.prototype.catch=function(e){return this.then(null,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(function(n){n(e)})},TypesonPromise.reject=function(e){return new TypesonPromise(function(n,t){t(e)})},["all","race"].map(function(e){TypesonPromise[e]=function(n){return new TypesonPromise(function(t,r){Promise[e](n.map(function(e){return e.p})).then(t,r)})}}),Typeson.Undefined=Undefined,Typeson.Promise=TypesonPromise,Typeson.isThenable=isThenable,Typeson.toStringTag=toStringTag,Typeson.hasConstructorOf=hasConstructorOf,Typeson.isObject=isObject,Typeson.isPlainObject=isPlainObject,Typeson.isUserObject=function isUserObject(e){if(!e||"Object"!==toStringTag(e))return!1;var n=r(e);return!n||hasConstructorOf(e,Object)||isUserObject(n)},Typeson.escapeKeyPathComponent=escapeKeyPathComponent,Typeson.unescapeKeyPathComponent=unescapeKeyPathComponent,Typeson.getByKeyPath=getByKeyPath,Typeson.getJSONType=function(e){return null===e?"null":n(e)?"array":_typeof(e)},Typeson.JSON_TYPES=["null","boolean","number","string","array","object"],Typeson});
{
"name": "typeson",
"version": "5.9.0",
"version": "5.10.0",
"description": "Preserves types over JSON, BSON or socket.io",

@@ -11,3 +11,4 @@ "main": "./dist/typeson-commonjs2.js",

"browser-test": "npm run eslint && npm run rollup && npm start test/",
"test": "npm run eslint && npm run rollup && node test/test-polyglot.js",
"node-test": "npx babel-node test/test.js",
"test": "npm run eslint && npm run rollup && npm run node-test",
"rollup": "rollup -c"

@@ -40,6 +41,7 @@ },

"devDependencies": {
"@babel/core": "^7.1.2",
"@babel/preset-env": "^7.1.0",
"@babel/core": "^7.1.6",
"@babel/node": "^7.0.0",
"@babel/preset-env": "^7.1.6",
"base64-arraybuffer-es6": "^0.4.2",
"eslint": "5.8.0",
"eslint": "5.9.0",
"eslint-config-standard": "12.0.0",

@@ -53,3 +55,3 @@ "eslint-plugin-compat": "2.6.3",

"opn": "5.4.0",
"rollup": "0.67.0",
"rollup": "0.67.3",
"rollup-plugin-babel": "^4.0.3",

@@ -56,0 +58,0 @@ "rollup-plugin-node-resolve": "^3.4.0",

@@ -300,10 +300,10 @@ const {keys} = Object,

ret = replaced;
observerData = {replaced: replaced};
observerData = {replaced};
} else {
if (isArr || stateObj.iterateIn === 'array') {
clone = new Array(value.length);
observerData = {clone: clone};
observerData = {clone};
} else if (isPlainObj || stateObj.iterateIn === 'object') {
clone = {};
observerData = {clone: clone};
observerData = {clone};
} else if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {

@@ -610,2 +610,7 @@ promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);

if (typeof Symbol !== 'undefined') { // Note: @babel/polyfill provides
// Ensure `isUserObject` will return `false` for `TypesonPromise`
TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';
}
TypesonPromise.prototype.then = function (onFulfilled, onRejected) {

@@ -612,0 +617,0 @@ return new TypesonPromise((typesonResolve, typesonReject) => {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc