UNPKG

json-6

Version:
2 lines (1 loc) 12.7 kB
var e,t=(function(e,t){const n=[];function a(){return n.pop()||{context:0,elements:null,element_array:null}}function s(e){n.push(e)}const r=[];function i(e){r.push(e)}const l=t;l.escape=function(e){let t="";if(!e)return e;for(let n=0;n<e.length;n++){const a=e[n];'"'!=a&&"\\"!=a&&"`"!=a&&"'"!=a||(t+="\\"),t+=a}return t},l.begin=function(e,t){const n={name:null,value_type:0,string:"",contains:null},l={line:1,col:1};let c=0,o=0,u=!0,f=!1,p=null,g=void 0,h=[],b=0,d=0,m=!1,v=!1,y=!1,k=!1,w=!1,_=null,x=!1,N=!1,j=!1,O=!1,S=!1,E=!1,P=!1,$=0,A=0,I=!1;const C={first:null,last:null,saved:null,push(e){let t=this.saved;t?(this.saved=t.next,t.node=e,t.next=null,t.prior=this.last):t={node:e,next:null,prior:this.last},this.last||(this.first=t),this.last=t},pop(){const e=this.last;return(this.last=e.prior)||(this.first=null),e.next=this.saved,this.saved=e,e.node}},q={first:null,last:null,saved:null,push(e){let t=this.saved;t?(this.saved=t.next,t.node=e,t.next=null,t.prior=this.last):t={node:e,next:null,prior:this.last},this.last?this.last.next=t:this.first=t,this.last=t},shift(){const e=this.first;return e?(this.first=e.next,this.first||(this.last=null),e.next=this.saved,this.saved=e,e.node):null},unshift(e){const t=this.saved;this.saved=t.next,t.node=e,t.next=this.first,t.prior=null,this.first||(this.last=t),this.first=t}};function F(e){throw new Error(`${e} at ${c} [${l.line}:${l.col}]`)}return{finalError(){if(0!==d)switch(d){case 1:return F("Comment began at end of document");case 2:console.log("Warning: '//' comment without end of line ended document");break;case 3:return F("Open comment '/*' is missing close at end of document");case 4:return F("Incomplete '/* *' close at end of document")}x&&F("Incomplete string")},value(){this.finalError();const e=p;return p=void 0,e},reset(){o=0,u=!0,q.last&&(q.last.next=q.save),q.save=q.first,q.first=q.last=null,C.last&&(C.last.next=C.save),C.save=q.first,C.first=C.last=null,h=null,g=void 0,b=0,n.value_type=0,n.name=null,n.string="",l.line=1,l.col=1,f=!1,d=0,I=!1,x=!1,j=!1,O=!1},write(n){let a;if(void 0!==n&&"string"!=typeof n&&(n=String(n)),!u)throw new Error("Parser is in an error state, please reset.");for(a=this._write(n,!1);a>0&&(this.finalError(),"function"==typeof t&&function e(n,a){const s=n[a];if(s&&"object"==typeof s)for(const t in s)if(Object.prototype.hasOwnProperty.call(s,t)){const n=e(s,t);void 0!==n?s[t]=n:delete s[t]}return t.call(n,a,s)}({"":p},""),e(p),p=void 0,!(a<2));a=this._write());a&&this.finalError()},_write(e,t){let F,J,z=0;function U(e,t){throw new Error(`${e} '${String.fromCodePoint(t)}' unexpected at ${c} (near '${J.substr(c>4?c-4:0,c>4?3:c-1)}[${String.fromCodePoint(t)}]${J.substr(c,10)}') [${l.line}:${l.col}]`)}function Q(){n.value_type=0,n.string=""}function W(){switch(n.value_type){case 5:h.push((f?-1:1)*Number(n.string));break;case 4:h.push(n.string);break;case 2:h.push(!0);break;case 3:h.push(!1);break;case 8:case 9:h.push(NaN);break;case 10:h.push(-1/0);break;case 11:h.push(1/0);break;case 1:h.push(null);break;case-1:h.push(void 0);break;case 13:h.push(void 0),delete h[h.length-1];break;case 6:case 7:h.push(n.contains)}}function X(){switch(n.value_type){case 5:g[n.name]=(f?-1:1)*Number(n.string);break;case 4:g[n.name]=n.string;break;case 2:g[n.name]=!0;break;case 3:g[n.name]=!1;break;case 8:case 9:g[n.name]=NaN;break;case 10:g[n.name]=-1/0;break;case 11:g[n.name]=1/0;break;case 1:g[n.name]=null;break;case-1:g[n.name]=void 0;break;case 6:case 7:g[n.name]=n.contains}}function B(e){let t=0;for(;0==t&&c<J.length;){let a=J.charAt(c);const s=J.codePointAt(c++);if(s>=65536&&(a+=J.charAt(c),c++),l.col++,s==e)j?(P?U("Incomplete hexidecimal sequence",s):S?U("Incomplete long unicode sequence",s):E&&U("Incomplete unicode sequence",s),O?(O=!1,t=1):n.string+=a,j=!1):t=1;else if(j){if(S){if(125==s){n.string+=String.fromCodePoint($),S=!1,E=!1,j=!1;continue}$*=16,s>=48&&s<=57?$+=s-48:s>=65&&s<=70?$+=s-65+10:s>=97&&s<=102?$+=s-97+10:U("(escaped character, parsing hex of \\u)",s);continue}if(P||E){if(0===A&&123===s){S=!0;continue}$*=16,s>=48&&s<=57?$+=s-48:s>=65&&s<=70?$+=s-65+10:s>=97&&s<=102?$+=s-97+10:U(E?"(escaped character, parsing hex of \\u)":"(escaped character, parsing hex of \\x)",s),A++,E?4==A&&(n.string+=String.fromCodePoint($),E=!1,j=!1):2==A&&(n.string+=String.fromCodePoint($),P=!1,j=!1);continue}switch(s){case 13:O=!0,l.col=1;continue;case 8232:case 8233:l.col=1;case 10:O?O=!1:l.col=1,l.line++;break;case 116:n.string+="\t";break;case 98:n.string+="\b";break;case 48:n.string+="\0";break;case 110:n.string+="\n";break;case 114:n.string+="\r";break;case 102:n.string+="\f";break;case 118:n.string+="\v";break;case 120:P=!0,A=0,$=0;continue;case 117:E=!0,A=0,$=0;continue;default:n.string+=a}j=!1}else 92===s?j=!0:(O&&(O=!1,l.line++,l.col=2),n.string+=a)}return t}function D(){let e;for(;(e=c)<J.length;){const a=J.charAt(e),s=J.codePointAt(c++);if(s>=65536&&U("fault while parsing number;",s),95!=s)if(l.col++,s>=48&&s<=57)y&&(w=!0),n.string+=a;else if(45==s||43==s)0==n.string.length||y&&!k&&!w?(n.string+=a,k=!0):(u=!1,U("fault while parsing number;",s));else if(46==s)v||m||y?(u=!1,U("fault while parsing number;",s)):(n.string+=a,v=!0);else if(m&&(s>=95&&s<=102||s>=65&&s<=70))n.string+=a;else if(120==s||98==s||111==s||88==s||66==s||79==s)m||"0"!=n.string?(u=!1,U("fault while parsing number;",s)):(m=!0,n.string+=a);else{if(101!=s&&69!=s){if(32==s||160==s||13==s||10==s||9==s||65279==s||44==s||125==s||93==s||58==s)break;t&&(u=!1,U("fault while parsing number;",s));break}y?(u=!1,U("fault while parsing number;",s)):(n.string+=a,y=!0)}}c=e,t||c!=J.length?(N=!1,n.value_type=5,0==b&&(I=!0)):N=!0}if(!u)return-1;if(e&&e.length)F=function(){let e=r.pop();return e?e.n=0:e={buf:null,n:0},e}(),F.buf=e,q.push(F);else if(N){if(N=!1,n.value_type=5,0!=b)throw new Error("context stack is not empty at flush");I=!0,z=1}for(;u&&(F=q.shift());){for(c=F.n,J=F.buf,x&&B(_)>0&&(x=!1,n.value_type=4),N&&D();!I&&u&&c<J.length;){let e=J.charAt(c);const t=J.codePointAt(c++);if(t>=65536&&(e+=J.charAt(c),c++),l.col++,d)1==d?42==t?d=3:47!=t?U("fault while parsing;",t):d=2:2==d?10!=t&&13!=t||(d=0):3==d?42==t&&(d=4):d=47==t?0:3;else{switch(t){case 47:d=1;break;case 123:(29==o||30==o||3==b&&0==o)&&U("fault while parsing; getting field name unexpected ",t);{const e=a();n.value_type=6;const t={};0==b&&(p=g=t),e.context=b,e.elements=g,e.element_array=h,e.name=n.name,g=t,C.push(e),Q(),b=3}break;case 91:if(3!=b&&29!=o&&30!=o||U("Fault while parsing; while getting field name unexpected",t),0==n.value_type||-1==n.value_type){const e=a();n.value_type=7;const t=[];0==b?p=h=t:4==b&&(g[n.name]=t),e.context=b,e.elements=g,e.element_array=h,e.name=n.name,h=t,C.push(e),Q(),b=1}else U("Unexpected array open after previous value",t);break;case 58:3==b?(o=0,n.name=n.string,n.string="",b=4,n.value_type=0):U(1==b?"(in array, got colon out of string):parsing fault;":"(outside any object, got colon out of string):parsing fault;",t);break;case 125:if(31==o&&(o=0),3==b){n.value_type=6,n.contains=g;const e=C.pop();n.name=e.name,b=e.context,g=e.elements,h=e.element_array,s(e),0==b&&(I=!0)}else if(4==b){0!=n.value_type?X():U("Fault while parsing field value, close with no value",t),n.value_type=6,n.contains=g;const e=C.pop();n.name=e.name,b=e.context,g=e.elements,h=e.element_array,s(e),0==b&&(I=!0)}else U("Fault while parsing; unexpected",t);f=!1;break;case 93:if(31==o&&(o=0),1==b){0!=n.value_type&&W(),n.value_type=7,n.contains=h;{const e=C.pop();n.name=e.name,b=e.context,g=e.elements,h=e.element_array,s(e)}0==b&&(I=!0)}else U(`bad context ${b}; fault while parsing`,t);f=!1;break;case 44:31==o&&(o=0),1==b?(0==n.value_type&&(n.value_type=13),W(),Q()):4==b?(b=3,0!=n.value_type?(X(),Q()):U("Unexpected comma after object field name",t)):(u=!1,U("bad context; excessive commas while parsing;",t)),f=!1;break;default:if(3==b)switch(t){case 96:case 34:case 39:0==o?(0!=n.value_type&&U("String begin after previous value",t),B(t)?n.value_type=4:(_=t,x=!0)):U("fault while parsing; quote not at start of field name",t);break;case 10:l.line++,l.col=1;case 13:case 32:case 160:case 9:case 65279:31==o?o=0:29==o&&(o=30);break;default:30==o&&(u=!1,U("fault while parsing; character unexpected",t)),0==o&&(o=29),n.string+=e}else switch(t){case 96:case 34:case 39:0===n.value_type?B(t)?(n.value_type=4,o=31):(_=t,x=!0):U("String unexpected",t);break;case 10:l.line++,l.col=1;case 32:case 160:case 9:case 13:case 65279:if(31==o){o=0,0==b&&(I=!0);break}0!==o&&(u=!1,U("fault parsing whitespace",t));break;case 116:0==o?o=1:27==o?o=28:(u=!1,U("fault parsing",t));break;case 114:1==o?o=2:(u=!1,U("fault parsing",t));break;case 117:2==o?o=3:9==o?o=10:0==o?o=12:(u=!1,U("fault parsing",t));break;case 101:3==o?(n.value_type=2,o=31):8==o?(n.value_type=3,o=31):14==o?o=15:18==o?o=19:(u=!1,U("fault parsing",t));break;case 110:0==o?o=9:12==o?o=13:17==o?o=18:22==o?o=23:25==o?o=26:(u=!1,U("fault parsing",t));break;case 100:13==o?o=14:19==o?(n.value_type=-1,o=31):(u=!1,U("fault parsing",t));break;case 105:16==o?o=17:24==o?o=25:26==o?o=27:(u=!1,U("fault parsing",t));break;case 108:10==o?o=11:11==o?(n.value_type=1,o=31):6==o?o=7:(u=!1,U("fault parsing",t));break;case 102:0==o?o=5:15==o?o=16:23==o?o=24:(u=!1,U("fault parsing",t));break;case 97:5==o?o=6:20==o?o=21:(u=!1,U("fault parsing",t));break;case 115:7==o?o=8:(u=!1,U("fault parsing",t));break;case 73:0==o?o=22:(u=!1,U("fault parsing",t));break;case 78:0==o?o=20:21==o?(n.value_type=f?8:9,f=!1,o=31):(u=!1,U("fault parsing",t));break;case 121:28==o?(n.value_type=f?10:11,f=!1,o=31):(u=!1,U("fault parsing",t));break;case 45:0==o?f=!f:(u=!1,U("fault parsing",t));break;case 43:0!==o&&(u=!1,U("fault parsing",t));break;default:t>=48&&t<=57||43==t||46==t||45==t?(m=!1,y=!1,k=!1,w=!1,v=!1,n.string=e,F.n=c,D()):(u=!1,U("fault parsing",t))}}if(I){31==o&&(o=0);break}}}if(c==J.length?(i(F),x||N||3==b?z=0:0!=b||0==n.value_type&&!p||(I=!0,z=1)):(F.n=c,q.unshift(F),z=2),I)break}if(I&&0!=n.value_type){switch(n.value_type){case 5:p=(f?-1:1)*Number(n.string);break;case 4:p=n.string;break;case 2:p=!0;break;case 3:p=!1;break;case 1:p=null;break;case-1:p=void 0;break;case 9:case 8:p=NaN;break;case 11:p=1/0;break;case 10:p=-1/0;break;case 6:case 7:p=n.contains}f=!1,n.string="",n.value_type=0}return I=!1,z}}};const c=[Object.freeze(l.begin())];let o=0;l.parse=function(e,t){const n=o++;c.length<=n&&c.push(Object.freeze(l.begin()));const a=c[n];if("string"!=typeof e&&(e=String(e)),a.reset(),a._write(e,!0)>0){const e=a.value();return"function"==typeof t&&function e(n,a){const s=n[a];if(s&&"object"==typeof s)for(const t in s)if(Object.prototype.hasOwnProperty.call(s,t)){const n=e(s,t);void 0!==n?s[t]=n:delete s[t]}return t.call(n,a,s)}({"":e},""),o--,e}a.finalError()},l.stringify=JSON.stringify,l.stringifierActive=null,l.stringifier=function(){const e={true:!0,false:!1,null:null,NaN:NaN,Infinity:1/0,undefined:void 0};let t='"',n=!1;return{stringify(e,t,s,r){return function(e,t,s,r,i){if(void 0===t)return"undefined";if(null===t)return"null";let c,o,u;const f=typeof r,p=typeof s;c="",o="";const g=l.stringifierActive;if(l.stringifierActive=e,i||(i=""),"number"===f)for(u=0;u<r;u+=1)o+=" ";else"string"===f&&(o=r);const h=s;if(s&&"function"!==p&&("object"!==p||"number"!=typeof s.length))throw new Error("JSON6.stringify unknown replacer type.");const b=function e(t,s){let r,i,l,u;const f=c;let p,g=s[t];switch("string"==typeof g&&(g=a(g)),null!=g&&"object"==typeof g&&"function"==typeof toJSOX&&(c+=o,c=f),"function"==typeof h&&(g=h.call(s,t,g)),typeof g){case"string":return g;case"number":return""+g;case"boolean":return String(g);case"object":if(!g)return"null";if(c+=o,p=[],h&&"object"==typeof h)for(u=h.length,r=0;r<u;r+=1)"string"==typeof h[r]&&(i=h[r],l=e(i,g),l&&p.push(a(i)+(c?": ":":")+l));else{const t=[];for(i in g)if((!n||Object.prototype.propertyIsEnumerable.call(g,i))&&Object.prototype.hasOwnProperty.call(g,i)){let e;for(e=0;e<t.length;e++)if(t[e]>i){t.splice(e,0,i);break}e===t.length&&t.push(i)}for(let n=0;n<t.length;n++)i=t[n],Object.prototype.hasOwnProperty.call(g,i)&&(l=e(i,g),l&&p.push(a(i)+(c?": ":":")+l))}return l=0===p.length?"{}":c?"{\n"+c+p.join(",\n"+c)+"\n"+f+"}":"{"+p.join(",")+"}",c=f,l}}(i,{[i]:t});return l.stringifierActive=g,b}(this,e,t,s,r)},setQuote(e){t=e},get ignoreNonEnumerable(){return n},set ignoreNonEnumerable(e){n=e}};function a(n){return"number"!=typeof n||isNaN(n)?n.length?n in e||/([0-9-])/.test(n[0])||/((\n|\r|\t)|[ #{}()<>!+\-*/.:,])/.test(n)?t+l.escape(n)+t:n:t+t:["'",n.toString(),"'"].join()}},l.stringify=function(e,t,n){return l.stringifier().stringify(e,t,n)},l.version="1.1.1"}(e={exports:{}},e.exports),e.exports);export default t;