gemi 0.54.4 → 0.55.0

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.
Files changed (160) hide show
  1. package/dist/app/index.js +1 -1
  2. package/dist/broadcasting/index.js +1 -1
  3. package/dist/bun/plugin.js +1 -1
  4. package/dist/bun/preload.js +1 -1
  5. package/dist/{chunk-0weeq0ke.js → chunk-01am9k5v.js} +2 -2
  6. package/dist/{chunk-0weeq0ke.js.map → chunk-01am9k5v.js.map} +1 -1
  7. package/dist/{chunk-h3b0v3bz.js → chunk-02gdzs5t.js} +1 -1
  8. package/dist/{chunk-wxepr09t.js → chunk-1pwwrpa3.js} +2 -2
  9. package/dist/{chunk-wxepr09t.js.map → chunk-1pwwrpa3.js.map} +1 -1
  10. package/dist/{chunk-nakfv7pa.js → chunk-1zfsgffv.js} +3 -3
  11. package/dist/{chunk-nakfv7pa.js.map → chunk-1zfsgffv.js.map} +1 -1
  12. package/dist/{chunk-97rcmaps.js → chunk-31kcf7dq.js} +2 -2
  13. package/dist/{chunk-97rcmaps.js.map → chunk-31kcf7dq.js.map} +1 -1
  14. package/dist/{chunk-4n0xx0y6.js → chunk-33wjsw4r.js} +3 -3
  15. package/dist/{chunk-4n0xx0y6.js.map → chunk-33wjsw4r.js.map} +1 -1
  16. package/dist/{chunk-6c5xkj0z.js → chunk-3e88tyee.js} +2 -2
  17. package/dist/{chunk-6c5xkj0z.js.map → chunk-3e88tyee.js.map} +1 -1
  18. package/dist/{chunk-xxw0gz4q.js → chunk-3y75q5a2.js} +2 -2
  19. package/dist/{chunk-xxw0gz4q.js.map → chunk-3y75q5a2.js.map} +1 -1
  20. package/dist/{chunk-796pyrm9.js → chunk-4qwwy968.js} +2 -2
  21. package/dist/{chunk-796pyrm9.js.map → chunk-4qwwy968.js.map} +1 -1
  22. package/dist/{chunk-1sh6kqjn.js → chunk-4t80js0n.js} +3 -3
  23. package/dist/{chunk-1sh6kqjn.js.map → chunk-4t80js0n.js.map} +1 -1
  24. package/dist/{chunk-1312a1t4.js → chunk-4xx78ba9.js} +2 -2
  25. package/dist/{chunk-1312a1t4.js.map → chunk-4xx78ba9.js.map} +1 -1
  26. package/dist/{chunk-g5tj10p8.js → chunk-4yafsffx.js} +2 -2
  27. package/dist/{chunk-g5tj10p8.js.map → chunk-4yafsffx.js.map} +1 -1
  28. package/dist/{chunk-3bw1jk21.js → chunk-62723jyy.js} +1 -1
  29. package/dist/{chunk-95t14jaw.js → chunk-62ke19q4.js} +4 -4
  30. package/dist/{chunk-95t14jaw.js.map → chunk-62ke19q4.js.map} +1 -1
  31. package/dist/{chunk-004bcmsa.js → chunk-64s1pzz1.js} +2 -2
  32. package/dist/{chunk-004bcmsa.js.map → chunk-64s1pzz1.js.map} +1 -1
  33. package/dist/{chunk-r07s2p1z.js → chunk-699z6d8y.js} +3 -3
  34. package/dist/{chunk-r07s2p1z.js.map → chunk-699z6d8y.js.map} +1 -1
  35. package/dist/{chunk-v0t5dejz.js → chunk-77xj0dgc.js} +2 -2
  36. package/dist/{chunk-v0t5dejz.js.map → chunk-77xj0dgc.js.map} +1 -1
  37. package/dist/{chunk-zacf5ph0.js → chunk-8k1zqrvh.js} +2 -2
  38. package/dist/{chunk-zacf5ph0.js.map → chunk-8k1zqrvh.js.map} +1 -1
  39. package/dist/{chunk-x1g40y59.js → chunk-98a576s9.js} +3 -3
  40. package/dist/{chunk-x1g40y59.js.map → chunk-98a576s9.js.map} +1 -1
  41. package/dist/{chunk-ke6tsnx1.js → chunk-9c89q2mz.js} +2 -2
  42. package/dist/{chunk-ke6tsnx1.js.map → chunk-9c89q2mz.js.map} +1 -1
  43. package/dist/{chunk-jq46m17j.js → chunk-9r0sb4zn.js} +2 -2
  44. package/dist/{chunk-jq46m17j.js.map → chunk-9r0sb4zn.js.map} +1 -1
  45. package/dist/{chunk-v094r7tz.js → chunk-9r1atj8w.js} +2 -2
  46. package/dist/{chunk-v094r7tz.js.map → chunk-9r1atj8w.js.map} +1 -1
  47. package/dist/chunk-b50zmz3t.js +5 -0
  48. package/dist/{chunk-cbqrkfjm.js.map → chunk-b50zmz3t.js.map} +1 -1
  49. package/dist/{chunk-kckva77b.js → chunk-cn2r5jfj.js} +2 -2
  50. package/dist/{chunk-kckva77b.js.map → chunk-cn2r5jfj.js.map} +1 -1
  51. package/dist/{chunk-nncwsdzz.js → chunk-ct274qts.js} +2 -2
  52. package/dist/{chunk-nncwsdzz.js.map → chunk-ct274qts.js.map} +1 -1
  53. package/dist/{chunk-dngwctnt.js → chunk-d36dfqxw.js} +3 -3
  54. package/dist/{chunk-dngwctnt.js.map → chunk-d36dfqxw.js.map} +1 -1
  55. package/dist/{chunk-c6qxw3v9.js → chunk-dzzmqv0j.js} +2 -2
  56. package/dist/{chunk-c6qxw3v9.js.map → chunk-dzzmqv0j.js.map} +1 -1
  57. package/dist/chunk-enhkf60v.js +9 -0
  58. package/dist/chunk-enhkf60v.js.map +12 -0
  59. package/dist/{chunk-n1tkn8gv.js → chunk-eqrd31ye.js} +2 -2
  60. package/dist/{chunk-n1tkn8gv.js.map → chunk-eqrd31ye.js.map} +1 -1
  61. package/dist/{chunk-k14dmqwh.js → chunk-f9mfw82d.js} +3 -3
  62. package/dist/{chunk-k14dmqwh.js.map → chunk-f9mfw82d.js.map} +1 -1
  63. package/dist/{chunk-vj1vt6qs.js → chunk-g30q4n5y.js} +2 -2
  64. package/dist/{chunk-vj1vt6qs.js.map → chunk-g30q4n5y.js.map} +1 -1
  65. package/dist/{chunk-9wrbnr38.js → chunk-gasdfwva.js} +2 -2
  66. package/dist/{chunk-9wrbnr38.js.map → chunk-gasdfwva.js.map} +1 -1
  67. package/dist/{chunk-9agd5hjw.js → chunk-gzdf2025.js} +2 -2
  68. package/dist/{chunk-9agd5hjw.js.map → chunk-gzdf2025.js.map} +1 -1
  69. package/dist/{chunk-yd6aqeyc.js → chunk-h3mwgbg7.js} +2 -2
  70. package/dist/{chunk-yd6aqeyc.js.map → chunk-h3mwgbg7.js.map} +1 -1
  71. package/dist/{chunk-6j1z2cqt.js → chunk-hs5v3eqj.js} +2 -2
  72. package/dist/{chunk-6j1z2cqt.js.map → chunk-hs5v3eqj.js.map} +1 -1
  73. package/dist/{chunk-x67dm5ef.js → chunk-javjeayw.js} +2 -2
  74. package/dist/{chunk-x67dm5ef.js.map → chunk-javjeayw.js.map} +1 -1
  75. package/dist/{chunk-2zyharpa.js → chunk-jdj7k3r9.js} +2 -2
  76. package/dist/{chunk-2zyharpa.js.map → chunk-jdj7k3r9.js.map} +1 -1
  77. package/dist/{chunk-xska2hx3.js → chunk-kgg1eqne.js} +2 -2
  78. package/dist/{chunk-xska2hx3.js.map → chunk-kgg1eqne.js.map} +1 -1
  79. package/dist/{chunk-7f5ad759.js → chunk-kgmr9qxx.js} +2 -2
  80. package/dist/{chunk-7f5ad759.js.map → chunk-kgmr9qxx.js.map} +1 -1
  81. package/dist/{chunk-k5jvafmh.js → chunk-kry5vwam.js} +3 -3
  82. package/dist/{chunk-k5jvafmh.js.map → chunk-kry5vwam.js.map} +1 -1
  83. package/dist/{chunk-b5mc1st9.js → chunk-m0ggfy1m.js} +2 -2
  84. package/dist/{chunk-b5mc1st9.js.map → chunk-m0ggfy1m.js.map} +1 -1
  85. package/dist/{chunk-bzhtymvv.js → chunk-npg72mez.js} +2 -2
  86. package/dist/{chunk-bzhtymvv.js.map → chunk-npg72mez.js.map} +1 -1
  87. package/dist/{chunk-876p591d.js → chunk-pvdbrt4z.js} +3 -3
  88. package/dist/{chunk-876p591d.js.map → chunk-pvdbrt4z.js.map} +1 -1
  89. package/dist/{chunk-e3mggavt.js → chunk-q0waxxz5.js} +2 -2
  90. package/dist/{chunk-e3mggavt.js.map → chunk-q0waxxz5.js.map} +1 -1
  91. package/dist/{chunk-x5w7es67.js → chunk-rgb69nh1.js} +2 -2
  92. package/dist/{chunk-x5w7es67.js.map → chunk-rgb69nh1.js.map} +1 -1
  93. package/dist/{chunk-kz5zcw6s.js → chunk-rjxdc0xh.js} +1 -1
  94. package/dist/{chunk-a1h4paj1.js → chunk-rsdg619q.js} +2 -2
  95. package/dist/{chunk-a1h4paj1.js.map → chunk-rsdg619q.js.map} +1 -1
  96. package/dist/{chunk-j15ewww3.js → chunk-tja0c815.js} +2 -2
  97. package/dist/{chunk-j15ewww3.js.map → chunk-tja0c815.js.map} +1 -1
  98. package/dist/{chunk-3njyfdj5.js → chunk-tmnhkphv.js} +4 -4
  99. package/dist/{chunk-3njyfdj5.js.map → chunk-tmnhkphv.js.map} +1 -1
  100. package/dist/{chunk-w6gb9gc5.js → chunk-v06qcyj5.js} +3 -3
  101. package/dist/{chunk-w6gb9gc5.js.map → chunk-v06qcyj5.js.map} +1 -1
  102. package/dist/{chunk-1psx59jt.js → chunk-v6v6sem5.js} +2 -2
  103. package/dist/{chunk-1psx59jt.js.map → chunk-v6v6sem5.js.map} +1 -1
  104. package/dist/{chunk-85av4ncy.js → chunk-vkngcrzq.js} +2 -2
  105. package/dist/{chunk-85av4ncy.js.map → chunk-vkngcrzq.js.map} +1 -1
  106. package/dist/{chunk-nph4mm6k.js → chunk-w9k9s4wh.js} +2 -2
  107. package/dist/{chunk-nph4mm6k.js.map → chunk-w9k9s4wh.js.map} +1 -1
  108. package/dist/{chunk-teyphwr0.js → chunk-wgpa04jb.js} +2 -2
  109. package/dist/{chunk-teyphwr0.js.map → chunk-wgpa04jb.js.map} +1 -1
  110. package/dist/{chunk-6yy92txx.js → chunk-x14sk95v.js} +3 -3
  111. package/dist/{chunk-6yy92txx.js.map → chunk-x14sk95v.js.map} +1 -1
  112. package/dist/{chunk-2s75crt8.js → chunk-xjy5apyr.js} +2 -2
  113. package/dist/{chunk-2s75crt8.js.map → chunk-xjy5apyr.js.map} +1 -1
  114. package/dist/{chunk-35j03vge.js → chunk-y9fp58bg.js} +2 -2
  115. package/dist/{chunk-35j03vge.js.map → chunk-y9fp58bg.js.map} +1 -1
  116. package/dist/{chunk-hg9y6ctt.js → chunk-yf8kxjr2.js} +2 -2
  117. package/dist/{chunk-hg9y6ctt.js.map → chunk-yf8kxjr2.js.map} +1 -1
  118. package/dist/config/index.js +1 -1
  119. package/dist/console/run.js +2 -2
  120. package/dist/console/run.js.map +1 -1
  121. package/dist/container/index.js +2 -2
  122. package/dist/container/index.js.map +1 -1
  123. package/dist/database/index.js +2 -2
  124. package/dist/database/index.js.map +1 -1
  125. package/dist/email/index.js +2 -2
  126. package/dist/email/index.js.map +1 -1
  127. package/dist/facades/index.js +2 -2
  128. package/dist/facades/index.js.map +1 -1
  129. package/dist/foundation/index.js +2 -2
  130. package/dist/foundation/index.js.map +1 -1
  131. package/dist/http/index.js +2 -2
  132. package/dist/http/index.js.map +1 -1
  133. package/dist/i18n/dictionaryRuntime.js +2 -2
  134. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  135. package/dist/i18n/index.js +2 -2
  136. package/dist/i18n/index.js.map +1 -1
  137. package/dist/kernel/index.js +2 -2
  138. package/dist/kernel/index.js.map +1 -1
  139. package/dist/orm/compile/relation-count.d.ts.map +1 -1
  140. package/dist/orm/corpus.d.ts.map +1 -1
  141. package/dist/orm/index.js +3 -3
  142. package/dist/orm/index.js.map +4 -4
  143. package/dist/orm/policy.d.ts.map +1 -1
  144. package/dist/orm/relation-filters.d.ts +24 -0
  145. package/dist/orm/relation-filters.d.ts.map +1 -1
  146. package/dist/orm/types.d.ts +48 -3
  147. package/dist/orm/types.d.ts.map +1 -1
  148. package/dist/server/index.js +2 -2
  149. package/dist/server/index.js.map +1 -1
  150. package/dist/services/index.js +2 -2
  151. package/dist/services/index.js.map +1 -1
  152. package/dist/support/index.js +2 -2
  153. package/dist/support/index.js.map +1 -1
  154. package/package.json +1 -1
  155. package/dist/chunk-cbqrkfjm.js +0 -5
  156. package/dist/chunk-j3tzdcz7.js +0 -9
  157. package/dist/chunk-j3tzdcz7.js.map +0 -12
  158. /package/dist/{chunk-h3b0v3bz.js.map → chunk-02gdzs5t.js.map} +0 -0
  159. /package/dist/{chunk-3bw1jk21.js.map → chunk-62723jyy.js.map} +0 -0
  160. /package/dist/{chunk-kz5zcw6s.js.map → chunk-rjxdc0xh.js.map} +0 -0
