Socket
Socket
Sign inDemoInstall

typeson

Package Overview
Dependencies
Maintainers
2
Versions
58
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typeson - npm Package Compare versions

Comparing version 5.8.2 to 5.9.0

14

CHANGES.md
# typeson
## 5.9.0
- Linting (ESLint): Remove unused file from ignore; apply script to whole
repo save ignore file; override new "standard" rule with own
"object-curly-spacing"; avoid Node-11-deprecated `url.parse`
- Linting (ESLint): Actually use compat plugin (identifies need for
promises and URL polyfills as a minimum on some older browsers to
get full browser coverage)
- Refactoring: Use object shorthand, destructuring
- Build (Rollup): Switch to terser for minification; avoid plugins where
not needed
- npm: Update to Babel 7; update other devDeps; switch to
base64-arraybuffer-es6
## 5.8.2

@@ -4,0 +18,0 @@

2

dist/typeson-commonjs2.js

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

"use strict";var _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},slicedToArray=function(){return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function sliceIterator(e,n){var t=[],r=!0,i=!1,o=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){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return t}(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),toConsumableArray=function(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);n<e.length;n++)t[n]=e[n];return t}return Array.from(e)},keys=Object.keys,isArray=Array.isArray,toString={}.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"!==(void 0===e?"undefined":_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"===(void 0===e?"undefined":_typeof(e))}function Typeson(e){var n=[],t=[],r={},i=this.types={},o=this.stringify=function(n,t,r,i){i=Object.assign({},e,i,{stringification:!0});var o=a(n,null,i);return isArray(o)?JSON.stringify(o[0],t,r):o.then(function(e){return JSON.stringify(e,t,r)})};this.stringifySync=function(e,n,t,r){return o(e,n,t,Object.assign({},{throwOnBadSyncType:!0},r,{sync:!0}))},this.stringifyAsync=function(e,n,t,r){return o(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(i,o,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("",i,f,o||{},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[].concat(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=[],i=n.splice(0,1)[0],o=slicedToArray(i,7),s=o[0],a=o[2],c=o[3],u=o[4],y=o[5],p=o[6],f=_encapsulate(s,t,a,c,r,!0,p),l=hasConstructorOf(f,TypesonPromise);return s&&l?f.p.then(function(n){return u[y]=n,checkPromises(e,r)}):(s?u[y]=f:e=l?f.p:f,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,i,o,a,p){var f=void 0,h={},v=void 0===t?"undefined":_typeof(t),d=l?function(n){var s=p||i.type||Typeson.getJSONType(t);l(Object.assign(n||h,{keypath:e,value:t,cyclic:r,stateObj:i,promisesData:o,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,i,o,!1,a,d))!==t&&(h={replaced:f}):f=t,d&&d(),f;if(null===t)return d&&d(),t;if(r&&!i.iterateIn&&!i.iterateUnsetNumeric){var b=u.indexOf(t);if(!(b<0))return c[e]="#",d&&d({cyclicKeypath:y[b]}),"#"+y[b];!0===r&&(u.push(t),y.push(e))}var O=isPlainObject(t),g=isArray(t),T=(O||g)&&(!n.length||i.replaced)||i.iterateIn?t:replace(e,t,i,o,O||g,null,d),m=void 0;if(T!==t?(f=T,h={replaced:T}):g||"array"===i.iterateIn?(m=new Array(t.length),h={clone:m}):O||"object"===i.iterateIn?h={clone:m={}}:""===e&&hasConstructorOf(t,TypesonPromise)?(o.push([e,t,r,i,void 0,void 0,i.type]),f=t):f=t,d&&d(),s.iterateNone)return m||f;if(!m)return f;if(i.iterateIn){var P=function _loop(n){var s={ownKeys:t.hasOwnProperty(n)};_adaptBuiltinStateObjectProperties(i,s,function(){var s=e+(e?".":"")+escapeKeyPathComponent(n),c=_encapsulate(s,t[n],!!r,i,o,a);hasConstructorOf(c,TypesonPromise)?o.push([s,c,!!r,i,m,n,i.type]):void 0!==c&&(m[n]=c)})};for(var j in t)P(j);d&&d({endIterateIn:!0,end:!0})}else keys(t).forEach(function(n){var s=e+(e?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(i,{ownKeys:!0},function(){var e=_encapsulate(s,t[n],!!r,i,o,a);hasConstructorOf(e,TypesonPromise)?o.push([s,e,!!r,i,m,n,i.type]):void 0!==e&&(m[n]=e)})}),d&&d({endIterateOwn:!0,end:!0});if(i.iterateUnsetNumeric){for(var S=t.length,w=function _loop2(n){if(!(n in t)){var s=e+(e?".":"")+n;_adaptBuiltinStateObjectProperties(i,{ownKeys:!1},function(){var e=_encapsulate(s,void 0,!!r,i,o,a);hasConstructorOf(e,TypesonPromise)?o.push([s,e,!!r,i,m,n,i.type]):void 0!==e&&(m[n]=e)})}},A=0;A<S;A++)w(A);d&&d({endIterateUnsetNumeric:!0,end:!0})}return m}function replace(e,i,o,s,u,y,p){for(var l=u?n:t,h=l.length;h--;){var v=l[h];if(v.test(i,o)){var d=v.type;if(r[d]){var b=c[e];c[e]=b?[d].concat(b):d}return Object.assign(o,{type:d,replaced:!0}),!a&&v.replaceAsync||v.replace?(p&&p({replacing:!0}),_encapsulate(e,v[a||!v.replaceAsync?"replace":"replaceAsync"](i,o),f&&"readonly",o,s,y,d)):(p&&p({typeDetected:!0}),_encapsulate(e,i,f&&"readonly",o,s,y,d))}}return i}};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 i=(t=Object.assign({sync:!0},e,t)).sync,o=n&&n.$types,s=!0;if(!o)return n;if(!0===o)return n.$;o.$&&isPlainObject(o.$)&&(n=n.$,o=o.$,s=!1);var a=[],c={},u=function _revive(e,n,t,i,u,y){if(s&&"$types"===e)return;var p=o[e];if(isArray(n)||isPlainObject(n)){var f=isArray(n)?new Array(n.length):{};for(keys(n).forEach(function(r){var o=_revive(e+(e?".":"")+escapeKeyPathComponent(r),n[r],t||f,i,f,r);hasConstructorOf(o,Undefined)?f[r]=void 0:void 0!==o&&(f[r]=o)}),n=f;a.length;){var l=slicedToArray(a[0],4),h=l[0],v=l[1],d=l[2],b=l[3],O=getByKeyPath(h,v);if(hasConstructorOf(O,Undefined))d[b]=void 0;else{if(void 0===O)break;d[b]=O}a.splice(0,1)}}if(!p)return n;if("#"===p){var g=getByKeyPath(t,n.substr(1));return void 0===g&&a.push([t,n.substr(1),u,y]),g}var T=i.sync;return[].concat(p).reduce(function(e,n){var t=r[n];if(!t)throw new Error("Unregistered type: "+n);return t[T&&t.revive?"revive":!T&&t.reviveAsync?"reviveAsync":"revive"](e,c)},n)}("",n,null,t);return isThenable(u=hasConstructorOf(u,Undefined)?void 0:u)?i&&t.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():u:!i&&t.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():i?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,o){return o=o||{},[].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 i[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 o.fallback?o.fallback:o.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}i[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,i){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,i)})})},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":void 0===e?"undefined":_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),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;

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

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

"scripts": {
"eslint": "eslint *.js test/test.js",
"eslint": "eslint .",
"browser-test": "npm run eslint && npm run rollup && npm start test/",

@@ -19,2 +19,5 @@ "test": "npm run eslint && npm run rollup && node test/test-polyglot.js",

},
"browserslist": [
"cover 100%"
],
"keywords": [

@@ -38,24 +41,20 @@ "JSON",

"devDependencies": {
"babel-core": "6.26.0",
"babel-plugin-external-helpers": "^6.22.0",
"babel-preset-env": "^1.6.1",
"base64-arraybuffer": "0.1.5",
"eslint": "4.18.1",
"eslint-config-standard": "11.0.0",
"eslint-plugin-compat": "2.2.0",
"eslint-plugin-import": "2.8.0",
"eslint-plugin-node": "6.0.0",
"eslint-plugin-promise": "3.6.0",
"eslint-plugin-standard": "3.0.1",
"node-static": "0.7.10",
"opn": "5.2.0",
"rollup": "0.56.2",
"rollup-plugin-babel": "^3.0.3",
"rollup-plugin-commonjs": "^8.3.0",
"rollup-plugin-node-resolve": "^3.0.3",
"rollup-plugin-uglify": "^3.0.0",
"uglify-es": "^3.3.9",
"uglify-js": "3.3.11"
"@babel/core": "^7.1.2",
"@babel/preset-env": "^7.1.0",
"base64-arraybuffer-es6": "^0.4.2",
"eslint": "5.8.0",
"eslint-config-standard": "12.0.0",
"eslint-plugin-compat": "2.6.3",
"eslint-plugin-import": "2.14.0",
"eslint-plugin-node": "8.0.0",
"eslint-plugin-promise": "4.0.1",
"eslint-plugin-standard": "4.0.0",
"node-static": "0.7.11",
"opn": "5.4.0",
"rollup": "0.67.0",
"rollup-plugin-babel": "^4.0.3",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-terser": "^3.0.0"
},
"tonicExample": "var Typeson = require('typeson');\nvar TSON = new Typeson().register(require('typeson-registry/presets/builtin'));\n\nTSON.stringify({foo: new Date()}, null, 2);"
}

@@ -473,3 +473,3 @@ # typeson.js

###### `revive` (obj: Object) : YourType
###### `revive` (obj: Object, stateObj : {}) : YourType

@@ -476,0 +476,0 @@ Function that maps your JSON-serializable object into a real instance of your type.

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

const keys = Object.keys,
isArray = Array.isArray,
toString = ({}.toString),
const {keys} = Object,
{isArray} = Array,
{toString} = {},
getProto = Object.getPrototypeOf,

@@ -142,3 +142,3 @@ hasOwn = ({}.hasOwnProperty),

opts = Object.assign({sync: true}, options, opts);
const sync = opts.sync;
const {sync} = opts;
const types = {},

@@ -150,3 +150,3 @@ refObjs = [], // For checking cyclic references

const cyclic = opts && ('cyclic' in opts) ? opts.cyclic : true;
const encapsulateObserver = opts.encapsulateObserver;
const {encapsulateObserver} = opts;
const ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);

@@ -380,3 +380,3 @@ function finish (ret) {

if (replacer.test(value, stateObj)) {
const type = replacer.type;
const {type} = replacer;
if (revivers[type]) {

@@ -422,3 +422,3 @@ // Record the type only if a corresponding reviver exists.

opts = Object.assign({sync: true}, options, opts);
const sync = opts.sync;
const {sync} = opts;
let types = obj && obj.$types,

@@ -487,3 +487,3 @@ ignore$Types = true;

}
const sync = opts.sync;
const {sync} = opts;
return [].concat(type).reduce((val, type) => {

@@ -490,0 +490,0 @@ const reviver = revivers[type];

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc