json-ext.min.js 9.3 KB

12345678910111213
  1. (function (global, factory) {
  2. typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  3. typeof define === 'function' && define.amd ? define(factory) :
  4. (global.jsonExt = factory());
  5. }(typeof globalThis != 'undefined' ? globalThis : typeof window != 'undefined' ? window : typeof global != 'undefined' ? global : typeof self != 'undefined' ? self : this, (function () {
  6. function _(e){return typeof e=="object"&&e!==null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}function R(e,n,r,i){switch(r&&typeof r.toJSON=="function"&&(r=r.toJSON()),i!==null&&(r=i.call(e,String(n),r)),typeof r){case"function":case"symbol":r=void 0;break;case"object":if(r!==null){let s=r.constructor;(s===String||s===Number||s===Boolean)&&(r=r.valueOf())}break}return r}function Z(e){return typeof e=="function"?e:Array.isArray(e)?[...new Set(e.map(r=>{let i=r&&r.constructor;return i===String||i===Number?String(r):null}).filter(r=>typeof r=="string"))]:null}function v(e){return typeof e=="number"?!Number.isFinite(e)||e<1?!1:" ".repeat(Math.min(e,10)):typeof e=="string"&&e.slice(0,10)||!1}function z(e,n){(e===null||Array.isArray(e)||typeof e!="object")&&(e={replacer:e,space:n});let r=Z(e.replacer),i=Object.keys;if(Array.isArray(r)){let s=r;i=()=>s,r=null}return{...e,replacer:r,getKeys:i,space:v(e.space)}}function K(e="json"){if(e==="json"||e==="jsonl")return e;throw new TypeError('Invalid options: `mode` should be "json" or "jsonl"')}var W=Symbol("empty"),T=1,ee=2,$=0,F=1,q=2,te=new TextDecoder;function ne(e,n){return e.name==="SyntaxError"&&n&&(e.message=e.message.replace(/at position (\d+)/,(r,i)=>"at position "+(Number(i)+n))),e}function re(e,n){let r=e.length;e.length+=n.length;for(let i=0;i<n.length;i++)e[r+i]=n[i]}function ie(e){switch(e){case"json":return $;case"jsonl":return F;case"auto":return q;default:throw new TypeError('Invalid options: `mode` should be "json", "jsonl", or "auto"')}}function oe(e){let n=typeof e=="function"?{reviver:e}:e||{};return{mode:ie(n.mode??"json"),reviver:n.reviver??null,onRootValue:n.onRootValue??null,onChunk:n.onChunk??null}}function se(e,n){return r({"":e},"",e);function r(i,s,b){if(b&&typeof b=="object")for(let g of Object.keys(b)){let f=b[g],S=r(b,g,f);S===void 0?delete b[g]:S!==f&&(b[g]=S)}return n.call(i,s,b)}}async function U(e,n){let{mode:r,reviver:i,onRootValue:s,onChunk:b}=oe(n),g=typeof e=="function"?e():e;if(_(g)){let f=le(r,i,s,b);try{for await(let S of g){if(typeof S!="string"&&!ArrayBuffer.isView(S))throw new TypeError("Invalid chunk: Expected string, TypedArray or Buffer");f.push(S)}return f.finish()}catch(S){throw ne(S,f.jsonParseOffset)}}throw new TypeError("Invalid chunk emitter: Expected an Iterable, AsyncIterable, generator, async generator, or a function returning an Iterable or AsyncIterable")}function le(e,n,r,i){let s=e===F?[]:null,b=0,g=W,f=null,S=0,L=0,w=null,C=[],A=new Array(100),o=0,p=0,O=!1,N=!1,y=!1,d=!0,l=null,k=null,D=0,j=Object.freeze({get mode(){return e===F?"jsonl":"json"},get rootValuesCount(){return b},get consumed(){return S},get parsed(){return L}});return{push:Q,finish:X,state:j,get jsonParseOffset(){return D}};function I(t){d||(D-=2,JSON.parse("[]"+t)),g!==W&&e===q&&(e=F,s=[g]),d=!1,g=JSON.parse(t)}function E(){b++,typeof n=="function"&&(g=se(g,n)),typeof r=="function"?r(g,j):e===F&&s.push(g)}function B(){if(w!==null){if(C.length!==0){let t=C.length===1?w.concat(C[0]):w.concat(...C);f.prev!==null?f.prev.value[f.key]=t:g=t,f.value=t,C=[]}w=null}}function c(t,u){A[o-1]===T?(u&&(D--,t="{"+t+"}"),Object.assign(f.value,JSON.parse(t))):(u&&(D--,t="["+t+"]"),w===f.value?C.push(JSON.parse(t)):(re(f.value,JSON.parse(t)),w=f.value))}function m(t){let{value:u}=f;if(Array.isArray(u)?u.length!==0:Object.keys(u).length!==0){if(t[0]===",")return D++,t.slice(1);if(t[0]!=="}"&&t[0]!=="]")return D-=3,"[[]"+t}return t}function P(t,u,V){let x=t.slice(u,V);if(D=S+u,L+=V-u,k!==null&&(x=k+x,D-=k.length,L+=k.length,k=null),p===o)o===0?I(x):c(m(x),!0);else if(p>o){for(let a=p-1;a>=o;a--)x+=A[a]===T?"}":"]";o===0?(I(x),f={value:g,key:null,prev:null}):(c(m(x),!0),B());for(let a=o||1;a<p;a++){let{value:h}=f,J=null;if(A[a-1]===T){for(J in h);h=h[J]}else J=h.length-1,h=h[J];f={value:h,key:J,prev:f}}}else{x=m(x);for(let a=o-1;a>=p;a--)D--,x=(A[a]===T?"{":"[")+x;c(x,!1),B();for(let a=o-1;a>=p;a--)f=f.prev}p===0&&E(),o=p,y=!1}function H(t){if(typeof t!="string"){if(l!==null){let u=t;t=new Uint8Array(l.length+u.length),t.set(l),t.set(u,l.length),l=null}if(t[t.length-1]>127)for(let u=0;u<t.length;u++){let V=t[t.length-1-u];if(V>>6===3){u++,(u!==4&&V>>3===30||u!==3&&V>>4===14||u!==2&&V>>5===6)&&(l=t.slice(t.length-u),t=t.subarray(0,-u));break}}t=te.decode(t)}return t}function Q(t){t=H(t);let u=t.length,V=L,x=0,a=0;e:for(let h=0;h<u;h++){if(O){for(;h<u;h++)if(N)N=!1;else switch(t.charCodeAt(h)){case 34:O=!1;continue e;case 92:N=!0}break}switch(t.charCodeAt(h)){case 34:O=!0,N=!1,y=!0;break;case 44:a=h;break;case 123:a=h+1,A[p++]=T,y=!0;break;case 91:a=h+1,A[p++]=ee,y=!0;break;case 93:case 125:if(a=h+1,p===0)break e;p--,p<o&&(P(t,x,a),x=a);break;case 9:case 10:case 13:case 32:p===0&&(y&&(a=h,P(t,x,a),x=a),e!==$&&d===!1&&(t.charCodeAt(h)===10||t.charCodeAt(h)===13)&&(d=!0),a===h&&L++),x===h&&x++,a===h&&a++;break;default:y=!0}}a>x&&P(t,x,a),a<u&&(k!==null?k+=t:k=t.slice(a,u)),S+=u,typeof i=="function"&&i(L-V,t,k,j)}function X(){return(k!==null||g===W&&e!==F)&&(p=0,P("",0,0)),typeof i=="function"&&(L=S,i(0,null,null,j)),typeof r=="function"?b:s!==null?s:g}}function Y(e){return/[^\x20\x21\x23-\x5B\x5D-\uD799]/.test(e)?JSON.stringify(e):'"'+e+'"'}function*M(e,...n){let{replacer:r,getKeys:i,space:s,...b}=z(...n),g=Number(b.highWaterMark)||16384,f=K(b.mode)==="jsonl"&&Array.isArray(e)?e:[e],S=f.length,L=new Map,w=[],C=null,A=null,o=null,p=null,O=!0,N=[],y=0,d="";for(let c=0;c<S;c++){C!==null&&(d+=`
  7. `),C={"":f[c]},A=null,o=()=>j("",f[c]),p=C,O=!0,N=[""],y=0;do o(),(d.length>=g||A===null&&c===S-1)&&(yield d,d="");while(A!==null)}function l(){if(y===0&&(N=i(p),d+="{"),y===N.length){d+=s&&!O?`
  8. ${s.repeat(w.length-1)}}`:"}",B();return}let c=N[y++];j(c,p[c])}function k(){if(y===0&&(d+="["),y===p.length){d+=s&&!O?`
  9. ${s.repeat(w.length-1)}]`:"]",B();return}j(y,p[y++])}function D(c){if(O?O=!1:d+=",",s&&A!==null&&(d+=`
  10. ${s.repeat(w.length)}`),o===l){let m=L.get(c);m===void 0&&L.set(c,m=Y(c)+(s?": ":":")),d+=m}}function j(c,m){if(m=R(p,c,m,r),m===null||typeof m!="object")(o!==l||m!==void 0)&&(D(c),I(m));else{if(w.includes(m))throw new TypeError("Converting circular structure to JSON");D(c),w.push(m),E(),o=Array.isArray(m)?k:l,p=m,O=!0,y=0}}function I(c){switch(typeof c){case"string":d+=Y(c);break;case"number":d+=Number.isFinite(c)?String(c):"null";break;case"boolean":d+=c?"true":"false";break;case"undefined":case"object":d+="null";break;default:throw new TypeError(`Do not know how to serialize a ${c.constructor?.name||typeof c}`)}}function E(){A={keys:N,index:y,prev:A}}function B(){w.pop();let c=w.length>0?w[w.length-1]:C;o=Array.isArray(c)?k:l,p=c,O=!1,N=A.keys,y=A.index,A=A.prev}}var fe=typeof Object.hasOwn=="function"?Object.hasOwn:(e,n)=>Object.hasOwnProperty.call(e,n),ce={8:"\\b",9:"\\t",10:"\\n",12:"\\f",13:"\\r",34:'\\"',92:"\\\\"},ae=Uint8Array.from({length:2048},(e,n)=>fe(ce,n)?2:n<32?6:n<128?1:2);function ue(e){return e>=55296&&e<=56319}function pe(e){return e>=56320&&e<=57343}function G(e){if(!/[^\x20\x21\x23-\x5B\x5D-\x7F]/.test(e))return e.length+2;let n=0,r=!1;for(let i=0;i<e.length;i++){let s=e.charCodeAt(i);if(s<2048)n+=ae[s];else if(ue(s)){n+=6,r=!0;continue}else pe(s)?n=r?n-2:n+6:n+=3;r=!1}return n+2}function ye(e){let n=0;return e<0&&(n=1,e=-e),e>=1e9&&(n+=9,e=(e-e%1e9)/1e9),e>=1e4?e>=1e6?n+(e>=1e8?9:e>=1e7?8:7):n+(e>=1e5?6:5):n+(e>=100?e>=1e3?4:3:e>=10?2:1)}function ge(e){switch(typeof e){case"string":return G(e);case"number":return Number.isFinite(e)?Number.isInteger(e)?ye(e):String(e).length:4;case"boolean":return e?4:5;case"undefined":case"object":return 4;default:return 0}}function he(e,...n){let{replacer:r,getKeys:i,...s}=z(...n),b=!!s.continueOnCircular,g=s.space?.length||0,f=K(s.mode)==="jsonl"&&Array.isArray(e)?e:[e],S=new Map,L=new Map,w=new Set,C=[],A=!1,o=0,p=0,O=0;for(let y=0;y<f.length;y++)y>0&&(o+=1),N({"":f[y]},"",f[y]);return o===0&&f.length===1&&(o+=9),{bytes:isNaN(o)?1/0:o+p,spaceBytes:g>0&&isNaN(o)?1/0:p,circular:[...w]};function N(y,d,l){if(!A)if(l=R(y,d,l,r),l===null||typeof l!="object")(l!==void 0||Array.isArray(y))&&(o+=ge(l));else{if(C.includes(l)){w.add(l),o+=4,b||(A=!0);return}if(L.has(l)){o+=L.get(l);return}O++;let k=O,D=o,j=0;if(C.push(l),Array.isArray(l)){j=l.length;for(let I=0;I<j;I++)N(l,I,l[I])}else{let I=o;for(let E of i(l))if(N(l,E,l[E]),I!==o){let B=S.get(E);B===void 0&&S.set(E,B=G(E)+1),o+=B,j++,I=o}}o+=j===0?2:1+j,g>0&&j>0&&(p+=(Array.isArray(l)?0:j)+(1+C.length*g)*(j+1)-g),C.pop(),k!==O&&L.set(l,o-D)}}}function de(e){return U(_(e)?e:async function*(){let n=e.getReader();try{for(;;){let{value:r,done:i}=await n.read();if(i)break;yield r}}finally{n.releaseLock()}})}function be(e,n,r){return typeof ReadableStream.from=="function"?ReadableStream.from(M(e,n,r)):new ReadableStream({start(){this.generator=M(e,n,r)},pull(i){let{value:s,done:b}=this.generator.next();b?i.close():i.enqueue(s)},cancel(){this.generator=null}})}return{createStringifyWebStream: be,parseChunked: U,parseFromWebStream: de,stringifyChunked: M,stringifyInfo: he};
  11. })));
  12. //# sourceMappingURL=json-ext.min.js.map