@@ -6,6 +6,6 @@
6
6
  "import type { LocaleStrings } from \"./dictionaryShape\";\n\n/**\n * Collects the dictionaries one SSR render actually read.\n *\n * Scoped per request by living in React context rather than in module state: a\n * streaming server has several renders in flight at once, so a module-level\n * collector would mix one page's dictionaries into another's payload. Context\n * is per render tree, which is exactly the boundary wanted, and it needs no\n * async-local storage to survive React's internal scheduling.\n *\n * Why stream these rather than put them in `__GEMI_DATA__`: that snapshot is\n * serialized before `renderToReadableStream` is even called, and which\n * dictionaries a page reads is only known once it has rendered. A suspended\n * segment reveals later still, long after the shell has flushed.\n *\n * The sink deliberately emits data, not markup — `streamQueryInjection` owns\n * script formatting and the `</script>`-safe encoding that goes with it.\n */\nexport interface DictionaryUse {\n id: string;\n locale: string;\n strings: LocaleStrings;\n}\n\nexport interface DictionarySink {\n /** Called during render, the first time a dictionary is read. */\n use(id: string, locale: string, strings: LocaleStrings): void;\n /** The response injector subscribes to receive uses as they happen. */\n onUse(cb: (use: DictionaryUse) => void): void;\n}\n\nexport function createDictionarySink(): DictionarySink {\n const seen = new Set<string>();\n const listeners: Array<(use: DictionaryUse) => void> = [];\n // Uses recorded before the injector subscribed — the render begins before the\n // response stream is wrapped.\n const pending: DictionaryUse[] = [];\n\n return {\n use(id, locale, strings) {\n const key = `${id} ${locale}`;\n if (seen.has(key)) return;\n seen.add(key);\n const entry: DictionaryUse = { id, locale, strings };\n if (listeners.length === 0) {\n pending.push(entry);\n return;\n }\n for (const listener of listeners) listener(entry);\n },\n onUse(cb) {\n listeners.push(cb);\n while (pending.length > 0) {\n cb(pending.shift()!);\n }\n },\n };\n}\n"
