gemi 0.54.2 → 0.54.4
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/dist/app/index.js +2 -2
- package/dist/app/index.js.map +1 -1
- package/dist/bun/plugin.js +2 -2
- package/dist/bun/plugin.js.map +1 -1
- package/dist/bun/preload.js +2 -2
- package/dist/bun/preload.js.map +2 -2
- package/dist/chunk-1312a1t4.js +4 -0
- package/dist/{chunk-r9z5rrk0.js.map → chunk-1312a1t4.js.map} +2 -2
- package/dist/{chunk-9taz1h3t.js → chunk-1psx59jt.js} +2 -2
- package/dist/{chunk-9taz1h3t.js.map → chunk-1psx59jt.js.map} +1 -1
- package/dist/chunk-2s75crt8.js +4 -0
- package/dist/{chunk-07t0dmdg.js.map → chunk-2s75crt8.js.map} +2 -2
- package/dist/chunk-2zyharpa.js +4 -0
- package/dist/{chunk-hk067634.js.map → chunk-2zyharpa.js.map} +2 -2
- package/dist/chunk-35j03vge.js +4 -0
- package/dist/{chunk-br8ten26.js.map → chunk-35j03vge.js.map} +2 -2
- package/dist/chunk-3njyfdj5.js +19 -0
- package/dist/chunk-3njyfdj5.js.map +60 -0
- package/dist/chunk-4n0xx0y6.js +66 -0
- package/dist/{chunk-n382ygnp.js.map → chunk-4n0xx0y6.js.map} +4 -53
- package/dist/{chunk-gn9zjgep.js → chunk-5ad8era8.js} +2 -2
- package/dist/{chunk-gn9zjgep.js.map → chunk-5ad8era8.js.map} +1 -1
- package/dist/{chunk-50vm7x98.js → chunk-6c5xkj0z.js} +2 -2
- package/dist/{chunk-50vm7x98.js.map → chunk-6c5xkj0z.js.map} +1 -1
- package/dist/chunk-6yy92txx.js +9 -0
- package/dist/{chunk-k8endm5j.js.map → chunk-6yy92txx.js.map} +6 -6
- package/dist/chunk-796pyrm9.js +4 -0
- package/dist/{chunk-1snh7yc4.js.map → chunk-796pyrm9.js.map} +2 -2
- package/dist/chunk-876p591d.js +5 -0
- package/dist/chunk-876p591d.js.map +13 -0
- package/dist/chunk-95t14jaw.js +13 -0
- package/dist/chunk-95t14jaw.js.map +222 -0
- package/dist/{chunk-kz39hphm.js → chunk-97rcmaps.js} +3 -3
- package/dist/{chunk-kz39hphm.js.map → chunk-97rcmaps.js.map} +1 -1
- package/dist/{chunk-c22vcxty.js → chunk-9agd5hjw.js} +2 -2
- package/dist/{chunk-c22vcxty.js.map → chunk-9agd5hjw.js.map} +2 -2
- package/dist/chunk-9wrbnr38.js +4 -0
- package/dist/{chunk-c0wcsmpj.js.map → chunk-9wrbnr38.js.map} +2 -2
- package/dist/{chunk-sqp7kn7h.js → chunk-a1h4paj1.js} +3 -3
- package/dist/{chunk-sqp7kn7h.js.map → chunk-a1h4paj1.js.map} +1 -1
- package/dist/{chunk-r06rxn19.js → chunk-b5mc1st9.js} +2 -2
- package/dist/{chunk-r06rxn19.js.map → chunk-b5mc1st9.js.map} +1 -1
- package/dist/chunk-c6qxw3v9.js +5 -0
- package/dist/{chunk-f13f68c0.js.map → chunk-c6qxw3v9.js.map} +2 -2
- package/dist/{chunk-113khwbw.js → chunk-cbqrkfjm.js} +2 -2
- package/dist/{chunk-113khwbw.js.map → chunk-cbqrkfjm.js.map} +1 -1
- package/dist/{chunk-jp4pf3yt.js → chunk-dngwctnt.js} +4 -4
- package/dist/{chunk-jp4pf3yt.js.map → chunk-dngwctnt.js.map} +2 -2
- package/dist/{chunk-f418jh9k.js → chunk-ejrcyzx8.js} +2 -2
- package/dist/{chunk-f418jh9k.js.map → chunk-ejrcyzx8.js.map} +1 -1
- package/dist/chunk-h3b0v3bz.js +4 -0
- package/dist/{chunk-4qkzdyj7.js.map → chunk-h3b0v3bz.js.map} +1 -1
- package/dist/{chunk-jb022m7n.js → chunk-hg9y6ctt.js} +2 -2
- package/dist/{chunk-jb022m7n.js.map → chunk-hg9y6ctt.js.map} +1 -1
- package/dist/chunk-j15ewww3.js +5 -0
- package/dist/{chunk-2pt6kyn9.js.map → chunk-j15ewww3.js.map} +2 -2
- package/dist/{chunk-zckj6bs6.js → chunk-j3tzdcz7.js} +3 -3
- package/dist/{chunk-zckj6bs6.js.map → chunk-j3tzdcz7.js.map} +1 -1
- package/dist/chunk-jq46m17j.js +5 -0
- package/dist/{chunk-efsk1wy0.js.map → chunk-jq46m17j.js.map} +2 -2
- package/dist/{chunk-pgjk5ft3.js → chunk-k5jvafmh.js} +1 -1
- package/dist/chunk-kckva77b.js +5 -0
- package/dist/{chunk-dxw8k6f1.js.map → chunk-kckva77b.js.map} +2 -2
- package/dist/{chunk-cz3szqhq.js → chunk-ke6tsnx1.js} +2 -2
- package/dist/{chunk-cz3szqhq.js.map → chunk-ke6tsnx1.js.map} +1 -1
- package/dist/{chunk-qq2yhtpp.js → chunk-kz5zcw6s.js} +2 -2
- package/dist/{chunk-qq2yhtpp.js.map → chunk-kz5zcw6s.js.map} +2 -2
- package/dist/{chunk-h7mcwfg5.js → chunk-nakfv7pa.js} +4 -4
- package/dist/{chunk-h7mcwfg5.js.map → chunk-nakfv7pa.js.map} +2 -2
- package/dist/chunk-nph4mm6k.js +4 -0
- package/dist/{chunk-jb2nst6v.js.map → chunk-nph4mm6k.js.map} +2 -2
- package/dist/{chunk-dwx2y7br.js → chunk-r07s2p1z.js} +4 -4
- package/dist/{chunk-dwx2y7br.js.map → chunk-r07s2p1z.js.map} +2 -2
- package/dist/chunk-teyphwr0.js +5 -0
- package/dist/{chunk-6rhebm18.js.map → chunk-teyphwr0.js.map} +2 -2
- package/dist/{chunk-agabw2w1.js → chunk-tkdxv6cq.js} +2 -2
- package/dist/{chunk-agabw2w1.js.map → chunk-tkdxv6cq.js.map} +1 -1
- package/dist/chunk-v094r7tz.js +6 -0
- package/dist/{chunk-05edp1zf.js.map → chunk-v094r7tz.js.map} +2 -2
- package/dist/{chunk-3xa807p3.js → chunk-v0t5dejz.js} +2 -2
- package/dist/{chunk-3xa807p3.js.map → chunk-v0t5dejz.js.map} +1 -1
- package/dist/{chunk-f4e7fh95.js → chunk-v7y8zm61.js} +3 -3
- package/dist/{chunk-f4e7fh95.js.map → chunk-v7y8zm61.js.map} +2 -2
- package/dist/{chunk-kv2ep453.js → chunk-vj1vt6qs.js} +18 -19
- package/dist/{chunk-kv2ep453.js.map → chunk-vj1vt6qs.js.map} +4 -8
- package/dist/{chunk-71m47kad.js → chunk-wxepr09t.js} +2 -2
- package/dist/{chunk-71m47kad.js.map → chunk-wxepr09t.js.map} +2 -2
- package/dist/{chunk-efp54183.js → chunk-x1g40y59.js} +1 -1
- package/dist/chunk-x5w7es67.js +4 -0
- package/dist/{chunk-s6e7cvek.js.map → chunk-x5w7es67.js.map} +2 -2
- package/dist/chunk-x67dm5ef.js +5 -0
- package/dist/{chunk-jdgvdddd.js.map → chunk-x67dm5ef.js.map} +2 -2
- package/dist/{chunk-fcqc3e3r.js → chunk-xnytbrda.js} +2 -2
- package/dist/{chunk-fcqc3e3r.js.map → chunk-xnytbrda.js.map} +1 -1
- package/dist/chunk-xska2hx3.js +4 -0
- package/dist/{chunk-hrrmxreg.js.map → chunk-xska2hx3.js.map} +2 -2
- package/dist/{chunk-ms8qd7da.js → chunk-yd6aqeyc.js} +2 -2
- package/dist/{chunk-ms8qd7da.js.map → chunk-yd6aqeyc.js.map} +1 -1
- package/dist/{chunk-bb3zvxsf.js → chunk-zacf5ph0.js} +2 -2
- package/dist/{chunk-bb3zvxsf.js.map → chunk-zacf5ph0.js.map} +1 -1
- package/dist/console/run.js +2 -2
- package/dist/console/run.js.map +1 -1
- package/dist/database/DatabaseManager.d.ts.map +1 -1
- package/dist/database/index.js +2 -2
- package/dist/database/index.js.map +1 -1
- package/dist/email/index.js +1 -1
- package/dist/facades/Storage.d.ts +1 -1
- package/dist/facades/Storage.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/i18n/dictionaryRuntime.js +2 -2
- package/dist/i18n/dictionaryRuntime.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +2 -2
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +2 -2
- package/dist/orm/corpus.d.ts.map +1 -1
- package/dist/orm/dialect/index.d.ts +32 -1
- package/dist/orm/dialect/index.d.ts.map +1 -1
- package/dist/orm/dialect/postgres.d.ts +14 -0
- package/dist/orm/dialect/postgres.d.ts.map +1 -1
- package/dist/orm/dialect/sqlite.d.ts +31 -0
- package/dist/orm/dialect/sqlite.d.ts.map +1 -1
- package/dist/orm/index.js +3 -3
- package/dist/orm/index.js.map +3 -3
- package/dist/orm/types.d.ts +82 -38
- package/dist/orm/types.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +2 -2
- package/dist/services/email/drivers/ResendDriver.d.ts.map +1 -1
- package/dist/services/file-storage/drivers/S3Driver.d.ts +24 -1
- package/dist/services/file-storage/drivers/S3Driver.d.ts.map +1 -1
- package/dist/services/image-optimization/drivers/SharpDriver.d.ts.map +1 -1
- package/dist/services/index.js +9 -18
- package/dist/services/index.js.map +5 -99
- package/dist/services/rate-limiter/drivers/RedisRateLimiterDriver.d.ts.map +1 -1
- package/dist/services/redis/RedisManager.d.ts +19 -2
- package/dist/services/redis/RedisManager.d.ts.map +1 -1
- package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
- package/dist/services/router/htmlInsertionPoint.d.ts +64 -0
- package/dist/services/router/htmlInsertionPoint.d.ts.map +1 -0
- package/dist/services/router/streamQueryInjection.d.ts +10 -0
- package/dist/services/router/streamQueryInjection.d.ts.map +1 -1
- package/dist/support/sharp.d.ts +21 -0
- package/dist/support/sharp.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-05edp1zf.js +0 -6
- package/dist/chunk-07t0dmdg.js +0 -4
- package/dist/chunk-1snh7yc4.js +0 -4
- package/dist/chunk-2pt6kyn9.js +0 -5
- package/dist/chunk-4qkzdyj7.js +0 -4
- package/dist/chunk-6rhebm18.js +0 -5
- package/dist/chunk-br8ten26.js +0 -4
- package/dist/chunk-c0wcsmpj.js +0 -4
- package/dist/chunk-dxw8k6f1.js +0 -5
- package/dist/chunk-efsk1wy0.js +0 -5
- package/dist/chunk-f13f68c0.js +0 -5
- package/dist/chunk-hk067634.js +0 -4
- package/dist/chunk-hrrmxreg.js +0 -4
- package/dist/chunk-jb2nst6v.js +0 -4
- package/dist/chunk-jdgvdddd.js +0 -5
- package/dist/chunk-k8endm5j.js +0 -9
- package/dist/chunk-n382ygnp.js +0 -81
- package/dist/chunk-r9z5rrk0.js +0 -4
- package/dist/chunk-s6e7cvek.js +0 -4
- /package/dist/{chunk-pgjk5ft3.js.map → chunk-k5jvafmh.js.map} +0 -0
- /package/dist/{chunk-efp54183.js.map → chunk-x1g40y59.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError } from \"@smithy/property-provider\";\nexport const ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nexport const ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nexport const ENV_SESSION = \"AWS_SESSION_TOKEN\";\nexport const ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nexport const ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nexport const ENV_ACCOUNT_ID = \"AWS_ACCOUNT_ID\";\nexport const fromEnv = (init) => async () => {\n init?.logger?.debug(\"@aws-sdk/credential-provider-env - fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n const accountId = process.env[ENV_ACCOUNT_ID];\n if (accessKeyId && secretAccessKey) {\n const credentials = {\n accessKeyId,\n secretAccessKey,\n ...(sessionToken && { sessionToken }),\n ...(expiry && { expiration: new Date(expiry) }),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n setCredentialFeature(credentials, \"CREDENTIALS_ENV_VARS\", \"g\");\n return credentials;\n }\n throw new CredentialsProviderError(\"Unable to find environment variable credentials.\", { logger: init?.logger });\n};\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";qIAAA,SACA,KACa,EAAU,oBACV,EAAa,wBACb,EAAc,oBACd,EAAiB,4BACjB,EAAuB,uBACvB,EAAiB,iBACjB,EAAU,CAAC,IAAS,SAAY,CACzC,GAAM,QAAQ,MAAM,4CAA4C,EAChE,IAAM,EAAc,QAAQ,IAAI,GAC1B,EAAkB,QAAQ,IAAI,GAC9B,EAAe,QAAQ,IAAI,GAC3B,EAAS,QAAQ,IAAI,GACrB,EAAkB,QAAQ,IAAI,GAC9B,EAAY,QAAQ,IAAI,GAC9B,GAAI,GAAe,EAAiB,CAChC,IAAM,EAAc,CAChB,cACA,qBACI,GAAgB,CAAE,cAAa,KAC/B,GAAU,CAAE,WAAY,IAAI,KAAK,CAAM,CAAE,KACzC,GAAmB,CAAE,iBAAgB,KACrC,GAAa,CAAE,WAAU,CACjC,EAEA,OADA,uBAAqB,EAAa,uBAAwB,GAAG,EACtD,EAEX,MAAM,IAAI,2BAAyB,mDAAoD,CAAE,OAAQ,GAAM,MAAO,CAAC",
|
|
8
|
+
"debugId": "FA0C56C880F2E6A664756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{Ec as mf,Jc as yf,vc as cf,wc as b0,xc as Pf,yc as Rf}from"./chunk-k5jvafmh.js";import{Uc as M0,pd as pf}from"./chunk-6yy92txx.js";import{ud as Mf,zd as _f}from"./chunk-e3mggavt.js";import{Ad as R0,Cd as d0,Ed as v0,Jd as Ni,Ld as p,Md as V,Pd as m0,Qd as bi,Rd as k0,Sd as wi,Td as H0,Ud as y,Vd as h,Xd as bf,Yd as di,be as Li,fe as b,je as kf}from"./chunk-85av4ncy.js";import{qe as L}from"./chunk-k14dmqwh.js";import{Ye as H}from"./chunk-nncwsdzz.js";import{Ze as gi,af as X}from"./chunk-w6gb9gc5.js";import{hf as pi}from"./chunk-7f5ad759.js";class E{static getFacadeAccessor(){throw Error(`Facade [${this.name}] does not implement getFacadeAccessor().`)}static getFacadeRoot(){return X(this.getFacadeAccessor())}}import{AsyncLocalStorage as ef}from"async_hooks";class mi{config;static token="broadcast";publishCb;context=new ef;constructor(i){this.config=i}get channels(){return this.config.channels}onPublish(i){this.publishCb=i}publish(...i){let[f,$,z]=i;this.publishCb(f,$,z)}async handleMessage(i,f){let $=JSON.parse(f);if($.type==="subscribe"){let z=Object.entries(this.channels).sort(([U],[C])=>U.length-C.length);for(let[U,C]of z){let j=new URLPattern({pathname:U});if(j.test({pathname:$.topic})){let O=j.exec({pathname:$.topic})?.pathname.groups,w=new C;if(await w.subscribe.call(w,O))i.subscribe($.topic);break}}}if($.type==="broadcast")i.publish($.topic,JSON.stringify({topic:$.topic,data:$.payload}));if($.type==="unsubscribe")i.unsubscribe($.topic)}run(i,f){let $=i.get("Cookie"),z=new Map;if($){let U=$.split(";");for(let C of U){let[j,O]=C.split("=");z.set(j.trim(),O.trim())}}this.context.run({headers:i,cookies:z},f)}}class Di extends E{static getFacadeAccessor(){return mi}static channel(i,f){let $=this.getFacadeRoot(),z=$.channels[i];if(!z)return console.error(`Channel ${i} not found`),{publish:()=>{}};let U=new z;return{publish:(C,j=!1)=>{let O=h(i,f);$.publish(O,JSON.stringify({topic:O,data:U.publish(C)}),j)}}}}class u extends E{static getFacadeAccessor(){return b}static async user(){let i=L.getStore(),f=Di.getFacadeRoot().context.getStore(),$="",z="";if(i?.req)$=i.req.cookies.get("access_token"),z=i.req.headers.get("User-Agent");if(f?.cookies)z=f.headers.get("User-Agent"),$=f.cookies.get("access_token");let U=i?.user;if(!U)U=(await this.getFacadeRoot().getSession($,z))?.user,i?.setUser(U);if(U)return U;throw new H0}static async guard(i){let f=await u.user();if(!f)throw new bi;try{if(!await i(f))throw new bi}catch($){throw new bi}}static async guardSafe(i){let f=await u.user();if(!f)return!1;try{return await i(f)}catch($){return!1}}static async authenticate(i){return await this.getFacadeRoot().authenticate(i)}static async createMagicLink(i){return await this.getFacadeRoot().createMagicLinkToken(i)}}class Ci extends E{static getFacadeAccessor(){return H}static getSupportedLocales(){return this.getFacadeRoot().supportedLocales}static getDefaultLocale(){return this.getFacadeRoot().defaultLocale}static locale(){let i=this.getFacadeRoot(),f=L.getStore();if(f)return f.locale??i.detectLocale(f.req);return i.defaultLocale}static setLocale(i=Ci.locale()){let f=this.getFacadeRoot(),$=i;if(!f.supportedLocales.includes(i))$=f.defaultLocale;let z=L.getStore();return z.setCookie("i18n-locale",$,{expires:new Date(Date.now()+31536000000),secure:!1,httpOnly:!1}),z.setLocale($),$}}import{Buffer as f1}from"buffer";async function Wi(i){try{return(await import("sharp")).default}catch(f){throw Error(`${i} requires the 'sharp' package. Install it with \`bun add sharp\`.`,{cause:f})}}class yi{async read(i){let f=typeof i==="string"?{name:i}:i,$=await this.fetch({name:f.name,bucket:f.bucket});if(!$.ok)throw new wi(f.name);let z=$.headers.get("Content-Type")??"application/octet-stream",U=$.headers.get("ETag")??void 0,C=$.headers.get("Last-Modified"),j=C?new Date(C):void 0;if(f.range){let W=await $.blob();return{body:W,start:0,end:W.size-1,total:W.size,partial:!1,type:z,etag:U,lastModified:j,name:f.name}}let O=Number($.headers.get("Content-Length")),w=Number.isFinite(O)?O:0;return{body:$.body,start:0,end:w-1,total:w,partial:!1,type:z,etag:U,lastModified:j,name:f.name}}async size(i){let f=typeof i==="string"?i:i.name,$=typeof i==="string"?void 0:i.bucket,z=await this.fetch({name:f,bucket:$});if(!z.ok)throw new wi(f);let U=Number(z.headers.get("Content-Length"));if(Number.isFinite(U))return await z.body?.cancel(),U;return(await z.blob()).size}}import{readdir as i1}from"fs/promises";class qi extends yi{folderPath;constructor(i=`${process.env.ROOT_DIR}/storage`){super();this.folderPath=i}async put(i){let f,$;if(i instanceof Blob)f=i,$=`${Bun.randomUUIDv7()}.${i.type.split("/")[1].split(";")[0]}`;else f=i.body,$=i.name;let z=f instanceof Buffer?f:f instanceof Blob||f instanceof File?Buffer.from(await f.arrayBuffer()):"",U=`${this.folderPath}/${$}`;return await Bun.write(U,z),$}async fetch(i){let f=process.env.BUCKET_NAME,$;if(typeof i==="string")$=i;else f=i.bucket??f,$=i.name;if(!$)throw Error("Object name has to be specified");let z=`${this.folderPath}/${$}`,U=Bun.file(z),C=Bun.file(z).stream(),j=new Date(U.lastModified).toUTCString();return new Response(C,{headers:{"Content-Type":U.type,"Content-Length":String(U.size),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":j}})}async read(i){let f=typeof i==="string"?{name:i}:i,{name:$,range:z=null}=f;if(!$)throw Error("Object name has to be specified");let U=Bun.file(`${this.folderPath}/${$}`);if(!await U.exists())throw new wi($);let C=U.size,j=z?v0(z,C):null;if(z&&!j)throw new k0(C);let O=j?.start??0,w=j?j.end:C-1;return{body:j?U.slice(O,w+1):U,start:O,end:w,total:C,partial:Boolean(j),type:U.type||"application/octet-stream",lastModified:new Date(U.lastModified),name:$}}async size(i){let f=typeof i==="string"?i:i.name,$=Bun.file(`${this.folderPath}/${f}`);if(!await $.exists())throw new wi(f);return $.size}async list(){return await i1(this.folderPath)}}function x$(i){return i}function h0(){return{driver:new qi}}class ni{static token="filesystem";driver;constructor(i={}){this.driver=i.driver??h0().driver}}class c0 extends E{static getFacadeAccessor(){return ni}static async put(i){return this.getFacadeRoot().driver.put(i)}static async metadata(i){let f=f1.from(await i.arrayBuffer()),$=await Wi("Storage.metadata()");try{return await $(f).metadata()}catch{return{}}}static async fetch(i){return this.getFacadeRoot().driver.fetch(i)}static async read(i,f={}){let $=typeof i==="string"?{name:i}:{...i},z="range"in f?f.range??null:$.range!==void 0?$.range:L.getStore()?.rangeRequest??null;return this.getFacadeRoot().driver.read({...$,range:z})}static list(i){return this.getFacadeRoot().driver.list(i)}static delete(){}}function P0(i){return Object.fromEntries(Object.entries(i).filter(([,f])=>{return f!==null&&f!==void 0}))}var $1=50;class Ji{fetcher;entries=new Map;settleListener=null;failListener=null;shellAt=null;settledBacklog=[];shipped=new Set;requestStartedAt=performance.now();renderStartedAt=null;discoveryHintsMuted=!1;constructor(i){this.fetcher=i}elapsed(){return Math.round(performance.now()-this.requestStartedAt)}keyFor(i,f){return[i,f].filter(($)=>$.length>0).join("?")}markRenderStart(){if(this.renderStartedAt===null)this.renderStartedAt=performance.now()}markShell(){if(this.shellAt===null)this.shellAt=this.elapsed()}summarize(i){let f=this.elapsed();return{shellAt:this.shellAt??f,settledAt:f,aborted:i,queries:Array.from(this.entries.values(),($)=>({path:$.path,variantKey:$.variantKey,startedAt:$.startedAt,settledAt:$.settledAt,status:$.status,source:$.source}))}}onQueryFail(i){this.failListener=i}muteDiscoveryHints(){this.discoveryHintsMuted=!0}maybeLogLateDiscovery(i){if(!i.lateBy||this.discoveryHintsMuted)return;if(i.status!=="resolved")return;if(Bun.env.NODE_ENV==="production")return;let f="";try{let U=JSON.stringify(i.data)?.length??0;f=U>=1024?`${(U/1024).toFixed(1)} kB`:`${U} B`}catch{f="an unserializable payload"}let $=(i.settledAt??0)-i.startedAt,z=i.variantKey?`, { search: ${JSON.stringify(Object.fromEntries(new URLSearchParams(i.variantKey)))} }`:"";console.warn(`[gemi] useQuery("${i.patternPath}") was discovered ${i.lateBy}ms into the `+`server render \u2014 under a suspended segment, so its fetch (${$}ms, resolved ${f}) could not overlap the others. It still streamed. If the query belongs on this route, \`Query.prefetch("${i.patternPath}"${z})\` in the view `+"handler starts it at request time \u2014 but note prefetched data is also re-fetched and "+`streamed into every client-side navigation payload for the route, even when the client already holds it, so weigh that bandwidth against the ${f}. If the data is only needed conditionally (a closed popover, a hidden tab), \`{ lazy: true }\` + \`trigger()\` avoids running it here at all. \`Query.noPrefetch()\` in the handler marks the omission intentional and silences this hint for the route.`)}read(i,f){return this.entries.get(this.keyFor(i,f))}ensure(i,f={},$="render"){let z=f.params??{},U=new URLSearchParams(P0(f.search??{}));U.delete("json"),U.sort();let C=h(i,z),j=U.toString(),O=this.keyFor(C,j),w=this.entries.get(O);if(w)return w;let W;if($==="render"&&this.renderStartedAt!==null){let x=Math.round(performance.now()-this.renderStartedAt);if(x>$1)W=x}let J,Y=new Promise((x)=>{J=x}),I={path:C,patternPath:i,variantKey:j,lateBy:W,status:"pending",promise:Y,source:$,startedAt:this.elapsed()};return this.entries.set(O,I),this.fetcher(i,z,U).then((x)=>{I.status="resolved",I.data=x},(x)=>{I.status="rejected",I.error=x}).then(()=>{if(I.settledAt=this.elapsed(),this.maybeLogLateDiscovery(I),I.status==="rejected"&&this.failListener)this.failListener(I);if(this.settleListener)this.settleListener(I);else this.settledBacklog.push(I);J()}),I}async allSettled(){let i=0;while(i!==this.entries.size)i=this.entries.size,await Promise.all(Array.from(this.entries.values(),(f)=>f.promise))}snapshotResolved(){let i={};for(let[f,$]of this.entries){if($.status!=="resolved")continue;this.shipped.add(f),i[$.path]??={},i[$.path][$.variantKey]=$.data}return i}onSettle(i){this.settleListener=($)=>{if(this.shipped.has(this.keyFor($.path,$.variantKey)))return;i($)};let f=this.settledBacklog;this.settledBacklog=[];for(let $ of f)this.settleListener($)}}class Ki extends Error{path;variantKey;status;body;constructor(i,f,$,z){super(typeof z?.message==="string"?z.message:`Request to /api${i} failed with status ${$}`);this.path=i;this.variantKey=f;this.status=$;this.body=z;this.name="QueryError"}}class si extends V{schema={email:{required:"Email is required",string:"Invalid email",email:"Invalid email"},password:{required:"Password is required"}}}class p0 extends V{schema={email:{required:"Email is required",email:"Invalid email"}}}class y0 extends V{schema={password:{required:"Password is required",password:"Invalid password"}}}class M extends R0{async me(){let i=await u.user();if(!i)throw new m0;return i}async verifyEmail(i=new V){let f=await i.input(),{userProvider:$}=X(b),z=await $.findUserByVerificationToken(f.get("token"));if(!z)return{email:null};return await $.verifyUser(z.email),{email:z.email}}async signInWithMagicLink(i=new V){let f=X(b),{userProvider:$}=f,z=i.search.get("token"),U=decodeURIComponent(i.search.get("email")).toLowerCase().trim(),C=null;try{C=await $.findUserMagicLinkToken({email:U,token:z})}catch(w){return console.log(w),{error:JSON.stringify(w)}}if(!C)return{error:"Invalid token"};await $.verifyUser(U),await $.deleteMagicLinkToken(U);let j=await f.createOrUpdateSession({email:U}),O=new URL(i.rawRequest.url);return i.ctx().setCookie("access_token",j.token,{expires:j.expiresAt,secure:!O.origin.includes("localhost"),httpOnly:!0}),await f.config.onSignIn(j,i.search.toJSON()),{session:j}}async signInWithPinV2(i=new V){let f=X(b),{userProvider:$}=f,z=await i.input(),{email:U,pin:C}=z.toJSON(),j=U.toLowerCase().trim();if(!await $.findUserMagicLinkToken({email:j,pin:C}))throw new p({pin:["Invalid pin"]});await $.deleteMagicLinkToken(j),await $.verifyUser(j);let w=await f.createOrUpdateSessionV2({email:j}),W=new URL(i.rawRequest.url);return i.ctx().setCookie("access_token",w.token,{expires:w.expiresAt,secure:!W.origin.includes("localhost"),httpOnly:!0}),await f.config.onSignIn(w,i.search.toJSON()),w}async signInWithPin(i=new V){let f=X(b),{userProvider:$}=f,z=await i.input(),{email:U,pin:C}=z.toJSON(),j=U.toLowerCase().trim();if(!await $.findUserMagicLinkToken({email:j,pin:C}))throw new p({pin:["Invalid pin"]});await $.deleteMagicLinkToken(j),await $.verifyUser(j);let w=await f.createOrUpdateSession({email:j}),W=new URL(i.rawRequest.url);return i.ctx().setCookie("access_token",w.token,{expires:w.expiresAt,secure:!W.origin.includes("localhost"),httpOnly:!0}),await f.config.onSignIn(w,i.search.toJSON()),{session:w}}async signInV2(i=new si){let f=new URL(i.rawRequest.url),$=await i.input(),{email:z,password:U}=$.toJSON(),C=z.toLowerCase().trim(),j=X(b),O=await j.userProvider.findUserByEmailAddress(C,j.config.verifyEmail);if(!O)throw new p({invalid_credentials:["Invalid credentials"]});if(!await j.config.verifyPassword(U,O.password))throw new p({invalid_credentials:["Invalid credentials"]});let W=await j.createOrUpdateSessionV2({email:O.email,id:O.id});i.ctx().setCookie("access_token",W.token,{expires:W.expiresAt,secure:!f.origin.includes("localhost"),httpOnly:!0}),await j.config.onSignIn(O,i.search.toJSON());let{password:J,...Y}=O;return Y}async signIn(i=new si){let f=await i.input(),{email:$,password:z}=f.toJSON(),U=$.toLowerCase().trim(),C=X(b),j=await C.userProvider.findUserByEmailAddress(U,C.config.verifyEmail);if(!j)throw new p({invalid_credentials:["Invalid credentials"]});if(!await C.config.verifyPassword(z,j.password))throw new p({invalid_credentials:["Invalid credentials"]});let w=await C.createOrUpdateSession({email:j.email,id:j.id}),W=new URL(i.rawRequest.url);i.ctx().setCookie("access_token",w.token,{expires:w.expiresAt,secure:!W.origin.includes("localhost"),httpOnly:!0}),await C.config.onSignIn(j,i.search.toJSON());let{password:J,...Y}=j;return Y}async signUp(){let i=X(b),{userProvider:f,config:$}=i,z=new $.signUpRequest,U=await z.input(),{email:C,password:j,name:O,invitationId:w}=U.toJSON(),W=C.toLowerCase().trim();if(await f.findUserByEmailAddress(W,!1))throw new p({email:["Email address already exists"]});let Y=await $.hashPassword(j),I=X(H).detectLocale(z),x;if(w)x=await f.findInvitation(w,W);let B,T="";if(x)B=await f.transaction(async()=>{await f.deleteInvitationById(w);let F=await f.createUser({email:W,name:O,password:Y,emailVerifiedAt:new Date,locale:I});return await f.createAccount({organizationId:x.organizationId,userId:F.id,organizationRole:x.role}),await $.onUserCreated(F),F});else T=await $.generateEmailVerificationToken(W),B=await f.transaction(async()=>{let F=await f.createUser({email:W,name:O,password:Y,verificationToken:T,locale:I});return await $.onUserCreated(F),F});return await $.onSignUp(B,T,z.search.toJSON()),B}async signOut(i=new V){let f=i.cookies.get("access_token"),$=await u.user(),{userProvider:z,config:U}=X(b);await z.deleteSession({token:f});let C=new URL(i.rawRequest.url);return i.ctx().setCookie("access_token","",{expires:new Date(0),secure:!C.origin.includes("localhost"),httpOnly:!0}),await U.onSignOut($),{}}async forgotPassword(i=new p0){let $=(await i.input()).get("email").toLowerCase().trim(),{userProvider:z,config:U}=X(b),C=await z.findUserByEmailAddress($,U.verifyEmail);if(!C)return{};let j=await U.generateForgotPasswordToken(C);return await z.createPasswordResetToken({user:C,token:j}),await U.onForgotPassword(C,j),{}}async resetPassword(i=new y0){let{userProvider:f,config:$}=X(b),z=await i.input(),{password:U,token:C}=z.toJSON(),j=await f.findPasswordResetToken({token:C});if(!j)throw new p({token:["Invalid token"]});if(Li.Instant.from(j.createdAt.toISOString()).add({hours:24}).until(Li.Now.instant()).sign>=0)throw new p({token:["Token expired"]});await f.deletePasswordResetToken({token:C});let w=await f.findUserByEmailAddress(j.user.email,$.verifyEmail);if(!w)throw new p({email:["User not found"]});let W=await $.hashPassword(U);return await f.updateUserPassword({id:w.id,password:W}),await f.deleteAllUserSessions(w.id),await $.onResetPassword(w),{}}async changePassword(i=new V){let{userProvider:f,config:$}=X(b),z=await u.user(),U=await i.input(),{oldPassword:C,newPassword:j}=U.toJSON(),{password:O}=await f.findUserByEmailAddress(z.email,$.verifyEmail);if(!await $.verifyPassword(C,O))throw new p({oldPassword:["Incorrect password"]});let W=await $.hashPassword(j);return await f.updateUserPassword({id:z.id,password:W}),await f.deleteAllUserSessions(z.id),{}}async oauthRedirect(i=new V){let{provider:f}=i.params,$=X(b).config.oauthProviders[f];if(!$)throw Error(`Invalid provider: ${f}`);return{destination:await $.getRedirectUrl(i)}}async oauthCallback(i=new V){let{provider:f}=i.params,$=X(b),{userProvider:z,config:U}=$,C=U.oauthProviders[f],{email:j,name:O}=await C.onCallback(i);if(!j)return console.error("Authentication error: No email returned from OAuth provider callback"),{session:null};let w=await z.findUserByEmailAddress(j,!1),W=X(H).detectLocale(i),J="signin";if(!w)J="signup",w=await z.transaction(async()=>{let x=await z.createUser({email:j,name:O,locale:W,emailVerifiedAt:new Date});return await z.createSocialAccount({provider:f,userId:x.id,email:j,username:O,providerId:"",expiresAt:new Date,accessToken:"",refreshToken:""}),await U.onUserCreated(x),x});let Y=await $.createOrUpdateSessionV2({email:w.email,id:w.id}),I=new URL(i.rawRequest.url);if(i.ctx().setCookie("access_token",Y.token,{secure:!I.origin.includes("localhost"),httpOnly:!0,expires:Y.expiresAt}),J==="signup")await U.onSignUp(w,"",i.search.toJSON());else await U.onSignIn(w,i.search.toJSON());return{session:Y}}async createMagicLinkToken(i=new V){let $=(await i.input()).get("email").toLowerCase().trim(),z=X(b),{user:U,pin:C,token:j}=await z.createMagicLinkToken($);if(U)return await z.config.onMagicLinkCreated(U,{email:$,pin:C,token:j}),{email:$};return{email:null}}}class q0 extends di{middlewares=["cache:private"];routes={"/:provider":this.view("_Redirect",[M,"oauthRedirect"]),"/:provider/callback":this.view("auth/OauthCallback",[M,"oauthCallback"])}}class ui extends di{middlewares=["cache:private"];routes={"/sign-in/magic-link":this.view("auth/MagicLinkSignIn",[M,"signInWithMagicLink"]),"/oauth":q0}}class li extends y{middlewares=["cache:private"];routes={"/sign-in":this.post(M,"signIn"),"/sign-in-v2":this.post(M,"signInV2"),"/sign-up":this.post(M,"signUp"),"/sign-out":this.post(M,"signOut"),"/forgot-password":this.post(M,"forgotPassword"),"/reset-password":this.post(M,"resetPassword"),"/change-password":this.post(M,"changePassword"),"/verify-email":this.post(M,"verifyEmail"),"/me":this.get(M,"me").middleware(["auth"]),"/magic-link":this.post(M,"createMagicLinkToken"),"/sign-in-with-pin":this.post(M,"signInWithPin"),"/sign-in-with-pin-v2":this.post(M,"signInWithPinV2")}}class oi extends y{middlewares=["cache:private,0,no-store"];routes={"/set-locale/:locale":this.get(async()=>{let f=new V().params.locale;return await X(H).onLocaleChange(f),{locale:f}}),"/translations/:locale/:scope*":this.get(async()=>{let i=new V,f=`/${i.params.scope??""}`,$=i.params.locale,z=X(H),U=$??z.detectLocale(i),C=z.getPageTranslations(U,f);return i.ctx().setCookie("i18n-locale",U,{expires:new Date(Date.now()+31536000000)}),{[U]:C}})}}class ti{}class ri extends ti{async resize(i,f){let{height:$,width:z,quality:U,fit:C}=f;return await(await Wi("The Sharp image optimization driver"))(i).resize(z>0?z:void 0,$>0?$:void 0,{fit:C}).webp({quality:U>0?U:80,force:!0}).toBuffer()}}function a$(i){return i}function n0(){return{driver:new ri}}class ai extends y{routes={"/resize":this.file(async()=>{let i=new V,f=new URL(i.rawRequest.url),$=f.searchParams.get("url"),z=Number(f.searchParams.get("w")),U=Number(f.searchParams.get("h")),C=f.searchParams.get("fit")??"cover",j=Number(f.searchParams.get("q"));if(!$)return new Response(JSON.stringify({error:"url query parameter is required"}),{headers:{"Content-Type":"application/json"},status:404});let w=`${$.startsWith("http")?"":`http://localhost:${process.env.PORT||5173}`}${$}`,W=await fetch(w);if(!W.ok)return new Response(JSON.stringify({error:"Image not found",info:w}),{headers:{"Content-Type":"application/json"},status:404});let J=Buffer.from(await W.arrayBuffer()),Y=await X(s0).resize(J,{height:U,width:z,fit:C,quality:j});W.headers.delete("Content-Type"),W.headers.delete("Content-Length");let I=new Headers(W.headers);return I.set("Content-Type","image/webp"),I.set("Content-Length",`${Y.byteLength}`),new Response(new Uint8Array(Y),{headers:I})})}}class s0{static token="image";driver;constructor(i={}){this.driver=i.driver??n0().driver}resize(i,f){return this.driver.resize(i,f)}}import{mkdir as ei,readdir as z1,access as U1}from"fs/promises";async function i0(i){try{return await U1(i),!0}catch{return!1}}class Vi{config;static token="log";writer;isReady=!1;logsDirPath=`${process.env.ROOT_DIR}/storage/logs`;flushTimeout;fileSize=0;writerSize=0;isCreatingFile=!1;bootPromise=null;currentLogFilePath;constructor(i){this.config=i}boot(){if(!this.bootPromise)this.bootPromise=this.createStorage().then(()=>{this.isReady=!0});return this.bootPromise}async createStorage(){if(!process.env.ROOT_DIR)return;if(!await i0(`${process.env.ROOT_DIR}/storage`))await ei(`${process.env.ROOT_DIR}/storage`);if(!await i0(this.logsDirPath))await ei(this.logsDirPath);await this.newLogFile()}async newLogFile(){if(!await i0(this.logsDirPath))await ei(this.logsDirPath);if(this.isCreatingFile=!0,this.currentLogFilePath){this.writer.flush(),this.writer.end(),this.writer=null;let $=new File([await Bun.file(this.currentLogFilePath).arrayBuffer()],this.currentLogFilePath.split("/").pop(),{type:"text/plain"});this.config.onLogFileClosed($),this.fileSize=0,this.writerSize=0}let f=(await z1(this.logsDirPath)).sort().reverse()[0];if(f){let $=Bun.file(`${this.logsDirPath}/${f}`);if($.size<this.config.maxFileSize)this.currentLogFilePath=`${this.logsDirPath}/${f}`,this.writer=$.writer(),this.writer.write(await $.text()),this.writer.write(`
|
|
3
|
+
`),this.writer.flush(),this.fileSize=$.size}if(!this.writer){let $=`${new Date(Date.now()).toISOString()}.log`.replaceAll(":","-");this.currentLogFilePath=`${this.logsDirPath}/${$}`;let z=Bun.file(`${this.logsDirPath}/${$}`);this.writer=z.writer(),this.fileSize=0,this.writerSize=0}this.isCreatingFile=!1}async log(i,f,$={}){if(!this.isReady)await this.boot();let z=L.getStore(),U={};if(z)U={url:z.req.rawRequest.url,method:z.req.rawRequest.method,headers:z.req.rawRequest.headers,body:z.req.rawRequest.body};let C={timestamp:new Date(Date.now()).toISOString(),env:Bun.env.NODE_ENV,level:i,message:f,metadata:{...U,...$}},j="";try{j=JSON.stringify(C)}catch(O){console.log("Error parsing log object",O)}this.writerSize+=j.length,this.fileSize+=j.length;try{this.writer.write(j),this.writer.write(`
|
|
4
|
+
`),this.config.onLogCreated(C),this.tryFlush()}catch(O){console.error("Error writing log",O)}}async tryFlush(){if(this.fileSize>this.config.maxFileSize){if(!this.isCreatingFile)await this.newLogFile()}if(this.writerSize>this.config.maxFileSize/2)await this.writer.flush(),this.writerSize=0,await this.newLogFile();else clearTimeout(this.flushTimeout),this.flushTimeout=setTimeout(async()=>{await this.writer.flush(),this.writerSize=0},100)}}class f0 extends y{middlewares=["cache:private,0"];routes={"/live":this.get(async()=>{let i=Bun.file(X(Vi).currentLogFilePath);return new Response(await i.text(),{headers:{"Content-Type":"text/plain"}})})}}function O1(i){let f=new Map;for(let $ of i)if(typeof $==="string"){let[z,U=""]=$.split(":");if(z.startsWith("-")){if(f.has(z.replace("-","")))f.delete(z.replace("-",""))}else f.set(z,U.split(",").filter(Boolean))}else f.set($,[]);return f}class Ti{config;static token="middleware";constructor(i){this.config=i}get aliases(){return this.config.aliases}runMiddleware(i){let f=new V;return Array.from(O1(i).entries()).map(([$,z])=>{if(typeof $==="string"){let U=this.aliases[$];if(U){let C=new U(f);return()=>C.run.call(C,...z)}}else{if(d0($)){let U=new $(f);return U.run.bind(U)}return $}}).filter(Boolean).reduce(($,z)=>{return async()=>{return{...await $(),...await z()}}},()=>Promise.resolve({}))()}}function X3(i){return i}function u0(){return{onRequestStart:()=>{},onRequestEnd:()=>{},onRequestFail:()=>{}}}function l0(){return{partialRendering:!0,onRequestStart:()=>{},onRequestEnd:()=>{},onRequestFail:()=>{},onStreamComplete:()=>{}}}function j1(i){return"run"in i}function C1(i){return Object.hasOwn(i,"get")||Object.hasOwn(i,"post")||Object.hasOwn(i,"put")||Object.hasOwn(i,"delete")}function W1(i){return Object.hasOwn(i,"first")&&Object.hasOwn(i,"second")}function w1(i){if("__brand"in i)return i.__brand==="ApiRouter";return!1}function J1(i){if("__internal_brand"in i)return i.__internal_brand==="ProxyHandler";return!1}function I1(i){if("__internal_brand"in i)return i.__internal_brand==="StreamHandler";return!1}function $0(i,f="",$=[]){let z={};function U(C,j,O,w){let W=C==="/"?"":C,J=f==="/"?"":f,Y=(`${J}${W}`===""?"/":`${J}${W}`).replaceAll("//","/");if(!z[Y])z[Y]={};z[Y][j.toUpperCase()]={exec:O,middleware:[...$,...w]},z[Y].OPTIONS={exec:()=>{let x=new V().ctx().headers;return new Response(null,{headers:x,status:204})},middleware:[]}}for(let[C,j]of Object.entries(i)){if(J1(j)){let O=j;for(let w of["GET","POST","PUT","DELETE"])U(C,w,O.run.bind(O),[]);continue}if(j1(j)){let O=j,w=O.method,W=O.middlewares,J=O.run.bind(O);if(U(C,w,J,W),I1(j))U(C,"HEAD",J,W)}if(C1(j))for(let[O,w]of Object.entries(j)){let W=w.middlewares,J=w.run.bind(w);U(C,O,J,W)}if(w1(j)){let O=new j,w=$0(O.routes,`${f}${C}`,O.middlewares);for(let[W,J]of Object.entries(w))z[W.replaceAll("//","/")]=J}if(W1(j)){let{first:O,second:w}=j;for(let[W,J]of Object.entries(O)){let Y=J.middlewares,I=J.run.bind(J),[x,...B]=C.split("/").reverse();if(!x.startsWith(":"))throw Error("Resource route must end with a dynamic segment");U(B.reverse().join("/"),W,I,Y)}for(let[W,J]of Object.entries(w)){let Y=J.middlewares,I=J.run.bind(J);U(C,W,I,Y)}}}return Object.fromEntries(Object.entries(z).sort(([C],[j])=>{let O=C.split("/").length+C.split(":").length,w=j.split("/").length+j.split(":").length;return O-w}))}function Mi(i){return i.replace(/\([^)]*\)/g,"").replace(/\/\//g,"/")}function z0(i,f){if(i==="/")return f;if(f==="/")return i;return`${i}${f}`}function U0(i){let f=Mi(i);return f.length>1?f.replace(/\/$/,""):f}function o0(i,f){return f.map(($)=>({...$,path:U0(z0(i,$.path))}))}function _i(i){let f={};for(let[$,z]of Object.entries(i))if("run"in z){let U=z;if("children"in U){let C=new U.children,j=_i(C.routes);for(let[O,{exec:w,middleware:W,segments:J}]of Object.entries(j)){let Y=z0($,O),I=(x)=>U.run.call(U,x,$);f[Mi(Y)]={exec:[I,...w],middleware:[...U.middlewares,...W],viewPath:U.viewPath,segments:[{path:U0($),viewPath:U.viewPath,...U.alwaysRuns?{alwaysRun:!0}:{}},...o0($,J)]}}}else{let C=(j)=>U.run.call(U,j,$);f[Mi($)]={exec:[C],middleware:U.middlewares,viewPath:U.viewPath,segments:[{path:U0($),viewPath:U.viewPath}]}}}else{let U=new z,C=_i(U.routes);for(let[j,{exec:O,middleware:w,viewPath:W,segments:J}]of Object.entries(C)){let Y=z0($,j);f[Mi(Y)]={exec:O,middleware:[...U.middlewares,...w],viewPath:W,segments:o0($,J)}}}return Object.fromEntries(Object.entries(f).sort(([$],[z])=>{let U=$.split("/").length+$.split(":").length,C=z.split("/").length+z.split(":").length;return U-C}))}var Y1=Object.defineProperty,Z=(i,f)=>Y1(i,"name",{value:f,configurable:!0}),Zi=class{type=3;name="";prefix="";value="";suffix="";modifier=3;constructor(i,f,$,z,U,C){this.type=i,this.name=f,this.prefix=$,this.value=z,this.suffix=U,this.modifier=C}hasCustomName(){return this.name!==""&&typeof this.name!="number"}};Z(Zi,"Part");var Z1=/[$_\p{ID_Start}]/u,x1=/[$_\u200C\u200D\p{ID_Continue}]/u,j0=".*";function t0(i,f){return(f?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(i)}Z(t0,"isASCII");function w0(i,f=!1){let $=[],z=0;for(;z<i.length;){let U=i[z],C=Z(function(j){if(!f)throw TypeError(j);$.push({type:"INVALID_CHAR",index:z,value:i[z++]})},"ErrorOrInvalid");if(U==="*"){$.push({type:"ASTERISK",index:z,value:i[z++]});continue}if(U==="+"||U==="?"){$.push({type:"OTHER_MODIFIER",index:z,value:i[z++]});continue}if(U==="\\"){$.push({type:"ESCAPED_CHAR",index:z++,value:i[z++]});continue}if(U==="{"){$.push({type:"OPEN",index:z,value:i[z++]});continue}if(U==="}"){$.push({type:"CLOSE",index:z,value:i[z++]});continue}if(U===":"){let j="",O=z+1;for(;O<i.length;){let w=i.substr(O,1);if(O===z+1&&Z1.test(w)||O!==z+1&&x1.test(w)){j+=i[O++];continue}break}if(!j){C(`Missing parameter name at ${z}`);continue}$.push({type:"NAME",index:z,value:j}),z=O;continue}if(U==="("){let j=1,O="",w=z+1,W=!1;if(i[w]==="?"){C(`Pattern cannot start with "?" at ${w}`);continue}for(;w<i.length;){if(!t0(i[w],!1)){C(`Invalid character '${i[w]}' at ${w}.`),W=!0;break}if(i[w]==="\\"){O+=i[w++]+i[w++];continue}if(i[w]===")"){if(j--,j===0){w++;break}}else if(i[w]==="("&&(j++,i[w+1]!=="?")){C(`Capturing groups are not allowed at ${w}`),W=!0;break}O+=i[w++]}if(W)continue;if(j){C(`Unbalanced pattern at ${z}`);continue}if(!O){C(`Missing pattern at ${z}`);continue}$.push({type:"REGEX",index:z,value:O}),z=w;continue}$.push({type:"CHAR",index:z,value:i[z++]})}return $.push({type:"END",index:z,value:""}),$}Z(w0,"lexer");function J0(i,f={}){let $=w0(i);f.delimiter??="/#?",f.prefixes??="./";let z=`[^${P(f.delimiter)}]+?`,U=[],C=0,j=0,O="",w=new Set,W=Z((g)=>{if(j<$.length&&$[j].type===g)return $[j++].value},"tryConsume"),J=Z(()=>W("OTHER_MODIFIER")??W("ASTERISK"),"tryConsumeModifier"),Y=Z((g)=>{let G=W(g);if(G!==void 0)return G;let{type:N,index:R}=$[j];throw TypeError(`Unexpected ${N} at ${R}, expected ${g}`)},"mustConsume"),I=Z(()=>{let g="",G;for(;G=W("CHAR")??W("ESCAPED_CHAR");)g+=G;return g},"consumeText"),x=Z((g)=>g,"DefaultEncodePart"),B=f.encodePart||x,T="",F=Z((g)=>{T+=g},"appendToPendingFixedValue"),D=Z(()=>{T.length&&(U.push(new Zi(3,"","",B(T),"",3)),T="")},"maybeAddPartFromPendingFixedValue"),n=Z((g,G,N,R,S)=>{let Q=3;switch(S){case"?":Q=1;break;case"*":Q=0;break;case"+":Q=2;break}if(!G&&!N&&Q===3){F(g);return}if(D(),!G&&!N){if(!g)return;U.push(new Zi(3,"","",B(g),"",Q));return}let K;N?N==="*"?K=j0:K=N:K=z;let c=2;K===z?(c=1,K=""):K===j0&&(c=0,K="");let _;if(G?_=G:N&&(_=C++),w.has(_))throw TypeError(`Duplicate name '${_}'.`);w.add(_),U.push(new Zi(c,_,B(g),K,B(R),Q))},"addPart");for(;j<$.length;){let g=W("CHAR"),G=W("NAME"),N=W("REGEX");if(!G&&!N&&(N=W("ASTERISK")),G||N){let S=g??"";f.prefixes.indexOf(S)===-1&&(F(S),S=""),D();let Q=J();n(S,G,N,"",Q);continue}let R=g??W("ESCAPED_CHAR");if(R){F(R);continue}if(W("OPEN")){let S=I(),Q=W("NAME"),K=W("REGEX");!Q&&!K&&(K=W("ASTERISK"));let c=I();Y("CLOSE");let _=J();n(S,Q,K,c,_);continue}D(),Y("END")}return U}Z(J0,"parse");function P(i){return i.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}Z(P,"escapeString");function C0(i){return i&&i.ignoreCase?"ui":"u"}Z(C0,"flags");function r0(i,f,$){return I0(J0(i,$),f,$)}Z(r0,"stringToRegexp");function e(i){switch(i){case 0:return"*";case 1:return"?";case 2:return"+";case 3:return""}}Z(e,"modifierToString");function I0(i,f,$={}){$.delimiter??="/#?",$.prefixes??="./",$.sensitive??=!1,$.strict??=!1,$.end??=!0,$.start??=!0,$.endsWith="";let z=$.start?"^":"";for(let O of i){if(O.type===3){O.modifier===3?z+=P(O.value):z+=`(?:${P(O.value)})${e(O.modifier)}`;continue}f&&f.push(O.name);let w=`[^${P($.delimiter)}]+?`,W=O.value;if(O.type===1?W=w:O.type===0&&(W=j0),!O.prefix.length&&!O.suffix.length){O.modifier===3||O.modifier===1?z+=`(${W})${e(O.modifier)}`:z+=`((?:${W})${e(O.modifier)})`;continue}if(O.modifier===3||O.modifier===1){z+=`(?:${P(O.prefix)}(${W})${P(O.suffix)})`,z+=e(O.modifier);continue}z+=`(?:${P(O.prefix)}`,z+=`((?:${W})(?:`,z+=P(O.suffix),z+=P(O.prefix),z+=`(?:${W}))*)${P(O.suffix)})`,O.modifier===0&&(z+="?")}let U=`[${P($.endsWith)}]|$`,C=`[${P($.delimiter)}]`;if($.end)return $.strict||(z+=`${C}?`),$.endsWith.length?z+=`(?=${U})`:z+="$",new RegExp(z,C0($));$.strict||(z+=`(?:${C}(?=${U}))?`);let j=!1;if(i.length){let O=i[i.length-1];O.type===3&&O.modifier===3&&(j=$.delimiter.indexOf(O)>-1)}return j||(z+=`(?=${C}|${U})`),new RegExp(z,C0($))}Z(I0,"partsToRegexp");var o={delimiter:"",prefixes:"",sensitive:!0,strict:!0},X1={delimiter:".",prefixes:"",sensitive:!0,strict:!0},g1={delimiter:"/",prefixes:"/",sensitive:!0,strict:!0};function a0(i,f){return i.length?i[0]==="/"?!0:!f||i.length<2?!1:(i[0]=="\\"||i[0]=="{")&&i[1]=="/":!1}Z(a0,"isAbsolutePathname");function Y0(i,f){return i.startsWith(f)?i.substring(f.length,i.length):i}Z(Y0,"maybeStripPrefix");function e0(i,f){return i.endsWith(f)?i.substr(0,i.length-f.length):i}Z(e0,"maybeStripSuffix");function Z0(i){return!i||i.length<2?!1:i[0]==="["||(i[0]==="\\"||i[0]==="{")&&i[1]==="["}Z(Z0,"treatAsIPv6Hostname");var ff=["ftp","file","http","https","ws","wss"];function x0(i){if(!i)return!0;for(let f of ff)if(i.test(f))return!0;return!1}Z(x0,"isSpecialScheme");function $f(i,f){if(i=Y0(i,"#"),f||i==="")return i;let $=new URL("https://example.com");return $.hash=i,$.hash?$.hash.substring(1,$.hash.length):""}Z($f,"canonicalizeHash");function zf(i,f){if(i=Y0(i,"?"),f||i==="")return i;let $=new URL("https://example.com");return $.search=i,$.search?$.search.substring(1,$.search.length):""}Z(zf,"canonicalizeSearch");function Uf(i,f){return f||i===""?i:Z0(i)?B0(i):g0(i)}Z(Uf,"canonicalizeHostname");function Of(i,f){if(f||i==="")return i;let $=new URL("https://example.com");return $.password=i,$.password}Z(Of,"canonicalizePassword");function jf(i,f){if(f||i==="")return i;let $=new URL("https://example.com");return $.username=i,$.username}Z(jf,"canonicalizeUsername");function Cf(i,f,$){if($||i==="")return i;if(f&&!ff.includes(f))return new URL(`${f}:${i}`).pathname;let z=i[0]=="/";return i=new URL(z?i:"/-"+i,"https://example.com").pathname,z||(i=i.substring(2,i.length)),i}Z(Cf,"canonicalizePathname");function Wf(i,f,$){return X0(f)===i&&(i=""),$||i===""?i:G0(i)}Z(Wf,"canonicalizePort");function wf(i,f){return i=e0(i,":"),f||i===""?i:Si(i)}Z(wf,"canonicalizeProtocol");function X0(i){switch(i){case"ws":case"http":return"80";case"wws":case"https":return"443";case"ftp":return"21";default:return""}}Z(X0,"defaultPortForProtocol");function Si(i){if(i==="")return i;if(/^[-+.A-Za-z0-9]*$/.test(i))return i.toLowerCase();throw TypeError(`Invalid protocol '${i}'.`)}Z(Si,"protocolEncodeCallback");function Jf(i){if(i==="")return i;let f=new URL("https://example.com");return f.username=i,f.username}Z(Jf,"usernameEncodeCallback");function If(i){if(i==="")return i;let f=new URL("https://example.com");return f.password=i,f.password}Z(If,"passwordEncodeCallback");function g0(i){if(i==="")return i;if(/[\t\n\r #%/:<>?@[\]^\\|]/g.test(i))throw TypeError(`Invalid hostname '${i}'`);let f=new URL("https://example.com");return f.hostname=i,f.hostname}Z(g0,"hostnameEncodeCallback");function B0(i){if(i==="")return i;if(/[^0-9a-fA-F[\]:]/g.test(i))throw TypeError(`Invalid IPv6 hostname '${i}'`);return i.toLowerCase()}Z(B0,"ipv6HostnameEncodeCallback");function G0(i){if(i===""||/^[0-9]*$/.test(i)&&parseInt(i)<=65535)return i;throw TypeError(`Invalid port '${i}'.`)}Z(G0,"portEncodeCallback");function Yf(i){if(i==="")return i;let f=new URL("https://example.com");return f.pathname=i[0]!=="/"?"/-"+i:i,i[0]!=="/"?f.pathname.substring(2,f.pathname.length):f.pathname}Z(Yf,"standardURLPathnameEncodeCallback");function Zf(i){return i===""?i:new URL(`data:${i}`).pathname}Z(Zf,"pathURLPathnameEncodeCallback");function xf(i){if(i==="")return i;let f=new URL("https://example.com");return f.search=i,f.search.substring(1,f.search.length)}Z(xf,"searchEncodeCallback");function Xf(i){if(i==="")return i;let f=new URL("https://example.com");return f.hash=i,f.hash.substring(1,f.hash.length)}Z(Xf,"hashEncodeCallback");var gf=class{#O;#z=[];#f={};#i=0;#U=1;#w=0;#C=0;#Z=0;#x=0;#X=!1;constructor(i){this.#O=i}get result(){return this.#f}parse(){for(this.#z=w0(this.#O,!0);this.#i<this.#z.length;this.#i+=this.#U){if(this.#U=1,this.#z[this.#i].type==="END"){if(this.#C===0){this.#K(),this.#J()?this.#$(9,1):this.#I()?this.#$(8,1):this.#$(7,0);continue}else if(this.#C===2){this.#Y(5);continue}this.#$(10,0);break}if(this.#Z>0)if(this.#F())this.#Z-=1;else continue;if(this.#A()){this.#Z+=1;continue}switch(this.#C){case 0:this.#L()&&this.#Y(1);break;case 1:if(this.#L()){this.#b();let i=7,f=1;this.#T()?(i=2,f=3):this.#X&&(i=2),this.#$(i,f)}break;case 2:this.#B()?this.#Y(3):(this.#G()||this.#I()||this.#J())&&this.#Y(5);break;case 3:this.#N()?this.#$(4,1):this.#B()&&this.#$(5,1);break;case 4:this.#B()&&this.#$(5,1);break;case 5:this.#E()?this.#x+=1:this.#D()&&(this.#x-=1),this.#Q()&&!this.#x?this.#$(6,1):this.#G()?this.#$(7,0):this.#I()?this.#$(8,1):this.#J()&&this.#$(9,1);break;case 6:this.#G()?this.#$(7,0):this.#I()?this.#$(8,1):this.#J()&&this.#$(9,1);break;case 7:this.#I()?this.#$(8,1):this.#J()&&this.#$(9,1);break;case 8:this.#J()&&this.#$(9,1);break;case 9:break;case 10:break}}this.#f.hostname!==void 0&&this.#f.port===void 0&&(this.#f.port="")}#$(i,f){switch(this.#C){case 0:break;case 1:this.#f.protocol=this.#W();break;case 2:break;case 3:this.#f.username=this.#W();break;case 4:this.#f.password=this.#W();break;case 5:this.#f.hostname=this.#W();break;case 6:this.#f.port=this.#W();break;case 7:this.#f.pathname=this.#W();break;case 8:this.#f.search=this.#W();break;case 9:this.#f.hash=this.#W();break;case 10:break}this.#C!==0&&i!==10&&([1,2,3,4].includes(this.#C)&&[6,7,8,9].includes(i)&&(this.#f.hostname??=""),[1,2,3,4,5,6].includes(this.#C)&&[8,9].includes(i)&&(this.#f.pathname??=this.#X?"/":""),[1,2,3,4,5,6,7].includes(this.#C)&&i===9&&(this.#f.search??="")),this.#V(i,f)}#V(i,f){this.#C=i,this.#w=this.#i+f,this.#i+=f,this.#U=0}#K(){this.#i=this.#w,this.#U=0}#Y(i){this.#K(),this.#C=i}#g(i){return i<0&&(i=this.#z.length-i),i<this.#z.length?this.#z[i]:this.#z[this.#z.length-1]}#j(i,f){let $=this.#g(i);return $.value===f&&($.type==="CHAR"||$.type==="ESCAPED_CHAR"||$.type==="INVALID_CHAR")}#L(){return this.#j(this.#i,":")}#T(){return this.#j(this.#i+1,"/")&&this.#j(this.#i+2,"/")}#B(){return this.#j(this.#i,"@")}#N(){return this.#j(this.#i,":")}#Q(){return this.#j(this.#i,":")}#G(){return this.#j(this.#i,"/")}#I(){if(this.#j(this.#i,"?"))return!0;if(this.#z[this.#i].value!=="?")return!1;let i=this.#g(this.#i-1);return i.type!=="NAME"&&i.type!=="REGEX"&&i.type!=="CLOSE"&&i.type!=="ASTERISK"}#J(){return this.#j(this.#i,"#")}#A(){return this.#z[this.#i].type=="OPEN"}#F(){return this.#z[this.#i].type=="CLOSE"}#E(){return this.#j(this.#i,"[")}#D(){return this.#j(this.#i,"]")}#W(){let i=this.#z[this.#i],f=this.#g(this.#w).index;return this.#O.substring(f,i.index)}#b(){let i={};Object.assign(i,o),i.encodePart=Si;let f=r0(this.#W(),void 0,i);this.#X=x0(f)}};Z(gf,"Parser");var O0=["protocol","username","password","hostname","port","pathname","search","hash"],l="*";function W0(i,f){if(typeof i!="string")throw TypeError("parameter 1 is not of type 'string'.");let $=new URL(i,f);return{protocol:$.protocol.substring(0,$.protocol.length-1),username:$.username,password:$.password,hostname:$.hostname,port:$.port,pathname:$.pathname,search:$.search!==""?$.search.substring(1,$.search.length):void 0,hash:$.hash!==""?$.hash.substring(1,$.hash.length):void 0}}Z(W0,"extractValues");function q(i,f){return f?Yi(i):i}Z(q,"processBaseURLString");function Ii(i,f,$){let z;if(typeof f.baseURL=="string")try{z=new URL(f.baseURL),f.protocol===void 0&&(i.protocol=q(z.protocol.substring(0,z.protocol.length-1),$)),!$&&f.protocol===void 0&&f.hostname===void 0&&f.port===void 0&&f.username===void 0&&(i.username=q(z.username,$)),!$&&f.protocol===void 0&&f.hostname===void 0&&f.port===void 0&&f.username===void 0&&f.password===void 0&&(i.password=q(z.password,$)),f.protocol===void 0&&f.hostname===void 0&&(i.hostname=q(z.hostname,$)),f.protocol===void 0&&f.hostname===void 0&&f.port===void 0&&(i.port=q(z.port,$)),f.protocol===void 0&&f.hostname===void 0&&f.port===void 0&&f.pathname===void 0&&(i.pathname=q(z.pathname,$)),f.protocol===void 0&&f.hostname===void 0&&f.port===void 0&&f.pathname===void 0&&f.search===void 0&&(i.search=q(z.search.substring(1,z.search.length),$)),f.protocol===void 0&&f.hostname===void 0&&f.port===void 0&&f.pathname===void 0&&f.search===void 0&&f.hash===void 0&&(i.hash=q(z.hash.substring(1,z.hash.length),$))}catch{throw TypeError(`invalid baseURL '${f.baseURL}'.`)}if(typeof f.protocol=="string"&&(i.protocol=wf(f.protocol,$)),typeof f.username=="string"&&(i.username=jf(f.username,$)),typeof f.password=="string"&&(i.password=Of(f.password,$)),typeof f.hostname=="string"&&(i.hostname=Uf(f.hostname,$)),typeof f.port=="string"&&(i.port=Wf(f.port,i.protocol,$)),typeof f.pathname=="string"){if(i.pathname=f.pathname,z&&!a0(i.pathname,$)){let U=z.pathname.lastIndexOf("/");U>=0&&(i.pathname=q(z.pathname.substring(0,U+1),$)+i.pathname)}i.pathname=Cf(i.pathname,i.protocol,$)}return typeof f.search=="string"&&(i.search=zf(f.search,$)),typeof f.hash=="string"&&(i.hash=$f(f.hash,$)),i}Z(Ii,"applyInit");function Yi(i){return i.replace(/([+*?:{}()\\])/g,"\\$1")}Z(Yi,"escapePatternString");function Bf(i){return i.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}Z(Bf,"escapeRegexpString");function Gf(i,f){f.delimiter??="/#?",f.prefixes??="./",f.sensitive??=!1,f.strict??=!1,f.end??=!0,f.start??=!0,f.endsWith="";let $=".*",z=`[^${Bf(f.delimiter)}]+?`,U=/[$_\u200C\u200D\p{ID_Continue}]/u,C="";for(let j=0;j<i.length;++j){let O=i[j];if(O.type===3){if(O.modifier===3){C+=Yi(O.value);continue}C+=`{${Yi(O.value)}}${e(O.modifier)}`;continue}let w=O.hasCustomName(),W=!!O.suffix.length||!!O.prefix.length&&(O.prefix.length!==1||!f.prefixes.includes(O.prefix)),J=j>0?i[j-1]:null,Y=j<i.length-1?i[j+1]:null;if(!W&&w&&O.type===1&&O.modifier===3&&Y&&!Y.prefix.length&&!Y.suffix.length)if(Y.type===3){let I=Y.value.length>0?Y.value[0]:"";W=U.test(I)}else W=!Y.hasCustomName();if(!W&&!O.prefix.length&&J&&J.type===3){let I=J.value[J.value.length-1];W=f.prefixes.includes(I)}W&&(C+="{"),C+=Yi(O.prefix),w&&(C+=`:${O.name}`),O.type===2?C+=`(${O.value})`:O.type===1?w||(C+=`(${z})`):O.type===0&&(!w&&(!J||J.type===3||J.modifier!==3||W||O.prefix!=="")?C+="*":C+=`(${$})`),O.type===1&&w&&O.suffix.length&&U.test(O.suffix[0])&&(C+="\\"),C+=Yi(O.suffix),W&&(C+="}"),O.modifier!==3&&(C+=e(O.modifier))}return C}Z(Gf,"partsToPattern");var K0=class{#O;#z={};#f={};#i={};#U={};#w=!1;constructor(i={},f,$){try{let z;if(typeof f=="string"?z=f:$=f,typeof i=="string"){let O=new gf(i);if(O.parse(),i=O.result,z===void 0&&typeof i.protocol!="string")throw TypeError("A base URL must be provided for a relative constructor string.");i.baseURL=z}else{if(!i||typeof i!="object")throw TypeError("parameter 1 is not of type 'string' and cannot convert to dictionary.");if(z)throw TypeError("parameter 1 is not of type 'string'.")}typeof $>"u"&&($={ignoreCase:!1});let U={ignoreCase:$.ignoreCase===!0},C={pathname:l,protocol:l,username:l,password:l,hostname:l,port:l,search:l,hash:l};this.#O=Ii(C,i,!0),X0(this.#O.protocol)===this.#O.port&&(this.#O.port="");let j;for(j of O0){if(!(j in this.#O))continue;let O={},w=this.#O[j];switch(this.#f[j]=[],j){case"protocol":Object.assign(O,o),O.encodePart=Si;break;case"username":Object.assign(O,o),O.encodePart=Jf;break;case"password":Object.assign(O,o),O.encodePart=If;break;case"hostname":Object.assign(O,X1),Z0(w)?O.encodePart=B0:O.encodePart=g0;break;case"port":Object.assign(O,o),O.encodePart=G0;break;case"pathname":x0(this.#z.protocol)?(Object.assign(O,g1,U),O.encodePart=Yf):(Object.assign(O,o,U),O.encodePart=Zf);break;case"search":Object.assign(O,o,U),O.encodePart=xf;break;case"hash":Object.assign(O,o,U),O.encodePart=Xf;break}try{this.#U[j]=J0(w,O),this.#z[j]=I0(this.#U[j],this.#f[j],O),this.#i[j]=Gf(this.#U[j],O),this.#w=this.#w||this.#U[j].some((W)=>W.type===2)}catch{throw TypeError(`invalid ${j} pattern '${this.#O[j]}'.`)}}}catch(z){throw TypeError(`Failed to construct 'URLPattern': ${z.message}`)}}get[Symbol.toStringTag](){return"URLPattern"}test(i={},f){let $={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof i!="string"&&f)throw TypeError("parameter 1 is not of type 'string'.");if(typeof i>"u")return!1;try{typeof i=="object"?$=Ii($,i,!1):$=Ii($,W0(i,f),!1)}catch{return!1}let z;for(z of O0)if(!this.#z[z].exec($[z]))return!1;return!0}exec(i={},f){let $={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof i!="string"&&f)throw TypeError("parameter 1 is not of type 'string'.");if(typeof i>"u")return;try{typeof i=="object"?$=Ii($,i,!1):$=Ii($,W0(i,f),!1)}catch{return null}let z={};f?z.inputs=[i,f]:z.inputs=[i];let U;for(U of O0){let C=this.#z[U].exec($[U]);if(!C)return null;let j={};for(let[O,w]of this.#f[U].entries())if(typeof w=="string"||typeof w=="number"){let W=C[O+1];j[w]=W}z[U]={input:$[U]??"",groups:j}}return z}static compareComponent(i,f,$){let z=Z((O,w)=>{for(let W of["type","modifier","prefix","value","suffix"]){if(O[W]<w[W])return-1;if(O[W]===w[W])continue;return 1}return 0},"comparePart"),U=new Zi(3,"","","","",3),C=new Zi(0,"","","","",3),j=Z((O,w)=>{let W=0;for(;W<Math.min(O.length,w.length);++W){let J=z(O[W],w[W]);if(J)return J}return O.length===w.length?0:z(O[W]??U,w[W]??U)},"comparePartList");return!f.#i[i]&&!$.#i[i]?0:f.#i[i]&&!$.#i[i]?j(f.#U[i],[C]):!f.#i[i]&&$.#i[i]?j([C],$.#U[i]):j(f.#U[i],$.#U[i])}get protocol(){return this.#i.protocol}get username(){return this.#i.username}get password(){return this.#i.password}get hostname(){return this.#i.hostname}get port(){return this.#i.port}get pathname(){return this.#i.pathname}get search(){return this.#i.search}get hash(){return this.#i.hash}get hasRegExpGroups(){return this.#w}};Z(K0,"URLPattern");function Hi(i,f){for(let[$,z]of Object.entries(i)){let U=new K0({pathname:$});if(U.test({pathname:f}))return{routePath:$,params:U.exec({pathname:f})?.pathname.groups??{},route:z}}return null}var ii={startIndex:0,carriedViews:[]};function Kf(i,f){let $=h(i.path,f);return $.includes("*")?null:$}function B1(i,f){if(!i)return ii;if(i.search!==f.search)return ii;let $=Math.min(i.segments.length,f.segments.length-1),z=0;while(z<$){let U=i.segments[z],C=f.segments[z];if(C.alwaysRun)break;if(U.viewPath!==C.viewPath)break;let j=Kf(U,i.params),O=Kf(C,f.params);if(j===null||O===null||j!==O)break;z++}if(z===0)return ii;return{startIndex:z,carriedViews:f.segments.slice(0,z).map(({viewPath:U})=>U)}}function G1(i,f){let[,$,...z]=i.split("/");if(!f.includes($))return i;let U=`/${z.join("/")}`;return U==="/"?"/":U.replace(/\/$/,"")}function Lf(i){let{flatViewRoutes:f,supportedLocales:$,from:z,origin:U,to:C}=i;if(!z)return ii;let j;try{j=new URL(z,U)}catch{return ii}if(j.origin!==U)return ii;let O=Hi(f,G1(j.pathname,$));if(!O)return ii;return B1({segments:O.route.segments,params:O.params,search:j.search},C)}var L0="x-gemi-from";import{createElement as Xi,Fragment as H1}from"react";function K1(i){return i.replace(/\([^)]*\)/g,"").replace(/\/\//g,"/")}function vi(i){let f={};for(let[$,z]of Object.entries(i))if("run"in z){let U=z.viewPath;if("children"in z){f[$]=[U];let C=new z.children,j=vi(C.routes);for(let[O,w]of Object.entries(j)){let W=$==="/"?O:`${$}${O}`,J=O==="/"&&$!=="/"?$:W;f[J]=[U,...w]}if(f[$].length===1)delete f[$]}else f[$]=[U]}else{let U=new z,C=vi(U.routes);for(let[j,O]of Object.entries(C)){let w=$==="/"?j:`${$}${j}`,W=j==="/"&&$!=="/"?$:w;f[W]=O}}return Object.fromEntries(Object.entries(f).map(([$,z])=>[K1($),z]))}function ki(i){let f=[];for(let[$,z]of Object.entries(i))if("run"in z){let U=z.viewPath;if(U==="__")continue;if(U==="REDIRECT")continue;if(U==="FILE")continue;if("children"in z){let C=new z.children,j=ki(C.routes);f.push([U,j])}else f.push([U,[]])}else{let U=new z,C=ki(U.routes);f.push(...C)}return f}function V0(i){let f=[];for(let[$,z]of i)f.push($,...V0(z).flat());return Array.from(new Set(f))}class xi extends E{static getFacadeAccessor(){return Vi}static debug(i,f){this.getFacadeRoot().log("debug",i,f)}static info(i,f){this.getFacadeRoot().log("info",i,f)}static notice(i,f){this.getFacadeRoot().log("notice",i,f)}static warning(i,f){this.getFacadeRoot().log("warning",i,f)}static error(i,f){this.getFacadeRoot().log("error",i,f)}static critical(i,f){this.getFacadeRoot().log("critical",i,f)}static alert(i,f){this.getFacadeRoot().log("alert",i,f)}static emergency(i,f){this.getFacadeRoot().log("emergency",i,f)}}class T0{id;static token="kernel.id";constructor(i=crypto.randomUUID()){this.id=i}}var L1=new Set(["script","style","textarea","title","xmp","iframe","noembed","noframes","noscript"]),V1=new Set(["svg","math"]);function Vf(i){return i===32||i===9||i===10||i===12||i===13}function Tf(i){return i>=65&&i<=90||i>=97&&i<=122}function hi(i){return i>=65&&i<=90?i+32:i}function Nf(){let i="data",f="",$=!1,z="",U=0,C=0,j=!1,O=0,w=0,W=()=>i==="data"&&O===0&&w===0,J=()=>{if(!$&&L1.has(f)){i="rawText",z=`</${f}`,U=0,f="";return}if(i="data",f==="template")if($)O=Math.max(0,O-1);else O+=1;else if(V1.has(f)){if($)w=Math.max(0,w-1);else if(!j)w+=1}f=""},Y=(I)=>{switch(i){case"data":if(I===60)i="tagOpen";return;case"tagOpen":if(I===33)i="bang",C=0;else if(I===47)i="endTagOpen";else if(Tf(I))i="tagName",$=!1,j=!1,f=String.fromCharCode(hi(I));else if(I===63)i="bogus";else if(I===60)i="tagOpen";else i="data";return;case"endTagOpen":if(Tf(I))i="tagName",$=!0,j=!1,f=String.fromCharCode(hi(I));else if(I===62)i="data";else i="bogus";return;case"tagName":if(Vf(I)||I===47)i="inTag",j=I===47;else if(I===62)J();else f+=String.fromCharCode(hi(I));return;case"inTag":if(I===62){J();return}if(j=I===47,I===34)i="attrDouble";else if(I===39)i="attrSingle";return;case"attrDouble":if(I===34)i="inTag";j=!1;return;case"attrSingle":if(I===39)i="inTag";j=!1;return;case"bang":if(I===45){if(C+=1,C===2)i="comment",C=0}else if(I===62)i="data";else i="bogus";return;case"bogus":if(I===62)i="data";return;case"comment":if(I===45)C=C<2?C+1:2;else if(I===62&&C>=2)i="data",C=0;else C=0;return;case"rawText":{if(U<z.length){if(hi(I)===z.charCodeAt(U))U+=1;else U=I===60?1:0;return}if(I===62)i="data",f="";else if(Vf(I)||I===47)i="inTag",f="";else U=I===60?1:0;return}}};return{scanToInsertionPoint(I){for(let x=0;x<I.length;x++){if(W())return x;Y(I[x])}return I.length},write(I){for(let x=0;x<I.length;x++)Y(I[x])},isSafe:W}}function Qf(i){return JSON.stringify(i).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function T1(i){return`<script>(self.__GEMI_STREAM__=self.__GEMI_STREAM__||[]).push(${Qf([i.path,i.variantKey,i.data])})</script>`}function N1(i){return`<script>(self.__GEMI_DICT__=self.__GEMI_DICT__||[]).push(${Qf([i.id,i.locale,i.strings])})</script>`}function N0(i,f,$={},z){let U=new TextEncoder,C=[],j=!1,O=!1,w=()=>{if(O)return;O=!0,$.onClose?.()};f.onSettle((B)=>{if(B.status!=="resolved")return;C.push(T1(B))}),z?.onUse((B)=>{C.push(N1(B))});let W=i.getReader(),J=Nf(),Y=(B,T)=>{B.enqueue(T),$.onChunk?.(T)},I=(B)=>{while(C.length>0){let T=U.encode(C.shift());J.write(T),Y(B,T)}},x=(B,T)=>{if(C.length===0){J.write(T),Y(B,T);return}let F=J.scanToInsertionPoint(T);if(F>0)Y(B,T.subarray(0,F));if(J.isSafe())I(B);let D=T.subarray(F);if(D.length>0)J.write(D),Y(B,D)};return new ReadableStream({async pull(B){let T;try{T=await W.read()}catch(n){throw w(),n}let{done:F,value:D}=T;if(F){I(B),B.close(),w();return}if(!j){if(j=!0,J.write(D),Y(B,D),$.onShell?.(),J.isSafe())I(B);return}x(B,D)},cancel(B){return w(),W.cancel(B)}})}var Q1=/bot|crawler|spider|crawling|slurp|bingpreview|mediapartners|headless|lighthouse|prerender|facebookexternalhit|whatsapp|telegram|discord|twitterbot|linkedinbot/i;function Af(i){if(!i)return!1;return Q1.test(i)}var A1=new Set(["script","style","template","title"]),F1=/\shidden([\s=/]|$)/i,E1=/"[^"]*"|'[^']*'/g;function D1(i){let f=0,$=0,z=0,U=0;while(U<i.length){let C=i.indexOf("<",U),j=C===-1?i.length:C;if(j>U){let Y=i.slice(U,j).replace(/\s+/g,"").length;if(z>0)$+=Y;else f+=Y}if(C===-1)break;if(i.startsWith("<!--",C)){let Y=i.indexOf("-->",C+4);U=Y===-1?i.length:Y+3;continue}let O=i.indexOf(">",C);if(O===-1)break;let w=i.slice(C+1,O);U=O+1;let W=/^\/?([a-zA-Z][a-zA-Z0-9-]*)/.exec(w)?.[1]?.toLowerCase();if(!W)continue;let J=w.startsWith("/");if(!J&&A1.has(W)&&!w.endsWith("/")){let Y=i.indexOf(`</${W}`,U);U=Y===-1?i.length:Y;continue}if(W!=="div")continue;if(J){if(z>0)z-=1}else if(z>0)z+=1;else if(F1.test(w.replace(E1,'""')))z=1}return{shellChars:f,deferredChars:$}}var b1=1000,M1=64;function _1(i){return i>=1000?`${(i/1000).toFixed(1)} kB`:`${i} chars`}function S1(i,f){if(f.deferredChars<b1)return null;if(f.shellChars>=M1)return null;return`[gemi] GET ${i} streams ${_1(f.deferredChars)} of its `+`content behind reveal scripts \u2014 a no-JS visitor sees ~${f.shellChars} chars. If this is a public/content route, add "no-stream" to its middleware.`}function Ff(i=console.warn){let f=new Set;return{shouldObserve($){return!f.has($)},report($,z){if(f.has($))return;let U=S1($,z);if(!U)return;f.add($),i(U)}}}function Ef(){let i=new TextDecoder,f="";return{onChunk($){f+=i.decode($,{stream:!0})},measure(){return f+=i.decode(),D1(f)}}}function Df(i,f,$=1e4,z){let U=new TextEncoder,C=()=>{};return new ReadableStream({start(j){let O=!1,w=(J)=>{if(O)return;O=!0,clearTimeout(W);try{j.close()}catch{}z?.({aborted:J})};C=w,j.enqueue(U.encode(`${JSON.stringify(i)}
|
|
5
|
+
`)),f.onSettle((J)=>{if(O||J.status!=="resolved")return;j.enqueue(U.encode(`${JSON.stringify([J.path,J.variantKey,J.data])}
|
|
6
|
+
`))});let W=setTimeout(()=>w(!0),$);f.allSettled().then(()=>w(!1),()=>w(!1))},cancel(){C(!1)}})}var v1=async()=>(await import("./chunk-4n0xx0y6.js")).default,Q0,A0=async(...i)=>{return Q0??=import("react-dom/server.browser").catch((f)=>{throw Q0=void 0,f}),(await Q0).renderToReadableStream(...i)},k1=1e4,h1=`
|
|
7
|
+
!function(){try{var d=document.documentElement,c=d.classList;
|
|
8
|
+
c.remove('light','dark');
|
|
9
|
+
var e=localStorage.getItem('theme');
|
|
10
|
+
if('system'===e||(!e&&'system'===defaultTheme)){
|
|
11
|
+
var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);
|
|
12
|
+
if(m.media!==t||m.matches){d.style.colorScheme='dark';c.add('dark')}
|
|
13
|
+
else{d.style.colorScheme='light';c.add('light')}
|
|
14
|
+
}else if(e){
|
|
15
|
+
c.add(e||'')
|
|
16
|
+
}}catch(e){}}()
|
|
17
|
+
`;async function c1(i,f,$){let z=`${$==="italic"?"italic,":""}wght@${$==="italic"?"1,":""}${f}`,j=(await(await fetch(`https://fonts.googleapis.com/css2?family=${i}:${z}&display=swap`,{headers:{"User-Agent":"Mozilla/5.0 Firefox/1.0"}})).text()).match(/url\(([^)]+)\)/)?.[1];return await fetch(j).then((O)=>O.arrayBuffer())}var F0="/assets";function P1(i){let f=i.filter(($)=>$===F0||$.startsWith(`${F0}/`));if(f.length>0){let $=f.length>1;throw Error(`View route path${$?"s":""} ${f.map((z)=>`"${z}"`).join(", ")} use${$?"":"s"} the reserved "${F0}" prefix. The client build output is served from there before the router runs, so the route would never match. Mount it somewhere else.`)}}class E0{static token="router.view";flatViewRoutes={};routeManifest={};clientRouteManifest={};componentTree=[];flatComponentTree=[];root=null;shellReporter=Ff();preloadCache=new WeakMap;hooks;partialRendering;constructor(i){let f=l0();this.partialRendering=i.partialRendering??f.partialRendering,this.hooks={onRequestStart:i.onRequestStart??f.onRequestStart,onRequestEnd:i.onRequestEnd??f.onRequestEnd,onRequestFail:i.onRequestFail??f.onRequestFail,onStreamComplete:i.onStreamComplete??f.onStreamComplete};let $={"/":i.rootRouter,"/auth":ui};this.flatViewRoutes=_i($),P1(Object.keys(this.flatViewRoutes)),this.routeManifest=vi($),this.clientRouteManifest=Object.fromEntries(Object.entries(this.routeManifest).filter(([,z])=>z.at(-1)!=="FILE")),this.componentTree=ki($),this.flatComponentTree=V0(this.componentTree),this.root=i.root}async onRequestEnd(i){if(!i.cookies.has("session_id"))i.ctx().setCookie("session_id",Bun.randomUUIDv7(),{httpOnly:!0,secure:Bun.env.NODE_ENV==="production",sameSite:"Strict",expires:new Date(Date.now()+31536000000)});return await this.hooks.onRequestEnd(i)}completeStream(i,f){let $=(z)=>{xi.error(z?.message??'Error in "onStreamComplete" event handler',{err:JSON.stringify(z)})};try{Promise.resolve(this.hooks.onStreamComplete(i,f)).catch($)}catch(z){$(z)}}modulePreloadLinks(i){let{clientEntry:f,modulePreloadManifest:$,views:z,routeKey:U}=i,C=()=>{let w=new Set(f?.preload??[]);for(let W of z)for(let J of $?.[W]??[])w.add(J);return[...w].map((W)=>Xi("link",{key:`modulepreload:${W}`,rel:"modulepreload",href:W}))};if(!$)return C();let j=this.preloadCache.get($);if(!j||j.clientEntry!==f)j={clientEntry:f,byRoute:new Map},this.preloadCache.set($,j);let O=j.byRoute.get(U);if(!O)O=C(),j.byRoute.set(U,O);return O}async render(i){let{req:f,runInRequestScope:$,csrfTokenHMAC:z,currentPathName:U,headers:C,i18n:j,params:O,pathname:w,serverQueries:W,userAgent:J,noStream:Y,url:I,user:x,viewData:B,breadcrumbs:T,urlLocaleSegment:F,meta:D,isOgRequest:n,appId:g}=i,G=w.replace(`/${F}`,""),N={kind:"view",data:{meta:D,pageData:{[G]:B},__csrf:z.toString("base64"),prefetchedData:{},i18n:j,auth:{user:x},routeManifest:this.clientRouteManifest,breadcrumbs:T,router:{urlLocaleSegment:F,pathname:U,params:O,currentPath:w,searchParams:I.search,is404:!U?!0:!1},appId:g,componentTree:[["404",[]],...this.componentTree]},head:{}},R=this.root,S=this.routeManifest[U];return async(Q)=>{let{bootstrapModules:K=[],loaders:c,getStyles:_,viewImportMap:d,cssManifest:fi,ogMap:t,viewModules:v,clientEntry:$i,modulePreloadManifest:zi}=Q,Bi=$i?[]:K,r=(m)=>[m,`window.loaders=${c}`,...$i?[`import(${JSON.stringify($i.module)}).catch(function(e){setTimeout(function(){throw e})})`]:[]].join(";");if(n){let m=null,Oi=null;for(let ji of S??[])if(typeof t[ji]==="function")Oi=ji,m=t[ji];if(!m)return new Response("Not found",{status:404});let nf=Object.values(N.data.pageData)[0];try{await A0(Xi(m,nf[Oi]),{onError:()=>{}})}catch(ji){let{fonts:sf,...df}=ji.satoriOptions,uf=await Promise.all(sf.map((Ei)=>{return c1(Ei.name,Ei.weight,Ei.style).then((af)=>({...Ei,data:af}))})),S0=new Headers(C);S0.set("Content-Type","image/png");let[lf,of]=await Promise.all([v1(),Wi("Rendering an OG image")]),tf=await lf(ji.jsx,{...df,fonts:uf}),rf=await of(Buffer.from(tf)).png({compressionLevel:0,effort:10}).toBuffer();return new Response(new Uint8Array(rf),{headers:S0})}return new Response("data")}N.data.cssManifest=fi,N.data.modulePreloadManifest=zi??{};let Gi=this.modulePreloadLinks({clientEntry:$i,modulePreloadManifest:zi,views:S??["404"],routeKey:U??"404"}),Fi=await _(S);N.data.prefetchedData=W.snapshotResolved(),W.markRenderStart();let Ui=new AbortController,A=setTimeout(()=>Ui.abort(),k1),k=Af(J)||Y,a=Bun.env.NODE_ENV!=="production"&&!k&&U&&this.shellReporter.shouldObserve(U)?Ef():null,_0=_f();try{let m=await A0(Xi(H1,{children:[...Gi,...Fi,Xi("script",{key:"theme-script",dangerouslySetInnerHTML:{__html:h1}}),Xi(R,{data:N.data,viewImportMap:d,viewModules:v,serverQueries:W,dictionarySink:_0,key:"root"})]}),{bootstrapScriptContent:r(`window.__GEMI_DATA__ = ${JSON.stringify(N.data)}`),bootstrapModules:Bi,signal:Ui.signal,...k?{progressiveChunkSize:Number.MAX_SAFE_INTEGER}:{},onError(Oi){if(Bun.env.NODE_ENV!=="production")console.error(Oi)}});if(m.allReady.catch(()=>{}).finally(()=>clearTimeout(A)),k)await m.allReady.catch(()=>{});return new Response(N0(m,W,{onShell:k?void 0:()=>W.markShell(),onChunk:a?.onChunk,onClose:()=>$(()=>{if(this.completeStream(f,W.summarize(Ui.signal.aborted)),a)this.shellReporter.report(U,a.measure())})},_0),{status:!U?404:200,headers:C})}catch(m){clearTimeout(A);let Oi=await A0(Xi("div"),{bootstrapScriptContent:r(`window.error= ${JSON.stringify(m.message)}; window.stack_trace=${JSON.stringify(m.stack)};window.__GEMI_DATA__ = ${JSON.stringify(N.data)}`),bootstrapModules:Bun.env.NODE_ENV==="development"?["/render-error.js",...Bi]:Bi});return new Response(N0(Oi,W,{onClose:()=>$(()=>this.completeStream(f,W.summarize(Ui.signal.aborted)))}),{status:!U?404:200,headers:C})}}}async handleViewRequest(i){let f=new URL(i.url),$=f.pathname.endsWith(".json"),z=f.pathname.endsWith(".og"),U=f.pathname.replace(".json","").replace(".og",""),[,C,...j]=U.split("/"),O=`/${j.join("/")}`,w=null,W=null,J=X(H);if(!J.supportedLocales.includes(C))O=U;else w=C,W=C;if(J.isLocaleAware&&!z){let g=X(H).detectLocale(new V(i,{},"view",O));if(W===null&&g!==J.defaultLocale){let G=f.pathname==="/"?"":f.pathname;return new Response("",{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:`/${g}${G}${f.search}`}})}}O=O.replace("//","/");let I=[],x=[],B=null,T={},F=null,D=!1;try{let g=Hi(this.flatViewRoutes,O);if(g){if(B=g.routePath,T=g.params,I=g.route.exec,x=g.route.middleware,D=x.includes("no-stream"),$&&this.partialRendering){let G=i.headers.get(L0),N=Lf({flatViewRoutes:this.flatViewRoutes,supportedLocales:X(H).supportedLocales,from:G,origin:f.origin,to:{segments:g.route.segments,params:T,search:f.search}});if(N.startIndex>0)I=I.slice(N.startIndex),F={from:G,carriedViews:N.carriedViews}}}}catch(g){throw g}let n=new V(i,T,"view",B);return this.hooks.onRequestStart(n),await L.run(n,async()=>{let g=null,G=L.getStore(),N=gi.getStore(),R=(K)=>gi.run(N,()=>L.runWith(G,K));G.serverQueries=new Ji(Qi(i));let S=new Set;if(G.serverQueries.onQueryFail((K)=>{S.add(K.error);try{R(()=>Promise.resolve(this.hooks.onRequestFail(Q,K.error)).catch(()=>{}))}catch{}}),W){let K=W.replaceAll("/","");Ci.setLocale(K)}else Ci.setLocale();let Q=G.req;try{await X(Ti).runMiddleware(x);let K=X(H),c=K.isEnabled,_=K.isLocaleAware,d={};if(_){let A=null;if(W)A=W.replaceAll("/",""),G.setLocale(A);else A=K.detectLocale(new V(i,Q.params)),G.setLocale(A);let k=c?K.getPageTranslations(A,Q.routePath):{};d={supportedLocales:K.supportedLocales,currentLocale:A,dictionary:{[A]:k},defaultLocale:K.defaultLocale}}await Mf(d.currentLocale??"");let fi=await Promise.all(I.map((A)=>A(Q))),t=G.cookies,v=G.headers;g={data:fi,cookies:t,headers:v,user:G.user,prefetchedData:G.serverQueries.snapshotResolved(),currentPathName:Q.routePath,params:Q.params,urlLocaleSegment:w,meta:G.renderMeta(),appId:X(T0).id};let{params:$i,currentPathName:zi,user:Bi}=g,r={},Gi={};for(let A of fi??[]){let[k,a]=Object.entries(A)?.[0]??[];if(!k||!a)continue;Gi[`${k}:${zi}`]=a.breadcrumb,r[k]=a}let Fi=r.FILE;if(Fi){for(let A of t)v.append("Set-Cookie",A.toString());try{await this.onRequestEnd(Q)}catch(A){xi.error(A?.message??'Error in "onRequestEnd" event handler',{err:JSON.stringify(A)})}return await bf(Fi,v)}if($){v.set("Content-Type","application/x-ndjson; charset=utf-8"),v.append("Vary",L0),t.forEach((k)=>v.append("Set-Cookie",k.toString())),await this.hooks.onRequestEnd(Q);let A={meta:F&&!G.metadata.touched?null:g.meta,data:{[O]:r},breadcrumbs:Gi,prefetchedData:G.serverQueries.snapshotResolved(),i18n:d,is404:!zi,appId:g.appId,partial:F};return new Response(Df(A,G.serverQueries,void 0,({aborted:k})=>R(()=>this.completeStream(Q,G.serverQueries.summarize(k)))),{headers:v})}if(v.set("Content-Type","text/html; charset=utf-8"),!D)v.append("Vary","User-Agent");for(let A of t)v.append("Set-Cookie",A.toString());let Ui=Bun.CSRF.generate(process.env.SECRET);v.append("Set-Cookie",`csrf_token=${Ui}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now()+86400000).toUTCString()}`);try{await this.onRequestEnd(Q)}catch(A){xi.error(A?.message??'Error in "onRequestEnd" event handler',{err:JSON.stringify(A)})}return await this.render({req:Q,runInRequestScope:R,csrfTokenHMAC:Buffer.from(""),currentPathName:zi,headers:v,i18n:d,params:$i,pathname:f.pathname,serverQueries:G.serverQueries,userAgent:i.headers.get("user-agent"),noStream:D,url:f,user:Bi,viewData:r,breadcrumbs:Gi,urlLocaleSegment:w,meta:g.meta,appId:g.appId,isOgRequest:z})}catch(K){if(K.kind===Ni)if($){let{status:c=400,data:_,directive:d,headers:fi}=K.payload.api;return new Response(JSON.stringify({data:_,directive:d}),{headers:fi,status:c})}else{let{status:c=400,error:_}=K.payload.view;return new Response(_?.message,{...K.payload.view,status:c})}if(!S.has(K))this.hooks.onRequestFail(Q,K);throw K}})}}class Sf extends y{routes={"/api-routes":this.get(()=>{let i=X(ci).flatRoutes,f=[];for(let[$,z]of Object.entries(i))for(let[U,C]of Object.entries(z)){let{exec:j,middleware:O}=C;f.push({path:$,method:U,middleware:O})}return f}),"/view-routes":this.get(()=>{let i=X(E0).flatViewRoutes,f=[];for(let[$,{middleware:z,viewPath:U}]of Object.entries(i))f.push({path:$,method:"GET",viewPath:U,middleware:z});return f})}}class ci{static token="router.api";flatRoutes={};onRequestStart;onRequestEnd;onRequestFail;constructor(i){let f=u0();this.onRequestStart=i.onRequestStart??f.onRequestStart,this.onRequestEnd=i.onRequestEnd??f.onRequestEnd,this.onRequestFail=i.onRequestFail??f.onRequestFail,this.flatRoutes=$0({"/":i.rootRouter,"/auth":li,"/__gemi__/services/i18n":oi,"/__gemi__/services/logs":f0,"/__gemi__/services/image":ai,"/__gemi__/debug":Sf})}getRouteHandlerAndParams(i){let $=new URL(i.url).pathname.replace("/api",""),z={},U;for(let[C]of Object.entries(this.flatRoutes))try{let j=new URLPattern({pathname:C});if(j.test({pathname:$})){U=C,z=j.exec({pathname:$})?.pathname.groups;break}}catch(j){console.error(j)}return{params:z,path:U}}async runRouteMiddleware(i,f){let z=this.flatRoutes[i][f.rawRequest.method].middleware;try{await X(Ti).runMiddleware(z)}catch(U){if(U.kind===Ni){if(f.rawRequest.url.includes("/api")){let{status:C=400,data:j,headers:O}=U.payload.api;return new Response(JSON.stringify(j),{status:C,headers:{"Content-Type":"application/json",...O}})}}else throw this.onRequestFail(f,U),console.error(U),U}}async getRouteData(i){let f=this.flatRoutes[i],$=L.getStore(),z=f[$.req.rawRequest.method].exec??(()=>Promise.resolve({})),U={};try{U=await z()}catch(C){if(C.kind===Ni){let{status:j=400,data:O,headers:w}=C.payload.api;return new Response(JSON.stringify(O),{status:j,headers:{"Content-Type":"application/json",...w}})}throw this.onRequestFail($.req,C),console.error(C),C}return U}mergeContextIntoResponse(i,f,$){let z=[];f?.forEach((j,O)=>z.push([O,j]));let U=[...typeof f?.getSetCookie==="function"?f.getSetCookie():[],...Array.from($??[])];if(z.length===0&&U.length===0)return i;let C=(j)=>{for(let[O,w]of z){if(O.toLowerCase()==="set-cookie")continue;if(!j.has(O))j.set(O,w)}for(let O of U)j.append("Set-Cookie",O)};try{return C(i.headers),i}catch{let j=new Headers(i.headers);return C(j),new Response(i.body,{status:i.status,statusText:i.statusText,headers:j})}}async handleApiRequest(i){let{params:f,path:$}=this.getRouteHandlerAndParams(i),z=this.flatRoutes[$];if(!z||!z[i.method])return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404});let U=new V(i,f,"api",$);if(!i.url.includes("/__gemi__"))this.onRequestStart(U);return await L.run(U,async()=>{let C=L.getStore(),j=X(H);if(j.isEnabled){let Y=j.detectLocale(U);C.setLocale(Y)}C.setRequest(U);let O=await this.runRouteMiddleware($,U);if(O instanceof Response)return O;let w=await this.getRouteData($),W=C.headers,J=C.cookies;if(w instanceof Response){let Y=this.mergeContextIntoResponse(w,W,J);if(!i.url.includes("/__gemi__"))this.onRequestEnd(U);return C.destroy(),Y}if(W.set("Content-Type","application/json"),J.forEach((Y)=>W.append("Set-Cookie",Y.toString())),!i.url.includes("/__gemi__"))this.onRequestEnd(U);return C.destroy(),new Response(JSON.stringify(w),{headers:W})})}}function Qi(i){let f=gi.getStore();return($,z,U)=>{let C=new URL(i.url).origin,j=[h($,z),U.toString()].filter((W)=>W.length>0).join("?"),O=new Request(`${C}/${j}`,{headers:i.headers}),w=new V(O,z);return gi.run(f,()=>L.run(w,async()=>{try{let W=await X(ci).getRouteData($);if(W instanceof Response){let J=await W.json().catch(()=>null);if(!W.ok)throw new Ki(h($,z),U.toString(),W.status,J);return J}return W}catch(W){if(W instanceof Ki)throw W;let J=new Ki(h($,z),U.toString(),500,{message:W instanceof Error?W.message:String(W)});throw J.cause=W,J}}))}}class Pi{static ensure(i,f={}){let $=L.getStore();if($.req.kind==="api")throw Error("Query.prefetch() cannot be called from an API request");return $.serverQueries??=new Ji(Qi($.req.rawRequest)),$.serverQueries.ensure(i,f,"prefetch")}static async instant(i,...f){let $=Pi.ensure(i,f[0]);if(await $.promise,$.status==="rejected")throw $.error;return $.data}static prefetch(i,...f){Pi.ensure(i,f[0])}static noPrefetch(){let i=L.getStore();if(i.req.kind==="api")throw Error("Query.noPrefetch() cannot be called from an API request");i.serverQueries??=new Ji(Qi(i.req.rawRequest)),i.serverQueries.muteDiscoveryHints()}}class Hf{static absolute(i,...f){return`${process.env.HOST_NAME}${h(String(i),f[0]??{})}`}static relative(i,...f){return h(String(i),f[0]??{})}}class vf{name="Meta";static description(i){L.getStore().metadata.description(i)}static title(i){L.getStore().metadata.title(i)}static openGraph(i){L.getStore().metadata.openGraph(i)}}var R1={set(i,f,$){L.getStore().setCookie(i,f,$)},setIfAbsent(i,f,$){if(L.getStore().req.cookies.has(i))return!1;return L.getStore().setCookie(i,f,$),!0},delete(i){L.getStore().deleteCookie(i)}};class D0{config;static token="redis";instance=null;constructor(i={}){this.config=i}get client(){return this.instance??=new(m1())(this.config.url,this.config.options)}set client(i){this.instance=i}}function m1(){let i=globalThis.Bun?.RedisClient;if(typeof i!=="function")throw Error("Redis requires Bun's built-in Redis client, which this runtime does not provide. Run the app under Bun, or bind your own client for the 'redis' token.");return i}class s extends E{static getFacadeAccessor(){return D0}static get client(){return this.getFacadeRoot().client}static get(i){return s.client.get(i)}static set(i,f){return s.client.set(i,f)}static del(...i){return s.client.del(...i)}static exists(i){return s.client.exists(i)}static incr(i){return s.client.incr(i)}static expire(i,f){return s.client.expire(i,f)}static ttl(i){return s.client.ttl(i)}}class hf extends E{static getFacadeAccessor(){return kf}static consume(i,f={}){return this.getFacadeRoot().consume(i,f)}}class Ri{bound;constructor(i){this.bound=i}get name(){return this.bound??b0()}get sql(){return this.connection().sql}get dialect(){return this.connection().dialect}async query(i){return await this.run(i,"query")}async execute(i){let f=await this.run(i,"execute");return Number(f?.count??0)}async transaction(i){let f=this.name,$=this.connection(f);return mf($.sql,(z)=>Pf(f,()=>i(z)),{slowTransactionThreshold:$.config.slowTransactionThreshold,connection:f})}run(i,f){let $=this.connection(),{text:z,values:U}=yf(i,pf($.dialect),f);return(this.handle()??$.sql).unsafe(z,U)}handle(){let i=cf();if(i===void 0)return;return b0()===this.name?i:void 0}connection(i=this.name){return Rf(i),X(M0).connection(i)}}var Ai=new Ri;class qf extends E{static getFacadeAccessor(){return M0}static connection(i){return new Ri(i)}static get sql(){return Ai.sql}static get dialect(){return Ai.dialect}static query(i){return Ai.query(i)}static execute(i){return Ai.execute(i)}static transaction(i){return Ai.transaction(i)}static close(){return this.getFacadeRoot().close()}}export{E as Mb,mi as Nb,Di as Ob,u as Pb,Ci as Qb,yi as Rb,qi as Sb,x$ as Tb,h0 as Ub,ni as Vb,c0 as Wb,ti as Xb,ri as Yb,a$ as Zb,n0 as _b,s0 as $b,Vi as ac,Ti as bc,X3 as cc,u0 as dc,l0 as ec,K0 as fc,xi as gc,T0 as hc,F0 as ic,E0 as jc,ci as kc,Pi as lc,Hf as mc,vf as nc,R1 as oc,D0 as pc,s as qc,hf as rc,Ri as sc,qf as tc};
|
|
18
|
+
|
|
19
|
+
//# debugId=3396CEBCB819DEB064756E2164756E21
|