>>=v,p-=v),p<15&&(d+=E[r++]<>>=v=b>>>24,p-=v,16&(v=b>>>16&255)){if(_=65535&b,p<(v&=15)&&(d+=E[r++]<
i){e.msg="invalid distance too far back",j.mode=16209;break r}if(d>>>=v,p-=v,_>(v=a-l)){if((v=_-v)>u&&j.sane){e.msg="invalid distance too far back",j.mode=16209;break r}if(x=0,k=f,0===c){if(x+=s-v,v2;)S[a++]=k[x++],S[a++]=k[x++],S[a++]=k[x++],w-=3;w&&(S[a++]=k[x++],w>1&&(S[a++]=k[x++]))}else{x=a-_;do S[a++]=S[x++],S[a++]=S[x++],S[a++]=S[x++],w-=3;while(w>2)w&&(S[a++]=S[x++],w>1&&(S[a++]=S[x++]))}}else if((64&v)==0){b=m[(65535&b)+(d&(1<>3,p-=w<<3,d&=(1<{let s,u,c,f,d,p,h,m,g;let y=i.bits,b=0,v=0,w=0,_=0,x=0,k=0,E=0,S=0,j=0,C=0,R=null,A=new Uint16Array(16),O=new Uint16Array(16),z=null;for(b=0;b<=15;b++)A[b]=0;for(v=0;v=1&&0===A[_];_--);if(x>_&&(x=_),0===_)return a[l++]=20971520,a[l++]=20971520,i.bits=1,0;for(w=1;w<_&&0===A[w];w++);for(x0&&(0===e||1!==_))return -1;for(b=1,O[1]=0;b<15;b++)O[b+1]=O[b]+A[b];for(v=0;v852||2===e&&j>592)return 1;for(;;){h=b-E,o[v]+1=p?(m=z[o[v]-p],g=R[o[v]-p]):(m=96,g=0),s=1<>E)+(u-=s)]=h<<24|m<<16|g|0;while(0!==u)for(s=1<>=1;if(0!==s?(C&=s-1,C+=s):C=0,v++,0==--A[b]){if(b===_)break;b=t[r+o[v]]}if(b>x&&(C&f)!==c){for(0===E&&(E=x),d+=w,S=1<<(k=b-E);k+E<_&&!((S-=A[k+E])<=0);)k++,S<<=1;if(j+=1<852||2===e&&j>592)return 1;a[c=C&f]=x<<24|k<<16|d-l|0}}return 0!==C&&(a[d+C]=b-E<<24|4194304),i.bits=x,0};let{Z_FINISH:tl,Z_BLOCK:to,Z_TREES:ti,Z_OK:ts,Z_STREAM_END:tu,Z_NEED_DICT:tc,Z_STREAM_ERROR:tf,Z_DATA_ERROR:td,Z_MEM_ERROR:tp,Z_BUF_ERROR:th,Z_DEFLATED:tm}=J,tg=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function ty(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}let tb=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<16180||t.mode>16211?1:0},tv=e=>{if(tb(e))return tf;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=16180,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,ts},tw=e=>{if(tb(e))return tf;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,tv(e)},t_=(e,t)=>{let r;if(tb(e))return tf;let n=e.state;return(t<0?(r=0,t=-t):(r=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15))?tf:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,tw(e))},tx=!0,tk=e=>{if(tx){o=new Int32Array(512),i=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(ta(1,e.lens,0,288,o,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;ta(2,e.lens,0,32,i,0,e.work,{bits:5}),tx=!1}e.lencode=o,e.lenbits=9,e.distcode=i,e.distbits=5},tE=(e,t,r,n)=>{let a;let l=e.state;return null===l.window&&(l.wsize=1<=l.wsize?(l.window.set(t.subarray(r-l.wsize,r),0),l.wnext=0,l.whave=l.wsize):((a=l.wsize-l.wnext)>n&&(a=n),l.window.set(t.subarray(r-n,r-n+a),l.wnext),(n-=a)?(l.window.set(t.subarray(r-n,r),0),l.wnext=n,l.whave=l.wsize):(l.wnext+=a,l.wnext===l.wsize&&(l.wnext=0),l.whave{if(!e)return tf;let r=new ty;e.state=r,r.strm=e,r.window=null,r.mode=16180;let n=t_(e,t);return n!==ts&&(e.state=null),n},inflate:(e,t)=>{let r,n,a,l,o,i,s,u,c,f,d,p,h,m,g,y,b,v,w,_,x,k,E,S;let j=0,C=new Uint8Array(4),R=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(tb(e)||!e.output||!e.input&&0!==e.avail_in)return tf;16191===(r=e.state).mode&&(r.mode=16192),o=e.next_out,a=e.output,s=e.avail_out,l=e.next_in,n=e.input,i=e.avail_in,u=r.hold,c=r.bits,f=i,d=s,k=ts;n:for(;;)switch(r.mode){case 16180:if(0===r.wrap){r.mode=16192;break}for(;c<16;){if(0===i)break n;i--,u+=n[l++]<>>8&255,r.check=Q(r.check,C,2,0),u=0,c=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=16209;break}if((15&u)!==tm){e.msg="unknown compression method",r.mode=16209;break}if(u>>>=4,c-=4,x=(15&u)+8,0===r.wbits&&(r.wbits=x),x>15||x>r.wbits){e.msg="invalid window size",r.mode=16209;break}r.dmax=1<>8&1),512&r.flags&&4&r.wrap&&(C[0]=255&u,C[1]=u>>>8&255,r.check=Q(r.check,C,2,0)),u=0,c=0,r.mode=16182;case 16182:for(;c<32;){if(0===i)break n;i--,u+=n[l++]<>>8&255,C[2]=u>>>16&255,C[3]=u>>>24&255,r.check=Q(r.check,C,4,0)),u=0,c=0,r.mode=16183;case 16183:for(;c<16;){if(0===i)break n;i--,u+=n[l++]<>8),512&r.flags&&4&r.wrap&&(C[0]=255&u,C[1]=u>>>8&255,r.check=Q(r.check,C,2,0)),u=0,c=0,r.mode=16184;case 16184:if(1024&r.flags){for(;c<16;){if(0===i)break n;i--,u+=n[l++]<>>8&255,r.check=Q(r.check,C,2,0)),u=0,c=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&((p=r.length)>i&&(p=i),p&&(r.head&&(x=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(l,l+p),x)),512&r.flags&&4&r.wrap&&(r.check=Q(r.check,n,p,l)),i-=p,l+=p,r.length-=p),r.length))break n;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===i)break n;p=0;do x=n[l+p++],r.head&&x&&r.length<65536&&(r.head.name+=String.fromCharCode(x));while(x&&p>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=16191;break;case 16189:for(;c<32;){if(0===i)break n;i--,u+=n[l++]<>>=7&c,c-=7&c,r.mode=16206;break}for(;c<3;){if(0===i)break n;i--,u+=n[l++]<>>=1)){case 0:r.mode=16193;break;case 1:if(tk(r),r.mode=16199,t===ti){u>>>=2,c-=2;break n}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=16209}u>>>=2,c-=2;break;case 16193:for(u>>>=7&c,c-=7&c;c<32;){if(0===i)break n;i--,u+=n[l++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=16209;break}if(r.length=65535&u,u=0,c=0,r.mode=16194,t===ti)break n;case 16194:r.mode=16195;case 16195:if(p=r.length){if(p>i&&(p=i),p>s&&(p=s),0===p)break n;a.set(n.subarray(l,l+p),o),i-=p,l+=p,s-=p,o+=p,r.length-=p;break}r.mode=16191;break;case 16196:for(;c<14;){if(0===i)break n;i--,u+=n[l++]<>>=5,c-=5,r.ndist=(31&u)+1,u>>>=5,c-=5,r.ncode=(15&u)+4,u>>>=4,c-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=16209;break}r.have=0,r.mode=16197;case 16197:for(;r.have>>=3,c-=3}for(;r.have<19;)r.lens[R[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,E={bits:r.lenbits},k=ta(0,r.lens,0,19,r.lencode,0,r.work,E),r.lenbits=E.bits,k){e.msg="invalid code lengths set",r.mode=16209;break}r.have=0,r.mode=16198;case 16198:for(;r.have>>24,y=j>>>16&255,b=65535&j,!(g<=c);){if(0===i)break n;i--,u+=n[l++]<>>=g,c-=g,r.lens[r.have++]=b;else{if(16===b){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=16209;break}x=r.lens[r.have-1],p=3+(3&u),u>>>=2,c-=2}else if(17===b){for(S=g+3;c>>=g,c-=g,x=0,p=3+(7&u),u>>>=3,c-=3}else{for(S=g+7;c>>=g,c-=g,x=0,p=11+(127&u),u>>>=7,c-=7}if(r.have+p>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=16209;break}for(;p--;)r.lens[r.have++]=x}}if(16209===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=16209;break}if(r.lenbits=9,E={bits:r.lenbits},k=ta(1,r.lens,0,r.nlen,r.lencode,0,r.work,E),r.lenbits=E.bits,k){e.msg="invalid literal/lengths set",r.mode=16209;break}if(r.distbits=6,r.distcode=r.distdyn,E={bits:r.distbits},k=ta(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,E),r.distbits=E.bits,k){e.msg="invalid distances set",r.mode=16209;break}if(r.mode=16199,t===ti)break n;case 16199:r.mode=16200;case 16200:if(i>=6&&s>=258){e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=i,r.hold=u,r.bits=c,e7(e,d),o=e.next_out,a=e.output,s=e.avail_out,l=e.next_in,n=e.input,i=e.avail_in,u=r.hold,c=r.bits,16191===r.mode&&(r.back=-1);break}for(r.back=0;g=(j=r.lencode[u&(1<>>24,y=j>>>16&255,b=65535&j,!(g<=c);){if(0===i)break n;i--,u+=n[l++]<>v)])>>>24,y=j>>>16&255,b=65535&j,!(v+g<=c);){if(0===i)break n;i--,u+=n[l++]<>>=v,c-=v,r.back+=v}if(u>>>=g,c-=g,r.back+=g,r.length=b,0===y){r.mode=16205;break}if(32&y){r.back=-1,r.mode=16191;break}if(64&y){e.msg="invalid literal/length code",r.mode=16209;break}r.extra=15&y,r.mode=16201;case 16201:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;g=(j=r.distcode[u&(1<>>24,y=j>>>16&255,b=65535&j,!(g<=c);){if(0===i)break n;i--,u+=n[l++]<>v)])>>>24,y=j>>>16&255,b=65535&j,!(v+g<=c);){if(0===i)break n;i--,u+=n[l++]<>>=v,c-=v,r.back+=v}if(u>>>=g,c-=g,r.back+=g,64&y){e.msg="invalid distance code",r.mode=16209;break}r.offset=b,r.extra=15&y,r.mode=16203;case 16203:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=16209;break}r.mode=16204;case 16204:if(0===s)break n;if(p=d-s,r.offset>p){if((p=r.offset-p)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=16209;break}p>r.wnext?(p-=r.wnext,h=r.wsize-p):h=r.wnext-p,p>r.length&&(p=r.length),m=r.window}else m=a,h=o-r.offset,p=r.length;p>s&&(p=s),s-=p,r.length-=p;do a[o++]=m[h++];while(--p)0===r.length&&(r.mode=16200);break;case 16205:if(0===s)break n;a[o++]=r.length,s--,r.mode=16200;break;case 16206:if(r.wrap){for(;c<32;){if(0===i)break n;i--,u|=n[l++]<{if(tb(e))return tf;let t=e.state;return t.window&&(t.window=null),e.state=null,ts},inflateGetHeader:(e,t)=>{if(tb(e))return tf;let r=e.state;return(2&r.wrap)==0?tf:(r.head=t,t.done=!1,ts)},inflateSetDictionary:(e,t)=>{let r;let n=t.length;return tb(e)||0!==(r=e.state).wrap&&16190!==r.mode?tf:16190===r.mode&&W(1,t,n,0)!==r.check?td:tE(e,t,n,n)?(r.mode=16210,tp):(r.havedict=1,ts)}},tj=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};let tC=Object.prototype.toString,{Z_NO_FLUSH:tR,Z_FINISH:tA,Z_OK:tO,Z_STREAM_END:tz,Z_NEED_DICT:tN,Z_STREAM_ERROR:tU,Z_DATA_ERROR:tT,Z_MEM_ERROR:tD}=J;function tP(e){this.options=eW.assign({chunkSize:65536,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits)==0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eK,this.strm.avail_out=0;let r=tS.inflateInit2(this.strm,t.windowBits);if(r!==tO||(this.header=new tj,tS.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=eJ.string2buf(t.dictionary):"[object ArrayBuffer]"===tC.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=tS.inflateSetDictionary(this.strm,t.dictionary))!==tO)))throw Error(Z[r])}function tI(e,t){let r=new tP(t);if(r.push(e),r.err)throw r.msg||Z[r.err];return r.result}tP.prototype.push=function(e,t){let r,n,a;let l=this.strm,o=this.options.chunkSize,i=this.options.dictionary;if(this.ended)return!1;for(n=t===~~t?t:!0===t?tA:tR,"[object ArrayBuffer]"===tC.call(e)?l.input=new Uint8Array(e):l.input=e,l.next_in=0,l.avail_in=l.input.length;;){for(0===l.avail_out&&(l.output=new Uint8Array(o),l.next_out=0,l.avail_out=o),(r=tS.inflate(l,n))===tN&&i&&((r=tS.inflateSetDictionary(l,i))===tO?r=tS.inflate(l,n):r===tT&&(r=tN));l.avail_in>0&&r===tz&&l.state.wrap>0&&0!==e[l.next_in];)tS.inflateReset(l),r=tS.inflate(l,n);switch(r){case tU:case tT:case tN:case tD:return this.onEnd(r),this.ended=!0,!1}if(a=l.avail_out,l.next_out&&(0===l.avail_out||r===tz)){if("string"===this.options.to){let e=eJ.utf8border(l.output,l.next_out),t=l.next_out-e,r=eJ.buf2string(l.output,e);l.next_out=t,l.avail_out=o-t,t&&l.output.set(l.output.subarray(e,e+t),0),this.onData(r)}else this.onData(l.output.length===l.next_out?l.output:l.output.subarray(0,l.next_out))}if(r!==tO||0!==a){if(r===tz)return r=tS.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===l.avail_in)break}}return!0},tP.prototype.onData=function(e){this.chunks.push(e)},tP.prototype.onEnd=function(e){e===tO&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=eW.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};let{Deflate:tL,deflate:tB,deflateRaw:tF,gzip:tM}={Deflate:e8,deflate:e9,deflateRaw:function(e,t){return(t=t||{}).raw=!0,e9(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,e9(e,t)},constants:J},{Inflate:tH,inflate:t$,inflateRaw:tV,ungzip:tW}={Inflate:tP,inflate:tI,inflateRaw:function(e,t){return(t=t||{}).raw=!0,tI(e,t)},ungzip:tI,constants:J};var tq=tL,tQ=tB,tZ=tF,tJ=tM,tK=tH,tX=t$,tG=tV,tY=tW,t0=J,t1={Deflate:tq,deflate:tQ,deflateRaw:tZ,gzip:tJ,Inflate:tK,inflate:tX,inflateRaw:tG,ungzip:tY,constants:t0}},{"@parcel/transformer-js/src/esmodule-helpers.js":"4uUBn"}],"4pSjz":[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"Root",()=>f);var a=e("react/jsx-runtime"),l=e("radix3"),o=e("react"),i=e("web-utils"),s=e("../utils/types/general"),u=e("../utils/ui/loading"),c=e("./pages");let f=({})=>{let e=(0,i.useLocal)({router:(0,l.createRouter)({strictTrailingSlash:!0}),Page:null},async()=>{for(let[t,r]of Object.entries(c))e.router.insert(r.url,{url:r.url,Page:(0,o.lazy)(async()=>({default:(await r.page()).default.component}))});e.render()});prasiContext.render=e.render;let t=i.GlobalContext.Provider,r=e.router.lookup(location.pathname);return(r&&(s.w.params=r.params,e.Page=r.Page),e.Page)?(0,a.jsx)(t,{value:prasiContext,children:(0,a.jsx)(o.Suspense,{children:(0,a.jsx)(e.Page,{})})}):(0,a.jsx)(u.Loading,{})}},{"react/jsx-runtime":"16Crh",radix3:"affWK",react:"jhHkt","web-utils":"8vvzC","../utils/types/general":"fBAQm","../utils/ui/loading":"loFlS","./pages":"52LXl","@parcel/transformer-js/src/esmodule-helpers.js":"4uUBn"}],affWK:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"NODE_TYPES",()=>a),n.export(r,"createMatcherFromExport",()=>f),n.export(r,"createRouter",()=>l),n.export(r,"exportMatcher",()=>c),n.export(r,"toRouteMatcher",()=>s);let a={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function l(e={}){let t={options:e,rootNode:i(),staticRoutesMap:{}},r=t=>e.strictTrailingSlash?t:t.replace(/\/$/,"")||"/";if(e.routes)for(let n in e.routes)o(t,r(n),e.routes[n]);return{ctx:t,lookup:e=>(function(e,t){let r=e.staticRoutesMap[t];if(r)return r.data;let n=t.split("/"),a={},l=!1,o=null,i=e.rootNode,s=null;for(let e=0;eo(t,r(e),n),remove:e=>(function(e,t){let r=!1,n=t.split("/"),a=e.rootNode;for(let e of n)if(!(a=a.children.get(e)))return r;if(a.data){let e=n[n.length-1];if(a.data=null,0===Object.keys(a.children).length){let t=a.parent;t.children.delete(e),t.wildcardChildNode=null,t.placeholderChildNode=null}r=!0}return r})(t,r(e))}}function o(e,t,r){let n=!0,l=t.split("/"),o=e.rootNode,s=0;for(let e of l){let t;if(t=o.children.get(e))o=t;else{let r=e.startsWith("**")?a.WILDCARD:":"===e[0]||"*"===e?a.PLACEHOLDER:a.NORMAL;t=i({type:r,parent:o}),o.children.set(e,t),r===a.PLACEHOLDER?(t.paramName="*"===e?`_${s++}`:e.slice(1),o.placeholderChildNode=t,n=!1):r===a.WILDCARD&&(o.wildcardChildNode=t,t.paramName=e.slice(3)||"_",n=!1),o=t}}return o.data=r,!0===n&&(e.staticRoutesMap[t]=o),o}function i(e={}){return{type:e.type||a.NORMAL,parent:e.parent||null,children:new Map,data:e.data||null,paramName:e.paramName||null,wildcardChildNode:null,placeholderChildNode:null}}function s(e){return u(function e(t,r){let n={static:new Map,wildcard:new Map,dynamic:new Map};return!function t(r,l){if(r){if(l.type!==a.NORMAL||r.includes("*")||r.includes(":")){if(l.type===a.WILDCARD)n.wildcard.set(r.replace("/**",""),l.data);else if(l.type===a.PLACEHOLDER){let t=e("",l);l.data&&t.static.set("/",l.data),n.dynamic.set(r.replace(/\/\*|\/:\w+/,""),t);return}}else n.static.set(r,l.data)}for(let[e,n]of l.children.entries())t(`${r}/${e}`.replace("//","/"),n)}(t,r),n}("",e.ctx.rootNode))}function u(e){return{ctx:{table:e},matchAll:t=>(function e(t,r){let n=[];for(let[e,a]of d(r.wildcard))t.startsWith(e)&&n.push(a);for(let[a,l]of d(r.dynamic))if(t.startsWith(a+"/")){let r="/"+t.slice(a.length).split("/").splice(2).join("/");n.push(...e(r,l))}let a=r.static.get(t);return a&&n.push(a),n.filter(Boolean)})(t,e)}}function c(e){return function e(t){let r=Object.create(null);for(let n in t)r[n]="dynamic"===n?Object.fromEntries([...t[n].entries()].map(([t,r])=>[t,e(r)])):Object.fromEntries(t[n].entries());return r}(e.ctx.table)}function f(e){return u(function e(t){let r={};for(let n in t)r[n]=new Map("dynamic"===n?Object.entries(t[n]).map(([t,r])=>[t,e(r)]):Object.entries(t[n]));return r}(e))}function d(e){return[...e.entries()].sort((e,t)=>e[0].length-t[0].length)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"4uUBn"}],loFlS:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"Loading",()=>s);var a=e("react/jsx-runtime"),l=e("react"),o=e("web-utils");let i=window,s=({children:e,className:t,show:r,backdrop:n,note:s,alt:u})=>{let c=(0,o.useLocal)({icon:(0,a.jsx)("div",{className:"px-4 py-1",children:"Loading..."}),value:.111,ival:null},()=>{});return(0,l.useEffect)(()=>(c.ival=setInterval(()=>{c.value+=.1333,c.value>=1.3&&(c.value=0),c.render()},200),i.loadingIcon&&(c.icon=(0,a.jsx)("img",{alt:"loading",src:i.loadingIcon,className:css`
width: 42px;
height: 42px;
diff --git a/app/static/sworker.js b/app/static/sworker.js
index e629b58d..451f80c2 100644
--- a/app/static/sworker.js
+++ b/app/static/sworker.js
@@ -1,2 +1,2 @@
-!function(e,t,r,n,a){var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},l="function"==typeof i[n]&&i[n],o=l.cache||{},s="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!o[t]){if(!e[t]){var a="function"==typeof i[n]&&i[n];if(!r&&a)return a(t,!0);if(l)return l(t,!0);if(s&&"string"==typeof t)return s(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}f.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},f.cache={};var u=o[t]=new c.Module(t);e[t][0].call(u.exports,f,u,u.exports,this)}return o[t].exports;function f(e){var t=f.resolve(e);return!1===t?{}:c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.exports={}},c.modules=e,c.cache=o,c.parent=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return i[n]}}),i[n]=c;for(var d=0;da),n.export(r,"version",()=>i),n.export(r,"_register",()=>l);let a=[],i="";function l(e,t){a=e,i=t}},{"@parcel/transformer-js/src/esmodule-helpers.js":"dNXWi"}],dNXWi:[function(e,t,r){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],"5iB2w":[function(e,t,r){var n=e("@parcel/service-worker"),a=e("radix3"),i=e("../timestamp");let l={router:null,offline:!1,broadcast(e){self.clients.matchAll({includeUncontrolled:!0}).then(t=>{t.forEach(t=>{t.postMessage(e)})})}};async function o(){let e=await caches.open(i.version);await e.addAll(n.manifest),l.broadcast({type:"installed"})}async function s(){let e=!1;if(!l.offline){let t=await caches.keys();await Promise.all(t.map(async t=>{t!==i.version&&(await caches.delete(t),e=!0)})),l.broadcast({type:"activated",shouldRefresh:e,version:i.version})}}addEventListener("install",e=>e.waitUntil(o())),addEventListener("activate",e=>e.waitUntil(s())),addEventListener("fetch",async e=>{let t=new URL(e.request.url);l.router&&l.router.lookup(t.pathname)||e.respondWith((async()=>{let t=await caches.match(e.request);if(t)return t;try{return l.offline=!1,await fetch(e.request)}catch(e){return l.offline=!0,l.broadcast({type:"offline"}),new Response}})())}),addEventListener("message",async e=>{let t=e.data.type,r=await caches.open(i.version);switch(t){case"add-cache":await r.match(e.data.url)||await r.add(e.data.url);break;case"define-route":for(let t of(l.router=(0,a.createRouter)({strictTrailingSlash:!1}),e.data.routes))l.router.insert(t.url,t);await s();break;case"force-update":{let e=await caches.keys();await Promise.all(e.map(async e=>{e!==i.version&&await caches.delete(e)})),await o()}}})},{"@parcel/service-worker":"dnsG0",radix3:"jkzZ1","../timestamp":"jH99Y"}],jkzZ1:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"NODE_TYPES",()=>a),n.export(r,"createMatcherFromExport",()=>u),n.export(r,"createRouter",()=>i),n.export(r,"exportMatcher",()=>d),n.export(r,"toRouteMatcher",()=>s);let a={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function i(e={}){let t={options:e,rootNode:o(),staticRoutesMap:{}},r=t=>e.strictTrailingSlash?t:t.replace(/\/$/,"")||"/";if(e.routes)for(let n in e.routes)l(t,r(n),e.routes[n]);return{ctx:t,lookup:e=>(function(e,t){let r=e.staticRoutesMap[t];if(r)return r.data;let n=t.split("/"),a={},i=!1,l=null,o=e.rootNode,s=null;for(let e=0;el(t,r(e),n),remove:e=>(function(e,t){let r=!1,n=t.split("/"),a=e.rootNode;for(let e of n)if(!(a=a.children.get(e)))return r;if(a.data){let e=n[n.length-1];if(a.data=null,0===Object.keys(a.children).length){let t=a.parent;t.children.delete(e),t.wildcardChildNode=null,t.placeholderChildNode=null}r=!0}return r})(t,r(e))}}function l(e,t,r){let n=!0,i=t.split("/"),l=e.rootNode,s=0;for(let e of i){let t;if(t=l.children.get(e))l=t;else{let r=e.startsWith("**")?a.WILDCARD:":"===e[0]||"*"===e?a.PLACEHOLDER:a.NORMAL;t=o({type:r,parent:l}),l.children.set(e,t),r===a.PLACEHOLDER?(t.paramName="*"===e?`_${s++}`:e.slice(1),l.placeholderChildNode=t,n=!1):r===a.WILDCARD&&(l.wildcardChildNode=t,t.paramName=e.slice(3)||"_",n=!1),l=t}}return l.data=r,!0===n&&(e.staticRoutesMap[t]=l),l}function o(e={}){return{type:e.type||a.NORMAL,parent:e.parent||null,children:new Map,data:e.data||null,paramName:e.paramName||null,wildcardChildNode:null,placeholderChildNode:null}}function s(e){return c(function e(t,r){let n={static:new Map,wildcard:new Map,dynamic:new Map};return!function t(r,i){if(r){if(i.type!==a.NORMAL||r.includes("*")||r.includes(":")){if(i.type===a.WILDCARD)n.wildcard.set(r.replace("/**",""),i.data);else if(i.type===a.PLACEHOLDER){let t=e("",i);i.data&&t.static.set("/",i.data),n.dynamic.set(r.replace(/\/\*|\/:\w+/,""),t);return}}else n.static.set(r,i.data)}for(let[e,n]of i.children.entries())t(`${r}/${e}`.replace("//","/"),n)}(t,r),n}("",e.ctx.rootNode))}function c(e){return{ctx:{table:e},matchAll:t=>(function e(t,r){let n=[];for(let[e,a]of f(r.wildcard))t.startsWith(e)&&n.push(a);for(let[a,i]of f(r.dynamic))if(t.startsWith(a+"/")){let r="/"+t.slice(a.length).split("/").splice(2).join("/");n.push(...e(r,i))}let a=r.static.get(t);return a&&n.push(a),n.filter(Boolean)})(t,e)}}function d(e){return function e(t){let r=Object.create(null);for(let n in t)r[n]="dynamic"===n?Object.fromEntries([...t[n].entries()].map(([t,r])=>[t,e(r)])):Object.fromEntries(t[n].entries());return r}(e.ctx.table)}function u(e){return c(function e(t){let r={};for(let n in t)r[n]=new Map("dynamic"===n?Object.entries(t[n]).map(([t,r])=>[t,e(r)]):Object.entries(t[n]));return r}(e))}function f(e){return[...e.entries()].sort((e,t)=>e[0].length-t[0].length)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"dNXWi"}],jH99Y:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"version",()=>a);let a="tyiiyxr"},{"@parcel/transformer-js/src/esmodule-helpers.js":"dNXWi"}]},["1wBG1","5iB2w"],"5iB2w","parcelRequire2d1f");
+!function(e,t,r,n,a){var l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof l[n]&&l[n],o=i.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!o[t]){if(!e[t]){var a="function"==typeof l[n]&&l[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(c&&"string"==typeof t)return c(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}f.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},f.cache={};var d=o[t]=new s.Module(t);e[t][0].call(d.exports,f,d,d.exports,this)}return o[t].exports;function f(e){var t=f.resolve(e);return!1===t?{}:s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.exports={}},s.modules=e,s.cache=o,s.parent=i,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return l[n]}}),l[n]=s;for(var u=0;ua),n.export(r,"version",()=>l),n.export(r,"_register",()=>i);let a=[],l="";function i(e,t){a=e,l=t}},{"@parcel/transformer-js/src/esmodule-helpers.js":"dNXWi"}],dNXWi:[function(e,t,r){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],"5iB2w":[function(e,t,r){var n=e("parcel-plugin-custom-service-worker"),a=e("radix3"),l=e("../timestamp");let i={router:null,offline:!1,broadcast(e){self.clients.matchAll({includeUncontrolled:!0}).then(t=>{t.forEach(t=>{t.postMessage(e)})})}};async function o(){let e=await caches.open(l.version);await e.addAll(n.manifest),i.broadcast({type:"installed"})}async function c(){let e=!1;if(!i.offline){let t=await caches.keys();await Promise.all(t.map(async t=>{t!==l.version&&(await caches.delete(t),e=!0)})),i.broadcast({type:"activated",shouldRefresh:e,version:l.version})}}addEventListener("install",e=>e.waitUntil(o())),addEventListener("activate",e=>e.waitUntil(c())),addEventListener("fetch",async e=>{let t=new URL(e.request.url);i.router&&i.router.lookup(t.pathname)||e.respondWith((async()=>{let t=await caches.match(e.request);if(t)return t;try{return i.offline=!1,await fetch(e.request)}catch(e){return i.offline=!0,i.broadcast({type:"offline"}),new Response}})())}),addEventListener("message",async e=>{let t=e.data.type,r=await caches.open(l.version);switch(t){case"add-cache":await r.match(e.data.url)||await r.add(e.data.url);break;case"define-route":for(let t of(i.router=(0,a.createRouter)({strictTrailingSlash:!1}),e.data.routes))i.router.insert(t.url,t);await c();break;case"force-update":{let e=await caches.keys();await Promise.all(e.map(async e=>{e!==l.version&&await caches.delete(e)})),await o()}}})},{"parcel-plugin-custom-service-worker":"iE30c",radix3:"jkzZ1","../timestamp":"jH99Y"}],jkzZ1:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"NODE_TYPES",()=>a),n.export(r,"createMatcherFromExport",()=>d),n.export(r,"createRouter",()=>l),n.export(r,"exportMatcher",()=>u),n.export(r,"toRouteMatcher",()=>c);let a={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function l(e={}){let t={options:e,rootNode:o(),staticRoutesMap:{}},r=t=>e.strictTrailingSlash?t:t.replace(/\/$/,"")||"/";if(e.routes)for(let n in e.routes)i(t,r(n),e.routes[n]);return{ctx:t,lookup:e=>(function(e,t){let r=e.staticRoutesMap[t];if(r)return r.data;let n=t.split("/"),a={},l=!1,i=null,o=e.rootNode,c=null;for(let e=0;ei(t,r(e),n),remove:e=>(function(e,t){let r=!1,n=t.split("/"),a=e.rootNode;for(let e of n)if(!(a=a.children.get(e)))return r;if(a.data){let e=n[n.length-1];if(a.data=null,0===Object.keys(a.children).length){let t=a.parent;t.children.delete(e),t.wildcardChildNode=null,t.placeholderChildNode=null}r=!0}return r})(t,r(e))}}function i(e,t,r){let n=!0,l=t.split("/"),i=e.rootNode,c=0;for(let e of l){let t;if(t=i.children.get(e))i=t;else{let r=e.startsWith("**")?a.WILDCARD:":"===e[0]||"*"===e?a.PLACEHOLDER:a.NORMAL;t=o({type:r,parent:i}),i.children.set(e,t),r===a.PLACEHOLDER?(t.paramName="*"===e?`_${c++}`:e.slice(1),i.placeholderChildNode=t,n=!1):r===a.WILDCARD&&(i.wildcardChildNode=t,t.paramName=e.slice(3)||"_",n=!1),i=t}}return i.data=r,!0===n&&(e.staticRoutesMap[t]=i),i}function o(e={}){return{type:e.type||a.NORMAL,parent:e.parent||null,children:new Map,data:e.data||null,paramName:e.paramName||null,wildcardChildNode:null,placeholderChildNode:null}}function c(e){return s(function e(t,r){let n={static:new Map,wildcard:new Map,dynamic:new Map};return!function t(r,l){if(r){if(l.type!==a.NORMAL||r.includes("*")||r.includes(":")){if(l.type===a.WILDCARD)n.wildcard.set(r.replace("/**",""),l.data);else if(l.type===a.PLACEHOLDER){let t=e("",l);l.data&&t.static.set("/",l.data),n.dynamic.set(r.replace(/\/\*|\/:\w+/,""),t);return}}else n.static.set(r,l.data)}for(let[e,n]of l.children.entries())t(`${r}/${e}`.replace("//","/"),n)}(t,r),n}("",e.ctx.rootNode))}function s(e){return{ctx:{table:e},matchAll:t=>(function e(t,r){let n=[];for(let[e,a]of f(r.wildcard))t.startsWith(e)&&n.push(a);for(let[a,l]of f(r.dynamic))if(t.startsWith(a+"/")){let r="/"+t.slice(a.length).split("/").splice(2).join("/");n.push(...e(r,l))}let a=r.static.get(t);return a&&n.push(a),n.filter(Boolean)})(t,e)}}function u(e){return function e(t){let r=Object.create(null);for(let n in t)r[n]="dynamic"===n?Object.fromEntries([...t[n].entries()].map(([t,r])=>[t,e(r)])):Object.fromEntries(t[n].entries());return r}(e.ctx.table)}function d(e){return s(function e(t){let r={};for(let n in t)r[n]=new Map("dynamic"===n?Object.entries(t[n]).map(([t,r])=>[t,e(r)]):Object.entries(t[n]));return r}(e))}function f(e){return[...e.entries()].sort((e,t)=>e[0].length-t[0].length)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"dNXWi"}],jH99Y:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"version",()=>a);let a="ede0tgf"},{"@parcel/transformer-js/src/esmodule-helpers.js":"dNXWi"}]},["IayAH","5iB2w"],"5iB2w","parcelRequire2d1f");
//# sourceMappingURL=sworker.js.map
diff --git a/app/web/.parcelrc b/app/web/.parcelrc
index 34f01ca1..8604b307 100644
--- a/app/web/.parcelrc
+++ b/app/web/.parcelrc
@@ -2,6 +2,10 @@
"extends": [
"@parcel/config-default"
],
+ "runtimes": [
+ "parcel-runtime-custom-service-worker",
+ "..."
+ ],
"reporters": [
"...",
"@tinijs/parcel-reporter-copy-public"
@@ -15,4 +19,4 @@
"@parcel/transformer-raw"
]
}
-}
+}
\ No newline at end of file
diff --git a/app/web/.service-worker-rc b/app/web/.service-worker-rc
new file mode 100644
index 00000000..658af00c
--- /dev/null
+++ b/app/web/.service-worker-rc
@@ -0,0 +1,145 @@
+{
+ "filesToCache": [
+ "public/favicon.ico",
+ "public/index.html",
+ "public/min/vs/loader.js",
+ "public/min/vs/editor/editor.main.nls.ru.js",
+ "public/min/vs/editor/editor.main.css",
+ "public/min/vs/editor/editor.main.nls.ko.js",
+ "public/min/vs/editor/editor.main.nls.zh-cn.js",
+ "public/min/vs/editor/editor.main.js",
+ "public/min/vs/editor/editor.main.nls.ja.js",
+ "public/min/vs/editor/editor.main.nls.zh-tw.js",
+ "public/min/vs/editor/editor.main.nls.de.js",
+ "public/min/vs/editor/editor.main.nls.it.js",
+ "public/min/vs/editor/editor.main.nls.es.js",
+ "public/min/vs/editor/editor.main.nls.js",
+ "public/min/vs/editor/editor.main.nls.fr.js",
+ "public/min/vs/base/worker/workerMain.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.it.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.es.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.fr.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.de.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.ja.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.ru.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.zh-cn.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.zh-tw.js",
+ "public/min/vs/base/common/worker/simpleWorker.nls.ko.js",
+ "public/min/vs/base/browser/ui/codicons/codicon/codicon.ttf",
+ "public/min/vs/language/json/jsonWorker.js",
+ "public/min/vs/language/json/jsonMode.js",
+ "public/min/vs/language/html/htmlMode.js",
+ "public/min/vs/language/html/htmlWorker.js",
+ "public/min/vs/language/typescript/tsWorker.js",
+ "public/min/vs/language/typescript/tsMode.js",
+ "public/min/vs/language/css/cssMode.js",
+ "public/min/vs/language/css/cssWorker.js",
+ "public/min/vs/basic-languages/sql/sql.js",
+ "public/min/vs/basic-languages/flow9/flow9.js",
+ "public/min/vs/basic-languages/ruby/ruby.js",
+ "public/min/vs/basic-languages/ecl/ecl.js",
+ "public/min/vs/basic-languages/protobuf/protobuf.js",
+ "public/min/vs/basic-languages/objective-c/objective-c.js",
+ "public/min/vs/basic-languages/restructuredtext/restructuredtext.js",
+ "public/min/vs/basic-languages/wgsl/wgsl.js",
+ "public/min/vs/basic-languages/msdax/msdax.js",
+ "public/min/vs/basic-languages/twig/twig.js",
+ "public/min/vs/basic-languages/bicep/bicep.js",
+ "public/min/vs/basic-languages/javascript/javascript.js",
+ "public/min/vs/basic-languages/bat/bat.js",
+ "public/min/vs/basic-languages/julia/julia.js",
+ "public/min/vs/basic-languages/csharp/csharp.js",
+ "public/min/vs/basic-languages/yaml/yaml.js",
+ "public/min/vs/basic-languages/m3/m3.js",
+ "public/min/vs/basic-languages/pgsql/pgsql.js",
+ "public/min/vs/basic-languages/csp/csp.js",
+ "public/min/vs/basic-languages/coffee/coffee.js",
+ "public/min/vs/basic-languages/mysql/mysql.js",
+ "public/min/vs/basic-languages/qsharp/qsharp.js",
+ "public/min/vs/basic-languages/graphql/graphql.js",
+ "public/min/vs/basic-languages/swift/swift.js",
+ "public/min/vs/basic-languages/cpp/cpp.js",
+ "public/min/vs/basic-languages/hcl/hcl.js",
+ "public/min/vs/basic-languages/scala/scala.js",
+ "public/min/vs/basic-languages/handlebars/handlebars.js",
+ "public/min/vs/basic-languages/ini/ini.js",
+ "public/min/vs/basic-languages/tcl/tcl.js",
+ "public/min/vs/basic-languages/pla/pla.js",
+ "public/min/vs/basic-languages/mips/mips.js",
+ "public/min/vs/basic-languages/powershell/powershell.js",
+ "public/min/vs/basic-languages/vb/vb.js",
+ "public/min/vs/basic-languages/redshift/redshift.js",
+ "public/min/vs/basic-languages/st/st.js",
+ "public/min/vs/basic-languages/solidity/solidity.js",
+ "public/min/vs/basic-languages/pascaligo/pascaligo.js",
+ "public/min/vs/basic-languages/xml/xml.js",
+ "public/min/vs/basic-languages/lua/lua.js",
+ "public/min/vs/basic-languages/php/php.js",
+ "public/min/vs/basic-languages/cypher/cypher.js",
+ "public/min/vs/basic-languages/kotlin/kotlin.js",
+ "public/min/vs/basic-languages/abap/abap.js",
+ "public/min/vs/basic-languages/html/html.js",
+ "public/min/vs/basic-languages/java/java.js",
+ "public/min/vs/basic-languages/liquid/liquid.js",
+ "public/min/vs/basic-languages/freemarker2/freemarker2.js",
+ "public/min/vs/basic-languages/r/r.js",
+ "public/min/vs/basic-languages/fsharp/fsharp.js",
+ "public/min/vs/basic-languages/pug/pug.js",
+ "public/min/vs/basic-languages/rust/rust.js",
+ "public/min/vs/basic-languages/typescript/typescript.js",
+ "public/min/vs/basic-languages/perl/perl.js",
+ "public/min/vs/basic-languages/sophia/sophia.js",
+ "public/min/vs/basic-languages/scss/scss.js",
+ "public/min/vs/basic-languages/markdown/markdown.js",
+ "public/min/vs/basic-languages/shell/shell.js",
+ "public/min/vs/basic-languages/dart/dart.js",
+ "public/min/vs/basic-languages/dockerfile/dockerfile.js",
+ "public/min/vs/basic-languages/lexon/lexon.js",
+ "public/min/vs/basic-languages/redis/redis.js",
+ "public/min/vs/basic-languages/elixir/elixir.js",
+ "public/min/vs/basic-languages/less/less.js",
+ "public/min/vs/basic-languages/clojure/clojure.js",
+ "public/min/vs/basic-languages/css/css.js",
+ "public/min/vs/basic-languages/python/python.js",
+ "public/min/vs/basic-languages/azcli/azcli.js",
+ "public/min/vs/basic-languages/sparql/sparql.js",
+ "public/min/vs/basic-languages/systemverilog/systemverilog.js",
+ "public/min/vs/basic-languages/go/go.js",
+ "public/min/vs/basic-languages/apex/apex.js",
+ "public/min/vs/basic-languages/powerquery/powerquery.js",
+ "public/min/vs/basic-languages/razor/razor.js",
+ "public/min/vs/basic-languages/cameligo/cameligo.js",
+ "public/min/vs/basic-languages/pascal/pascal.js",
+ "public/min/vs/basic-languages/mdx/mdx.js",
+ "public/min/vs/basic-languages/sb/sb.js",
+ "public/min/vs/basic-languages/scheme/scheme.js",
+ "public/min/vs/basic-languages/postiats/postiats.js",
+ "public/min-maps/vs/loader.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.ko.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.ja.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.fr.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.zh-cn.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.js.map",
+ "public/min-maps/vs/editor/editor.main.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.it.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.zh-tw.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.ru.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.es.js.map",
+ "public/min-maps/vs/editor/editor.main.nls.de.js.map",
+ "public/min-maps/vs/base/worker/workerMain.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.zh-tw.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.ko.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.ja.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.fr.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.ru.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.it.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.es.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.zh-cn.js.map",
+ "public/min-maps/vs/base/common/worker/simpleWorker.nls.de.js.map",
+ "public/img/empty.png",
+ "public/img/logo-white.png",
+ "public/img/logo.png"
+ ]
+}
\ No newline at end of file
diff --git a/app/web/package.json b/app/web/package.json
index d7c7b7a7..d3145f0b 100644
--- a/app/web/package.json
+++ b/app/web/package.json
@@ -10,28 +10,22 @@
"@floating-ui/react": "^0.26.4",
"@leeoniya/ufuzzy": "^1.0.14",
"@minoru/react-dnd-treeview": "^3.4.4",
- "@wojtekmaj/react-qr-svg": "^1.0.0",
- "constrained-editor-plugin": "^1.3.0",
- "react-resizable-panels": "^2.0.9",
- "json-diff-ts": "^2.2.1",
- "axios": "^1.6.7",
"@monaco-editor/react": "^4.6.0",
"@paralleldrive/cuid2": "2.2.2",
- "react-contenteditable": "^3.3.7",
- "react-dropzone": "14.2.3",
"@parcel/packager-wasm": "^2.10.3",
- "@parcel/service-worker": "^2.10.3",
- "recast": "^0.23.4",
"@qiwi/deep-proxy": "^2.0.3",
+ "@wojtekmaj/react-qr-svg": "^1.0.0",
"algoliasearch": "^4.22.0",
+ "axios": "^1.6.7",
+ "constrained-editor-plugin": "^1.3.0",
"date-fns": "^2.30.0",
- "safe-flat": "^2.1.0",
"dbgen": "workspace:*",
"esbuild-wasm": "^0.19.10",
"hash-wasm": "^4.11.0",
"idb-keyval": "^6.2.1",
"immer": "^10.0.3",
"js-base64": "^3.7.5",
+ "json-diff-ts": "^2.2.1",
"lodash.capitalize": "^4.2.1",
"lodash.concat": "^4.5.0",
"lodash.debounce": "^4.0.8",
@@ -49,6 +43,8 @@
"lodash.uniqby": "^4.7.0",
"monaco-jsx-syntax-highlight-v2": "^1.2.2",
"msgpackr": "^1.10.0",
+ "pako": "^2.1.0",
+ "parcel-plugin-custom-service-worker": "^1.0.2",
"polywasm": "^0.1.4",
"prettier": "3.1.1",
"prop-types": "^15.8.1",
@@ -56,18 +52,22 @@
"radix3": "^1.1.0",
"react": "18.2.0",
"react-colorful": "^5.6.1",
+ "react-contenteditable": "^3.3.7",
"react-dnd": "^16.0.1",
"react-dom": "18.2.0",
+ "react-dropzone": "14.2.3",
"react-is": "^18.2.0",
+ "react-resizable-panels": "^2.0.9",
"react-use-error-boundary": "^3.0.0",
"react-virtuoso": "^4.6.2",
+ "recast": "^0.23.4",
+ "safe-flat": "^2.1.0",
"safe-stable-stringify": "^2.4.3",
"svgo": "^3.1.0",
"textdiff-create": "^1.1.10",
"tinycolor2": "^1.6.0",
"ua-parser-js": "^1.0.37",
"uuid": "9.0.1",
- "pako": "^2.1.0",
"wasm-gzip": "^2.0.3",
"web-utils": "workspace:*",
"y-pojo": "^0.0.8",
diff --git a/app/web/src/sworker.ts b/app/web/src/sworker.ts
index 79725b95..9cb8481b 100644
--- a/app/web/src/sworker.ts
+++ b/app/web/src/sworker.ts
@@ -1,110 +1,110 @@
-import { manifest } from "@parcel/service-worker";
+import { manifest } from "parcel-plugin-custom-service-worker";
import { RadixRouter, createRouter } from "radix3";
import { version } from "../timestamp";
const g = {
- router: null as null | RadixRouter,
- offline: false,
- broadcast(msg: any) {
- // @ts-ignore
- const c: Clients = self.clients;
- c.matchAll({ includeUncontrolled: true }).then((clients) => {
- clients.forEach((client) => {
- client.postMessage(msg);
- });
- });
- },
+ router: null as null | RadixRouter,
+ offline: false,
+ broadcast(msg: any) {
+ // @ts-ignore
+ const c: Clients = self.clients;
+ c.matchAll({ includeUncontrolled: true }).then((clients) => {
+ clients.forEach((client) => {
+ client.postMessage(msg);
+ });
+ });
+ },
};
async function install() {
- const cache = await caches.open(version);
- await cache.addAll(manifest);
- g.broadcast({ type: "installed" });
+ const cache = await caches.open(version);
+ await cache.addAll(manifest);
+ g.broadcast({ type: "installed" });
}
addEventListener("install", (e) => (e as ExtendableEvent).waitUntil(install()));
async function activate() {
- let shouldRefresh = false;
- if (!g.offline) {
- const keys = await caches.keys();
- await Promise.all(
- keys.map(async (key) => {
- if (key !== version) {
- await caches.delete(key);
- shouldRefresh = true;
- }
- }),
- );
+ let shouldRefresh = false;
+ if (!g.offline) {
+ const keys = await caches.keys();
+ await Promise.all(
+ keys.map(async (key) => {
+ if (key !== version) {
+ await caches.delete(key);
+ shouldRefresh = true;
+ }
+ })
+ );
- g.broadcast({ type: "activated", shouldRefresh, version });
- }
+ g.broadcast({ type: "activated", shouldRefresh, version });
+ }
}
addEventListener("activate", (e) =>
- (e as ExtendableEvent).waitUntil(activate()),
+ (e as ExtendableEvent).waitUntil(activate())
);
addEventListener("fetch", async (evt) => {
- const e = evt as FetchEvent;
+ const e = evt as FetchEvent;
- const url = new URL(e.request.url);
+ const url = new URL(e.request.url);
- if (g.router) {
- const found = g.router.lookup(url.pathname);
- if (found) {
- return;
- }
- }
+ if (g.router) {
+ const found = g.router.lookup(url.pathname);
+ if (found) {
+ return;
+ }
+ }
- e.respondWith(
- (async () => {
- const r = await caches.match(e.request);
- if (r) {
- return r;
- }
+ e.respondWith(
+ (async () => {
+ const r = await caches.match(e.request);
+ if (r) {
+ return r;
+ }
- try {
- g.offline = false;
- return await fetch(e.request);
- } catch (e) {
- g.offline = true;
- g.broadcast({ type: "offline" });
- return new Response();
- }
- })(),
- );
+ try {
+ g.offline = false;
+ return await fetch(e.request);
+ } catch (e) {
+ g.offline = true;
+ g.broadcast({ type: "offline" });
+ return new Response();
+ }
+ })()
+ );
});
addEventListener("message", async (e) => {
- const type = e.data.type;
- const cache = await caches.open(version);
+ const type = e.data.type;
+ const cache = await caches.open(version);
- switch (type) {
- case "add-cache":
- {
- const cached = await cache.match(e.data.url);
- if (!cached) {
- await cache.add(e.data.url);
- }
- }
- break;
- case "define-route":
- g.router = createRouter({ strictTrailingSlash: false });
- for (const route of e.data.routes) {
- g.router.insert(route.url, route);
- }
- await activate();
- break;
- case "force-update":
- {
- const keys = await caches.keys();
- await Promise.all(
- keys.map(async (key) => {
- if (key !== version) {
- await caches.delete(key);
- }
- }),
- );
- await install();
- }
- break;
- }
+ switch (type) {
+ case "add-cache":
+ {
+ const cached = await cache.match(e.data.url);
+ if (!cached) {
+ await cache.add(e.data.url);
+ }
+ }
+ break;
+ case "define-route":
+ g.router = createRouter({ strictTrailingSlash: false });
+ for (const route of e.data.routes) {
+ g.router.insert(route.url, route);
+ }
+ await activate();
+ break;
+ case "force-update":
+ {
+ const keys = await caches.keys();
+ await Promise.all(
+ keys.map(async (key) => {
+ if (key !== version) {
+ await caches.delete(key);
+ }
+ })
+ );
+ await install();
+ }
+ break;
+ }
});
diff --git a/bun.lockb b/bun.lockb
index f3af7552..a20d6bba 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/pkgs/core/build.ts b/pkgs/core/build.ts
index 5b2b7b46..0eaafdf2 100644
--- a/pkgs/core/build.ts
+++ b/pkgs/core/build.ts
@@ -1,100 +1,118 @@
import { createId } from "@paralleldrive/cuid2";
import brotliPromise from "brotli-wasm";
-import { spawn } from "bun";
+import { Glob, spawn } from "bun";
import { dir } from "dir";
import { fdir } from "fdir";
import { statSync } from "fs";
-import { copyAsync, existsAsync, listAsync, removeAsync, writeAsync } from "fs-jetpack";
+import {
+ copyAsync,
+ existsAsync,
+ listAsync,
+ removeAsync,
+ writeAsync,
+} from "fs-jetpack";
const brotli = await brotliPromise;
+const glob = new Glob("**");
+const swrc = {
+ filesToCache: [] as string[],
+};
+for await (const file of glob.scan(dir.path("app/web/public"))) {
+ swrc.filesToCache.push(`public/${file}`);
+}
+await Bun.write(
+ dir.path("app/web/.service-worker-rc"),
+ JSON.stringify(swrc, null, 2)
+);
+
await removeAsync(dir.path("app/web/.parcel-cache"));
await removeAsync(dir.path("app/static"));
await writeAsync(
- dir.path("app/web/timestamp.ts"),
- `export const version = "${createId().substring(0, 7)}";`,
+ dir.path("app/web/timestamp.ts"),
+ `export const version = "${createId().substring(0, 7)}";`
);
const args = [
- "node",
- dir.path("node_modules/.bin/parcel"),
- "build",
- "./src/index.tsx",
- // "--no-optimize",
- "--no-scope-hoist",
- "--dist-dir",
- dir.path(`app/static`),
+ "node",
+ dir.path("node_modules/.bin/parcel"),
+ "build",
+ "./src/index.tsx",
+ // "--no-optimize",
+ "--no-scope-hoist",
+ "--dist-dir",
+ dir.path(`app/static`),
];
const parcel = spawn({
- cmd: args,
- cwd: dir.path("app/web"),
- stdio: ["ignore", "inherit", "inherit"],
+ cmd: args,
+ cwd: dir.path("app/web"),
+ stdio: ["ignore", "inherit", "inherit"],
});
await parcel.exited;
const public_br = dir.path("app/web/public-br");
if (!(await existsAsync(public_br))) {
- const api = new fdir().withRelativePaths().crawl(dir.path("app/web/public"));
- const files = api.sync();
- if (files) {
- await Promise.all(
- files.map(async (file) => {
- const br = brotli.compress(
- new Uint8Array(
- await Bun.file(dir.path(`app/web/public/${file}`)).arrayBuffer(),
- ),
- { quality: 11 },
- );
- if (br) {
- console.log(`Compressing [public] ${file}`);
- await writeAsync(
- dir.path(`app/web/public-br/${file}`),
- Buffer.from(br),
- );
- }
- }),
- );
- }
+ const api = new fdir().withRelativePaths().crawl(dir.path("app/web/public"));
+ const files = api.sync();
+ if (files) {
+ await Promise.all(
+ files.map(async (file) => {
+ const br = brotli.compress(
+ new Uint8Array(
+ await Bun.file(dir.path(`app/web/public/${file}`)).arrayBuffer()
+ ),
+ { quality: 11 }
+ );
+ if (br) {
+ console.log(`Compressing [public] ${file}`);
+ await writeAsync(
+ dir.path(`app/web/public-br/${file}`),
+ Buffer.from(br)
+ );
+ }
+ })
+ );
+ }
}
const static_br = dir.path("app/static-br");
await removeAsync(static_br);
const files = await listAsync(dir.path("app/static"));
if (files) {
- await Promise.all(
- files
- .filter((file) => statSync(dir.path(`app/static/${file}`)).isFile())
- .map(async (file) => {
- if (!(await Bun.file(dir.path(`app/static-br/${file}`)).exists())) {
- const br = brotli.compress(
- new Uint8Array(
- await Bun.file(dir.path(`app/static/${file}`)).arrayBuffer(),
- ),
- { quality: 11 },
- );
- if (br) {
- console.log(`Compressing [static] ${file}`);
- await writeAsync(
- dir.path(`app/static-br/${file}`),
- Buffer.from(br),
- );
- }
- }
- }),
- );
- const pub = await listAsync(dir.path("app/web/public-br"));
- if (pub) {
- await Promise.all(
- pub.map(async (file) => {
- if (await existsAsync(`app/static-br/${file}`)) {
- await removeAsync(`app/static-br/${file}`);
- }
- await copyAsync(
- dir.path(`app/web/public-br/${file}`),
- dir.path(`app/static-br/${file}`),
- );
- }),
- );
- }
-}
\ No newline at end of file
+ await Promise.all(
+ files
+ .filter((file) => statSync(dir.path(`app/static/${file}`)).isFile())
+ .map(async (file) => {
+ if (!(await Bun.file(dir.path(`app/static-br/${file}`)).exists())) {
+ const br = brotli.compress(
+ new Uint8Array(
+ await Bun.file(dir.path(`app/static/${file}`)).arrayBuffer()
+ ),
+ { quality: 11 }
+ );
+ if (br) {
+ console.log(`Compressing [static] ${file}`);
+ await writeAsync(
+ dir.path(`app/static-br/${file}`),
+ Buffer.from(br)
+ );
+ }
+ }
+ })
+ );
+ const pub = await listAsync(dir.path("app/web/public-br"));
+ if (pub) {
+ await Promise.all(
+ pub.map(async (file) => {
+ if (await existsAsync(`app/static-br/${file}`)) {
+ await removeAsync(`app/static-br/${file}`);
+ }
+ await copyAsync(
+ dir.path(`app/web/public-br/${file}`),
+ dir.path(`app/static-br/${file}`)
+ );
+ })
+ );
+ }
+}