7
7
  ],
8
8
  "mappings": "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",
9
- "debugId": "6D31999AA021699864756E2164756E21",
9
+ "debugId": "5BCF267C861A364D64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{J as ue}from"./chunk-jq46m17j.js";import{O as _}from"./chunk-c6qxw3v9.js";import"./chunk-b5mc1st9.js";import{X as w}from"./chunk-6c5xkj0z.js";import{Y as l}from"./chunk-yd6aqeyc.js";import{df as o,hf as d}from"./chunk-7f5ad759.js";var g=o(_(),1);var ie=o(l(),1);var O=o(w(),1),R=o(l(),1),J=o(_(),1);var j=o(w(),1),E=o(l(),1),U=(e,s,t)=>{let n={EcsContainer:async(r)=>{let{fromHttp:a}=await import("./chunk-9agd5hjw.js"),{fromContainerMetadata:c}=await import("./chunk-x67dm5ef.js");return t?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"),async()=>E.chain(a(r??{}),c(r))().then(L)},Ec2InstanceMetadata:async(r)=>{t?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata");let{fromInstanceMetadata:a}=await import("./chunk-x67dm5ef.js");return async()=>a(r)().then(L)},Environment:async(r)=>{t?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment");let{fromEnv:a}=await import("./chunk-h3b0v3bz.js");return async()=>a(r)().then(L)}};if(e in n)return n[e];else throw new E.CredentialsProviderError(`Unsupported credential source in profile ${s}. Got ${e}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,{logger:t})},L=(e)=>j.setCredentialFeature(e,"CREDENTIALS_PROFILE_NAMED_PROVIDER","p");var N=(e,{profile:s="default",logger:t}={})=>{return Boolean(e)&&typeof e==="object"&&typeof e.role_arn==="string"&&["undefined","string"].indexOf(typeof e.role_session_name)>-1&&["undefined","string"].indexOf(typeof e.external_id)>-1&&["undefined","string"].indexOf(typeof e.mfa_serial)>-1&&(he(e,{profile:s,logger:t})||ye(e,{profile:s,logger:t}))},he=(e,{profile:s,logger:t})=>{let n=typeof e.source_profile==="string"&&typeof e.credential_source>"u";if(n)t?.debug?.(` ${s} isAssumeRoleWithSourceProfile source_profile=${e.source_profile}`);return n},ye=(e,{profile:s,logger:t})=>{let n=typeof e.credential_source==="string"&&typeof e.source_profile>"u";if(n)t?.debug?.(` ${s} isCredentialSourceProfile credential_source=${e.credential_source}`);return n},v=async(e,s,t,n,r={},a)=>{t.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)");let c=s[e],{source_profile:h,region:I}=c;if(!t.roleAssumer){let{getDefaultRoleAssumer:i}=await import("./chunk-2s75crt8.js").then((m)=>o(m.default,1));t.roleAssumer=i({...t.clientConfig,credentialProviderLogger:t.logger,parentClientConfig:{...n,...t?.parentClientConfig,region:I??t?.parentClientConfig?.region??n?.region}},t.clientPlugins)}if(h&&h in r)throw new R.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile ${J.getProfileName(t)}. Profiles visited: `+Object.keys(r).join(", "),{logger:t.logger});t.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${h?`source_profile=[${h}]`:`profile=[${e}]`}`);let T=h?a(h,s,t,n,{...r,[h]:!0},G(s[h]??{})):(await U(c.credential_source,e,t.logger)(t))();if(G(c))return T.then((i)=>O.setCredentialFeature(i,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"));else{let i={RoleArn:c.role_arn,RoleSessionName:c.role_session_name||`aws-sdk-js-${Date.now()}`,ExternalId:c.external_id,DurationSeconds:parseInt(c.duration_seconds||"3600",10)},{mfa_serial:u}=c;if(u){if(!t.mfaCodeProvider)throw new R.CredentialsProviderError(`Profile ${e} requires multi-factor authentication, but no MFA code callback was provided.`,{logger:t.logger,tryNextLink:!1});i.SerialNumber=u,i.TokenCode=await t.mfaCodeProvider(u)}let y=await T;return t.roleAssumer(y,i).then((m)=>O.setCredentialFeature(m,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"))}},G=(e)=>{return!e.role_arn&&!!e.credential_source};var V=o(w(),1);var C=o(w(),1),X=o(l(),1),K=o(_(),1);var k=o(l(),1),W=o(ue(),1),z=o(_(),1);import{createHash as de,createPrivateKey as we,createPublicKey as ke,sign as me}from"crypto";import{promises as D}from"fs";import{homedir as fe}from"os";import{dirname as Ie,join as Y}from"path";class b{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=300000;constructor(e,s,t){this.profileData=e,this.init=s,this.callerClientConfig=t}async loadCredentials(){let e=await this.loadToken();if(!e)throw new k.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let s=e.accessToken,t=Date.now();if(new Date(s.expiresAt).getTime()-t<=b.REFRESH_THRESHOLD)return this.refresh(e);return{accessKeyId:s.accessKeyId,secretAccessKey:s.secretAccessKey,sessionToken:s.sessionToken,accountId:s.accountId,expiration:new Date(s.expiresAt)}}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}async refresh(e){let{SigninClient:s,CreateOAuth2TokenCommand:t}=await import("./chunk-2zyharpa.js").then((m)=>o(m.default,1)),{logger:n,userAgentAppId:r}=this.callerClientConfig??{},c=((i)=>{return i?.metadata?.handlerProtocol==="h2"})(this.callerClientConfig?.requestHandler)?void 0:this.callerClientConfig?.requestHandler,h=this.profileData.region??await this.callerClientConfig?.region?.()??process.env.AWS_REGION,I=new s({credentials:{accessKeyId:"",secretAccessKey:""},region:h,requestHandler:c,logger:n,userAgentAppId:r,...this.init?.clientConfig});this.createDPoPInterceptor(I.middlewareStack);let T={tokenInput:{clientId:e.clientId,refreshToken:e.refreshToken,grantType:"refresh_token"}};try{let i=await I.send(new t(T)),{accessKeyId:u,secretAccessKey:y,sessionToken:m}=i.tokenOutput?.accessToken??{},{refreshToken:x,expiresIn:H}=i.tokenOutput??{};if(!u||!y||!m||!x)throw new k.CredentialsProviderError("Token refresh response missing required fields",{logger:this.logger,tryNextLink:!1});let A=(H??900)*1000,f=new Date(Date.now()+A),q={...e,accessToken:{...e.accessToken,accessKeyId:u,secretAccessKey:y,sessionToken:m,expiresAt:f.toISOString()},refreshToken:x};await this.saveToken(q);let S=q.accessToken;return{accessKeyId:S.accessKeyId,secretAccessKey:S.secretAccessKey,sessionToken:S.sessionToken,accountId:S.accountId,expiration:f}}catch(i){if(i.name==="AccessDeniedException"){let u=i.error,y;switch(u){case"TOKEN_EXPIRED":y="Your session has expired. Please reauthenticate.";break;case"USER_CREDENTIALS_CHANGED":y="Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.";break;case"INSUFFICIENT_PERMISSIONS":y="Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.";break;default:y=`Failed to refresh token: ${String(i)}. Please re-authenticate using \`aws login\``}throw new k.CredentialsProviderError(y,{logger:this.logger,tryNextLink:!1})}throw new k.CredentialsProviderError(`Failed to refresh token: ${String(i)}. Please re-authenticate using aws login`,{logger:this.logger})}}async loadToken(){let e=this.getTokenFilePath();try{let s;try{s=await z.readFile(e,{ignoreCache:this.init?.ignoreCache})}catch{s=await D.readFile(e,"utf8")}let t=JSON.parse(s),n=["accessToken","clientId","refreshToken","dpopKey"].filter((r)=>!t[r]);if(!t.accessToken?.accountId)n.push("accountId");if(n.length>0)throw new k.CredentialsProviderError(`Token validation failed, missing fields: ${n.join(", ")}`,{logger:this.logger,tryNextLink:!1});return t}catch(s){throw new k.CredentialsProviderError(`Failed to load token from ${e}: ${String(s)}`,{logger:this.logger,tryNextLink:!1})}}async saveToken(e){let s=this.getTokenFilePath(),t=Ie(s);try{await D.mkdir(t,{recursive:!0})}catch(n){}await D.writeFile(s,JSON.stringify(e,null,2),"utf8")}getTokenFilePath(){let e=process.env.AWS_LOGIN_CACHE_DIRECTORY??Y(fe(),".aws","login","cache"),s=Buffer.from(this.loginSession,"utf8"),t=de("sha256").update(s).digest("hex");return Y(e,`${t}.json`)}derToRawSignature(e){let s=2;if(e[s]!==2)throw Error("Invalid DER signature");s++;let t=e[s++],n=e.subarray(s,s+t);if(s+=t,e[s]!==2)throw Error("Invalid DER signature");s++;let r=e[s++],a=e.subarray(s,s+r);n=n[0]===0?n.subarray(1):n,a=a[0]===0?a.subarray(1):a;let c=Buffer.concat([Buffer.alloc(32-n.length),n]),h=Buffer.concat([Buffer.alloc(32-a.length),a]);return Buffer.concat([c,h])}createDPoPInterceptor(e){e.add((s)=>async(t)=>{if(W.HttpRequest.isInstance(t.request)){let n=t.request,r=`${n.protocol}//${n.hostname}${n.port?`:${n.port}`:""}${n.path}`,a=await this.generateDpop(n.method,r);n.headers={...n.headers,DPoP:a}}return s(t)},{step:"finalizeRequest",name:"dpopInterceptor",override:!0})}async generateDpop(e="POST",s){let t=await this.loadToken();try{let n=we({key:t.dpopKey,format:"pem",type:"sec1"}),a=ke(n).export({format:"der",type:"spki"}),c=-1;for(let f=0;f<a.length;f++)if(a[f]===4){c=f;break}let h=a.slice(c+1,c+33),I=a.slice(c+33,c+65),T={alg:"ES256",typ:"dpop+jwt",jwk:{kty:"EC",crv:"P-256",x:h.toString("base64url"),y:I.toString("base64url")}},i={jti:crypto.randomUUID(),htm:e,htu:s,iat:Math.floor(Date.now()/1000)},u=Buffer.from(JSON.stringify(T)).toString("base64url"),y=Buffer.from(JSON.stringify(i)).toString("base64url"),m=`${u}.${y}`,x=me("sha256",Buffer.from(m),n),A=this.derToRawSignature(x).toString("base64url");return`${m}.${A}`}catch(n){throw new k.CredentialsProviderError(`Failed to generate Dpop proof: ${n instanceof Error?n.message:String(n)}`,{logger:this.logger,tryNextLink:!1})}}}var Q=(e)=>async({callerClientConfig:s}={})=>{e?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials");let t=await K.parseKnownFiles(e||{}),n=K.getProfileName({profile:e?.profile??s?.profile}),r=t[n];if(!r?.login_session)throw new X.CredentialsProviderError(`Profile ${n} does not contain login_session.`,{tryNextLink:!0,logger:e?.logger});let c=await new b(r,e,s).loadCredentials();return C.setCredentialFeature(c,"CREDENTIALS_LOGIN","AD")};var Z=(e)=>{return Boolean(e&&e.login_session)},M=async(e,s,t)=>{let n=await Q({...s,profile:e})({callerClientConfig:t});return V.setCredentialFeature(n,"CREDENTIALS_PROFILE_LOGIN","AC")};var p=o(w(),1),ee=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.credential_process==="string",te=async(e,s)=>import("./chunk-xska2hx3.js").then(({fromProcess:t})=>t({...e,profile:s})().then((n)=>p.setCredentialFeature(n,"CREDENTIALS_PROFILE_PROCESS","v")));var $=o(w(),1),se=async(e,s,t={},n)=>{let{fromSSO:r}=await import("./chunk-kckva77b.js");return r({profile:e,logger:t.logger,parentClientConfig:t.parentClientConfig,clientConfig:t.clientConfig})({callerClientConfig:n}).then((a)=>{if(s.sso_session)return $.setCredentialFeature(a,"CREDENTIALS_PROFILE_SSO","r");else return $.setCredentialFeature(a,"CREDENTIALS_PROFILE_SSO_LEGACY","t")})},ne=(e)=>e&&(typeof e.sso_start_url==="string"||typeof e.sso_account_id==="string"||typeof e.sso_session==="string"||typeof e.sso_region==="string"||typeof e.sso_role_name==="string");var ce=o(w(),1),P=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.aws_access_key_id==="string"&&typeof e.aws_secret_access_key==="string"&&["undefined","string"].indexOf(typeof e.aws_session_token)>-1&&["undefined","string"].indexOf(typeof e.aws_account_id)>-1,F=async(e,s)=>{s?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials");let t={accessKeyId:e.aws_access_key_id,secretAccessKey:e.aws_secret_access_key,sessionToken:e.aws_session_token,...e.aws_credential_scope&&{credentialScope:e.aws_credential_scope},...e.aws_account_id&&{accountId:e.aws_account_id}};return ce.setCredentialFeature(t,"CREDENTIALS_PROFILE","n")};var re=o(w(),1),ae=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.web_identity_token_file==="string"&&typeof e.role_arn==="string"&&["undefined","string"].indexOf(typeof e.role_session_name)>-1,oe=async(e,s,t)=>import("./chunk-9wrbnr38.js").then(({fromTokenFile:n})=>n({webIdentityTokenFile:e.web_identity_token_file,roleArn:e.role_arn,roleSessionName:e.role_session_name,roleAssumerWithWebIdentity:s.roleAssumerWithWebIdentity,logger:s.logger,parentClientConfig:s.parentClientConfig})({callerClientConfig:t}).then((r)=>re.setCredentialFeature(r,"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN","q")));var B=async(e,s,t,n,r={},a=!1)=>{let c=s[e];if(Object.keys(r).length>0&&P(c))return F(c,t);if(a||N(c,{profile:e,logger:t.logger}))return v(e,s,t,n,r,B);if(P(c))return F(c,t);if(ae(c))return oe(c,t,n);if(ee(c))return te(t,e);if(ne(c))return await se(e,c,t,n);if(Z(c))return M(e,t,n);throw new ie.CredentialsProviderError(`Could not resolve credentials using profile: [${e}] in configuration/credentials file(s).`,{logger:t.logger})};var Ne=(e={})=>async({callerClientConfig:s}={})=>{e.logger?.debug("@aws-sdk/credential-provider-ini - fromIni");let t=await g.parseKnownFiles(e);return B(g.getProfileName({profile:e.profile??s?.profile}),t,e,s)};export{Ne as fromIni};
2
+ import{J as ue}from"./chunk-9r0sb4zn.js";import{O as _}from"./chunk-dzzmqv0j.js";import"./chunk-m0ggfy1m.js";import{X as w}from"./chunk-3e88tyee.js";import{Y as l}from"./chunk-h3mwgbg7.js";import{ef as o,if as d}from"./chunk-kgmr9qxx.js";var g=o(_(),1);var ie=o(l(),1);var O=o(w(),1),R=o(l(),1),J=o(_(),1);var j=o(w(),1),E=o(l(),1),U=(e,s,t)=>{let n={EcsContainer:async(r)=>{let{fromHttp:a}=await import("./chunk-gzdf2025.js"),{fromContainerMetadata:c}=await import("./chunk-javjeayw.js");return t?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"),async()=>E.chain(a(r??{}),c(r))().then(L)},Ec2InstanceMetadata:async(r)=>{t?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata");let{fromInstanceMetadata:a}=await import("./chunk-javjeayw.js");return async()=>a(r)().then(L)},Environment:async(r)=>{t?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment");let{fromEnv:a}=await import("./chunk-02gdzs5t.js");return async()=>a(r)().then(L)}};if(e in n)return n[e];else throw new E.CredentialsProviderError(`Unsupported credential source in profile ${s}. Got ${e}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,{logger:t})},L=(e)=>j.setCredentialFeature(e,"CREDENTIALS_PROFILE_NAMED_PROVIDER","p");var N=(e,{profile:s="default",logger:t}={})=>{return Boolean(e)&&typeof e==="object"&&typeof e.role_arn==="string"&&["undefined","string"].indexOf(typeof e.role_session_name)>-1&&["undefined","string"].indexOf(typeof e.external_id)>-1&&["undefined","string"].indexOf(typeof e.mfa_serial)>-1&&(he(e,{profile:s,logger:t})||ye(e,{profile:s,logger:t}))},he=(e,{profile:s,logger:t})=>{let n=typeof e.source_profile==="string"&&typeof e.credential_source>"u";if(n)t?.debug?.(` ${s} isAssumeRoleWithSourceProfile source_profile=${e.source_profile}`);return n},ye=(e,{profile:s,logger:t})=>{let n=typeof e.credential_source==="string"&&typeof e.source_profile>"u";if(n)t?.debug?.(` ${s} isCredentialSourceProfile credential_source=${e.credential_source}`);return n},v=async(e,s,t,n,r={},a)=>{t.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)");let c=s[e],{source_profile:h,region:I}=c;if(!t.roleAssumer){let{getDefaultRoleAssumer:i}=await import("./chunk-xjy5apyr.js").then((m)=>o(m.default,1));t.roleAssumer=i({...t.clientConfig,credentialProviderLogger:t.logger,parentClientConfig:{...n,...t?.parentClientConfig,region:I??t?.parentClientConfig?.region??n?.region}},t.clientPlugins)}if(h&&h in r)throw new R.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile ${J.getProfileName(t)}. Profiles visited: `+Object.keys(r).join(", "),{logger:t.logger});t.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${h?`source_profile=[${h}]`:`profile=[${e}]`}`);let T=h?a(h,s,t,n,{...r,[h]:!0},G(s[h]??{})):(await U(c.credential_source,e,t.logger)(t))();if(G(c))return T.then((i)=>O.setCredentialFeature(i,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"));else{let i={RoleArn:c.role_arn,RoleSessionName:c.role_session_name||`aws-sdk-js-${Date.now()}`,ExternalId:c.external_id,DurationSeconds:parseInt(c.duration_seconds||"3600",10)},{mfa_serial:u}=c;if(u){if(!t.mfaCodeProvider)throw new R.CredentialsProviderError(`Profile ${e} requires multi-factor authentication, but no MFA code callback was provided.`,{logger:t.logger,tryNextLink:!1});i.SerialNumber=u,i.TokenCode=await t.mfaCodeProvider(u)}let y=await T;return t.roleAssumer(y,i).then((m)=>O.setCredentialFeature(m,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"))}},G=(e)=>{return!e.role_arn&&!!e.credential_source};var V=o(w(),1);var C=o(w(),1),X=o(l(),1),K=o(_(),1);var k=o(l(),1),W=o(ue(),1),z=o(_(),1);import{createHash as de,createPrivateKey as we,createPublicKey as ke,sign as me}from"crypto";import{promises as D}from"fs";import{homedir as fe}from"os";import{dirname as Ie,join as Y}from"path";class b{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=300000;constructor(e,s,t){this.profileData=e,this.init=s,this.callerClientConfig=t}async loadCredentials(){let e=await this.loadToken();if(!e)throw new k.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let s=e.accessToken,t=Date.now();if(new Date(s.expiresAt).getTime()-t<=b.REFRESH_THRESHOLD)return this.refresh(e);return{accessKeyId:s.accessKeyId,secretAccessKey:s.secretAccessKey,sessionToken:s.sessionToken,accountId:s.accountId,expiration:new Date(s.expiresAt)}}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}async refresh(e){let{SigninClient:s,CreateOAuth2TokenCommand:t}=await import("./chunk-jdj7k3r9.js").then((m)=>o(m.default,1)),{logger:n,userAgentAppId:r}=this.callerClientConfig??{},c=((i)=>{return i?.metadata?.handlerProtocol==="h2"})(this.callerClientConfig?.requestHandler)?void 0:this.callerClientConfig?.requestHandler,h=this.profileData.region??await this.callerClientConfig?.region?.()??process.env.AWS_REGION,I=new s({credentials:{accessKeyId:"",secretAccessKey:""},region:h,requestHandler:c,logger:n,userAgentAppId:r,...this.init?.clientConfig});this.createDPoPInterceptor(I.middlewareStack);let T={tokenInput:{clientId:e.clientId,refreshToken:e.refreshToken,grantType:"refresh_token"}};try{let i=await I.send(new t(T)),{accessKeyId:u,secretAccessKey:y,sessionToken:m}=i.tokenOutput?.accessToken??{},{refreshToken:x,expiresIn:H}=i.tokenOutput??{};if(!u||!y||!m||!x)throw new k.CredentialsProviderError("Token refresh response missing required fields",{logger:this.logger,tryNextLink:!1});let A=(H??900)*1000,f=new Date(Date.now()+A),q={...e,accessToken:{...e.accessToken,accessKeyId:u,secretAccessKey:y,sessionToken:m,expiresAt:f.toISOString()},refreshToken:x};await this.saveToken(q);let S=q.accessToken;return{accessKeyId:S.accessKeyId,secretAccessKey:S.secretAccessKey,sessionToken:S.sessionToken,accountId:S.accountId,expiration:f}}catch(i){if(i.name==="AccessDeniedException"){let u=i.error,y;switch(u){case"TOKEN_EXPIRED":y="Your session has expired. Please reauthenticate.";break;case"USER_CREDENTIALS_CHANGED":y="Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.";break;case"INSUFFICIENT_PERMISSIONS":y="Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.";break;default:y=`Failed to refresh token: ${String(i)}. Please re-authenticate using \`aws login\``}throw new k.CredentialsProviderError(y,{logger:this.logger,tryNextLink:!1})}throw new k.CredentialsProviderError(`Failed to refresh token: ${String(i)}. Please re-authenticate using aws login`,{logger:this.logger})}}async loadToken(){let e=this.getTokenFilePath();try{let s;try{s=await z.readFile(e,{ignoreCache:this.init?.ignoreCache})}catch{s=await D.readFile(e,"utf8")}let t=JSON.parse(s),n=["accessToken","clientId","refreshToken","dpopKey"].filter((r)=>!t[r]);if(!t.accessToken?.accountId)n.push("accountId");if(n.length>0)throw new k.CredentialsProviderError(`Token validation failed, missing fields: ${n.join(", ")}`,{logger:this.logger,tryNextLink:!1});return t}catch(s){throw new k.CredentialsProviderError(`Failed to load token from ${e}: ${String(s)}`,{logger:this.logger,tryNextLink:!1})}}async saveToken(e){let s=this.getTokenFilePath(),t=Ie(s);try{await D.mkdir(t,{recursive:!0})}catch(n){}await D.writeFile(s,JSON.stringify(e,null,2),"utf8")}getTokenFilePath(){let e=process.env.AWS_LOGIN_CACHE_DIRECTORY??Y(fe(),".aws","login","cache"),s=Buffer.from(this.loginSession,"utf8"),t=de("sha256").update(s).digest("hex");return Y(e,`${t}.json`)}derToRawSignature(e){let s=2;if(e[s]!==2)throw Error("Invalid DER signature");s++;let t=e[s++],n=e.subarray(s,s+t);if(s+=t,e[s]!==2)throw Error("Invalid DER signature");s++;let r=e[s++],a=e.subarray(s,s+r);n=n[0]===0?n.subarray(1):n,a=a[0]===0?a.subarray(1):a;let c=Buffer.concat([Buffer.alloc(32-n.length),n]),h=Buffer.concat([Buffer.alloc(32-a.length),a]);return Buffer.concat([c,h])}createDPoPInterceptor(e){e.add((s)=>async(t)=>{if(W.HttpRequest.isInstance(t.request)){let n=t.request,r=`${n.protocol}//${n.hostname}${n.port?`:${n.port}`:""}${n.path}`,a=await this.generateDpop(n.method,r);n.headers={...n.headers,DPoP:a}}return s(t)},{step:"finalizeRequest",name:"dpopInterceptor",override:!0})}async generateDpop(e="POST",s){let t=await this.loadToken();try{let n=we({key:t.dpopKey,format:"pem",type:"sec1"}),a=ke(n).export({format:"der",type:"spki"}),c=-1;for(let f=0;f<a.length;f++)if(a[f]===4){c=f;break}let h=a.slice(c+1,c+33),I=a.slice(c+33,c+65),T={alg:"ES256",typ:"dpop+jwt",jwk:{kty:"EC",crv:"P-256",x:h.toString("base64url"),y:I.toString("base64url")}},i={jti:crypto.randomUUID(),htm:e,htu:s,iat:Math.floor(Date.now()/1000)},u=Buffer.from(JSON.stringify(T)).toString("base64url"),y=Buffer.from(JSON.stringify(i)).toString("base64url"),m=`${u}.${y}`,x=me("sha256",Buffer.from(m),n),A=this.derToRawSignature(x).toString("base64url");return`${m}.${A}`}catch(n){throw new k.CredentialsProviderError(`Failed to generate Dpop proof: ${n instanceof Error?n.message:String(n)}`,{logger:this.logger,tryNextLink:!1})}}}var Q=(e)=>async({callerClientConfig:s}={})=>{e?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials");let t=await K.parseKnownFiles(e||{}),n=K.getProfileName({profile:e?.profile??s?.profile}),r=t[n];if(!r?.login_session)throw new X.CredentialsProviderError(`Profile ${n} does not contain login_session.`,{tryNextLink:!0,logger:e?.logger});let c=await new b(r,e,s).loadCredentials();return C.setCredentialFeature(c,"CREDENTIALS_LOGIN","AD")};var Z=(e)=>{return Boolean(e&&e.login_session)},M=async(e,s,t)=>{let n=await Q({...s,profile:e})({callerClientConfig:t});return V.setCredentialFeature(n,"CREDENTIALS_PROFILE_LOGIN","AC")};var p=o(w(),1),ee=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.credential_process==="string",te=async(e,s)=>import("./chunk-kgg1eqne.js").then(({fromProcess:t})=>t({...e,profile:s})().then((n)=>p.setCredentialFeature(n,"CREDENTIALS_PROFILE_PROCESS","v")));var $=o(w(),1),se=async(e,s,t={},n)=>{let{fromSSO:r}=await import("./chunk-cn2r5jfj.js");return r({profile:e,logger:t.logger,parentClientConfig:t.parentClientConfig,clientConfig:t.clientConfig})({callerClientConfig:n}).then((a)=>{if(s.sso_session)return $.setCredentialFeature(a,"CREDENTIALS_PROFILE_SSO","r");else return $.setCredentialFeature(a,"CREDENTIALS_PROFILE_SSO_LEGACY","t")})},ne=(e)=>e&&(typeof e.sso_start_url==="string"||typeof e.sso_account_id==="string"||typeof e.sso_session==="string"||typeof e.sso_region==="string"||typeof e.sso_role_name==="string");var ce=o(w(),1),P=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.aws_access_key_id==="string"&&typeof e.aws_secret_access_key==="string"&&["undefined","string"].indexOf(typeof e.aws_session_token)>-1&&["undefined","string"].indexOf(typeof e.aws_account_id)>-1,F=async(e,s)=>{s?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials");let t={accessKeyId:e.aws_access_key_id,secretAccessKey:e.aws_secret_access_key,sessionToken:e.aws_session_token,...e.aws_credential_scope&&{credentialScope:e.aws_credential_scope},...e.aws_account_id&&{accountId:e.aws_account_id}};return ce.setCredentialFeature(t,"CREDENTIALS_PROFILE","n")};var re=o(w(),1),ae=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.web_identity_token_file==="string"&&typeof e.role_arn==="string"&&["undefined","string"].indexOf(typeof e.role_session_name)>-1,oe=async(e,s,t)=>import("./chunk-gasdfwva.js").then(({fromTokenFile:n})=>n({webIdentityTokenFile:e.web_identity_token_file,roleArn:e.role_arn,roleSessionName:e.role_session_name,roleAssumerWithWebIdentity:s.roleAssumerWithWebIdentity,logger:s.logger,parentClientConfig:s.parentClientConfig})({callerClientConfig:t}).then((r)=>re.setCredentialFeature(r,"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN","q")));var B=async(e,s,t,n,r={},a=!1)=>{let c=s[e];if(Object.keys(r).length>0&&P(c))return F(c,t);if(a||N(c,{profile:e,logger:t.logger}))return v(e,s,t,n,r,B);if(P(c))return F(c,t);if(ae(c))return oe(c,t,n);if(ee(c))return te(t,e);if(ne(c))return await se(e,c,t,n);if(Z(c))return M(e,t,n);throw new ie.CredentialsProviderError(`Could not resolve credentials using profile: [${e}] in configuration/credentials file(s).`,{logger:t.logger})};var Ne=(e={})=>async({callerClientConfig:s}={})=>{e.logger?.debug("@aws-sdk/credential-provider-ini - fromIni");let t=await g.parseKnownFiles(e);return B(g.getProfileName({profile:e.profile??s?.profile}),t,e,s)};export{Ne as fromIni};
3
3
 
