@webqit/webflo 0.10.2 → 0.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +750 -3
- package/package.json +3 -3
- package/src/Context.js +8 -4
- package/src/config-pi/deployment/Env.js +2 -2
- package/src/config-pi/deployment/Layout.js +2 -2
- package/src/config-pi/deployment/Origins.js +2 -2
- package/src/config-pi/deployment/Virtualization.js +2 -2
- package/src/config-pi/runtime/Client.js +45 -14
- package/src/config-pi/runtime/Server.js +26 -10
- package/src/config-pi/runtime/client/Worker.js +2 -2
- package/src/config-pi/runtime/server/Headers.js +2 -2
- package/src/config-pi/runtime/server/Redirects.js +2 -2
- package/src/config-pi/static/Manifest.js +2 -2
- package/src/config-pi/static/Ssg.js +2 -2
- package/src/runtime-pi/client/Runtime.js +28 -23
- package/src/runtime-pi/client/RuntimeClient.js +28 -15
- package/src/runtime-pi/client/generate.js +251 -77
- package/src/runtime-pi/client/{generate.oohtml.js → oohtml/full.js} +0 -0
- package/src/runtime-pi/client/oohtml/namespacing.js +7 -0
- package/src/runtime-pi/client/oohtml/scripting.js +8 -0
- package/src/runtime-pi/client/oohtml/templating.js +8 -0
- package/src/runtime-pi/client/worker/Worker.js +21 -23
- package/src/runtime-pi/server/Router.js +2 -2
- package/src/runtime-pi/server/Runtime.js +8 -3
- package/src/runtime-pi/server/RuntimeClient.js +21 -11
- package/src/webflo.js +7 -9
- package/test/site/public/bundle.html +3 -0
- package/test/site/public/bundle.html.json +3 -0
- package/test/site/public/bundle.js +2 -0
- package/test/site/public/bundle.js.gz +0 -0
- package/test/site/public/bundle.webflo.js +15 -0
- package/test/site/public/bundle.webflo.js.gz +0 -0
- package/test/site/public/index.html +30 -0
- package/test/site/public/page-2/bundle.html +5 -0
- package/test/site/public/page-2/bundle.html.json +1 -0
- package/test/site/public/page-2/bundle.js +2 -0
- package/test/site/public/page-2/bundle.js.gz +0 -0
- package/test/site/public/page-2/index.html +47 -0
- package/test/site/public/page-2/logo-130x130.png +0 -0
- package/test/site/public/page-2/main.html +3 -0
- package/test/site/public/page-4/subpage/bundle.html +0 -0
- package/test/site/public/page-4/subpage/bundle.html.json +1 -0
- package/test/site/public/page-4/subpage/bundle.js +2 -0
- package/test/site/public/page-4/subpage/bundle.js.gz +0 -0
- package/test/site/public/page-4/subpage/index.html +31 -0
- package/test/site/public/worker.js +3 -0
- package/test/site/public/worker.js.gz +0 -0
- package/test/site/server/index.js +8 -0
- package/src/Cli.js +0 -131
- package/src/Configurator.js +0 -97
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Home</title>
|
|
3
|
+
<script type="module" src="/bundle.webflo.js" by="webflo"></script>
|
|
4
|
+
<script type="module" src="/bundle.js" by="webflo"></script>
|
|
5
|
+
<template name="page" src="/bundle.html" by="oohtml-cli"></template></head>
|
|
6
|
+
<body>
|
|
7
|
+
|
|
8
|
+
<h1>Home</h1>
|
|
9
|
+
|
|
10
|
+
<ul>
|
|
11
|
+
<li><a href="/">Home</a></li>
|
|
12
|
+
<li><a href="/page-1">Page 1</a></li>
|
|
13
|
+
<li><a href="/page-2">Page 2</a>
|
|
14
|
+
<ul>
|
|
15
|
+
<li><a href="/page-2/subpage">Subpage</a></li>
|
|
16
|
+
</ul>
|
|
17
|
+
</li>
|
|
18
|
+
<li><a href="/page-3">Page 3</a></li>
|
|
19
|
+
<li><a href="/page-4">Page 4</a>
|
|
20
|
+
<ul>
|
|
21
|
+
<li><a href="/page-4/subpage">Subpage</a></li>
|
|
22
|
+
</ul>
|
|
23
|
+
</li>
|
|
24
|
+
<li><a href="/page-5">Page 5</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** @webqit/webflo */
|
|
2
|
+
var{start:s}=WebQit.Webflo,e={},r={bundle_filename:"bundle.js",public_base_url:"/",address_bar_synchrony:"standard",oohtml_support:"full",service_worker_support:!0,worker_scope:"/",worker_filename:"worker.js",routing:{scope:"/page-2",subscopes:[],passes:0}};s.call({layout:e,params:r});
|
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Page 2</title>
|
|
3
|
+
<!--
|
|
4
|
+
<script src="http://localhost:4000/oohtml/dist/main.js"></script>
|
|
5
|
+
-->
|
|
6
|
+
<script type="module" src="/bundle.webflo.js" by="webflo"></script>
|
|
7
|
+
<script type="module" src="/page-2/bundle.js" by="webflo"></script>
|
|
8
|
+
<template name="page" src="/page-2/bundle.html" by="oohtml-cli" loading="lazy"></template>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
|
|
12
|
+
<h1>Page 2</h1>
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
<import template="page" name="main.html"></import>
|
|
16
|
+
-->
|
|
17
|
+
|
|
18
|
+
<ul>
|
|
19
|
+
<li><a href="/">Home</a></li>
|
|
20
|
+
<li><a href="/page-1">Page 1</a></li>
|
|
21
|
+
<li><a href="/page-2">Page 2</a>
|
|
22
|
+
<ul>
|
|
23
|
+
<li><a href="/page-2/subpage">Subpage</a></li>
|
|
24
|
+
</ul>
|
|
25
|
+
</li>
|
|
26
|
+
<li><a href="/page-3">Page 3</a></li>
|
|
27
|
+
<li><a href="/page-4">Page 4</a>
|
|
28
|
+
<ul>
|
|
29
|
+
<li><a href="/page-4/subpage">Subpage</a></li>
|
|
30
|
+
</ul>
|
|
31
|
+
</li>
|
|
32
|
+
<li><a href="/page-5">Page 5</a></li>
|
|
33
|
+
</ul>
|
|
34
|
+
|
|
35
|
+
<script>
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
let importEl = document.createElement('import');
|
|
38
|
+
importEl.setAttribute('template', 'page');
|
|
39
|
+
importEl.setAttribute('name', 'main.html');
|
|
40
|
+
document.body.append('importEl');
|
|
41
|
+
document.body.appendChild(importEl);
|
|
42
|
+
}, 2000);
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
</body></html>
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** @webqit/webflo */
|
|
2
|
+
var{start:s}=WebQit.Webflo,e={},r={bundle_filename:"bundle.js",public_base_url:"/",address_bar_synchrony:"standard",oohtml_support:"full",service_worker_support:!0,worker_scope:"/",worker_filename:"worker.js",routing:{scope:"/page-4/subpage",subscopes:[],passes:0}};s.call({layout:e,params:r});
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Page 4 / Subpage</title>
|
|
3
|
+
<script type="module" src="/bundle.webflo.js" by="webflo"></script>
|
|
4
|
+
<script type="module" src="/page-4/subpage/bundle.js" by="webflo"></script>
|
|
5
|
+
<template name="page" src="/page-4/subpage/bundle.html" by="oohtml-cli"></template>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>Page 4 / Subpage</h1>
|
|
10
|
+
|
|
11
|
+
<ul>
|
|
12
|
+
<li><a href="/">Home</a></li>
|
|
13
|
+
<li><a href="/page-1">Page 1</a></li>
|
|
14
|
+
<li><a href="/page-2">Page 2</a>
|
|
15
|
+
<ul>
|
|
16
|
+
<li><a href="/page-2/subpage">Subpage</a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
</li>
|
|
19
|
+
<li><a href="/page-3">Page 3</a></li>
|
|
20
|
+
<li><a href="/page-4">Page 4</a>
|
|
21
|
+
<ul>
|
|
22
|
+
<li><a href="/page-4/subpage">Subpage</a></li>
|
|
23
|
+
</ul>
|
|
24
|
+
</li>
|
|
25
|
+
<li><a href="/page-5">Page 5</a></li>
|
|
26
|
+
</ul>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
</body></html>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** @webqit/webflo */(async () => {
|
|
2
|
+
var gr=Object.defineProperty;var _r=(e,t)=>()=>(e&&(t=e(e=0)),t);var yr=(e,t)=>{for(var r in t)gr(e,r,{get:t[r],enumerable:!0})};var Wt={};yr(Wt,{URLPattern:()=>Mt});function Rr(e,t){return(t?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(e)}function Ct(e,t=!1){let r=[],n=0;for(;n<e.length;){let i=e[n],o=function(s){if(!t)throw new TypeError(s);r.push({type:"INVALID_CHAR",index:n,value:e[n++]})};if(i==="*"){r.push({type:"ASTERISK",index:n,value:e[n++]});continue}if(i==="+"||i==="?"){r.push({type:"MODIFIER",index:n,value:e[n++]});continue}if(i==="\\"){r.push({type:"ESCAPED_CHAR",index:n++,value:e[n++]});continue}if(i==="{"){r.push({type:"OPEN",index:n,value:e[n++]});continue}if(i==="}"){r.push({type:"CLOSE",index:n,value:e[n++]});continue}if(i===":"){let s="",f=n+1;for(;f<e.length;){let a=e.substr(f,1);if(f===n+1&&Ar.test(a)||f!==n+1&&Cr.test(a)){s+=e[f++];continue}break}if(!s){o(`Missing parameter name at ${n}`);continue}r.push({type:"NAME",index:n,value:s}),n=f;continue}if(i==="("){let s=1,f="",a=n+1,u=!1;if(e[a]==="?"){o(`Pattern cannot start with "?" at ${a}`);continue}for(;a<e.length;){if(!Rr(e[a],!1)){o(`Invalid character '${e[a]}' at ${a}.`),u=!0;break}if(e[a]==="\\"){f+=e[a++]+e[a++];continue}if(e[a]===")"){if(s--,s===0){a++;break}}else if(e[a]==="("&&(s++,e[a+1]!=="?")){o(`Capturing groups are not allowed at ${a}`),u=!0;break}f+=e[a++]}if(u)continue;if(s){o(`Unbalanced pattern at ${n}`);continue}if(!f){o(`Missing pattern at ${n}`);continue}r.push({type:"PATTERN",index:n,value:f}),n=a;continue}r.push({type:"CHAR",index:n,value:e[n++]})}return r.push({type:"END",index:n,value:""}),r}function Rt(e,t={}){let r=Ct(e),{prefixes:n="./"}=t,i=`[^${le(t.delimiter||"/#?")}]+?`,o=[],s=0,f=0,a="",u=new Set,c=b=>{if(f<r.length&&r[f].type===b)return r[f++].value},l=()=>{let b=c("MODIFIER");return b||c("ASTERISK")},p=b=>{let F=c(b);if(F!==void 0)return F;let{type:v,index:$}=r[f];throw new TypeError(`Unexpected ${v} at ${$}, expected ${b}`)},m=()=>{let b="",F;for(;F=c("CHAR")||c("ESCAPED_CHAR");)b+=F;return b},C=b=>b,O=t.encodePart||C;for(;f<r.length;){let b=c("CHAR"),F=c("NAME"),v=c("PATTERN");if(!F&&!v&&c("ASTERISK")&&(v=".*"),F||v){let w=b||"";n.indexOf(w)===-1&&(a+=w,w=""),a&&(o.push(O(a)),a="");let I=F||s++;if(u.has(I))throw new TypeError(`Duplicate name '${I}'.`);u.add(I),o.push({name:I,prefix:O(w),suffix:"",pattern:v||i,modifier:l()||""});continue}let $=b||c("ESCAPED_CHAR");if($){a+=$;continue}if(c("OPEN")){let w=m(),I=c("NAME")||"",W=c("PATTERN")||"";!I&&!W&&c("ASTERISK")&&(W=".*");let Ie=m();p("CLOSE");let wt=l()||"";if(!I&&!W&&!wt){a+=w;continue}if(!I&&!W&&!w)continue;a&&(o.push(O(a)),a=""),o.push({name:I||(W?s++:""),pattern:I&&!W?i:W,prefix:O(w),suffix:O(Ie),modifier:wt});continue}a&&(o.push(O(a)),a=""),p("END")}return o}function le(e){return e.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function jt(e){return e&&e.sensitive?"u":"ui"}function jr(e,t){if(!t)return e;let r=/\((?:\?<(.*?)>)?(?!\?)/g,n=0,i=r.exec(e.source);for(;i;)t.push({name:i[1]||n++,prefix:"",suffix:"",modifier:"",pattern:""}),i=r.exec(e.source);return e}function Tr(e,t,r){let n=e.map(i=>Ft(i,t,r).source);return new RegExp(`(?:${n.join("|")})`,jt(r))}function Fr(e,t,r){return Tt(Rt(e,r),t,r)}function Tt(e,t,r={}){let{strict:n=!1,start:i=!0,end:o=!0,encode:s=c=>c}=r,f=`[${le(r.endsWith||"")}]|$`,a=`[${le(r.delimiter||"/#?")}]`,u=i?"^":"";for(let c of e)if(typeof c=="string")u+=le(s(c));else{let l=le(s(c.prefix)),p=le(s(c.suffix));if(c.pattern)if(t&&t.push(c),l||p)if(c.modifier==="+"||c.modifier==="*"){let m=c.modifier==="*"?"?":"";u+=`(?:${l}((?:${c.pattern})(?:${p}${l}(?:${c.pattern}))*)${p})${m}`}else u+=`(?:${l}(${c.pattern})${p})${c.modifier}`;else c.modifier==="+"||c.modifier==="*"?u+=`((?:${c.pattern})${c.modifier})`:u+=`(${c.pattern})${c.modifier}`;else u+=`(?:${l}${p})${c.modifier}`}if(o)n||(u+=`${a}?`),u+=r.endsWith?`(?=${f})`:"$";else{let c=e[e.length-1],l=typeof c=="string"?a.indexOf(c[c.length-1])>-1:c===void 0;n||(u+=`(?:${a}(?=${f}))?`),l||(u+=`(?=${a}|${f})`)}return new RegExp(u,jt(r))}function Ft(e,t,r){return e instanceof RegExp?jr(e,t):Array.isArray(e)?Tr(e,t,r):Fr(e,t,r)}function $r(e,t){return e.length?e[0]==="/"?!0:!t||e.length<2?!1:(e[0]=="\\"||e[0]=="{")&&e[1]=="/":!1}function It(e,t){return e.startsWith(t)?e.substring(t.length,e.length):e}function kr(e,t){return e.endsWith(t)?e.substr(0,e.length-t.length):e}function Lt(e){return!e||e.length<2?!1:e[0]==="["||(e[0]==="\\"||e[0]==="{")&&e[1]==="["}function kt(e){if(!e)return!0;for(let t of $t)if(e.test(t))return!0;return!1}function Dr(e,t){if(e=It(e,"#"),t||e==="")return e;let r=new URL("https://example.com");return r.hash=e,r.hash?r.hash.substring(1,r.hash.length):""}function Nr(e,t){if(e=It(e,"?"),t||e==="")return e;let r=new URL("https://example.com");return r.search=e,r.search?r.search.substring(1,r.search.length):""}function Ur(e,t){return t||e===""?e:Lt(e)?Ut(e):Nt(e)}function Hr(e,t){if(t||e==="")return e;let r=new URL("https://example.com");return r.password=e,r.password}function Mr(e,t){if(t||e==="")return e;let r=new URL("https://example.com");return r.username=e,r.username}function Wr(e,t,r){if(r||e==="")return e;if(t&&!$t.includes(t))return new URL(`${t}:${e}`).pathname;let n=e[0]=="/";return e=new URL(n?e:"/-"+e,"https://example.com").pathname,n||(e=e.substring(2,e.length)),e}function qr(e,t,r){return Dt(t)===e&&(e=""),r||e===""?e:Ht(e)}function zr(e,t){return e=kr(e,":"),t||e===""?e:ct(e)}function Dt(e){switch(e){case"ws":case"http":return"80";case"wws":case"https":return"443";case"ftp":return"21";default:return""}}function ct(e){if(e==="")return e;if(/^[-+.A-Za-z0-9]*$/.test(e))return e.toLowerCase();throw new TypeError(`Invalid protocol '${e}'.`)}function Br(e){if(e==="")return e;let t=new URL("https://example.com");return t.username=e,t.username}function Gr(e){if(e==="")return e;let t=new URL("https://example.com");return t.password=e,t.password}function Nt(e){if(e==="")return e;if(/[\t\n\r #%/:<>?@[\]^\\|]/g.test(e))throw new TypeError(`Invalid hostname '${e}'`);let t=new URL("https://example.com");return t.hostname=e,t.hostname}function Ut(e){if(e==="")return e;if(/[^0-9a-fA-F[\]:]/g.test(e))throw new TypeError(`Invalid IPv6 hostname '${e}'`);return e.toLowerCase()}function Ht(e){if(e===""||/^[0-9]*$/.test(e)&&parseInt(e)<=65535)return e;throw new TypeError(`Invalid port '${e}'.`)}function Vr(e){if(e==="")return e;let t=new URL("https://example.com");return t.pathname=e[0]!=="/"?"/-"+e:e,e[0]!=="/"?t.pathname.substring(2,t.pathname.length):t.pathname}function Qr(e){return e===""?e:new URL(`data:${e}`).pathname}function Kr(e){if(e==="")return e;let t=new URL("https://example.com");return t.search=e,t.search.substring(1,t.search.length)}function Xr(e){if(e==="")return e;let t=new URL("https://example.com");return t.hash=e,t.hash.substring(1,t.hash.length)}function At(e,t){if(typeof e!="string")throw new TypeError("parameter 1 is not of type 'string'.");let r=new URL(e,t);return{protocol:r.protocol.substring(0,r.protocol.length-1),username:r.username,password:r.password,hostname:r.hostname,port:r.port,pathname:r.pathname,search:r.search!=""?r.search.substring(1,r.search.length):void 0,hash:r.hash!=""?r.hash.substring(1,r.hash.length):void 0}}function Se(e,t,r){let n;if(typeof t.baseURL=="string")try{n=new URL(t.baseURL),e.protocol=n.protocol?n.protocol.substring(0,n.protocol.length-1):"",e.username=n.username,e.password=n.password,e.hostname=n.hostname,e.port=n.port,e.pathname=n.pathname,e.search=n.search?n.search.substring(1,n.search.length):"",e.hash=n.hash?n.hash.substring(1,n.hash.length):""}catch{throw new TypeError(`invalid baseURL '${t.baseURL}'.`)}if(typeof t.protocol=="string"&&(e.protocol=zr(t.protocol,r)),typeof t.username=="string"&&(e.username=Mr(t.username,r)),typeof t.password=="string"&&(e.password=Hr(t.password,r)),typeof t.hostname=="string"&&(e.hostname=Ur(t.hostname,r)),typeof t.port=="string"&&(e.port=qr(t.port,e.protocol,r)),typeof t.pathname=="string"){if(e.pathname=t.pathname,n&&!$r(e.pathname,r)){let i=n.pathname.lastIndexOf("/");i>=0&&(e.pathname=n.pathname.substring(0,i+1)+e.pathname)}e.pathname=Wr(e.pathname,e.protocol,r)}return typeof t.search=="string"&&(e.search=Nr(t.search,r)),typeof t.hash=="string"&&(e.hash=Dr(t.hash,r)),e}function Pe(e){return e.replace(/([+*?:{}()\\])/g,"\\$1")}function Jr(e){return e.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function en(e,t){let r=".*",n=`[^${Jr(t.delimiter||"/#?")}]+?`,i=/[$_\u200C\u200D\p{ID_Continue}]/u,o="";for(let s=0;s<e.length;++s){let f=e[s],a=s>0?e[s-1]:null,u=s<e.length-1?e[s+1]:null;if(typeof f=="string"){o+=Pe(f);continue}if(f.pattern===""){if(f.modifier===""){o+=Pe(f.prefix);continue}o+=`{${Pe(f.prefix)}}${f.modifier}`;continue}let c=typeof f.name!="number",l=t.prefixes!==void 0?t.prefixes:"./",p=f.suffix!==""||f.prefix!==""&&(f.prefix.length!==1||!l.includes(f.prefix));if(!p&&c&&f.pattern===n&&f.modifier===""&&u&&!u.prefix&&!u.suffix)if(typeof u=="string"){let m=u.length>0?u[0]:"";p=i.test(m)}else p=typeof u.name=="number";if(!p&&f.prefix===""&&a&&typeof a=="string"&&a.length>0){let m=a[a.length-1];p=l.includes(m)}p&&(o+="{"),o+=Pe(f.prefix),c&&(o+=`:${f.name}`),f.pattern===r?!c&&(!a||typeof a=="string"||a.modifier||p||f.prefix!=="")?o+="*":o+=`(${r})`:f.pattern===n?c||(o+=`(${n})`):o+=`(${f.pattern})`,f.pattern===n&&c&&f.suffix!==""&&i.test(f.suffix[0])&&(o+="\\"),o+=Pe(f.suffix),p&&(o+="}"),o+=f.modifier}return o}var Ar,Cr,Q,Ir,Lr,$t,Zr,Yr,V,Mt,qt=_r(()=>{Ar=/[$_\p{ID_Start}]/u,Cr=/[$_\u200C\u200D\p{ID_Continue}]/u;Q={delimiter:"",prefixes:"",sensitive:!0,strict:!0},Ir={delimiter:".",prefixes:"",sensitive:!0,strict:!0},Lr={delimiter:"/",prefixes:"/",sensitive:!0,strict:!0};$t=["ftp","file","http","https","ws","wss"];Zr=class{constructor(e){this.tokenList=[],this.internalResult={},this.tokenIndex=0,this.tokenIncrement=1,this.componentStart=0,this.state=0,this.groupDepth=0,this.hostnameIPv6BracketDepth=0,this.shouldTreatAsStandardURL=!1,this.input=e}get result(){return this.internalResult}parse(){for(this.tokenList=Ct(this.input,!0);this.tokenIndex<this.tokenList.length;this.tokenIndex+=this.tokenIncrement){if(this.tokenIncrement=1,this.tokenList[this.tokenIndex].type==="END"){if(this.state===0){this.rewind(),this.isHashPrefix()?this.changeState(9,1):this.isSearchPrefix()?(this.changeState(8,1),this.internalResult.hash=""):(this.changeState(7,0),this.internalResult.search="",this.internalResult.hash="");continue}else if(this.state===2){this.rewindAndSetState(5);continue}this.changeState(10,0);break}if(this.groupDepth>0)if(this.isGroupClose())this.groupDepth-=1;else continue;if(this.isGroupOpen()){this.groupDepth+=1;continue}switch(this.state){case 0:this.isProtocolSuffix()&&(this.internalResult.username="",this.internalResult.password="",this.internalResult.hostname="",this.internalResult.port="",this.internalResult.pathname="",this.internalResult.search="",this.internalResult.hash="",this.rewindAndSetState(1));break;case 1:if(this.isProtocolSuffix()){this.computeShouldTreatAsStandardURL();let e=7,t=1;this.shouldTreatAsStandardURL&&(this.internalResult.pathname="/"),this.nextIsAuthoritySlashes()?(e=2,t=3):this.shouldTreatAsStandardURL&&(e=2),this.changeState(e,t)}break;case 2:this.isIdentityTerminator()?this.rewindAndSetState(3):(this.isPathnameStart()||this.isSearchPrefix()||this.isHashPrefix())&&this.rewindAndSetState(5);break;case 3:this.isPasswordPrefix()?this.changeState(4,1):this.isIdentityTerminator()&&this.changeState(5,1);break;case 4:this.isIdentityTerminator()&&this.changeState(5,1);break;case 5:this.isIPv6Open()?this.hostnameIPv6BracketDepth+=1:this.isIPv6Close()&&(this.hostnameIPv6BracketDepth-=1),this.isPortPrefix()&&!this.hostnameIPv6BracketDepth?this.changeState(6,1):this.isPathnameStart()?this.changeState(7,0):this.isSearchPrefix()?this.changeState(8,1):this.isHashPrefix()&&this.changeState(9,1);break;case 6:this.isPathnameStart()?this.changeState(7,0):this.isSearchPrefix()?this.changeState(8,1):this.isHashPrefix()&&this.changeState(9,1);break;case 7:this.isSearchPrefix()?this.changeState(8,1):this.isHashPrefix()&&this.changeState(9,1);break;case 8:this.isHashPrefix()&&this.changeState(9,1);break;case 9:break;case 10:break}}}changeState(e,t){switch(this.state){case 0:break;case 1:this.internalResult.protocol=this.makeComponentString();break;case 2:break;case 3:this.internalResult.username=this.makeComponentString();break;case 4:this.internalResult.password=this.makeComponentString();break;case 5:this.internalResult.hostname=this.makeComponentString();break;case 6:this.internalResult.port=this.makeComponentString();break;case 7:this.internalResult.pathname=this.makeComponentString();break;case 8:this.internalResult.search=this.makeComponentString();break;case 9:this.internalResult.hash=this.makeComponentString();break;case 10:break}this.changeStateWithoutSettingComponent(e,t)}changeStateWithoutSettingComponent(e,t){this.state=e,this.componentStart=this.tokenIndex+t,this.tokenIndex+=t,this.tokenIncrement=0}rewind(){this.tokenIndex=this.componentStart,this.tokenIncrement=0}rewindAndSetState(e){this.rewind(),this.state=e}safeToken(e){return e<0&&(e=this.tokenList.length-e),e<this.tokenList.length?this.tokenList[e]:this.tokenList[this.tokenList.length-1]}isNonSpecialPatternChar(e,t){let r=this.safeToken(e);return r.value===t&&(r.type==="CHAR"||r.type==="ESCAPED_CHAR"||r.type==="INVALID_CHAR")}isProtocolSuffix(){return this.isNonSpecialPatternChar(this.tokenIndex,":")}nextIsAuthoritySlashes(){return this.isNonSpecialPatternChar(this.tokenIndex+1,"/")&&this.isNonSpecialPatternChar(this.tokenIndex+2,"/")}isIdentityTerminator(){return this.isNonSpecialPatternChar(this.tokenIndex,"@")}isPasswordPrefix(){return this.isNonSpecialPatternChar(this.tokenIndex,":")}isPortPrefix(){return this.isNonSpecialPatternChar(this.tokenIndex,":")}isPathnameStart(){return this.isNonSpecialPatternChar(this.tokenIndex,"/")}isSearchPrefix(){if(this.isNonSpecialPatternChar(this.tokenIndex,"?"))return!0;if(this.tokenList[this.tokenIndex].value!=="?")return!1;let e=this.safeToken(this.tokenIndex-1);return e.type!=="NAME"&&e.type!=="PATTERN"&&e.type!=="CLOSE"&&e.type!=="ASTERISK"}isHashPrefix(){return this.isNonSpecialPatternChar(this.tokenIndex,"#")}isGroupOpen(){return this.tokenList[this.tokenIndex].type=="OPEN"}isGroupClose(){return this.tokenList[this.tokenIndex].type=="CLOSE"}isIPv6Open(){return this.isNonSpecialPatternChar(this.tokenIndex,"[")}isIPv6Close(){return this.isNonSpecialPatternChar(this.tokenIndex,"]")}makeComponentString(){let e=this.tokenList[this.tokenIndex],t=this.safeToken(this.componentStart).index;return this.input.substring(t,e.index)}computeShouldTreatAsStandardURL(){let e={};Object.assign(e,Q),e.encodePart=ct;let t=Ft(this.makeComponentString(),void 0,e);this.shouldTreatAsStandardURL=kt(t)}},Yr=["protocol","username","password","hostname","port","pathname","search","hash"],V="*";Mt=class{constructor(e={},t){this.regexp={},this.keys={},this.component_pattern={};try{if(typeof e=="string"){let i=new Zr(e);if(i.parse(),e=i.result,t)if(typeof t=="string")e.baseURL=t;else throw new TypeError("'baseURL' parameter is not of type 'string'.");else if(typeof e.protocol!="string")throw new TypeError("A base URL must be provided for a relative constructor string.")}else if(t)throw new TypeError("parameter 1 is not of type 'string'.");if(!e||typeof e!="object")throw new TypeError("parameter 1 is not of type 'string' and cannot convert to dictionary.");let r={pathname:V,protocol:V,username:V,password:V,hostname:V,port:V,search:V,hash:V};this.pattern=Se(r,e,!0),Dt(this.pattern.protocol)===this.pattern.port&&(this.pattern.port="");let n;for(n of Yr){if(!(n in this.pattern))continue;let i={},o=this.pattern[n];switch(this.keys[n]=[],n){case"protocol":Object.assign(i,Q),i.encodePart=ct;break;case"username":Object.assign(i,Q),i.encodePart=Br;break;case"password":Object.assign(i,Q),i.encodePart=Gr;break;case"hostname":Object.assign(i,Ir),Lt(o)?i.encodePart=Ut:i.encodePart=Nt;break;case"port":Object.assign(i,Q),i.encodePart=Ht;break;case"pathname":kt(this.regexp.protocol)?(Object.assign(i,Lr),i.encodePart=Vr):(Object.assign(i,Q),i.encodePart=Qr);break;case"search":Object.assign(i,Q),i.encodePart=Kr;break;case"hash":Object.assign(i,Q),i.encodePart=Xr;break}try{let s=Rt(o,i);this.regexp[n]=Tt(s,this.keys[n],i),this.component_pattern[n]=en(s,i)}catch{throw new TypeError(`invalid ${n} pattern '${this.pattern[n]}'.`)}}}catch(r){throw new TypeError(`Failed to construct 'URLPattern': ${r.message}`)}}test(e={},t){let r={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof e!="string"&&t)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof e>"u")return!1;try{typeof e=="object"?r=Se(r,e,!1):r=Se(r,At(e,t),!1)}catch{return!1}let n;for(n in this.pattern)if(!this.regexp[n].exec(r[n]))return!1;return!0}exec(e={},t){let r={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof e!="string"&&t)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof e>"u")return;try{typeof e=="object"?r=Se(r,e,!1):r=Se(r,At(e,t),!1)}catch{return null}let n={};t?n.inputs=[e,t]:n.inputs=[e];let i;for(i in this.pattern){let o=this.regexp[i].exec(r[i]);if(!o)return null;let s={};for(let[f,a]of this.keys[i].entries())if(typeof a.name=="string"||typeof a.name=="number"){let u=o[f+1];s[a.name]=u}n[i]={input:r[i]||"",groups:s}}return n}get protocol(){return this.component_pattern.protocol}get username(){return this.component_pattern.username}get password(){return this.component_pattern.password}get hostname(){return this.component_pattern.hostname}get port(){return this.component_pattern.port}get pathname(){return this.component_pattern.pathname}get search(){return this.component_pattern.search}get hash(){return this.component_pattern.hash}};globalThis.URLPattern||(globalThis.URLPattern=Mt)});var ge=class{constructor(t,r=null){Object.defineProperty(this,"dict",{value:Object.create(t)});for(let n in this.dict)n in this||(this[n]=this.dict[n]);arguments.length>1&&Object.defineProperty(this.dict,"CWD",{get:()=>r})}get name(){return"webflo"}static create(...t){return new this(...t)}get CWD(){return this.dict.CWD||""}get meta(){return this.dict.meta||{}}get app(){return this.dict.app||{}}get config(){return this.dict.config||{}}get flags(){return this.dict.flags||{}}set flags(t){this.dict.flags=t}get layout(){return this.dict.layout||{}}set layout(t){this.dict.layout=t}get logger(){return this.dict.logger}set logger(t){this.dict.logger=t}};var _e=class extends ge{};var ye=class extends _e{};function d(e){return!Array.isArray(e)&&typeof e=="object"&&e}function S(e){return typeof e}function x(e,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var r=globalThis.WebQitInternalsRegistry.get(e);if(!r){if(r=new Map,t[0]===!1)return r;globalThis.WebQitInternalsRegistry.set(e,r)}for(var n,i;n=t.shift();)if((i=r)&&!(r=r.get(n))){if(r=new Map,t[0]===!1)return r;i.set(n,r)}return r}function h(e){return Array.isArray(e)}function te(e){return typeof e=="function"}function nt(e){return te(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}function Le(e){return e===null||e===""}function D(e){return arguments.length&&(e===void 0||typeof e>"u")}function g(e){return Array.isArray(e)||typeof e=="object"&&e||te(e)}function B(e){return Le(e)||D(e)||e===!1||e===0||g(e)&&!Object.keys(e).length}function _(e){return te(e)||e&&{}.toString.call(e)==="[object function]"}function q(e){return e instanceof Number||typeof e=="number"}function P(e){return q(e)||e!==!0&&e!==!1&&e!==null&&e!==""&&!isNaN(e*1)}function it(e){return h(e)&&Object.getPrototypeOf(e)===Array.prototype}function $e(e){return d(e)&&Object.getPrototypeOf(e)===Object.prototype}function L(e){return e instanceof String||typeof e=="string"&&e!==null}function ot(e){return!L(e)&&!D(e.length)}function xe(e,t=1){var r=0;e.forEach(i=>{r++});var n=e.slice(e.length-r,t);return arguments.length>1?n:n[0]}function be(e,t=1){return arguments.length>1?xe(e.slice().reverse(),t).reverse():xe(e.slice().reverse())}function ke(e,...t){return t.forEach(r=>{e.indexOf(r)<0&&e.push(r)}),e}function st(n,t){t=t||Object.prototype,t=t&&!h(t)?[t]:t;for(var r=[],n=n;n&&(!t||t.indexOf(n)<0)&&n.name!=="default";)r.push(n),n=n?Object.getPrototypeOf(n):null;return r}function at(e,t){var r=[];return st(e,t).forEach(n=>{ke(r,...Object.getOwnPropertyNames(n))}),r}function U(e,t,r=!1,n=!1,i=!1){var o=0,s=e.shift();if((P(s)||s===!0||s===!1)&&(o=s,s=e.shift()),!e.length)throw new Error("_merge() requires two or more array/objects.");return e.forEach((f,a)=>{!g(f)&&!_(f)||(r?at(f):Object.keys(f)).forEach(u=>{if(!!t(u,s,f,a)){var c=s[u],l=f[u];if((h(c)&&h(l)||d(c)&&d(l))&&(o===!0||o>0))s[u]=h(c)&&h(l)?[]:{},U([P(o)?o-1:o,s[u],c,l],t,r,n,i);else if(h(s)&&h(f))n?s[u]=l:s.push(l);else try{i?Object.defineProperty(s,u,Object.getOwnPropertyDescriptor(f,u)):s[u]=f[u]}catch{}}})}),s}function M(e,t){var r=void 0;return g(e)&&Object.keys(e).forEach((n,i)=>{r!==!1&&(r=t(P(n)?parseFloat(n):n,e[n],i))}),r}function re(...e){return U(e,(t,r,n)=>!0,!1,!1,!1)}function z(e,t,r=!1){if(t=="")return e;var n=r?e.lastIndexOf(t):e.indexOf(t);return n===-1?"":e.substr(n+t.length)}function ft(e,t){return z(e,t,!0)}function fe(e,t,r=!1){if(t=="")return e;var n=r?e.lastIndexOf(t):e.indexOf(t);return n===-1?e:e.substr(0,n)}function ne(e,t){return fe(e,t,!0)}function ue(e,t,r=null,n=!1){return t.length>e.length?-1:(typeof r=="number"?n?e.slice(0,r+1+(r<0?e.length:0)):e.slice(r):e).reduce((i,o,s)=>{var[f,a,u]=i;if(!n&&f>-1)return[f,a,u];var c=u+1,l=o===t[c]?c===0?[s,0]:[a,c]:[-1,-1];return l[1]===t.length-1&&(l[1]=-1,l[0]>-1)?[l[0]].concat(l):[f].concat(l)},[-1,-1,-1])[0]+(n||typeof r!="number"?0:r>-1?r:e.length-r)}function ce(e,t,r=null,n=!1){var i=ue(e,t,r,n);return i===-1?[]:e.slice(i+t.length)}function we(e,t){return e.reduce((r,n,i)=>r||t(n,i),!1)}function y(e,t=!0){return h(e)?e:!t&&d(e)?[e]:e!==!1&&e!==0&&B(e)?[]:ot(e)?Array.prototype.slice.call(e):d(e)?Object.values(e):[e]}function G(e,t,r=null){return r||r!==!1&&e.dotSafe&&t.dotSafe?e.join(".")===t.join("."):e.length===t.length&&e.reduce((n,i,o)=>n&&i===t[o],!0)}function ve(e,t,r=null){return h(t)?e.filter(n=>r?t.filter(i=>r(n,i)).length:t.indexOf(n)!==-1):[]}function Oe(e,t,r=null){return r||r!==!1&&e.dotSafe&&t.dotSafe?(e.join(".")+".").startsWith(t.join(".")+"."):t.reduce((n,i,o)=>n&&i===e[o],!0)}function ut(e){let t=(r,n,i)=>i.indexOf(r)===n;return e.filter(t)}typeof URLPattern>"u"&&await Promise.resolve().then(()=>(qt(),Wt));function zt(e,t,r,n=!1){if(L(t)&&t.endsWith("]")){var i=ne(ft(t,"["),"]")||0;return P(i)&&(i=parseInt(i)),t=ne(t,"[")||0,P(t)&&(t=parseInt(t)),zt(e,t,(o,s)=>{if(!o[s]){if(!n)return r();o[s]=P(i)?[]:{}}return r(o[s],i)},n)}else return r(e,t)}function De(e,t,r,n=!0){zt(e,t,(i,o)=>{P(o)?(o=o||h(i)?i.length:Object.keys(i).filter(P).length,y(r,!1).forEach((s,f)=>{i[o+f]=s})):i[o]=n&&o in i?y(i[o],!1).concat(r):r},!0)}function ie(e,t={},r="&"){return e=e||"",(e.startsWith("?")?e.substr(1):e).split(r).filter(n=>n).map(n=>n.split("=").map(i=>i.trim())).forEach(n=>De(t,n[0],decodeURIComponent(n[1]))),t}function Ne(e,t,r,n=null){if((d(t)||h(t))&&(!n||n(t,e))){var i=h(t);Object.keys(t).forEach(o=>{Ne(`${e}[${o}]`,t[o],r,n)})}else r(e,!t&&t!==0?"":t)}function pe(e,t="&",r=null){var n=[];return Object.keys(e).forEach(i=>{Ne(i,e[i],(o,s)=>{n.push(`${o}=${encodeURIComponent(s)}`)},r)}),n.join(t)}var Bt={join(){for(var e=[],t=0,r=0,n=arguments.length;r<n;r++)e=e.concat(arguments[r].split("/"));var i=[];for(r=0,n=e.length;r<n;r++){var o=e[r];!o||o==="."||(o===".."?i.length?i.pop():t++:i.push(o))}return e[0]===""&&i.unshift(""),"../".repeat(t)+i.join("/")||(i.length?"/":".")},dirname(e){return this.join(e,"..")}},lt=(e,t=null)=>({pattern:new URLPattern(e,t),isPattern(){return Object.keys(this.pattern.keys).some(r=>this.pattern.keys[r].length)},test(...r){this.pattern.test(...r)},exec(...r){let n=this.pattern.exec(...r);if(!!n)return n.vars=Object.keys(this.pattern.keys).reduce(({named:i,unnamed:o},s)=>(this.pattern.keys[s].forEach(f=>{let a=n[s].groups[f.name];typeof f.name=="number"?o.push(a):i[f.name]=a}),{named:i,unnamed:o}),{named:{},unnamed:[]}),n.render=i=>i.replace(/\$(\$|[0-9A-Z]+)/gi,(o,s)=>s==="$"?"$":(P(s)?n.vars.unnamed[s-1]:n.vars.named[s])||""),n}});var Ee=class{constructor(t,r){this.cx=t,this.path=h(r)?r:(r+"").split("/").filter(n=>n)}async route(t,r,n,i,o=null){let s=this,f=async function(a){let u={};if(!a.trail||a.trail.length<a.destination.length){if(a=await s.readTick(a),u.pathname=`/${a.trail.join("/")}`,u.stepname=a.trail[a.trail.length-1],s.finalizeHandlerContext(u,a),a.exports){a.exports.hints&&await r.port.post({...a.exports.hints,$type:"handler:hints"});let c=y(a.method),l=_(a.exports)&&c.includes("default")?a.exports:c.reduce((p,m)=>p||a.exports[m.toLowerCase()],null);if(l){let p=async(...C)=>{let O={...a,arg:C[0]};if(C.length>1){var b=C[1],F,v={...C[2]||{}};if(C[1]instanceof O.event.Request)F=C[1],b=F.url;else if(!L(b))throw new Error("Router redirect url must be a string!");var $=b.startsWith("/")?b:s.pathJoin(`/${a.trail.join("/")}`,b);if($.startsWith("../"))throw new Error("Router redirect cannot traverse beyond the routing directory! ("+b+" >> "+$+")");v.method&&(O.method=v.method,h(v.method)&&(v.method=v.method[0])),F?O.event=a.event.retarget(F,{...v,_proxy:{url:$}}):O.event=a.event.retarget($,v),O.source=a.destination.join("/"),O.destination=$.split("?").shift().split("/").map(k=>k.trim()).filter(k=>k),O.trail=C[1].startsWith("/")?[]:a.trail.reduce((k,w,I)=>k.length===I&&w===O.destination[I]?k.concat(w):k,[]),O.trailOnFile=a.trailOnFile.slice(0,O.trail.length)}return f(O)},m=a.destination.slice(a.trail.length);return p.pathname=m.join("/"),p.stepname=m[0],await l.call(u,a.event,a.arg,p,o)}return f(a)}else if((a.currentSegmentOnFile||{}).dirExists)return f(a)}if(i)return await i.call(u,a.event,a.arg,o)};return f({destination:this.path,event:r,method:t,arg:n})}};var Ae=class extends Ee{async readTick(t){var r=this.cx.layout,n=Object.keys(this.cx.layout);return t.trail?(t.currentSegment=t.destination[t.trail.length],t.currentSegmentOnFile=[t.currentSegment,"-"].reduce((i,o)=>{if(i.index)return i;var s=`/${t.trailOnFile.concat(o).join("/")}`;return r[s]?{seg:o,index:s}:n.filter(f=>f.startsWith(`${s}/`)).length?{seg:o,dirExists:!0}:i},{seg:null}),t.trail.push(t.currentSegment),t.trailOnFile.push(t.currentSegmentOnFile.seg),t.exports=r[t.currentSegmentOnFile.index]):(t.trail=[],t.trailOnFile=[],t.currentSegmentOnFile={index:"/"},t.exports=r["/"]),t}finalizeHandlerContext(t,r){return t.dirname=r.currentSegmentOnFile.index}pathJoin(...t){return Bt.join(...t)}};var Ce=class{constructor(t){this.cx=t}async handle(t,r){let n=new Ae(this.cx,t.url.pathname);return(async()=>{let o=t.request.method.toLowerCase(),s=await n.route([o==="delete"?"del":o,"default"],t,{},async f=>r(f.request),r);return s instanceof t.Response||(s=t.Response.compat(s)),s})()}};function oe(e){return(pt(e)?e:y(e).length?[e]:[]).reduce((t,r)=>t.concat([y(r)]),[]).map(t=>K.resolve(t))}var K=class extends Array{static resolve(t){return t.every(r=>!(r+"").includes("."))?new K().concat(t):t}get dotSafe(){return!0}};function pt(e){return y(e).reduce((t,r)=>t||h(r),!1)}function mt(e){return e.filter(t=>t||t===0).length!==e.length}function Gt(e){return e.filter(t=>mt(y(t))).length>0}var se=class{constructor(t){this.target=t,this.fireables=[],this.currentlyFiring=[]}add(t){return this.fireables.push(t),t}remove(t){this.fireables=this.fireables.filter(r=>r!==t)}removeMatches(t){this.match(t).forEach(r=>{this.fireables=this.fireables.filter(n=>n!==r)})}match(t){return this.fireables.filter(r=>{var n=oe(r.filter),i=y((r.params||{}).tags),o=oe(t.filter),s=y((t.params||{}).tags);return(!t.originalHandler||r.handler===t.originalHandler)&&(!o.length||G(o,n))&&(!s.length||s.length===i.length&&ve(i,s).length===s.length)})}static _getFirebase(t,r,n=!0,i=this.__namespace){if(!g(r))throw new Error('Subject must be of type object; "'+S(r)+'" given!');var o=this;return i&&globalThis.WebQitObserverNamespaceRegistry.has(t+"-"+i)&&(o=globalThis.WebQitObserverNamespaceRegistry.get(t+"-"+i),t+="-"+i),!x(r,"firebases").has(t)&&n&&x(r,"firebases").set(t,new o(r)),x(r,"firebases").get(t)}static _namespace(t,r,n=null){if(t+="-"+r,arguments.length===2)return globalThis.WebQitObserverNamespaceRegistry.get(t);if(!(n.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${r} must be a subclass of ${this.name}.`);globalThis.WebQitObserverNamespaceRegistry.set(t,n),n.__namespace=r}};globalThis.WebQitObserverNamespaceRegistry||(globalThis.WebQitObserverNamespaceRegistry=new Map);var ae=class{constructor(t,r){this.target=t,this.handler=r.handler,this.filter=r.filter,this.params=r.params}disconnect(){this.disconnected=!0}};var Re=class extends ae{fire(t,r,n){return this.disconnected||this.filter&&!ve(y(this.filter),[t.type]).length?r(...Array.prototype.slice.call(arguments,2)):this.handler(t,n,r)}};function Ue(e,t=[],r=!0){var n=0;return P(arguments[0])&&g(arguments[1])&&(n=arguments[0],e=arguments[1],t=arguments[2]||[]),U([n,{},e],(i,o,s)=>_(t)?t(i):h(t)&&t.length?t.indexOf(i)>-1:!0,!1,!1,r)}var me=class{constructor(t,r){if(this.target=t,!r.type)throw new Error("Action type must be given in definition!");M(r,(n,i)=>{Object.defineProperty(this,n,{value:i,enumerable:!0})}),Object.seal(this)}};var j=class extends se{add(t){return super.add(new Re(this.target,t))}fire(t,r=null){if(t instanceof me||(t=new me(this.target,t)),this.currentlyFiring.filter(o=>o.type===t.type&&o.name===t.name).length)return r?r():void 0;this.currentlyFiring.push(t);let n=(o,...s)=>{var f=this.fireables[o];return f?f.fire(t,(...a)=>n(o+1,...a),...s):r?r(...s):s[0]};var i=n(0);return this.currentlyFiring.pop(),i}static getFirebase(t,r=!0,n=null){return super._getFirebase("interceptor",...arguments)}static namespace(t,r=null){return super._namespace("interceptor",...arguments)}};function A(e){return x(e,!1).get(e)||e}function T(e,t,r={},n={}){if(!t||!g(t))throw new Error("Target must be of type object!");t=A(t);var i,o=function(s){return arguments.length?s:Reflect[e](t,...Object.values(r))};return(i=j.getFirebase(t,!1,n.namespace))?i.fire({type:e,...r},o):o()}function Me(e,t,r,n={}){return T("apply",e,{thisArgument:t,argumentsList:r},n)}function We(e,t,r=null,n={}){return T("construct",e,arguments.length>2?{argumentsList:t,newTarget:r}:{argumentsList:t},n)}var H=class{constructor(t,r=!1){this._={},this._.target=t,this._.cancellable=r,this._.propagationStopped=!1,this._.defaultPrevented=!1,this._.promisesInstance=null,this._.promises=[]}get target(){return this._.target}get cancellable(){return this._.cancellable}stopPropagation(){this._.propagationStopped=!0}get propagationStopped(){return this._.propagationStopped}preventDefault(){this._.defaultPrevented=!0}get defaultPrevented(){return this._.defaultPrevented}waitUntil(t){t instanceof Promise&&(this._.promises.push(t),this._.promisesInstance=null)}get promises(){return!this._.promisesInstance&&this._.promises.length&&(this._.promisesInstance=Promise.all(this._.promises)),this._.promisesInstance}respondWith(t){var r,n=d(t)&&!D(t.propagationStopped)&&!D(t.defaultPrevented);t===!1||n&&t.propagationStopped?this.stopPropagation():t===!1||n&&t.defaultPrevented?this.preventDefault():(t instanceof Promise&&(r=t)||n&&(r=t.promises))&&this.waitUntil(r)}};var je=class extends ae{constructor(t,r){if(super(t,r),this.filters2D=oe(this.filter),this.filtersIsOriginally2D=pt(this.filter),this.filtersIsDynamic=Gt(this.filters2D),this.filtersIsDynamic&&this.filters2D.length>1)throw new Error('Only one "Dynamic Filter" must be observed at a time! "'+this.filters2D.map(n=>"["+n.join(", ")+"]").join(", ")+'" have been bound together.')}fire(t){if(this.disconnected||this.params.type&&!we(t,s=>this.params.type===s.type))return;let r=s=>!["set","def"].includes(s.type)||!this.params.diff||(_(this.params.diff)?this.params.diff(s.value,s.oldValue):s.value!==s.oldValue);var n=new H(this.target);if(this.filters2D.length){var i=t.filter(s=>this.filters2D.filter((f,a)=>{var u=f.slice();return this.filtersIsDynamic&&s.path.forEach((c,l)=>{u[l]=u[l]||u[l]===0?u[l]:c}),(!this.filtersIsDynamic||!mt(u))&&r(s)&&(!this.params.subtree&&G(u,s.path)||this.params.suptree&&Oe(u,s.path)&&(!P(this.params.suptree)||ce(u,s.path).length<=this.params.suptree)||this.params.subtree&&s.path.length>=u.length&&Oe(s.path,u)&&(!P(this.params.subtree)||ce(s.path,u).length<=this.params.subtree))}).length);if(i.length)if(this.filtersIsOriginally2D||this.params.subtree){var o=i;d(this.filter)&&(o={...this.filter},i.forEach((s,f)=>{o[s.name]=s})),n.respondWith(this.handler(o,n))}else i.forEach((s,f)=>{n.respondWith(this.handler(s,n))})}else(this.params.subtree||t.filter(s=>G(s.path,[s.name])).length===t.length)&&t.filter(s=>r(s)).length&&n.respondWith(this.handler(t,n));return n}};var X=class{constructor(t,r){if(this.target=t,r.originalSubject||(this.originalSubject=t),!("type"in r))throw new Error("Mutation type must be given in definition!");if(!("name"in r))throw new Error("Property name must be given in definition!");M(r,(n,i)=>{n==="path"&&(i=K.resolve(i)),Object.defineProperty(this,n,{value:i,enumerable:!0})}),this.path||Object.defineProperty(this,"path",{value:K.resolve([r.name]),enumerable:!0}),Object.seal(this)}};var E=class extends se{constructor(t){super(t),this.buffers=[]}add(t){return super.add(new je(this.target,t))}fire(t,r){var n=new H(this.target,r);return t=y(t,!1).map(i=>i instanceof X?i:new X(this.target,i)),this.buffers.length?(be(this.buffers)(t),n):(this.currentlyFiring.filter(i=>t.filter(o=>i.type===o.type&&i.name===o.name).length).length,this.fireables.forEach(i=>{if(n.propagationStopped&&r)return n;n.respondWith(i.fire(t))}),n)}static getFirebase(t,r=!0,n=null){return super._getFirebase("observer",...arguments)}static namespace(t,r=null){return super._namespace("observer",...arguments)}};function N(e,t,r=null,n={}){if(e=r||e,!e||!g(e))throw new Error("Target must be of type object!");e=A(e);var i=y(t),o=i.map(s=>{var f,a=function(u){return arguments.length?u:x(e,"accessorizedProps").has(s)&&x(e,"accessorizedProps").get(s).touch(!0)?x(e,"accessorizedProps").get(s).get():r?Reflect.get(e,s,r):Reflect.get(e,s)};return(f=j.getFirebase(e,!0,n.namespace))?f.fire({type:"get",name:s,related:i,receiver:r},a):a()});return h(t)?o:o[0]}function qe(e,t,r=null,n={}){if(e=A(e),!e||!g(e))throw new Error('Observable subjects must be of type object; "'+S(e)+'" given!');if(_(t)&&(n=arguments.length>2?r:{},r=t,t=null),!_(r))throw new Error('Handler must be a function; "'+S(r)+'" given!');var i,o=E.getFirebase(e,!0,n.namespace),s={filter:t,handler:r,params:n};if((s.filter||s.params.subtree==="*"||s.params.subtree&&he(e))&&Z(e,s.filter,s.params.subtree,n.namespace),s.params.unique&&(i=o.match({filter:t,params:n})).length){if(s.params.unique!=="replace")return i[0];o.remove(i[0])}return o.add(s)}function Y(e,t,r,n=null,i={}){if(e!==r){var o;if(qe(r,(f,a)=>{if(o=E.getFirebase(e,!1,i.namespace)){var u=f.map(c=>{var l=c;do if(l.target===e)return;while(l=l.src);var p={};return M(c,(m,C)=>{m!=="target"&&m!=="name"&&m!=="path"&&m!=="src"&&(p[m]=C)}),p.name=t,p.path=[t].concat(c.path),p.originalSubject=c.originalSubject,p.src=c,new X(e,p)}).filter(c=>c);if(u.length)return o.fire(u,a.cancellable)}},{subtree:!0,...i,unique:!0,tags:[dt,t,e]}),d(n)&&(o=E.getFirebase(e,!1,i.namespace))){var s=re({name:t,type:"set",value:r,related:[t]},n);let f=o.fire(s,i.cancellable);if(i.eventTypeReturn)return f}}}var dt={};function Z(e,t=null,r=!1,n=null){if(!e||!g(e))throw new Error("Target must be of type object!");var i=E.getFirebase(e,!0,n);if(!(!i||i.build)){i.build=r;var o=oe(t),s=!o.length||o.filter(a=>!a[0]&&a[0]!==0).length?Object.keys(e):o.map(a=>a[0]),f=o.length?o.map(a=>a.slice(1)).filter(a=>a.length):null;i.subBuild=f&&f.length?f:null,s.forEach(a=>{var u=N(e,a,null,{namespace:n});try{g(u)&&(Y(e,a,u,null,params),(i.subBuild&&he(u)||(_isFunction(r)?r(u):r&&he(u)))&&Z(u,i.subBuild,r,n))}catch{}})}}var he=e=>(e instanceof Object||e instanceof Array||e instanceof Function)&&(typeof window>"u"||e!==window);function ze(e,t,r=null,n={}){if(e=A(e),!e||!g(e))throw new Error('Observable subjects must be of type object; "'+S(e)+'" given!');if(_(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!_(r))throw new Error('Handler must be a function; "'+S(r)+'" given!');var i;if(i=E.getFirebase(e,!1,n.namespace))return i.removeMatches({filter:t,originalHandler:r,params:n})}function J(e,t,r,n=null,i={}){ze(r,null,null,{...i,tags:[dt,t,e]});var o;if(d(n)&&(o=E.getFirebase(e,!1,i.namespace))){var s=re({name:t,type:"del",oldValue:r,related:[t]},n);o.fire(s,i.cancellable)}}function ee(e,t,r={}){return T("has",e,{name:t},r)}function Be(e,t,r,n={}){t=r.receiver||t;var i=r.keysOrPayload,o=r.value;if(!t||!g(t))throw new Error("Target must be of type object!");d(i)&&(n=o||{},o=null),t=A(t);var s=j.getFirebase(t,!1,n.namespace),f=E.getFirebase(t,!1,n.namespace);let a=(m,C,O,b)=>{var F="set",v;e&&(F="defineProperty",v=C||{},C=v.value);var $=!1,k;ee(t,m,n)&&($=!0,k=N(t,m,r.receiver,n));var w={name:m,type:F,value:C,receiver:r.receiver,related:O,detail:b,isUpdate:$,oldValue:k},I=function(Ie){return arguments.length&&(v?v=Ie:C=Ie),v?x(t,"accessorizedProps",!1).has(m)&&!x(t,"accessorizedProps").get(m).restore()?!1:(Object.defineProperty(t,m,v),!0):x(t,"accessorizedProps",!1).has(m)?x(t,"accessorizedProps").get(m).set(C):(t[m]=C,!0)};if(s){var W=v?{type:"defineProperty",name:m,descriptor:v,receiver:r.receiver,related:O,detail:b,isUpdate:$,oldValue:k}:{type:"set",name:m,value:C,receiver:r.receiver,related:O,detail:b,isUpdate:$,oldValue:k};w.success=s.fire(W,I)}else w.success=I();return w.success&&w.value!==w.oldValue&&(g(w.oldValue)&&J(t,m,w.oldValue,null,n),g(w.value)&&(Y(t,m,w.value,null,n),f&&(f.subBuild||f.build&&he(w.value))&&Z(w.value,f.subBuild,f.build,n.namespace))),w};var u,c=[];h(i)||(L(i)||q(i))&&(u=y(i))?c=u.map(m=>a(m,o,u,n.detail)):d(i)&&(u=Object.keys(i))&&(c=u.map(m=>a(m,i[m],u,n.detail)));var l=c.filter(m=>m.success!==!1),p;return f?(p=f.fire(l,n.cancellable),p.successCount=l.length):n.eventTypeReturn&&(p=new H(t)),n.eventTypeReturn?p:l.length>0}function Ge(e,t,r=null,n={}){return Be(!0,e,{keysOrPayload:t,value:r},n)}function Ve(e,t,r={}){if(!e||!g(e))throw new Error("Target must be of type object!");e=A(e);var n=y(t),i=n.map(a=>{var u;ee(e,a,r)&&(u=N(e,a,null,r));var c={name:a,type:"deleteProperty",related:n,detail:r.detail,oldValue:u},l,p=function(m){return arguments.length?m:x(e,"accessorizedProps",!1).has(a)&&!x(e,"accessorizedProps").get(a).restore()?!1:(delete e[a],!0)};return(l=j.getFirebase(e,!1,r.namespace))?c.success=l.fire({type:"deleteProperty",name:a,oldValue:u,related:n},p):c.success=p(),c.success&&g(c.oldValue)&&J(e,a,c.oldValue,null,r),c}),o=i.filter(a=>a.success!==!1),s,f;return(s=E.getFirebase(e,!1,r.namespace))?(f=s.fire(o,r.cancellable),f.successCount=o.length):r.eventTypeReturn&&(f=new H(e)),r.eventTypeReturn?f:o.length>0}function Qe(e,t,r={}){return T("getOwnPropertyDescriptor",e,{name:t},r)}function Ke(e,t={}){return T("getPrototypeOf",e,{},t)}function Xe(e,t={}){return T("isExtensible",e,{},t)}function Ze(e,t={}){return T("ownKeys",e,{},t)}function Ye(e,t={}){return T("preventExtensions",e,{},t)}function de(e,t,r=null,n=null,i={}){return Be(!1,e,arguments.length>3?{keysOrPayload:t,value:r,receiver:n}:{keysOrPayload:t,value:r},i)}function Je(e,t,r={}){return T("setPrototypeOf",e,{prototype:t},r)}function Vt(e,t=[],r={}){r=d(t)?t:r;var n=(arguments.length===1?Object.keys(e):y(t)).map(i=>{if(x(e,"accessorizedProps").has(i)&&x(e,"accessorizedProps").get(i).touch(!0))return!1;let o=()=>{for(var p,m=e;!p&&(m=Object.getPrototypeOf(m));)p=Object.getOwnPropertyDescriptor(m,i);return p};var s=Object.getOwnPropertyDescriptor(e,i),f,a;s||(f={writable:!0,enumerable:!(i in e),configurable:r.configurable!==!1});var u={...s||f};"value"in u&&delete u.value,"writable"in u&&delete u.writable,u.get=()=>{if(l.ongoingGets.length)return l.get();l.ongoingGets.push(1);var p=N(e,i,null,r);return l.ongoingGets.pop(),p};var c;u.set=p=>{if(l.ongoingSets.length)return l.set(p);l.ongoingSets.push(1);var m=de(e,i,p,null,r);return l.ongoingSets.pop(),m};var l={ongoingGets:[],ongoingSets:[],get:function(){var p=s;return p||(a?p=f:p=o()||f),p.get?p.get.call(e):p.value},set:function(p){var m=s;return m||(a?m=f:(m=o())?"value"in m&&(m=f,a=!0):(m=f,a=!0)),m.set||m.get?m.set?m.set.call(e,p):!1:(m.value=p,!0)},restore:function(){try{return this.intact()&&(s||a?Object.defineProperty(e,i,s||f):delete e[i],x(e,"accessorizedProps").delete(i)),!0}catch{}return!1},intact:function(){return(Object.getOwnPropertyDescriptor(e,i)||{}).get===u.get},touch:function(p=!1){return this.intact()||(p?!this.restore():!1)}};try{return Object.defineProperty(e,i,u),x(e,"accessorizedProps").set(i,l),!0}catch{}return!1});return h(t)?n:n[0]}function Qt(e,t=[],r={}){r=d(t)?t:r;var n=(arguments.length===1?Object.keys(e):y(t)).map(i=>x(e,"accessorizedProps",!1).has(i)?x(e,"accessorizedProps").get(i).restore():!0);return h(t)?n:n[0]}function Kt(e,t={}){if(!g(e))throw new Error('Object must be of type target; "'+S(e)+'" given!');var r=new Proxy(e,{apply:(n,i,o)=>Me(n,i,o,t),construct:(n,i,o=null)=>We(n,i,o,t),defineProperty:(n,i,o)=>Ge(n,i,o,t),deleteProperty:(n,i)=>Ve(n,i,t),get:(n,i,o=null)=>{var s=N(n,i,o,t);return t.proxyAutoBinding!==!1&&_(s)&&!nt(s)?s.bind(r):s},getOwnPropertyDescriptor:(n,i)=>Qe(n,i,t),getPrototypeOf:n=>Ke(n,t),has:(n,i)=>ee(n,i,t),isExtensible:n=>Xe(n,t),ownKeys:n=>Ze(n,t),preventExtensions:n=>Ye(n,t),set:(n,i,o,s=null)=>de(n,i,o,s,t),setPrototypeOf:(n,i)=>Je(n,i,t)});return x(r).set(r,e),r}function Xt(e,t,r={}){if(e=A(e),!g(e))throw new Error('Object must be of type target; "'+S(handler)+'" given!');var n={},i=!0;d(t)||(_(t)?t={"":t}:_(r)&&(t={[t]:r},r=arguments.length>3?arguments[3]:{}),i=!1);var o=j.getFirebase(e,!0,r.namespace);return Object.keys(t).forEach(s=>{if(!_(t[s]))throw new Error("Callback"+(s===null?"":" for "+s)+' must be a function; "'+S(t[s])+'" given!');var f={filter:s,handler:t[s],params:r},a;if(f.params.unique&&(a=o.match(f)).length){if(f.params.unique!=="replace")return a[0];o.remove(a[0])}i?n[s]=o.add(f):n=o.add(f)}),n}function Zt(e,t=null,r={}){if(e=A(e),!e||!g(e))throw new Error('Object must be of type target; "'+S(e)+'" given!');var n=j.getFirebase(e,!1,r.namespace);_isObject(t)||(_(t)?t={[null]:t}:_(r)&&(t={[t]:r},r=arguments.length>3?arguments[3]:{}),isOriginallyObj=!1),(n=j.getFirebase(e,!1,r.namespace))&&Object.keys(t).forEach(i=>{if(!_(t[i]))throw new Error("Callback"+(i===null?"":" for "+i)+' must be a function; "'+S(t[i])+'" given!');var o={filter:i,originalHandler:t[i],params:r};return n.removeMatches(o)})}function Yt(e,...t){var r=t.map(o=>{if(o=A(o),!g(o))throw new Error("Target must be of type object!");return{target:o,subjectCopy:h(o)?o.slice(0):Ue(o)}}),n=e(...t);let i=()=>{r.map(o=>{var s=Object.keys(o.subjectCopy),f=Object.keys(o.target),a=[],u=ut(s.concat(f)).map(l=>{if(o.subjectCopy[l]!==o.target[l]){a.push(l);var p={name:l,related:a,buffered:!0};return f.includes(l)?(p.type="set",p.value=o.target[l],s.includes(l)&&(p.isUpdate=!0)):p.type="del",s.includes(l)&&(p.oldValue=o.subjectCopy[l]),g(o.subjectCopy[l])&&J(o.target,l,o.subjectCopy[l]),g(o.target[l])&&Y(o.target,l,o.target[l]),p}}).filter(l=>l),c;if(u.length&&(c=E.getFirebase(o.target,!1)))return c.fire(u)})};return n instanceof Promise?n.then(i):i(),n}var R={apply:Me,construct:We,defineProperty:Ge,deleteProperty:Ve,get:N,getOwnPropertyDescriptor:Qe,getPrototypeOf:Ke,has:ee,isExtensible:Xe,ownKeys:Ze,preventExtensions:Ye,set:de,setPrototypeOf:Je,accessorize:Vt,unaccessorize:Qt,proxy:Kt,unproxy:A,observe:qe,unobserve:ze,intercept:Xt,unintercept:Zt,closure:Yt,build:Z,link:Y,unlink:J,Observers:E,Interceptors:j};var{URL:Jt,fetch:er,Headers:gt,Request:tr,Response:rr,FormData:nr,ReadableStream:on,File:gd,Blob:_t}=globalThis;var an=e=>{let t=class extends e{constructor(...r){super(...r);var n=ie(this.search);let i=o=>{var s=pe(o);s=s?"?"+s:"",s!==this.search&&(this.search=s)};this.__query={value:n,proxy:new Proxy(n,{set(o,s,f){return o[s]=f,i(o),!0},deleteProperty(o,s){return delete o[s],i(o),!0}})}}set search(r){super.search=r;var n=ie(r);yt(n,this.query)||(this.query=n)}get search(){return super.search}get query(){return this.__query.proxy}};return t.Observable=class extends t{constructor(){super(...arguments);let{Observer:r}=WebQit;r.accessorize(this,["protocol","username","password","host","hostname","port","origin","pathname","search","query","hash","href"])}},t},yt=(e,t)=>d(e)&&d(t)?yt(Object.keys(e),Object.keys(t))&&yt(Object.values(e),Object.values(t)):h(e)&&h(t)?e.length===t.length&&e.reduce((r,n,i)=>r&&n===t[i],!0):e===t,ir=an;var fn=e=>class extends e{tee(t=null){let r=new this.constructor,n=new this.constructor;for(var[i,o]of this.entries()){let s=s(o);t&&t(o,i,s)||!t&&!s?r.append(i,o):n.append(i,o)}return[r,n]}json(t={},r=null){if(arguments.length){Object.keys(t).forEach(s=>{Ne(s,t[s],(f,a)=>{(!r||r(f,a,g(a)))&&this.append(f,a)},f=>!xt(f))});return}var n;for(var[i,o]of this.entries())n||(n=P(fe(i,"["))?[]:{}),De(n,i,o);return n}},or=fn,xt=(e,t=null)=>{if(!g(e))return;let r=e[Symbol.toStringTag];return(t||["Uint8Array","Uint16Array","Uint32Array","ArrayBuffer","Blob","File","FormData","Stream"]).reduce((n,i)=>n||(r===i?i:null),null)};var un=e=>class extends e{constructor(t={}){t instanceof e?super(t):(super(),this.json(t))}json(t={},r=!0){if(arguments.length){let s=sr(this),f=Object.keys(s).reduce((a,u)=>a.concat(typeof u!="symbol"&&"set"in s[u]?u:[]),[]);Object.keys(t).forEach(a=>{var u=f.reduce((c,l)=>c||(l===a||l.toLocaleLowerCase()===a?l:null),null);u?(r||this[u]===void 0)&&(this[u]=t[a]):(r||!this.has(a))&&this.set(a,t[a])});return}let n={};for(var[i,o]of this)n[i]=o;return n}set cacheControl(t){return this.set("Cache-Control",t)}get cacheControl(){return this.get("Cache-Control")}set contentLength(t){return this.set("Content-Length",t)}get contentLength(){return this.get("Content-Length")}set contentType(t){return this.set("Content-Type",t)}get contentType(){return this.get("Content-Type")}},et=un;function sr(e){if(e){let t=Object.getPrototypeOf(e);return t===Object.prototype?{}:{...sr(t),...Object.getOwnPropertyDescriptors(e)}}else return Object.create(null)}var cn=e=>class extends et(e){set accept(t){return this.set("Accept",t)}get accept(){let t=this.get("Accept"),r=t&&t.split(",").map(n=>(n=n.trim().split(";").map(i=>i.trim()),[n.shift(),parseFloat((n.pop()||"1").replace("q=",""))])).sort((n,i)=>n[1]>i[1]?-1:1)||[];return{match(n){return n=(n+"").split("/"),r.reduce((i,o)=>i||(o=o[0].split("/"))&&[0,1].every(s=>n[s]===o[s]||n[s]==="*"||o[s]==="*"),!1)},toString(){return t}}}set cookies(t){if(!d(t))throw new Error(`Cookies must be of type object. Received type: ${S(t)}.`);return this.set("Cookie",pe(t,";")),this._cookies=null,!0}get cookies(){return this._cookies||(this._cookies=ie(this.get("cookie"),{},";")),this._cookies}set range(t){let r=[];return y(t).forEach((n,i)=>{let o=Array.isArray(n)?n.join("-"):n+"";i===0&&!o.includes("bytes=")&&(o=`bytes=${o}`),r.push(o)}),this.set("Range",r.join(", "))}get range(){let t=this.get("Range");return t?z(t,"bytes=").split(",").map(n=>{let i=n.trim().split("-");return i[0]=i[0]?parseInt(i[0],10):void 0,i[1]&&(i[1]=parseInt(i[1],10)),i.clamp=o=>{(i[1]>o-1||i[1]===void 0)&&(i[1]=o-1),i[0]===void 0&&(i[0]=i[1]?o-i[1]-1:0)},i}):void 0}set cors(t){return this.set("Access-Control-Allow-Origin",t===!0?"*":t===!1?"":t)}get cors(){return this.get("Access-Control-Allow-Origin")}},ar=cn;var ln=e=>class extends et(e){set cookies(t){if(!d(t))throw new Error(`The "cookies" response directive cannot be of type: ${S(t)}`);for(let r in t){let n=t[r];if(d(n)){let i=[n.value];for(let o in n){if(o==="value")continue;let s=o[0].toUpperCase()+o.substring(1);s==="MaxAge"&&(s="Max-Age"),i.push(n[o]===!0?s:`${s}=${n[o]}`)}n=i.join("; ")}this.append("Set-Cookie",`${r}=${n}`)}return!0}get cookies(){let t=this.get("Set-Cookie");return t&&t.split(",").reduce((r,n)=>{let[i,o]=n.split(";"),[s,f]=i.trim().split("=");return r[s]={value:f},o&&(o||"").split(/\;/g).map(a=>a.trim().split("=")).forEach(a=>{r[s][a[0][0].toLowerCase()+a[0].substring(1).replace("-","")]=a.length===1?!0:a[1]}),r},{})}set contentRange(t){if(Array.isArray(t)){if(t.length===2&&!t[0].includes("-")||t.length<2)throw new Error("A Content-Range array must be in the format: [ 'start-end', 'total' ]");return this.set("Content-Range",`bytes ${t.join("/")}`)}return this.set("Content-Range",t)}get contentRange(){let t=this.get("Content-Range");return t&&z(t,"bytes ").split("/")}set cors(t){return this.set("Access-Control-Allow-Origin",t===!0?"*":t===!1?"":t)}get cors(){return this.get("Access-Control-Allow-Origin")}set attachment(t){if(t=t===!0?"attachment":t===!1?"inline":t,!L(t))throw new Error(`The "download" response directive does not support the type: ${S(t)}`);return["attachment","inline"].includes(t)||(t=`attachment; filename="${t}"`),this.set("Content-Disposition",t)}get attachment(){var t=(this.get("Content-Disposition")||"").trim();return t=t==="attachment"?!0:t==="inline"?!1:z(ne(t,'"'),'filename="'),t}get location(){return this.get("Location")}set location(t){return this.set("Location",t)}get redirect(){return this.get("Location")}set redirect(t){return this.set("Location",t)}},fr=ln;var pn=(e,t,r)=>{let n=class extends e{constructor(i,o,s){"headers"in o&&!(o.headers instanceof t)&&(o={...o},o.headers=new t(o.headers),arguments[1]=o),B(o)?super(i):super(i,o),this._headers=o.headers,s.headers&&this.headers.json(s.headers);let f={};Object.defineProperty(this,"attrs",{get:()=>f}),Object.defineProperty(this,"bodyAttrs",{get:()=>s})}clone(){return new this.constructor(super.clone())}get headers(){return this._headers||(this._headers=new t(super.headers)),this._headers}get attrs(){return this.attrs}get url(){return"url"in this.attrs?this.attrs.url:super.url}async arrayBuffer(){return this.bodyAttrs.arrayBuffer?this.bodyAttrs.arrayBuffer:super.arrayBuffer()}async blob(){return this.bodyAttrs.blob?this.bodyAttrs.blob:super.blob()}async formData(){if(this.bodyAttrs.formData)return this.bodyAttrs.formData;let i=await super.formData();return i.tee=r.prototype.tee.bind(i),i.json=r.prototype.json.bind(i),i}async json(){return this.bodyAttrs.json?this.bodyAttrs.json:super.json()}async text(){return this.bodyAttrs.text?this.bodyAttrs.text:super.text()}jsonfy(i=!1){return(!this.bodyAttrs.jsonfied||i)&&(this.bodyAttrs.jsonfied=new Promise(async(o,s)=>{var f=this,a,u=f.headers.get("content-type")||"",c=u==="application/json"||this.bodyAttrs.json?"json":u==="application/x-www-form-urlencoded"||u.startsWith("multipart/form-data")||this.bodyAttrs.formData?"formData":u==="text/plain"?"plain":"other";try{c==="formData"?a=(await f.formData()).json():a=c==="json"?await f.json():c==="plain"?await f.text():f.body,o(a)}catch(l){s(l)}})),this.bodyAttrs.jsonfied}};return n.Headers=t,n},tt=pn;function rt(e,t,r){let n={body:e,input:e},i=(f,a)=>{if(!t.encode)return;let[u,c]=t.encode(a);f.body=u,f.headers=c};if(L(e)||q(e))return n.inputType="text",n.text=e,n.headers={contentLength:(e+"").length},n;if(n.inputType=xt(e),["Blob","File"].includes(n.inputType))n.blob=e,n.headers={contentType:e.type,contentLength:e.size};else if(["Uint8Array","Uint16Array","Uint32Array","ArrayBuffer"].includes(n.inputType))n.arrayBuffer=e,n.headers={contentLength:e.byteLength};else if(n.inputType==="FormData")n.formData=e,i(n,e);else if(d(e)&&$e(e)||h(e)&&it(e)){n.inputType="object";var o,s=new t;s.json(e,(f,a,u)=>(o=o||u,!0)),o?(n.formData=s,i(n,s)):(n.json=e,n.body=JSON.stringify(e),n.headers={contentType:"application/json",contentLength:new r([n.body]).size}),n.jsonfied=e}return n}var mn=(e,t,r,n)=>class extends tt(e,t,r){constructor(i,o={}){o={...o};let s={};i instanceof e&&(o.method&&i.method!==o.method.toUpperCase()&&["GET","HEAD"].includes(o.method.toUpperCase())?(i=i.url,["headers","mode","credentials","cache","redirect","referrer","integrity"].forEach(a=>{a in o||(o[a]=i[a])})):s=i.bodyAttrs||{}),"body"in o&&(s=rt(o.body,r,n),o.body=s.body);let f;o.mode==="navigate"&&(f=!0,o={...o},delete o.mode),super(i,o,s),f&&(this.attrs.mode="navigate")}get mode(){return"mode"in this.attrs?this.attrs.mode:super.mode}get cache(){return"cache"in this.attrs?this.attrs.cache:super.cache}get destination(){return"destination"in this.attrs?this.attrs.destination:super.destination}get referrer(){return"referrer"in this.attrs?this.attrs.referrer:super.referrer}static compat(i,o=null){return i instanceof e?Object.setPrototypeOf(i,new this):new this(o,i)}},ur=mn;var hn=(e,t,r,n)=>class extends tt(e,t,r){constructor(i=null,o={}){let s={},f;arguments.length&&(i instanceof e?(f=i,o={status:i.status,statusText:i.statusText,headers:i.headers,...o},i.status===0&&delete o.status,s=i.bodyAttrs||{},i=i.body):(s=rt(i,r,n),i=s.body)),super(i,o,s),f&&(this.attrs.url=f.url,this.attrs.ok=f.ok,this.attrs.status=f.status,this.attrs.type=f.type,this.attrs.redirected=f.redirected)}get ok(){return"ok"in this.attrs?this.attrs.ok:super.ok}get status(){return"status"in this.attrs?this.attrs.status:super.status}get statusText(){return"statusText"in this.attrs?this.attrs.statusText:super.statusText}get type(){return"type"in this.attrs?this.attrs.type:super.type}get redirected(){return"redirected"in this.attrs?this.attrs.redirected:super.redirected}static compat(i){return i instanceof e?Object.setPrototypeOf(i,new this):new this(i)}},cr=hn;var dn=e=>e,lr=dn;var gn=(e,t,r)=>{let n=class{constructor(i,o,s){this._request=i,this._detail=o||{},this._sessionFactory=s,this.Request=e,this.Response=t,this.URL=r,this.port={listeners:[],post(f){let a=this.listeners.map(u=>u(f)).filter(u=>u instanceof Promise);if(process.length)return Promise.all(a)},listen(f){this.listeners.push(f)}}}get url(){return this._url||(this._url=new this.URL(this._request.url)),this._url}get request(){return this._request}get detail(){return this._detail}get session(){return this._session||(this._session=this.sessionFactory().get()),this._session}sessionFactory(...i){return this._sessionFactory(...i)}retarget(i,o={}){var s;return i instanceof e?B(o)?s=i:s=new e(i,o):(s=new e(this._request,o),s.attrs.url=`${this.url.origin}${i}`,s.attrs.referrer=this.request.url),new n(s,this.detail)}};return n},pr=gn;var _n=ir(Jt),mr=or(nr);var yn=ar(gt),xn=fr(gt),bt=ur(tr,yn,mr,_t),Te=cr(rr,xn,mr,_t),Ag=lr(er),hr=pr(bt,Te,_n);var Fe=class{constructor(t,r){this.cx=t,this.clients=new Map,this.mockSessionStore={},this.cx.runtime=this;let n=r(this.cx,"*");if(!n||!n.handle)throw new Error('Application instance must define a ".handle()" method.');this.clients.set("*",n),self.addEventListener("install",i=>{this.cx.params.skip_waiting&&self.skipWaiting(),this.cx.params.cache_name&&(this.cx.params.cache_only_urls||[]).length&&i.waitUntil(self.caches.open(this.cx.params.cache_name).then(o=>{this.cx.logger&&this.cx.logger.log("[ServiceWorker] Pre-caching resources.");let s=(this.cx.params.cache_only_urls||[]).map(f=>f.trim()).filter(f=>f&&!lt(f,self.origin).isPattern());return o.addAll(s)}))}),self.addEventListener("activate",i=>{i.waitUntil(new Promise(async o=>{this.cx.params.skip_waiting&&await self.clients.claim(),this.cx.params.cache_name&&await self.caches.keys().then(s=>Promise.all(s.map(f=>{if(f!==this.cx.params.cache_name&&f!==this.cx.params.cache_name+"_json")return this.cx.logger&&this.cx.logger.log("[ServiceWorker] Removing old cache:",f),self.caches.delete(f)}))),o()}))}),self.addEventListener("fetch",i=>{!i.request.url.startsWith("http")||i.respondWith((async(o,s)=>{let f=["method","headers","mode","credentials","cache","redirect","referrer","integrity"].reduce((a,u)=>({[u]:o[u],...a}),{});return["GET","HEAD"].includes(o.method)||(f.body=await o.text()),o.cache==="force-cache"&&(f.cache="default"),this.go(o.url,f,{event:s})})(i.request,i))}),R.set(this,"location",{}),R.set(this,"network",{}),R.observe(this.network,i=>{})}async go(t,r={},n={}){t=typeof t=="string"?new URL(t):t,r={referrer:this.location.href,...r};let i=await this.generateRequest(t.href,r);n.event&&Object.defineProperty(n.event,"request",{value:i});let o=new hr(i,n,(a=null,u=!1)=>this.getSession(o,a,u));o.port.listen(a=>{if(a.$type==="handler:hints"&&a.session)return Promise.resolve()});let s;return o.request.url.startsWith(self.origin)?s=await this.clients.get("*").handle(o,(...a)=>this.remoteFetch(...a)):s=await this.remoteFetch(o.request),this.handleResponse(o,s)}generateRequest(t,r){return new bt(t,r)}getSession(t,r=null,n=!1){return{get:()=>this.mockSessionStore,set:i=>{this.mockSessionStore=i}}}remoteFetch(t,...r){arguments.length>1&&(t=this.generateRequest(t,...r));let n=(s,f)=>we((s||[]).map(a=>a.trim()).filter(a=>a),a=>lt(a,self.origin).test(f)),o=(()=>n(this.cx.params.cache_only_urls,t.url)?(R.set(this.network,"strategy","cache-only"),this.cacheFetch(t,{networkFallback:!1,cacheRefresh:!1})):n(this.cx.params.network_only_urls,t.url)?(R.set(this.network,"strategy","network-only"),this.networkFetch(t,{cacheFallback:!1,cacheRefresh:!1})):n(this.cx.params.cache_first_urls,t.url)?(R.set(this.network,"strategy","cache-first"),this.cacheFetch(t,{networkFallback:!0,cacheRefresh:!0})):(R.set(this.network,"strategy","network-first"),this.networkFetch(t,{cacheFallback:!0,cacheRefresh:!0})))(t);return o.catch(s=>R.set(this.network,"error",s.message)),o.then(s=>Te.compat(s))}cacheFetch(t,r={}){return this.getRequestCache(t).then(n=>n.match(t).then(i=>!i&&r.networkFallback?this.networkFetch(t,{...r,cacheFallback:!1}):(i&&r.cacheRefresh&&this.networkFetch(t,{...r,justRefreshing:!0}),R.set(this.network,"cache",!0),i)))}networkFetch(t,r={}){return r.cacheFallback?self.fetch(t).then(n=>(r.cacheRefresh&&this.refreshCache(t,n),R.set(this.network,"remote",!0),n)).catch(()=>this.getRequestCache(t).then(n=>(R.set(this.network,"cache",!0),n.match(t)))):(R.set(this.network,"remote",!0),self.fetch(t))}refreshCache(t,r){if(t.method!=="GET"||!r||r.status!==200||r.type!=="basic"&&r.type!=="cors")return r;var n=r.clone();return this.getRequestCache(t).then(i=>{R.set(this.network,"cacheRefresh",!0),i.put(t,n)}),r}getRequestCache(t){let r=t.headers.get("Accept")==="application/json"?this.cx.params.cache_name+"_json":this.cx.params.cache_name;return self.caches.open(r)}handleResponse(t,r){return r instanceof Te||(r=Te.compat(r)),r}};async function dr(e=null){let t=this||{},r=n=>new Ce(n);return new Fe(ye.create(t),(...n)=>e?e(...n.concat(r)):r(...n))}var bn={},wn={cache_name:"cache_v0",cache_only_urls:[],cache_first_urls:[],network_only_urls:[],network_first_urls:[],skip_waiting:!1,support_push:!1,push_registration_url:"",push_deregistration_url:"",push_public_key:"",routing:{scope:"/",subscopes:[]}};dr.call({layout:bn,params:wn});
|
|
3
|
+
})();
|
|
Binary file
|
package/src/Cli.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @imports
|
|
5
|
-
*/
|
|
6
|
-
import { _toTitle } from '@webqit/util/str/index.js';
|
|
7
|
-
import { _merge, _set, _get } from '@webqit/util/obj/index.js';
|
|
8
|
-
import { _isClass, _isFunction, _isObject, _isEmpty, _isString } from '@webqit/util/js/index.js';
|
|
9
|
-
import { Promptx } from '@webqit/backpack/src/cli/Promptx.js';
|
|
10
|
-
import parseArgs from '@webqit/backpack/src/cli/parseArgs.js';
|
|
11
|
-
|
|
12
|
-
export default class Cli {
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @constructor
|
|
16
|
-
*
|
|
17
|
-
* @param Object api
|
|
18
|
-
*/
|
|
19
|
-
constructor(api) {
|
|
20
|
-
this.api = api;
|
|
21
|
-
this.nsSeparator = '::';
|
|
22
|
-
// Generate available options
|
|
23
|
-
this.availableConfigs = {};
|
|
24
|
-
this.availableCommands = {};
|
|
25
|
-
const discoverConfigs = (namespace, piObj) => Object.keys(piObj).forEach(name => {
|
|
26
|
-
let pathname = `${name}${this.nsSeparator}${namespace}`.toLowerCase();
|
|
27
|
-
if (_isClass(piObj[name])) {
|
|
28
|
-
if (piObj[name]['@desc']) this.availableConfigs[pathname] = piObj[name]['@desc'];
|
|
29
|
-
} else if (_isObject(piObj[name])) discoverConfigs(pathname, piObj[name]);
|
|
30
|
-
});
|
|
31
|
-
const discoverCommands = (namespace, piObj) => Object.keys(piObj).forEach(name => {
|
|
32
|
-
let pathname = `${name}${this.nsSeparator}${namespace}`.toLowerCase();
|
|
33
|
-
if (!_isClass(piObj[name]) && _isFunction(piObj[name])) {
|
|
34
|
-
if (!piObj[name]['@desc']) this.availableCommands[pathname] = piObj[name]['@desc'];
|
|
35
|
-
} else if (_isObject(piObj[name])) discoverCommands(pathname, piObj[name]);
|
|
36
|
-
});
|
|
37
|
-
Object.keys(this.api).forEach(name => {
|
|
38
|
-
if (name === 'config') discoverConfigs(name, this.api[name]);
|
|
39
|
-
else discoverCommands(name, this.api[name]);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @exec
|
|
45
|
-
*/
|
|
46
|
-
async exec(cx) {
|
|
47
|
-
const { command, keywords, flags, options, ellipsis } = parseArgs(process.argv);
|
|
48
|
-
cx.flags = flags;
|
|
49
|
-
// ------------
|
|
50
|
-
if (cx.webflo.version) {
|
|
51
|
-
cx.logger.log('');
|
|
52
|
-
cx.logger.banner(cx.webflo.title, cx.webflo.version || '');
|
|
53
|
-
cx.logger.log('');
|
|
54
|
-
}
|
|
55
|
-
// ------------
|
|
56
|
-
if (command === 'help') {
|
|
57
|
-
cx.logger.title(`> COMMAND LINE HELP`);
|
|
58
|
-
cx.logger.log('');
|
|
59
|
-
// ------------
|
|
60
|
-
cx.logger.log(cx.logger.f`Say "webflo <${'command'}>"`);
|
|
61
|
-
cx.logger.log(cx.logger.f`Where <${'command'}> is one of:`);
|
|
62
|
-
cx.logger.log(cx.logger.f`${this.availableCommands}`);
|
|
63
|
-
cx.logger.log('');
|
|
64
|
-
// ------------
|
|
65
|
-
cx.logger.log(cx.logger.f`Or say "webflo config", or "webflo config <${'path'}>"`);
|
|
66
|
-
cx.logger.log(cx.logger.f`Where <${'path'}> is one of:`);
|
|
67
|
-
cx.logger.log(cx.logger.f`${this.availableConfigs}`);
|
|
68
|
-
cx.logger.log('');
|
|
69
|
-
// ------------
|
|
70
|
-
cx.logger.log(cx.logger.f`You may also refer to the Webflo DOCS as ${'https://webqit.io/tooling/webflo'}`);
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
// ------------
|
|
74
|
-
const keywordList = Object.keys(keywords);
|
|
75
|
-
const fcn = keywordList[0];
|
|
76
|
-
const resolveIdentifier = (fcn, isConfig) => {
|
|
77
|
-
let namespaceObj = isConfig ? this.availableConfigs : this.availableCommands;
|
|
78
|
-
let matches = Object.keys(namespaceObj).filter(path => `${path}${this.nsSeparator}`.startsWith(`${fcn}${this.nsSeparator}`));
|
|
79
|
-
if (matches.length === 1) {
|
|
80
|
-
return matches[0];
|
|
81
|
-
}
|
|
82
|
-
return matches;
|
|
83
|
-
};
|
|
84
|
-
const pathNisplayName = path => path.split(this.nsSeparator).slice(0, -1).join(this.nsSeparator);
|
|
85
|
-
const promptIdentifier = async (preselection, isConfig) => {
|
|
86
|
-
let namespaceObj = isConfig ? this.availableConfigs : this.availableCommands;
|
|
87
|
-
let selection = await Promptx({
|
|
88
|
-
name: 'fcn',
|
|
89
|
-
type: 'select',
|
|
90
|
-
choices: (!_isEmpty(preselection) ? preselection : Object.keys(namespaceObj)).map(path => ({ value: path, title: pathNisplayName(path) })).concat({ value: '<' }),
|
|
91
|
-
message: 'Please select a function to continue, or "<" to exit',
|
|
92
|
-
}).then(d => d.fcn);
|
|
93
|
-
if (selection === '<') process.exit();
|
|
94
|
-
return selection;
|
|
95
|
-
};
|
|
96
|
-
// ------------
|
|
97
|
-
let isConfig = command === 'config', _fcn = isConfig ? fcn : command, resolvedFcn;
|
|
98
|
-
if (!(_fcn && _isString(resolvedFcn = resolveIdentifier(_fcn, isConfig))) || ellipsis) {
|
|
99
|
-
cx.logger.title(`> webflo ${isConfig ? 'config ' : ''}${_fcn || ''}...`);
|
|
100
|
-
cx.logger.log('');
|
|
101
|
-
resolvedFcn = await promptIdentifier(resolvedFcn, isConfig);
|
|
102
|
-
}
|
|
103
|
-
cx.logger.title(`> webflo ${isConfig ? 'config ' : ''}${pathNisplayName(resolvedFcn)}`);
|
|
104
|
-
cx.logger.log('');
|
|
105
|
-
// ------------
|
|
106
|
-
// Process command
|
|
107
|
-
if (isConfig) {
|
|
108
|
-
const configClass = _get(this.api, _toTitle(resolvedFcn).split(this.nsSeparator).reverse());
|
|
109
|
-
const configurator = new configClass(cx);
|
|
110
|
-
const config = await configurator.read();
|
|
111
|
-
const givenOptionsList = Object.keys(options);
|
|
112
|
-
if (givenOptionsList.length) {
|
|
113
|
-
const optionsStructured = {};
|
|
114
|
-
givenOptionsList.forEach(path => {
|
|
115
|
-
_set(optionsStructured, path.split('.'), options[path]);
|
|
116
|
-
});
|
|
117
|
-
await configurator.write(_merge(true, config, optionsStructured));
|
|
118
|
-
} else {
|
|
119
|
-
await Promptx(configurator.questions(config)).then(async _config => {
|
|
120
|
-
await configurator.write(_merge(true, config, _config));
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
} else {
|
|
124
|
-
const func = _get(this.api, resolvedFcn.split(this.nsSeparator).reverse());
|
|
125
|
-
await func.call(cx, ...keywordList);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
cx.logger.log('');
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
}
|
package/src/Configurator.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* @imports
|
|
4
|
-
*/
|
|
5
|
-
import Path from 'path';
|
|
6
|
-
import { _merge } from '@webqit/util/obj/index.js';
|
|
7
|
-
import { initialGetIndex } from '@webqit/backpack/src/cli/Promptx.js';
|
|
8
|
-
import { DotJson, DotEnv, anyExists } from '@webqit/backpack/src/dotfiles/index.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @exports
|
|
12
|
-
*/
|
|
13
|
-
export default class Configurator {
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* The default initializer.
|
|
17
|
-
*
|
|
18
|
-
* @param Context cx
|
|
19
|
-
*/
|
|
20
|
-
constructor(cx) {
|
|
21
|
-
this.cx = cx;
|
|
22
|
-
this.givenExt = this.cx.flags.mode ? `.${this.cx.flags.mode}` : '';
|
|
23
|
-
this.availableExt = anyExists([ this.givenExt, '', '.example' ], ext => this.resolveFileName(ext));
|
|
24
|
-
if (this.isEnv) {
|
|
25
|
-
this.availableEnvExt = anyExists([ this.givenExt, '', '.example' ], ext => this.resolveEnvFileName(ext));
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// ------------
|
|
30
|
-
|
|
31
|
-
get configDir() {
|
|
32
|
-
return Path.join(this.cx.CWD || ``, `./.webqit/webflo/config/`);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
get envDir() {
|
|
36
|
-
return Path.resolve(this.cx.CWD || '');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// ------------
|
|
40
|
-
|
|
41
|
-
static read(...args) {
|
|
42
|
-
let instance = new this(...args);
|
|
43
|
-
return instance.read();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
static write(config, ...args) {
|
|
48
|
-
let instance = new this(...args);
|
|
49
|
-
return instance.write(config);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// ------------
|
|
53
|
-
|
|
54
|
-
async read() {
|
|
55
|
-
let config = DotJson.read(this.resolveFileName(this.availableExt));
|
|
56
|
-
if (this.isEnv) {
|
|
57
|
-
let config2 = { entries: DotEnv.read(this.resolveEnvFileName(this.availableEnvExt)) || {}, };
|
|
58
|
-
// The rewrite below is because entries should not also appear in json
|
|
59
|
-
//config.entries = _merge(config.entries || {}, config2.entries);
|
|
60
|
-
config = _merge(config, config2);
|
|
61
|
-
}
|
|
62
|
-
return this.withDefaults(config);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
async write(config) {
|
|
66
|
-
if (this.isEnv) {
|
|
67
|
-
config = { ...config };
|
|
68
|
-
DotEnv.write(config.entries, this.resolveEnvFileName(this.givenExt));
|
|
69
|
-
// The delete below is because entries should not also appear in json
|
|
70
|
-
delete config.entries;
|
|
71
|
-
}
|
|
72
|
-
DotJson.write(config, this.resolveFileName(this.givenExt));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
questions() {
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// ------------
|
|
80
|
-
|
|
81
|
-
resolveFileName(ext) {
|
|
82
|
-
return `${this.configDir}/${this.name}${ext}.json`;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
resolveEnvFileName(ext) {
|
|
86
|
-
return `${this.envDir}/.${this.name}${ext}`;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
withDefaults(config) {
|
|
90
|
-
return config;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
indexOfInitial(options, initial) {
|
|
94
|
-
return initialGetIndex(options, initial);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
}
|