@macfja/serializer
Advanced tools
Comparing version 1.0.2 to 1.1.0
@@ -1,1 +0,1 @@ | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self)["macfja-x"]={})}(this,(function(e){"use strict";var r=function(){return r=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e},r.apply(this,arguments)};function t(e,r,t){if(t||2===arguments.length)for(var n,o=0,i=r.length;o<i;o++)!n&&o in r||(n||(n=Array.prototype.slice.call(r,0,o)),n[o]=r[o]);return e.concat(n||Array.prototype.slice.call(r))}var n={},o=new Set,i={},a="#$@__constructor__",f="#$@__instance__",u="#$@__reference__";function c(e,t){if("string"==typeof e||"number"==typeof e&&!isNaN(e)&&Math.abs(e)!==1/0||null==e||"boolean"==typeof e)return e;var n=t.indexOf(e);if(-1!==n)return f+n;if(t.push(e),e.constructor===Array){var s=e.map((function(e){return c(e,t)}));return s.unshift(u+(t.length-1)),s}if(e.constructor===Object){var l=Object.fromEntries(Object.entries(e).map((function(e){return[e[0],c(e[1],t)]})));return l[u]=t.length-1,l}o.add(e.constructor);var y={};y=Object.defineProperty(y,a,{value:e.constructor.name,enumerable:!0}),y=Object.defineProperty(y,u,{value:t.length-1,enumerable:!0});var d=function(e,r){if(!Object.keys(i).includes(e.constructor.name))return;return i[e.constructor.name].toPlain(e,(function(e){return c(e,r)}))}(e,t);return void 0!==d?r(r({},d),y):(Object.getOwnPropertyNames(e).forEach((function(r){Object.defineProperty(y,r,{value:c(e[r],t),enumerable:!0})})),y)}function s(e,r,t){if("string"==typeof e&&0===e.indexOf(f))return t[c=parseInt(e.slice(f.length))];if("string"==typeof e||"number"==typeof e||null==e||"boolean"==typeof e)return e;if(e.constructor===Array){if(0===e.length)return[];var n=[];t[c=e.shift().slice(u.length)]=n;for(var o=0;o<e.length;o++)n[o]=s(e[o],r,t);return n}if(e.constructor===Object){var c=e[u];if(delete e[u],!Object.keys(e).includes(a)){n={};for(var l in t[c]=n,e)n[l]=s(e[l],r,t);return n}var y=e[a];delete e[a];var d=function(e,r,t,n){if(!Object.keys(i).includes(r))return;return i[r].fromPlain(e,(function(e){return s(e,t,n)}))}(e,y,r,t);if(void 0!==d)return d;if(!Object.keys(r).includes(y))throw new Error("The class "+y+" is not allowed");var b={};for(var l in t[c]=b,e)b[l]=s(e[l],r,t);return Object.setPrototypeOf(b,r[y].prototype),b}}function l(){o.clear()}function y(e){n[e.name]=e}function d(e,r,t){i[e]={toPlain:r,fromPlain:t}}!function(e,r){e("Date",(e=>({time:e.getTime()})),(function(e){let r=new Date;return r.setTime(e.time),r})),e("BigInt",(e=>({number:e.toString()})),(e=>BigInt(e.number))),e("String",(e=>({text:e.toString()})),(e=>new String(e.text))),e("RegExp",(e=>({source:e.source,flags:e.flags})),(e=>new RegExp(e.source,e.flags))),e("Number",(function(e){let r={nan:!1,infinity:!1,positive:!0,number:null};return Math.abs(e)===1/0?(r.infinity=!0,r.positive=Math.abs(e)===e,r):isNaN(e)?(r.nan=!0,r):(r.number=e.valueOf(),r)}),(function(e){return e.nan?NaN:e.infinity?1/0*(e.positive?1:-1):new Number(e.number)})),e("Map",((e,r)=>({data:Array.from(e.entries()).map((e=>r(e)))})),(function(e,r){const t=new Map;return e.data.map((e=>r(e))).forEach((([e,r])=>t.set(e,r))),t})),e("Set",((e,r)=>({data:Array.from(e.values()).map((e=>r(e)))})),(function(e,r){const t=new Set;return e.data.map((e=>r(e))).forEach((e=>t.add(e))),t})),e("ArrayBuffer",((e,r)=>({data:r(new Uint8Array(e))})),((e,r)=>r(e.data).buffer)),e("DataView",((e,r)=>({buffer:r(e.buffer),offset:e.byteOffset,length:e.byteLength})),((e,r)=>new DataView(r(e.buffer),e.offset,e.length))),[Error,EvalError,RangeError,AggregateError,ReferenceError,SyntaxError,TypeError,URIError,Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array].forEach((e=>r(e)))}(d,y),e.addClassHandler=d,e.addGlobalAllowedClass=y,e.deserialize=function(e,r){if(void 0===r&&(r=void 0),"string"!=typeof e)return e;if(void 0===r&&(r={}),"undefined"!==e){r=Object.fromEntries(t(t([],Object.entries(r),!0),Object.entries(n),!0));try{return s(JSON.parse(e),r,{})}catch(r){return e}}},e.getCollectedClasses=function(e){void 0===e&&(e=!1);var r=Array.from(o);return e&&l(),r},e.resetCollectedClasses=l,e.serialize=function(e){return void 0===e?"undefined":JSON.stringify(c(e,[]))},e.setGlobalAllowedClasses=function(e,r){void 0===r&&(r=!1);var o={};e.constructor===Array&&(o=Object.fromEntries(e.map((function(e){return[e.name,e]})))),"object"==typeof e&&(o=e),n=r?Object.fromEntries(t(t([],Object.entries(n),!0),Object.entries(o),!0)):o},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self)["macfja-serializer"]={})}(this,(function(e){"use strict";var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])},r(e,t)};var t=function(){return t=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e},t.apply(this,arguments)};function n(e,r,t){if(t||2===arguments.length)for(var n,o=0,i=r.length;o<i;o++)!n&&o in r||(n||(n=Array.prototype.slice.call(r,0,o)),n[o]=r[o]);return e.concat(n||Array.prototype.slice.call(r))}var o={},i=new Set,a={},f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t}(Error),u="#$@__constructor__",c="#$@__instance__",s="#$@__reference__";function l(e,r){if("string"==typeof e||"number"==typeof e&&!isNaN(e)&&Math.abs(e)!==1/0||null==e||"boolean"==typeof e)return e;var n=r.indexOf(e);if(-1!==n)return c+n;if(r.push(e),e.constructor===Array){var o=e.map((function(e){return l(e,r)}));return o.unshift(s+(r.length-1)),o}if(e.constructor===Object){var f=Object.fromEntries(Object.entries(e).map((function(e){return[e[0],l(e[1],r)]})));return f[s]=r.length-1,f}i.add(e.constructor);var y={};y=Object.defineProperty(y,u,{value:e.constructor.name,enumerable:!0}),y=Object.defineProperty(y,s,{value:r.length-1,enumerable:!0});var p=function(e,r){if(!Object.keys(a).includes(e.constructor.name))return;return a[e.constructor.name].toPlain(e,(function(e){return l(e,r)}))}(e,r);return void 0!==p?t(t({},p),y):(Object.getOwnPropertyNames(e).forEach((function(t){Object.defineProperty(y,t,{value:l(e[t],r),enumerable:!0})})),y)}function y(e,r,t){var n;if("string"==typeof e&&0===e.indexOf(c))return t[p=parseInt(e.slice(c.length))];if("string"==typeof e||"number"==typeof e||null==e||"boolean"==typeof e)return e;if(e.constructor===Array){if(0===e.length)return[];var o=e.shift();if("string"!=typeof o||o.substring(0,s.length)!==s){if(0===Object.keys(t).length)return e.unshift(o),e;throw new f}var i=[];t[p=o.slice(s.length)]=i;for(var l=0;l<e.length;l++)i[l]=y(e[l],r,t);return i}if(e.constructor===Object){var p;if(null===(p=null!==(n=e[s])&&void 0!==n?n:null)){if(0===Object.keys(t).length)return e;throw new f}if(delete e[s],!Object.keys(e).includes(u)){i={};for(var b in t[p]=i,e)i[b]=y(e[b],r,t);return i}var d=e[u];delete e[u];var g=function(e,r,t,n){if(!Object.keys(a).includes(r))return;return a[r].fromPlain(e,(function(e){return y(e,t,n)}))}(e,d,r,t);if(void 0!==g)return g;if(!Object.keys(r).includes(d))throw new Error("The class "+d+" is not allowed");var v={};for(var b in t[p]=v,e)v[b]=y(e[b],r,t);return Object.setPrototypeOf(v,r[d].prototype),v}}function p(){i.clear()}function b(e){o[e.name]=e}function d(e,r,t){a[e]={toPlain:r,fromPlain:t}}!function(e,r){e("Date",(e=>({time:e.getTime()})),(function(e){let r=new Date;return r.setTime(e.time),r})),e("BigInt",(e=>({number:e.toString()})),(e=>BigInt(e.number))),e("String",(e=>({text:e.toString()})),(e=>new String(e.text))),e("RegExp",(e=>({source:e.source,flags:e.flags})),(e=>new RegExp(e.source,e.flags))),e("Number",(function(e){let r={nan:!1,infinity:!1,positive:!0,number:null};return Math.abs(e)===1/0?(r.infinity=!0,r.positive=Math.abs(e)===e,r):isNaN(e)?(r.nan=!0,r):(r.number=e.valueOf(),r)}),(function(e){return e.nan?NaN:e.infinity?1/0*(e.positive?1:-1):new Number(e.number)})),e("Map",((e,r)=>({data:Array.from(e.entries()).map((e=>r(e)))})),(function(e,r){const t=new Map;return e.data.map((e=>r(e))).forEach((([e,r])=>t.set(e,r))),t})),e("Set",((e,r)=>({data:Array.from(e.values()).map((e=>r(e)))})),(function(e,r){const t=new Set;return e.data.map((e=>r(e))).forEach((e=>t.add(e))),t})),e("ArrayBuffer",((e,r)=>({data:r(new Uint8Array(e))})),((e,r)=>r(e.data).buffer)),e("DataView",((e,r)=>({buffer:r(e.buffer),offset:e.byteOffset,length:e.byteLength})),((e,r)=>new DataView(r(e.buffer),e.offset,e.length))),[Error,EvalError,RangeError,AggregateError,ReferenceError,SyntaxError,TypeError,URIError,Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array].forEach((e=>r(e)))}(d,b),e.addClassHandler=d,e.addGlobalAllowedClass=b,e.deserialize=function(e,r){if(void 0===r&&(r=void 0),"string"!=typeof e)return e;if(void 0===r&&(r={}),"undefined"!==e){r=Object.fromEntries(n(n([],Object.entries(r),!0),Object.entries(o),!0));try{return y(JSON.parse(e),r,{})}catch(r){return e}}},e.getCollectedClasses=function(e){void 0===e&&(e=!1);var r=Array.from(i);return e&&p(),r},e.resetCollectedClasses=p,e.serialize=function(e){return void 0===e?"undefined":JSON.stringify(l(e,[]))},e.setGlobalAllowedClasses=function(e,r){void 0===r&&(r=!1);var t={};e.constructor===Array&&(t=Object.fromEntries(e.map((function(e){return[e.name,e]})))),"object"==typeof e&&(t=e),o=r?Object.fromEntries(n(n([],Object.entries(o),!0),Object.entries(t),!0)):t},Object.defineProperty(e,"__esModule",{value:!0})})); |
{ | ||
"name": "@macfja/serializer", | ||
"version": "1.0.2", | ||
"version": "1.1.0", | ||
"description": "Transform any object, class, array, primitive to a serialized string and vice-versa", | ||
@@ -5,0 +5,0 @@ "main": "./dist/index.js", |
@@ -5,2 +5,8 @@ # Javascript data serializer | ||
 | ||
 | ||
 | ||
 | ||
 | ||
## Installation | ||
@@ -95,1 +101,11 @@ | ||
- Handle data recursion | ||
## Contributing | ||
Contributions are welcome. Please open up an issue or create PR if you would like to help out. | ||
Read more in the [Contributing file](CONTRIBUTING.md) | ||
## License | ||
The MIT License (MIT). Please see [License File](LICENSE.md) for more information. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
25610
136
110