4
- //# debugId=8BC98C045960DB9064756E2164756E21
4
+ //# debugId=18ACD31F3C061B2F64756E2164756E21
@@ -15,6 +15,6 @@
15
15
  "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isWebIdentityProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.web_identity_token_file === \"string\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1;\nexport const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => import(\"@aws-sdk/credential-provider-web-identity\").then(({ fromTokenFile }) => fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig,\n})({\n callerClientConfig,\n}).then((creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN\", \"q\")));\n"
16
16
  ],
17
17
  "mappings": "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",
18
- "debugId": "8BC98C045960DB9064756E2164756E21",
18
+ "debugId": "18ACD31F3C061B2F64756E2164756E21",
19
19
  "names": []
20
20
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{$ as D,Z as x}from"./chunk-v094r7tz.js";import{ia as y,ja as I}from"./chunk-v7y8zm61.js";import"./chunk-5ad8era8.js";import"./chunk-ejrcyzx8.js";import"./chunk-tkdxv6cq.js";import"./chunk-xnytbrda.js";import"./chunk-7f5ad759.js";import{IncomingMessage as T,ServerResponse as g}from"http";import{Socket as w}from"net";import{join as E}from"path";import{createServer as k}from"vite";function N(H){return H.replace(/\x1b\[[0-9;]*m/g,"").replace(/\[[0-9;]*m/g,"").replace(/\n\s*\n/g,`
2
+ import{$ as D,Z as x}from"./chunk-9r1atj8w.js";import{ia as y,ja as I}from"./chunk-v7y8zm61.js";import"./chunk-5ad8era8.js";import"./chunk-ejrcyzx8.js";import"./chunk-tkdxv6cq.js";import"./chunk-xnytbrda.js";import"./chunk-kgmr9qxx.js";import{IncomingMessage as T,ServerResponse as g}from"http";import{Socket as w}from"net";import{join as E}from"path";import{createServer as k}from"vite";function N(H){return H.replace(/\x1b\[[0-9;]*m/g,"").replace(/\[[0-9;]*m/g,"").replace(/\n\s*\n/g,`
3
3
  `).split(`
4
4
  `).map((J)=>J.trim()).filter((J)=>J.length>0).join(`
5
5
  `).trim()}function R(H){return`
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Lb as G}from"./chunk-n1tkn8gv.js";import{Uc as z,Wc as E,nd as F}from"./chunk-6yy92txx.js";import{Se as B}from"./chunk-g5tj10p8.js";class J extends G{register(){this.app.singleton(z,()=>{let j=new z(B(E(),this.app.config.get("database",{})));return K(j),j})}}function K(j){if(Bun.env.NODE_ENV!=="development")return;for(let x of j.connectionNames){let A=j.connection(x);if(F(A.dialect))continue;let H=x===j.name?"DATABASE_URL":`The "${x}" database connection`;console.warn(`[gemi] ${H} points at ${A.dialect}, which the gemi ORM `+"does not implement \u2014 only sqlite and postgres are. The connection "+`works, so raw SQL through DB.query / DB.sql and transactions are fine, but every model operation will raise UnsupportedDialectError.
2
+ import{Mb as G}from"./chunk-eqrd31ye.js";import{Vc as z,Xc as E,od as F}from"./chunk-x14sk95v.js";import{Te as B}from"./chunk-4yafsffx.js";class J extends G{register(){this.app.singleton(z,()=>{let j=new z(B(E(),this.app.config.get("database",{})));return K(j),j})}}function K(j){if(Bun.env.NODE_ENV!=="development")return;for(let x of j.connectionNames){let A=j.connection(x);if(F(A.dialect))continue;let H=x===j.name?"DATABASE_URL":`The "${x}" database connection`;console.warn(`[gemi] ${H} points at ${A.dialect}, which the gemi ORM `+"does not implement \u2014 only sqlite and postgres are. The connection "+`works, so raw SQL through DB.query / DB.sql and transactions are fine, but every model operation will raise UnsupportedDialectError.
3
3
  (development only)`)}}
4
4
  export{J as sa};
5
5
 
6
- //# debugId=A1D7C51F17AFCCF464756E2164756E21
6
+ //# debugId=F4F43FEE15EF142764756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import { ormSupports } from \"../orm/dialect\";\nimport { ServiceProvider } from \"../support/ServiceProvider\";\nimport { withDefaults } from \"../support/withDefaults\";\nimport { databaseConfigDefaults, type DatabaseConfig } from \"./config\";\nimport { DatabaseManager } from \"./DatabaseManager\";\n\nexport class DatabaseServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n DatabaseManager,\n () => {\n const database = new DatabaseManager(\n withDefaults(\n databaseConfigDefaults(),\n this.app.config.get<DatabaseConfig>(\"database\", {}),\n ),\n );\n\n warnIfOrmUnavailable(database);\n return database;\n },\n );\n }\n}\n\n/**\n * Say it at boot, not on the first model query.\n *\n * `DatabaseManager` connects to MySQL and MariaDB without complaint — Bun's\n * client speaks them — and the ORM's compiler has no dialect for either. So a\n * deploy pointed at one starts, passes a health check, serves whatever does not\n * touch a model, and raises `UnsupportedDialectError` on the first `findMany`.\n * That is the latest and most expensive moment to learn it.\n *\n * A **warning rather than a throw**, deliberately: raw SQL through `DB.query`\n * and `DB.sql` genuinely works on those dialects, and so do transactions.\n * Refusing to construct the manager would break code that is correct today to\n * pre-empt an error the ORM already raises clearly. The supported set is a\n * property of the query compiler, not of the connection.\n *\n * Development only, for the same reason the slow-transaction warning is: it is\n * a diagnostic aimed at whoever is choosing the database, and it should not\n * add noise to a production log every time the container starts.\n */\nfunction warnIfOrmUnavailable(database: DatabaseManager): void {\n if (process.env.NODE_ENV !== \"development\") return;\n\n // Every connection, not only the default one. A named connection is a whole\n // pool an application will run model queries on — `Model.on(\"analytics\")` —\n // so it can be pointed at MySQL exactly as the default can, and warning about\n // only one of them would make the check pass while the query that raises is\n // on the other.\n for (const name of database.connectionNames) {\n const connection = database.connection(name);\n if (ormSupports(connection.dialect)) continue;\n\n const source =\n name === database.name\n ? \"DATABASE_URL\"\n : `The \"${name}\" database connection`;\n\n console.warn(\n `[gemi] ${source} points at ${connection.dialect}, which the gemi ORM ` +\n `does not implement — only sqlite and postgres are. The connection ` +\n `works, so raw SQL through DB.query / DB.sql and transactions are ` +\n `fine, but every model operation will raise ` +\n `UnsupportedDialectError.\\n(development only)`,\n );\n }\n}\n"
6
6
  ],
7
7
  "mappings": ";uJAMO,AAAM,IAAgC,CAAgB,CAC3D,QAAQ,EAAG,CACT,KAAK,IAAI,UACP,EACA,IAAM,CACJ,IAAM,EAAW,IAAI,EACnB,EACE,EAAuB,EACvB,KAAK,IAAI,OAAO,IAAoB,WAAY,CAAC,CAAC,CACpD,CACF,EAGA,OADA,EAAqB,CAAQ,EACtB,EAEX,EAEJ,CAqBA,SAAS,CAAoB,CAAC,EAAiC,CAC7D,GAAI,mBAAyB,cAAe,OAO5C,QAAW,KAAQ,EAAS,gBAAiB,CAC3C,IAAM,EAAa,EAAS,WAAW,CAAI,EAC3C,GAAI,EAAY,EAAW,OAAO,EAAG,SAErC,IAAM,EACJ,IAAS,EAAS,KACd,eACA,QAAQ,yBAEd,QAAQ,KACN,UAAU,eAAoB,EAAW,+BACvC,0EACA;AAAA,mBAGJ",
8
- "debugId": "A1D7C51F17AFCCF464756E2164756E21",
8
+ "debugId": "F4F43FEE15EF142764756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{O as F}from"./chunk-c6qxw3v9.js";import{Y as w}from"./chunk-yd6aqeyc.js";import{ef as h}from"./chunk-7f5ad759.js";var P=h((p)=>{var t=w(),l=F();function d(e){try{let o=new Set(Array.from(e.match(/([A-Z_]){3,}/g)??[]));return o.delete("CONFIG"),o.delete("CONFIG_PREFIX_SEPARATOR"),o.delete("ENV"),[...o].join(", ")}catch(o){return e}}var u=(e,o)=>async()=>{try{let r=e(process.env,o);if(r===void 0)throw Error();return r}catch(r){throw new t.CredentialsProviderError(r.message||`Not found in ENV: ${d(e.toString())}`,{logger:o?.logger})}},C=(e,{preferredFile:o="config",...r}={})=>async()=>{let n=l.getProfileName(r),{configFile:i,credentialsFile:c}=await l.loadSharedConfigFiles(r),s=c[n]||{},g=i[n]||{},m=o==="config"?{...s,...g}:{...g,...s};try{let f=e(m,o==="config"?i:c);if(f===void 0)throw Error();return f}catch(a){throw new t.CredentialsProviderError(a.message||`Not found in config files w/ profile [${n}]: ${d(e.toString())}`,{logger:r.logger})}},y=(e)=>typeof e==="function",E=(e)=>y(e)?async()=>await e():t.fromStatic(e),N=({environmentVariableSelector:e,configFileSelector:o,default:r},n={})=>{let{signingName:i,logger:c}=n,s={signingName:i,logger:c};return t.memoize(t.chain(u(e,s),C(o,n),E(r)))};p.loadConfig=N});
2
+ import{O as F}from"./chunk-dzzmqv0j.js";import{Y as w}from"./chunk-h3mwgbg7.js";import{ff as h}from"./chunk-kgmr9qxx.js";var P=h((p)=>{var t=w(),l=F();function d(e){try{let o=new Set(Array.from(e.match(/([A-Z_]){3,}/g)??[]));return o.delete("CONFIG"),o.delete("CONFIG_PREFIX_SEPARATOR"),o.delete("ENV"),[...o].join(", ")}catch(o){return e}}var u=(e,o)=>async()=>{try{let r=e(process.env,o);if(r===void 0)throw Error();return r}catch(r){throw new t.CredentialsProviderError(r.message||`Not found in ENV: ${d(e.toString())}`,{logger:o?.logger})}},C=(e,{preferredFile:o="config",...r}={})=>async()=>{let n=l.getProfileName(r),{configFile:i,credentialsFile:c}=await l.loadSharedConfigFiles(r),s=c[n]||{},g=i[n]||{},m=o==="config"?{...s,...g}:{...g,...s};try{let f=e(m,o==="config"?i:c);if(f===void 0)throw Error();return f}catch(a){throw new t.CredentialsProviderError(a.message||`Not found in config files w/ profile [${n}]: ${d(e.toString())}`,{logger:r.logger})}},y=(e)=>typeof e==="function",E=(e)=>y(e)?async()=>await e():t.fromStatic(e),N=({environmentVariableSelector:e,configFileSelector:o,default:r},n={})=>{let{signingName:i,logger:c}=n,s={signingName:i,logger:c};return t.memoize(t.chain(u(e,s),C(o,n),E(r)))};p.loadConfig=N});
3
3
  export{P as w};
4
4
 
5
- //# debugId=AC486C6D558449D664756E2164756E21
5
+ //# debugId=3EDEAFA343C4588964756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "'use strict';\n\nvar propertyProvider = require('@smithy/property-provider');\nvar sharedIniFileLoader = require('@smithy/shared-ini-file-loader');\n\nfunction getSelectorName(functionString) {\n try {\n const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? []));\n constants.delete(\"CONFIG\");\n constants.delete(\"CONFIG_PREFIX_SEPARATOR\");\n constants.delete(\"ENV\");\n return [...constants].join(\", \");\n }\n catch (e) {\n return functionString;\n }\n}\n\nconst fromEnv = (envVarSelector, options) => async () => {\n try {\n const config = envVarSelector(process.env, options);\n if (config === undefined) {\n throw new Error();\n }\n return config;\n }\n catch (e) {\n throw new propertyProvider.CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger });\n }\n};\n\nconst fromSharedConfigFiles = (configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = sharedIniFileLoader.getProfileName(init);\n const { configFile, credentialsFile } = await sharedIniFileLoader.loadSharedConfigFiles(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\"\n ? { ...profileFromCredentials, ...profileFromConfig }\n : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n const configValue = configSelector(mergedProfile, cfgFile);\n if (configValue === undefined) {\n throw new Error();\n }\n return configValue;\n }\n catch (e) {\n throw new propertyProvider.CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger });\n }\n};\n\nconst isFunction = (func) => typeof func === \"function\";\nconst fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : propertyProvider.fromStatic(defaultValue);\n\nconst loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => {\n const { signingName, logger } = configuration;\n const envOptions = { signingName, logger };\n return propertyProvider.memoize(propertyProvider.chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue)));\n};\n\nexports.loadConfig = loadConfig;\n"
6
6
  ],
7
7
  "mappings": ";mJAEA,FAAI,AACA,MAEJ,SAAS,CAAe,CAAC,EAAgB,CACrC,GAAI,CACA,IAAM,EAAY,IAAI,IAAI,MAAM,KAAK,EAAe,MAAM,eAAe,GAAK,CAAC,CAAC,CAAC,EAIjF,OAHA,EAAU,OAAO,QAAQ,EACzB,EAAU,OAAO,yBAAyB,EAC1C,EAAU,OAAO,KAAK,EACf,CAAC,GAAG,CAAS,EAAE,KAAK,IAAI,EAEnC,MAAO,EAAG,CACN,OAAO,GAIf,IAAM,EAAU,CAAC,EAAgB,IAAY,SAAY,CACrD,GAAI,CACA,IAAM,EAAS,EAAe,QAAQ,IAAK,CAAO,EAClD,GAAI,IAAW,OACX,MAAU,MAAM,EAEpB,OAAO,EAEX,MAAO,EAAG,CACN,MAAM,IAAI,EAAiB,yBAAyB,EAAE,SAAW,qBAAqB,EAAgB,EAAe,SAAS,CAAC,IAAK,CAAE,OAAQ,GAAS,MAAO,CAAC,IAIjK,EAAwB,CAAC,GAAkB,gBAAgB,YAAa,GAAS,CAAC,IAAM,SAAY,CACtG,IAAM,EAAU,EAAoB,eAAe,CAAI,GAC/C,aAAY,mBAAoB,MAAM,EAAoB,sBAAsB,CAAI,EACtF,EAAyB,EAAgB,IAAY,CAAC,EACtD,EAAoB,EAAW,IAAY,CAAC,EAC5C,EAAgB,IAAkB,SAClC,IAAK,KAA2B,CAAkB,EAClD,IAAK,KAAsB,CAAuB,EACxD,GAAI,CAEA,IAAM,EAAc,EAAe,EADnB,IAAkB,SAAW,EAAa,CACD,EACzD,GAAI,IAAgB,OAChB,MAAU,MAAM,EAEpB,OAAO,EAEX,MAAO,EAAG,CACN,MAAM,IAAI,EAAiB,yBAAyB,EAAE,SAAW,yCAAyC,OAAa,EAAgB,EAAe,SAAS,CAAC,IAAK,CAAE,OAAQ,EAAK,MAAO,CAAC,IAI9L,EAAa,CAAC,IAAS,OAAO,IAAS,WACvC,EAAa,CAAC,IAAiB,EAAW,CAAY,EAAI,SAAY,MAAM,EAAa,EAAI,EAAiB,WAAW,CAAY,EAErI,EAAa,EAAG,8BAA6B,qBAAoB,QAAS,GAAgB,EAAgB,CAAC,IAAM,CACnH,IAAQ,cAAa,UAAW,EAC1B,EAAa,CAAE,cAAa,QAAO,EACzC,OAAO,EAAiB,QAAQ,EAAiB,MAAM,EAAQ,EAA6B,CAAU,EAAG,EAAsB,EAAoB,CAAa,EAAG,EAAW,CAAY,CAAC,CAAC,GAGxL,aAAa",
8
- "debugId": "AC486C6D558449D664756E2164756E21",
8
+ "debugId": "3EDEAFA343C4588964756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,9 +1,9 @@
1
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(`
2
+ import{Fc as mf,Kc as yf,wc as cf,xc as b0,yc as Pf,zc as Rf}from"./chunk-kry5vwam.js";import{Vc as M0,qd as pf}from"./chunk-x14sk95v.js";import{Ad as _f,vd as Mf}from"./chunk-q0waxxz5.js";import{Bd as R0,Dd as d0,Fd as v0,Kd as Ni,Md as p,Nd as V,Qd as m0,Rd as bi,Sd as k0,Td as wi,Ud as H0,Vd as y,Wd as h,Yd as bf,Zd as di,ce as Li,ge as b,ke as kf}from"./chunk-vkngcrzq.js";import{re as L}from"./chunk-f9mfw82d.js";import{Ze as H}from"./chunk-ct274qts.js";import{_e as gi,bf as X}from"./chunk-v06qcyj5.js";import{if as pi}from"./chunk-kgmr9qxx.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
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
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
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=`
6
+ `))});let W=setTimeout(()=>w(!0),$);f.allSettled().then(()=>w(!1),()=>w(!1))},cancel(){C(!1)}})}var v1=async()=>(await import("./chunk-33wjsw4r.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
7
  !function(){try{var d=document.documentElement,c=d.classList;
8
8
  c.remove('light','dark');
9
9
  var e=localStorage.getItem('theme');
@@ -14,6 +14,6 @@ if('system'===e||(!e&&'system'===defaultTheme)){
14
14
  }else if(e){
15
15
  c.add(e||'')
16
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};
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 Nb,mi as Ob,Di as Pb,u as Qb,Ci as Rb,yi as Sb,qi as Tb,x$ as Ub,h0 as Vb,ni as Wb,c0 as Xb,ti as Yb,ri as Zb,a$ as _b,n0 as $b,s0 as ac,Vi as bc,Ti as cc,X3 as dc,u0 as ec,l0 as fc,K0 as gc,xi as hc,T0 as ic,F0 as jc,E0 as kc,ci as lc,Pi as mc,Hf as nc,vf as oc,R1 as pc,D0 as qc,s as rc,hf as sc,Ri as tc,qf as uc};
18
18
 
19
- //# debugId=3396CEBCB819DEB064756E2164756E21
19
+ //# debugId=6842252F4DDB040364756E2164756E21