joyson2
Version:
JOYFUL JSON | A smarter approach to serialize more than JSON, faster than ever!
1 lines • 25.1 kB
JavaScript
(e=>{var t={};function r(s){var i;return(t[s]||(i=t[s]={i:s,l:!1,exports:{}},e[s].call(i.exports,i,i.exports,r),i.l=!0,i)).exports}r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(s,i,function(t){return e[t]}.bind(null,i));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)})([function(e,t,r){var s=(()=>{var e=new ArrayBuffer(2560),t=new Uint8Array(e,0,256),r=new Uint8Array(e,256,256),s=new Uint32Array(e,512,128),i=new Uint32Array(e,1024,128),n=new Uint32Array(e,1536,128),a=new Uint32Array(e,2048,128);t.set(Uint8Array.from("AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZaaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz0000111122223333444455556666777788889999++++////".split("").map((function(e){return 255&e.charCodeAt(0)})))),r.set(Uint8Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").map((function(e){return 255&e.charCodeAt(0)})))),s.set(new Uint32Array(128).fill(33554431)),i.set(new Uint32Array(128).fill(33554431)),n.set(new Uint32Array(128).fill(33554431)),a.set(new Uint32Array(128).fill(33554431)),Object.entries({43:[248,57347,8392448,4063232],47:[252,61443,12586752,4128768],48:[208,16387,3328,3407872],49:[212,20483,4197632,3473408],50:[216,24579,8391936,3538944],51:[220,28675,12586240,3604480],52:[224,32771,3584,3670016],53:[228,36867,4197888,3735552],54:[232,40963,8392192,3801088],55:[236,45059,12586496,3866624],56:[240,49155,3840,3932160],57:[244,53251,4198144,3997696],65:[0,0,0,0],66:[4,4096,4194304,65536],67:[8,8192,8388608,131072],68:[12,12288,12582912,196608],69:[16,16384,256,262144],70:[20,20480,4194560,327680],71:[24,24576,8388864,393216],72:[28,28672,12583168,458752],73:[32,32768,512,524288],74:[36,36864,4194816,589824],75:[40,40960,8389120,655360],76:[44,45056,12583424,720896],77:[48,49152,768,786432],78:[52,53248,4195072,851968],79:[56,57344,8389376,917504],80:[60,61440,12583680,983040],81:[64,1,1024,1048576],82:[68,4097,4195328,1114112],83:[72,8193,8389632,1179648],84:[76,12289,12583936,1245184],85:[80,16385,1280,1310720],86:[84,20481,4195584,1376256],87:[88,24577,8389888,1441792],88:[92,28673,12584192,1507328],89:[96,32769,1536,1572864],90:[100,36865,4195840,1638400],97:[104,40961,8390144,1703936],98:[108,45057,12584448,1769472],99:[112,49153,1792,1835008],100:[116,53249,4196096,1900544],101:[120,57345,8390400,1966080],102:[124,61441,12584704,2031616],103:[128,2,2048,2097152],104:[132,4098,4196352,2162688],105:[136,8194,8390656,2228224],106:[140,12290,12584960,2293760],107:[144,16386,2304,2359296],108:[148,20482,4196608,2424832],109:[152,24578,8390912,2490368],110:[156,28674,12585216,2555904],111:[160,32770,2560,2621440],112:[164,36866,4196864,2686976],113:[168,40962,8391168,2752512],114:[172,45058,12585472,2818048],115:[176,49154,2816,2883584],116:[180,53250,4197120,2949120],117:[184,57346,8391424,3014656],118:[188,61442,12585728,3080192],119:[192,3,3072,3145728],120:[196,4099,4197376,3211264],121:[200,8195,8391680,3276800],122:[204,12291,12585984,3342336]}).forEach((function(e){s[parseInt(e[0])]=4294967295&e[1][0],i[parseInt(e[0])]=4294967295&e[1][1],n[parseInt(e[0])]=4294967295&e[1][2],a[parseInt(e[0])]=4294967295&e[1][3]}));class h{constructor(){this._CHNK_L_=Math.pow(108,2)/2|0,this._CHNK_L_STR_=3*this._CHNK_L_|0,this._CHNK_L_BUFF_=4*this._CHNK_L_|0,this._PAD_C_=255&"=".charCodeAt(0),this._E0_=t.slice(0,t.length),this._E1_=r.slice(0,r.length),this._D0_=s.slice(0,s.length),this._D1_=i.slice(0,i.length),this._D2_=n.slice(0,n.length),this._D3_=a.slice(0,a.length),this._AB_=new ArrayBuffer(this._CHNK_L_BUFF_+4|0),this._u32aT_=new Uint32Array(this._AB_,0,1),this._u8aT_=new Uint8Array(this._AB_,0,3),this._T_=new Uint8Array(this._AB_,4,0|this._CHNK_L_BUFF_)}get PAD_C(){return 255&this._PAD_C_}get CHNK_L_STR(){return 0|this._CHNK_L_STR_}get u32aT0(){return this._u32aT_[0]}set u32aT0(e){this._u32aT_[0]=(0|e)>>>0}get u8aTa(){return this._u8aT_[0]}get u8aTb(){return this._u8aT_[1]}get u8aTc(){return this._u8aT_[2]}_base64_decode_u32ax1(e,t){this.u32aT0=this._D0_[255&e.charCodeAt(t=(0|t)>>>0)]|this._D1_[255&e.charCodeAt(t+1|0)]|this._D2_[255&e.charCodeAt(t+2|0)]|this._D3_[255&e.charCodeAt(t+3|0)]}_base64_encode_u8ax4(e,t,r){this._T_[0|(t=(0|t)>>>0)]=this._E0_[e[(0|(r=(0|r)>>>0))>>>0]],this._T_[t+1|0]=this._E1_[(3&e[(0|r)>>>0])<<4|e[(r+1|0)>>>0]>>4&15],this._T_[t+2|0]=this._E1_[(15&e[(r+1|0)>>>0])<<2|e[(r+2|0)>>>0]>>6&3],this._T_[t+3|0]=this._E1_[e[(r+2|0)>>>0]]}_base64_encode_final(e,t,r,s){switch(s=(0|s)>>>0,((r=(0|r)>>>0)-(t=(0|t)>>>0)|0)>>>0){case 1:return this._T_[0|s]=this._E0_[e[(0|t)>>>0]],this._T_[s+1|0]=this._E1_[(3&e[(0|t)>>>0])<<4|e[(t+1|0)>>>0]>>4&15],this._T_[s+2|0]=this._PAD_C_,this._T_[s+3|0]=this._PAD_C_,this._T_.subarray(0,0|(s=s+4|0));case 2:return this._T_[0|s]=this._E0_[e[(0|t)>>>0]],this._T_[s+1|0]=this._E1_[(3&e[(0|t)>>>0])<<4|e[(t+1|0)>>>0]>>4&15],this._T_[s+2|0]=this._E1_[(15&e[(t+1|0)>>>0])<<2|e[(t+2|0)>>>0]>>6&3],this._T_[s+3|0]=this._PAD_C_,this._T_.subarray(0,0|(s=s+4|0));case 0:return this._T_.subarray(0,0|s);default:return this._T_}}_base64_decode_final(e,t,r,s,i){switch(r=(0|r)>>>0,s=(0|s)>>>0,0|(i=(0|i)>>>0)){case 0:return this.u32aT0=(this._D0_[t.charCodeAt(0|r)]|this._D1_[t.charCodeAt(r+1|0)]|this._D2_[t.charCodeAt(r+2|0)]|this._D3_[t.charCodeAt(r+3|0)]|0)>>>0,e[0|s]=255&this.u32aT0,e[s+1|0]=this.u32aT0>>8&255,e[s+2|0]=this.u32aT0>>16&255,s+3|0;case 1:return this.u32aT0=(0|this._D0_[t.charCodeAt(0|r)])>>>0,e[0|s]=255&this.u32aT0,s+1|0;case 2:return this.u32aT0=(this._D0_[t.charCodeAt(0|r)]|this._D1_[t.charCodeAt(r+1|0)]|0)>>>0,e[0|s]=255&this.u32aT0,s+1|0;default:return this.u32aT0=(this._D0_[t.charCodeAt(0|r)]|this._D1_[t.charCodeAt(r+1|0)]|this._D2_[t.charCodeAt(r+2|0)]|0)>>>0,e[0|s]=255&this.u32aT0,e[s+1|0]=this.u32aT0>>8&255,s+2|0}}_base64_store_u8ax3(e,t){e[t=(0|t)>>>0]=this.u8aTa,e[t+1|0]=this.u8aTb,e[t+2|0]=this.u8aTc}get_max_round_str(e){return 0|Math.ceil(e/this.CHNK_L_STR)}base64_encode(e,t){var r=0|e.length,s=(t|=0)*this.CHNK_L_STR|0,i=0,n=Math.min(s+this.CHNK_L_STR|0,0|r)-2|0;if(0<(0|n))for(;(0|s)<(0|n);s=(s+3|0)>>>0,i=i+4|0)this._base64_encode_u8ax4(e,i,s);return h.encodeChars_(this._base64_encode_final(e,s,r,i))}bytesToBase64(e){for(var t="",r=0,s=this.get_max_round_str(e.length);(0|r)<(0|s);r=(r+1|0)>>>0)t+=this.base64_encode(e,0|r);return t}base64ToBytes(e){var t,r,s=0|e.length,i=0,n=0,a=0;if(0==(0|s))return new Uint8Array(0);for(e.charCodeAt(s-1|0)===this.PAD_C&&(a=a+1|0,e.charCodeAt((s=s-1|0)-1|0)===this.PAD_C)&&(s=s-1|0,a=a+1|0),t=new Uint8Array(e.length/4*3-a),r=0==(0|(a=3&s))?(s>>>2)-1|0:s>>>2;(0|i)<(0|r);i=(i+1|0)>>>0)this._base64_decode_u32ax1(e,i<<2),this._base64_store_u8ax3(t,n),n=n+3|0;return this._base64_decode_final(t,e,i<<=2,n,a),t}}return h.charCode_=function(e){return 255&e.charCodeAt(0)},h.charCodeAt_=function(e,t){return 255&e.charCodeAt(0|t)},h.encodeChars_=function(e){return 0<(0|e.length)?String.fromCharCode.apply(null,e):""},h})();e.exports={B64chromium:s}},function(e,t,r){r.r(t);var s=r(0),i=new class{constructor(e){this.arrayType=e,this.bytesPerElement=e.BYTES_PER_ELEMENT,this.bitMask=(1<<8*this.bytesPerElement)-1}deltaEncode(e){var t=new this.arrayType(e.length);t[0]=e[0];for(let r=1;r<e.length;r++)t[r]=e[r]-e[r-1]&this.bitMask;return t}deltaDecode(e){var t=new this.arrayType(e.length);t[0]=e[0];for(let r=1;r<e.length;r++)t[r]=t[r-1]+e[r]&this.bitMask;return t}compress(e){var t=this.deltaEncode(e),r=(new DataView(t.buffer),[]);let s=0;for(;s<t.length;){var i=t[s];let e=1;for(;s+e<t.length&&t[s+e]===i&&e<255;)e++;if(4<=e)r.push(64),this._writeValue(r,i),r.push(e),s+=e;else{if(0===i){for(e=1;s+e<t.length&&0===t[s+e]&&e<255;)e++;if(4<=e){r.push(128),r.push(e),s+=e;continue}}var n=s;let a=1;for(;n+a<t.length&&(t[n+a]!==t[n+a-1]||a<4)&&a<60;)a++;r.push(0|a);for(let e=0;e<a;e++)this._writeValue(r,t[s+e]);s+=a}}return new Uint8Array(r)}decompress(e){var t=[],r=e;let s=0;for(;s<r.length;){var i=r[s++],n=i>>6;if(0==n){var a=63&i;for(let e=0;e<a;e++)t.push(this._readValue(r,s)),s+=this.bytesPerElement}else if(1==n){var h=this._readValue(r,s),u=(s+=this.bytesPerElement,r[s++]);for(let e=0;e<u;e++)t.push(h)}else{if(2!=n)throw new Error("Unknown control type");var o=r[s++];for(let e=0;e<o;e++)t.push(0)}}return this.deltaDecode(new this.arrayType(t))}_writeValue(e,t){for(let r=0;r<this.bytesPerElement;r++)e.push(t>>8*r&255)}_readValue(e,t){let r=0;for(let s=0;s<this.bytesPerElement;s++)r|=e[t+s]<<8*s;return r}},n=class{constructor(e){this._buffers=new WeakMap,this._store={},this._nextId=0,this._compress=e?i.compress.bind(i):function(e){return e},this._decompress=e?i.decompress.bind(i):function(e){return e}}_generateId(){var e=this._nextId;return this._nextId++,e}clear(){this._buffers=new WeakMap,this._store={},this._nextId=0}insert(e,t){if(void 0===t){if(this._buffers.has(e))return this._buffers.get(e);t=this._generateId()}else if(this._store.hasOwnProperty(t))throw new Error(`ID ${t} is already in use.`);return t=parseInt(t),this._buffers.set(e,t),this._store[t]=e,t}retrieve(e){return this._store[parseInt(e)]}retrieveAll(){var e={},t=Object.entries(this._store);for(let i=0;i<t.length;i++){var[r,s]=t[i],s=this._compress(new Uint8Array(s)).buffer;e[parseInt(r)]=s}return e}insertAll(e){var t=Object.entries(e);for(let e=0;e<t.length;e++){var[r,s]=t[e],s=this._decompress(new Uint8Array(s)).buffer;this.insert(s,parseInt(r))}}};r=new class{constructor(){this._packBufferTemp8=new Uint8Array(15e3),this._headerByteLength=0,this._offset=0,this._b64=new s.B64chromium,this._b64Base64ToBytes=this._b64.base64ToBytes.bind(this._b64),this._b64BytesToBase64=this._b64.bytesToBase64.bind(this._b64),this._textDecoder=new TextDecoder,this._textDecoderFunction=this._textDecoder.decode.bind(this._textDecoder),this._textEncoder=new TextEncoder,this._textEncoderFunction=this._textEncoder.encode.bind(this._textEncoder),this._textEncoderIntoFunction=this._textEncoder.encodeInto.bind(this._textEncoder),this.encodeOtherBound=this.encodeOther.bind(this),this.decodeOtherBound=this.decodeOther.bind(this),this.stringifyBound=this._innerStringify.bind(this),this.parseBound=this._innerParse.bind(this),this.use_compressor=!0,this._setEngine()}_setEngine(){this.engine=new class{constructor(e,t,r,s,i,a,h,u,o){this._hasher=new class{constructor(e){this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",this._charLookup={};for(let e=0;e<this._chars.length;e++)this._charLookup[this._chars[e]]=e;this._bitPerChar=6,this._accumulatorBitNumber=32,this._outputLength=Math.max(1,Math.min(0|e,this._accumulatorBitNumber/this._bitPerChar|0)),this._primes=Uint32Array.of(2654435761,2246822519,3266489917,668265263),this._values=new Uint32Array(this._primes.length+2),this.imul=Math.imul,this.rotl=function(e,t){return(e>>>=0)<<(t&=31)|e>>>32-t}}get outputLength(){return this._outputLength}get chars(){return this._chars}get finalValue(){return this._values[4]}set finalValue(e){return this._values[4]=(0|e)>>>0}get primes(){return this._primes}get values(){return this._values}get accumulator(){return this._values}get charLookup(){return this._charLookup}getCharValue(e){return 63&this.charLookup[e]}aggregateCharValue(e,t,r,s){return e<<18|t<<12|r<<6|s}getCharByOffset(e){return this.chars[63&e]}hash(e){this.values.fill(0);for(var t=0,r=0,s=e.length,i=s>>2>>2;t<i;r=++t<<4)this.accumulator[0]=this.accumulator[0]+this.imul(this.aggregateCharValue(this.getCharValue(e[r]),this.getCharValue(e[r+1|0]),this.getCharValue(e[r+2|0]),this.getCharValue(e[r+3|0])),this.primes[0]),this.accumulator[1]=this.accumulator[1]+this.imul(this.aggregateCharValue(this.getCharValue(e[r+4|0]),this.getCharValue(e[r+5|0]),this.getCharValue(e[r+6|0]),this.getCharValue(e[r+7|0])),this.primes[1]),this.accumulator[2]=this.accumulator[2]+this.imul(this.aggregateCharValue(this.getCharValue(e[r+8|0]),this.getCharValue(e[r+9|0]),this.getCharValue(e[r+10|0]),this.getCharValue(e[r+11|0])),this.primes[2]),this.accumulator[3]=this.accumulator[3]+this.imul(this.aggregateCharValue(this.getCharValue(e[r+12|0]),this.getCharValue(e[r+13|0]),this.getCharValue(e[r+14|0]),this.getCharValue(e[r+15|0])),this.primes[3]);for(t<<=2;(0|t)<(0|s);r=(t=(t+1|0)>>>0)<<2)this.accumulator[3&t]=this.accumulator[3&t]+this.imul(this.aggregateCharValue(this.getCharValue(e[r])||0,this.getCharValue(e[r+1|0])||0,this.getCharValue(e[r+2|0])||0,this.getCharValue(e[r+3|0]))||0,this.primes[3&t]);this.finalValue=this.rotl(this.accumulator[0],1)+this.rotl(this.accumulator[1],7)+this.rotl(this.accumulator[2],12)+this.rotl(this.accumulator[3],18)>>>0;for(var n,a=0,h=new Array(this.outputLength);a<this.outputLength;a++)n=63&this.finalValue,h[a]=this.getCharByOffset(n),this.finalValue=(this.finalValue-n)/64>>>0;return h.join("")}}(1),this.hashThis=s||this._hasher.hash.bind(this._hasher),this.base=e||"data:joyson/",this.shortBase=t||"d:j/",this.baseLength=this.base.length,this.shortBaseLength=this.shortBase.length,this.encapsulate=r||function(e){return JSON.stringify(e)},this.encodeObjectOut=i||function(e){return e},this.decodeObjectOut=a||function(e){return e},this.stringifyOut=h||JSON.stringify,this.parseOut=u||JSON.parse,this._initializeErrorConstructors(),this.arrayBufferIDManager=new n(o),this._initializeBufferConstructors(),this._initializeDynamicTypes(["object","number","bigint","map","set","date","string","error","regexp","buffer","boolean","static"])}_initializeDynamicTypes(e){this.dynamicValues={},this.dynamicValuesIdKey={};for(var t=0;t<e.length;t++){var r=e[t];this.dynamicValues[r]={},this.dynamicValues[r].name=r,this.dynamicValues[r].str=this.base+this.dynamicValues[r].name+";",this.dynamicValues[r].id=this.hashThis(this.dynamicValues[r].name),this.dynamicValues[r].shortStr=this.shortBase+this.dynamicValues[r].id+";",this.dynamicValues[r].strCode=new Uint8Array(this.dynamicValues[r].str.split("").map((function(e){return e.charCodeAt(0)}))),this.dynamicValues[r].shortStrCode=new Uint8Array(this.dynamicValues[r].shortStr.split("").map((function(e){return e.charCodeAt(0)}))),this.dynamicValues[r].strLen=this.dynamicValues[r].str.length,this.dynamicValues[r].shortStrLen=this.dynamicValues[r].shortStr.length,this.dynamicValuesIdKey[this.dynamicValues[r].id]=this.dynamicValues[r].name}}_initializeErrorConstructors(){this.errorConstructors={Error:Error,TypeError:TypeError,SyntaxError:SyntaxError,ReferenceError:ReferenceError,RangeError:RangeError,EvalError:EvalError,URIError:URIError,DOMException:DOMException}}_initializeBufferConstructors(){this.bufferConstructors={ArrayBuffer:ArrayBuffer,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int8Array:Int8Array,Uint16Array:Uint16Array,Int16Array:Int16Array,Uint32Array:Uint32Array,Int32Array:Int32Array,Float32Array:Float32Array,Float64Array:Float64Array}}clear(){this.arrayBufferIDManager.clear()}getAllArrayBuffer(){var e=this.arrayBufferIDManager.retrieveAll();return this.clear(),e}setAllArrayBuffer(e){this.clear(),this.arrayBufferIDManager.insertAll(e)}_isNotNumber(e){return isNaN(e)}_isNotFiniteNumber(e){return!isFinite(e)}_isNotObject(e){return null===e}_isNotString(e){return e.includes("\0")}_isError(e){return void 0!==e.name&&e.name in this.errorConstructors}_isBuffer(e){return(e instanceof ArrayBuffer||"object"==typeof e.buffer)&&(e.constructor||{}).name in this.bufferConstructors}_mustDecodeOfType(e){if("string"==typeof e){if(e.startsWith(this.shortBase))return 2;if(e.startsWith(this.base))return 1}return 0}_dataTypeNameFromKey(e){return this.dynamicValuesIdKey[e]}_decode(e,t){var r=e.slice(t?this.shortBaseLength:this.baseLength).split(";"),s=r[0],i=r[1];switch(t?this._dataTypeNameFromKey(s):s){case"static":return this.decodeStatic(i);case"number":return this.decodeSpecialNumber(i);case"bigint":return this.decodeBigNumber(i);case"string":return this.decodeSpecialString(i);case"boolean":return this.decodeBoolean(i);case"map":return this.decodeMap(i);case"set":return this.decodeSet(i);case"date":return this.decodeDate(i);case"regexp":return this.decodeRegexp(i);case"error":return this.decodeError(i);case"buffer":return this.decodeBuffer(i);case"object":return this.decodeSpecialObject(i);default:return this.decodeObjectOut(e,t)}}decode(e,t){switch(this._mustDecodeOfType(e)){case 0:return"object"==typeof e?this.decodeObjectOut(e,t):e;case 1:return this._decode(e,!1);case 2:return this._decode(e,!0)}}decodeStatic(e){switch(e){case"nan":return NaN;case"null":return null;case"undefined":return}}decodeSpecialNumber(e){switch(e){case"nan":return NaN;case"infinity":return 1/0;case"-infinity":return-1/0;case"epsilon":return Number.EPSILON;case"-epsilon":return-Number.EPSILON;case"-0":return parseInt("-0");default:return Number(e)}}decodeBigNumber(e){return BigInt(e)}decodeSpecialString(e){return atob(e)}decodeBoolean(e){return"true"===e}decodeMap(e){return e=atob(e),e=this.parseOut(e),new Map(e)}decodeSet(e){return e=atob(e),e=this.parseOut(e),new Set(e)}decodeDate(e){return new Date(e)||new Date(NaN)}decodeRegexp(e){e=e.split(":");var t=atob(e[0]);e=atob(e[1]);return new RegExp(t,e)}decodeError(e){e=e.split(":");var t=atob(e[0]);e=atob(e[1]);return new this.errorConstructors[t](e)}decodeBuffer(e){var t="ArrayBuffer"===(r=(e=e.split(":"))[0]),r=this.bufferConstructors[r],s=parseInt(e[1],16),i=parseInt(e[2],16);e=parseInt(e[3],16),e=this.arrayBufferIDManager.retrieve(e);return t?e:new r(e,s,i)}decodeSpecialObject(e){return e=atob(e),e=this.parseOut(e),Object(e)}_encodeFinal(e,t,r){return r?this.dynamicValues[e].shortStr+t:this.encapsulate(this.dynamicValues[e].str+t)}encode(e,t){switch(typeof e){case"undefined":return this.encodeStatic(e,t);case"number":return this._isNotNumber(e)?this.encodeStatic(e,t):this.encodeNumber(e,t);case"bigint":return this.encodeBigNumber(e,t);case"string":return this._isNotString(e)?this.encodeSpecialString(e,t):this.encodeString(e,t);case"boolean":return this.encodeBoolean(e,t);case"object":return this._isNotObject(e)?this.encodeStatic(e,t):"function"==typeof e.get?this.encodeMap(e,t):"function"==typeof e.delete?this.encodeSet(e,t):"function"==typeof e.toISOString?this.encodeDate(e,t):"function"==typeof e.exec?this.encodeRegexp(e,t):e!==e.valueOf()?this.encodeSpecialObject(e,t):this._isError(e)?this.encodeError(e,t):this._isBuffer(e)?this.encodeBuffer(e,t):this.encodeObject(e,t)}}encodeStatic(e,t){var r;switch(typeof e){case"number":r="nan";break;case"object":r="null";break;case"undefined":r="undefined"}return this._encodeFinal("static",r,t)}encodeNumber(e,t){var r;switch(e){case NaN:r="nan";break;case 1/0:r="infinity";break;case-1/0:r="-infinity";break;case Number.EPSILON:r="epsilon";break;case-Number.EPSILON:r="-epsilon";break;default:if("-0"===Number(e).toLocaleString())r="-0";else{if(!this._isNotFiniteNumber(e))return t?e:""+e;r=e}}return this._encodeFinal("number",r,t)}encodeBigNumber(e,t){return e=e.toString(),this._encodeFinal("bigint",e,t)}encodeSpecialString(e,t){return e=btoa(e),this._encodeFinal("string",e,t)}encodeString(e,t){return t?""+e:this.encapsulate(e)}encodeBoolean(e,t){return this._encodeFinal("boolean",e?"true":"false",t)}encodeMap(e,t){return e=Object.entries(Object.fromEntries(e)),e=this.stringifyOut(e),e=btoa(e),this._encodeFinal("map",e,t)}encodeSet(e,t){return e=Array.from(e),e=this.stringifyOut(e),e=btoa(e),this._encodeFinal("set",e,t)}encodeDate(e,t){return e=e.toISOString(),this._encodeFinal("date",e,t)}encodeRegexp(e,t){return e=[btoa(e.source),btoa(e.flags)],this._encodeFinal("regexp",e.join(":"),t)}encodeSpecialObject(e,t){return e=this.stringifyOut(e.valueOf()),e=btoa(e),this._encodeFinal("object",e,t)}encodeError(e,t){return e=[btoa(e.name),btoa(e.message)],this._encodeFinal("error",e.join(":"),t)}encodeBuffer(e,t){var r=(n=void 0===e.buffer)?"ArrayBuffer":e.constructor.name,s=e.byteOffset,i=n?e.byteLength:e.length,n=n?e:e.buffer;e=this.arrayBufferIDManager.insert(n),n=[r,parseInt(s).toString(16),parseInt(i).toString(16),parseInt(e).toString(16)];return this._encodeFinal("buffer",n.join(":"),t)}encodeObject(e,t){return this.encodeObjectOut(e,t)}}(void 0,void 0,void 0,void 0,this.encodeOtherBound,this.decodeOtherBound,this.stringifyBound,this.parseBound,this.use_compressor)}get compress(){return this.use_compressor}set compress(e){this.use_compressor=Boolean(e),this._setEngine()}_getComparator(){return function(e){return function(t){return function(r,s){return r={key:r,value:t[r]},e(r,{key:s,value:t[s]})}}}}_stringifyObject(e){if(Array.isArray(e)){for(var t=0,r=e.length,s=((i=Object.keys(e)).length,new Array(r));(0|t)<(0|r);t=(t+1|0)>>>0)s[t]=this.engine.encode(e[t],!1);return"["+s.join(",")+"]"}for(var i,n,a=this._getComparator(),h="",u=(t=0,r=0|(i=Object.keys(e).sort(a&&a(e))).length,"");(0|t)<(0|r);t=(t+1|0)>>>0)if(h=i[t]+"",n=this.engine.encode(e[h],!1))switch(0<(0|u.length)&&(u+=","),0|(0===h.length||h.includes("\0")||h.startsWith("$"))){case 0:u+=this.engine.encode(h,!1)+":"+n;break;case 1:u+='"$'+btoa("$"+h)+'":'+n}return"{"+u+"}"}encodeOther(e,t){return t?this._packObject(e):this._stringifyObject(e)}decodeOther(e,t){return t?this._unpackObject(e):this._parseObject(e)}_stringify(e,t){var r={};if(r.header=this.engine.encode(e,!1),!t){var s,i=this.engine.getAllArrayBuffer();for(s in r.buffers={},i)r.buffers[s]=this._b64BytesToBase64(new Uint8Array(i[s]))}return JSON.stringify(r)}stringify(e){return this._stringify(e,!1)}_innerStringify(e){return this._stringify(e,!0)}_parseObject(e){if(Array.isArray(e)){for(var t=[],r=0,s=e.length;(0|r)<(0|s);r=(r+1|0)>>>0)t.push(this.engine.decode(e[r]));return t}var i,n,a={},h=Object.keys(e),u="";for(r=0,s=0|h.length;(0|r)<(0|s);r=(r+1|0)>>>0)switch(u=h[r],i=this._keyMustDecode(u),n=this.engine.decode(e[u]),0|i){case 0:a[u]=n;break;case 1:a[atob(u.slice(1)).slice(1)]=n}return a}_parse(e,t){var r,s;e=JSON.parse(e);return t||(r=this._b64Base64ToBytes,s={},Object.entries(e.buffers).forEach((function(e){var t=e[0];s[t]=r(e[1]).buffer})),this.engine.setAllArrayBuffer(s)),this.engine.decode(JSON.parse(e.header))}parse(e){return this._parse(e,!1)}_innerParse(e){return this._parse(e,!0)}_packObject(e){if(Array.isArray(e)){for(var t=[],r=0,s=e.length;(0|r)<(0|s);r=(r+1|0)>>>0)t.push(this.engine.encode(e[r],!0));return t}var i,n={},a=Object.keys(e),h="";for(r=0,s=0|a.length;(0|r)<(0|s);r=(r+1|0)>>>0)if(h=a[r]+"",i=this.engine.encode(e[h],!0))switch(0|(""===h||h.includes("\0")||h.startsWith("$"))){case 0:n[this.engine.encode(h,!0)]=i;break;case 1:n["$"+btoa("$"+h)]=i}return n}pack(e){e=JSON.stringify(this.engine.encode(e,!0));var t=this.engine.getAllArrayBuffer(),r=0,s=Object.keys(t).length;for(a in t)r+=t[a].byteLength;var i=2*e.length+5,n=i+r+4;if((n=(this._packBufferTemp8.length<n&&(this._packBufferTemp8=new Uint8Array(n)),this._textEncoderIntoFunction(e,this._packBufferTemp8.subarray(4,4+i)))).written>i)throw new Error("Header in json is too fat!");e=n.written;var a,h=(this._packBufferTemp8[0]=e>>0&255,this._packBufferTemp8[1]=e>>8&255,this._packBufferTemp8[2]=e>>16&255,this._packBufferTemp8[3]=e>>24&255,e);r=4;for(a in this._packBufferTemp8[h+r]=s>>0&255,this._packBufferTemp8[h+r+1]=s>>8&255,this._packBufferTemp8[h+r+2]=s>>16&255,this._packBufferTemp8[h+r+3]=s>>24&255,r+=4,t){var u=t[a],o=u.byteLength;this._packBufferTemp8[h+r]=o>>0&255,this._packBufferTemp8[h+r+1]=o>>8&255,this._packBufferTemp8[h+r+2]=o>>16&255,this._packBufferTemp8[h+r+3]=o>>24&255,r+=4,this._packBufferTemp8.set(new Uint8Array(u),h+r),r+=o}return this._packBufferTemp8.slice(0,h+r)}_keyMustDecode(e){return e.startsWith("$")}_unpackObject(e){if(Array.isArray(e)){for(var t=[],r=0,s=e.length;(0|r)<(0|s);r=(r+1|0)>>>0)t.push(this.engine.decode(e[r],!0));return t}var i,n,a={},h=Object.keys(e),u="";for(r=0,s=0|h.length;(0|r)<(0|s);r=(r+1|0)>>>0)switch(u=h[r],i=this._keyMustDecode(u),n=this.engine.decode(e[u],!0),0|i){case 0:a[u]=n;break;case 1:a[atob(u.slice(1)).slice(1)]=n}return a}unpack(e){for(var t=4+(e[0]<<0|e[1]<<8|e[2]<<16|e[3]<<24),r=4+t,s=JSON.parse(this._textDecoderFunction(e.subarray(4,t))),i=e[t]<<0|e[1+t]<<8|e[2+t]<<16|e[3+t]<<24,n={},a=r,h=0;h<i;h++){var u=e[a]<<0|e[a+1]<<8|e[a+2]<<16|e[a+3]<<24;a+=4,n[h]=e.buffer.slice(a,a+u),a+=u}return this.engine.setAllArrayBuffer(n),this.engine.decode(s,!0)}},t.default=r},function(e,t,r){r.r(t),t=r(1),"undefined"==typeof window?self.JOYSON=t.default:window.JOYSON=t.default}]);