gemi 0.41.3 → 0.42.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.
- package/dist/app/index.js +2 -2
- package/dist/app/index.js.map +1 -1
- package/dist/bin/gemi.js +99 -18
- package/dist/bin/gemi.js.map +5 -5
- package/dist/broadcasting/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-4e4ax9bs.js → chunk-0pjn1a5d.js} +2 -2
- package/dist/{chunk-4e4ax9bs.js.map → chunk-0pjn1a5d.js.map} +1 -1
- package/dist/{chunk-awscq13h.js → chunk-1kmbs8cd.js} +3 -3
- package/dist/{chunk-awscq13h.js.map → chunk-1kmbs8cd.js.map} +1 -1
- package/dist/{chunk-4f45pw0v.js → chunk-22pr1w8v.js} +2 -2
- package/dist/{chunk-4f45pw0v.js.map → chunk-22pr1w8v.js.map} +1 -1
- package/dist/{chunk-xdk56snm.js → chunk-358x9aca.js} +3 -3
- package/dist/{chunk-xdk56snm.js.map → chunk-358x9aca.js.map} +1 -1
- package/dist/{chunk-9nfdjzen.js → chunk-522q81af.js} +4 -4
- package/dist/{chunk-9nfdjzen.js.map → chunk-522q81af.js.map} +1 -1
- package/dist/{chunk-8rm601h3.js → chunk-81yxskss.js} +2 -2
- package/dist/{chunk-8rm601h3.js.map → chunk-81yxskss.js.map} +1 -1
- package/dist/{chunk-jt0z45dn.js → chunk-8cqkdzyh.js} +4 -4
- package/dist/{chunk-jt0z45dn.js.map → chunk-8cqkdzyh.js.map} +1 -1
- package/dist/{chunk-r9p9g2x9.js → chunk-8mgsjrcc.js} +2 -2
- package/dist/{chunk-r9p9g2x9.js.map → chunk-8mgsjrcc.js.map} +1 -1
- package/dist/{chunk-c1bjq2ss.js → chunk-9byxbqnn.js} +2 -2
- package/dist/{chunk-c1bjq2ss.js.map → chunk-9byxbqnn.js.map} +1 -1
- package/dist/{chunk-1g3qpb60.js → chunk-ayjtdck4.js} +2 -2
- package/dist/{chunk-1g3qpb60.js.map → chunk-ayjtdck4.js.map} +1 -1
- package/dist/{chunk-6b1abejc.js → chunk-b3qebxqh.js} +3 -3
- package/dist/{chunk-6b1abejc.js.map → chunk-b3qebxqh.js.map} +1 -1
- package/dist/{chunk-c1hsc4aa.js → chunk-bfnh3gwv.js} +2 -2
- package/dist/{chunk-c1hsc4aa.js.map → chunk-bfnh3gwv.js.map} +1 -1
- package/dist/{chunk-agvzqxv7.js → chunk-cwq1vdcb.js} +2 -2
- package/dist/{chunk-21r4g9h0.js.map → chunk-cwq1vdcb.js.map} +1 -1
- package/dist/{chunk-b4xfh9pg.js → chunk-cx38xsyf.js} +2 -2
- package/dist/{chunk-b4xfh9pg.js.map → chunk-cx38xsyf.js.map} +1 -1
- package/dist/{chunk-j7290k00.js → chunk-ghes36xj.js} +2 -2
- package/dist/{chunk-j7290k00.js.map → chunk-ghes36xj.js.map} +3 -3
- package/dist/{chunk-q3wpyr9y.js → chunk-gsvzrj5r.js} +2 -2
- package/dist/{chunk-q3wpyr9y.js.map → chunk-gsvzrj5r.js.map} +1 -1
- package/dist/{chunk-s3zn2vas.js → chunk-hzw2y2rz.js} +3 -3
- package/dist/{chunk-s3zn2vas.js.map → chunk-hzw2y2rz.js.map} +1 -1
- package/dist/{chunk-xnhktttd.js → chunk-n1xpxhm0.js} +2 -2
- package/dist/{chunk-xnhktttd.js.map → chunk-n1xpxhm0.js.map} +1 -1
- package/dist/{chunk-3hjfype8.js → chunk-n78kxce1.js} +2 -2
- package/dist/{chunk-3hjfype8.js.map → chunk-n78kxce1.js.map} +1 -1
- package/dist/{chunk-c74f9zbq.js → chunk-pfaq2mer.js} +2 -2
- package/dist/{chunk-c74f9zbq.js.map → chunk-pfaq2mer.js.map} +1 -1
- package/dist/chunk-pjgfvdr6.js +79 -0
- package/dist/{chunk-88fb6hzq.js.map → chunk-pjgfvdr6.js.map} +5 -4
- package/dist/{chunk-4cqg9kg4.js → chunk-pr3pvtmh.js} +2 -2
- package/dist/{chunk-4cqg9kg4.js.map → chunk-pr3pvtmh.js.map} +1 -1
- package/dist/{chunk-wfbgtbae.js → chunk-pxcv9ccp.js} +3 -3
- package/dist/{chunk-wfbgtbae.js.map → chunk-pxcv9ccp.js.map} +1 -1
- package/dist/{chunk-yk9aw128.js → chunk-pygcsw1f.js} +2 -2
- package/dist/{chunk-yk9aw128.js.map → chunk-pygcsw1f.js.map} +1 -1
- package/dist/{chunk-1nm4bfjq.js → chunk-q0y425d3.js} +3 -3
- package/dist/{chunk-1nm4bfjq.js.map → chunk-q0y425d3.js.map} +1 -1
- package/dist/{chunk-y7qsts67.js → chunk-qeq8hv3t.js} +2 -2
- package/dist/{chunk-y7qsts67.js.map → chunk-qeq8hv3t.js.map} +1 -1
- package/dist/chunk-qprvfg0b.js +5 -0
- package/dist/chunk-qprvfg0b.js.map +12 -0
- package/dist/{chunk-kd4whs4z.js → chunk-qyn10pv7.js} +1 -1
- package/dist/{chunk-h465ja8n.js → chunk-qzemjynx.js} +3 -3
- package/dist/{chunk-h465ja8n.js.map → chunk-qzemjynx.js.map} +1 -1
- package/dist/{chunk-rm5y1v00.js → chunk-ratbccpg.js} +2 -2
- package/dist/{chunk-rm5y1v00.js.map → chunk-ratbccpg.js.map} +1 -1
- package/dist/{chunk-p9qt93zk.js → chunk-rrwtgt86.js} +2 -2
- package/dist/{chunk-agvzqxv7.js.map → chunk-rrwtgt86.js.map} +1 -1
- package/dist/{chunk-r9rgc769.js → chunk-s2tm33hd.js} +2 -2
- package/dist/{chunk-r9rgc769.js.map → chunk-s2tm33hd.js.map} +2 -2
- package/dist/{chunk-pdr63tqe.js → chunk-s4seq23x.js} +2 -2
- package/dist/{chunk-pdr63tqe.js.map → chunk-s4seq23x.js.map} +1 -1
- package/dist/{chunk-p6ezs2w7.js → chunk-sbmg0hfr.js} +3 -3
- package/dist/{chunk-p6ezs2w7.js.map → chunk-sbmg0hfr.js.map} +1 -1
- package/dist/{chunk-3hgk4fxz.js → chunk-shpca068.js} +3 -3
- package/dist/{chunk-3hgk4fxz.js.map → chunk-shpca068.js.map} +1 -1
- package/dist/{chunk-vfvetfjg.js → chunk-syaxsp9y.js} +3 -3
- package/dist/{chunk-vfvetfjg.js.map → chunk-syaxsp9y.js.map} +1 -1
- package/dist/chunk-tb8yy4rf.js +5 -0
- package/dist/{chunk-emt6gz1d.js.map → chunk-tb8yy4rf.js.map} +1 -1
- package/dist/{chunk-sgv88qqn.js → chunk-wa84ybnt.js} +5 -5
- package/dist/{chunk-sgv88qqn.js.map → chunk-wa84ybnt.js.map} +1 -1
- package/dist/{chunk-rkf1stc0.js → chunk-x3vy6dbw.js} +2 -2
- package/dist/{chunk-rkf1stc0.js.map → chunk-x3vy6dbw.js.map} +1 -1
- package/dist/chunk-xpk460d1.js +4 -0
- package/dist/{chunk-p9qt93zk.js.map → chunk-xpk460d1.js.map} +1 -1
- package/dist/{chunk-q91708he.js → chunk-xzr4t6k9.js} +3 -3
- package/dist/{chunk-q91708he.js.map → chunk-xzr4t6k9.js.map} +1 -1
- package/dist/chunk-yeqwzeq7.js +4 -0
- package/dist/{chunk-a8wmfnw6.js.map → chunk-yeqwzeq7.js.map} +3 -3
- package/dist/{chunk-85hzphk5.js → chunk-z9vdcpqr.js} +2 -2
- package/dist/{chunk-85hzphk5.js.map → chunk-z9vdcpqr.js.map} +1 -1
- package/dist/{chunk-kw1g4bjh.js → chunk-zaa3yt2w.js} +3 -3
- package/dist/{chunk-kw1g4bjh.js.map → chunk-zaa3yt2w.js.map} +1 -1
- package/dist/config/index.js +1 -1
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/http/ViewRouter.d.ts +29 -5
- package/dist/http/ViewRouter.d.ts.map +1 -1
- package/dist/http/index.d.ts +2 -2
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +2 -2
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +2 -2
- package/dist/server/httpProd.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +2 -2
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/services/router/ViewRouterServiceContainer.d.ts +9 -0
- package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -1
- package/dist/vite/index.mjs +1 -0
- package/package.json +1 -1
- package/dist/chunk-21r4g9h0.js +0 -4
- package/dist/chunk-3xpfa0ye.js +0 -5
- package/dist/chunk-3xpfa0ye.js.map +0 -12
- package/dist/chunk-88fb6hzq.js +0 -79
- package/dist/chunk-a8wmfnw6.js +0 -4
- package/dist/chunk-c9wa4rtm.js +0 -5
- package/dist/chunk-c9wa4rtm.js.map +0 -10
- package/dist/chunk-emt6gz1d.js +0 -5
- /package/dist/{chunk-kd4whs4z.js.map → chunk-qyn10pv7.js.map} +0 -0
package/dist/server/index.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { App } from \"../app\";\nimport { Kernel } from \"../kernel\";\nimport { Instrumentation } from \"./types\";\nimport { watchEnv } from \"./watchEnv\";\n\nexport class Server {\n private app: App;\n private instrumentation: Instrumentation;\n\n constructor(params: { kernel: new () => Kernel; instrumentation?: Instrumentation }) {\n this.app = new App({ kernel: params.kernel });\n this.instrumentation =\n params.instrumentation ??\n ((req: Request, next: (req: Request) => Promise<Response>) => next(req));\n }\n\n async start() {\n // Dynamic import so each mode only pulls in its own code: `httpDev` drags in\n // Vite (dev-only) and `httpProd` reads the built `dist/` manifests — neither\n // should load in the other environment.\n if (process.env.NODE_ENV === \"production\") {\n const { httpProd } = await import(\"./httpProd.js\");\n await httpProd(this.app, this.instrumentation.bind(this));\n } else {\n // Dev only: reload `.env` into process.env on change so config edits take\n // effect without restarting the dev server (Bun reads `.env` only at\n // startup, even under `--hot`).\n watchEnv();\n const { httpDev } = await import(\"./httpDev.js\");\n await httpDev(this.app, this.instrumentation.bind(this));\n }\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";kVAKO,CAAM,JAAO,JACV,DACA,WAER,MAAW,JAAC,HAAyE,CACnF,KAAK,IAAM,IAAI,EAAI,CAAE,OAAQ,EAAO,MAAO,CAAC,EAC5C,KAAK,gBACH,EAAO,kBACN,CAAC,EAAc,IAA8C,EAAK,CAAG,QAGpE,MAAK,EAAG,CAIZ,GAAI,mBAAyB,aAAc,CACzC,IAAQ,YAAa,KAAa,gCAClC,MAAM,EAAS,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,EACnD,KAIL,EAAS,EACT,IAAQ,WAAY,KAAa,gCACjC,MAAM,EAAQ,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAG7D",
|
|
8
|
+
"debugId": "4B643978D79229AA64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/services/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Aa as
|
|
2
|
+
import{Aa as o,Ba as p,Ca as q,Da as r,Ea as s,Fa as t,Ga as u,Ha as v,Ia as w,Ja as x,Ka as y,Ma as z,ma as a,na as b,oa as c,pa as d,qa as e,ra as f,sa as g,ta as h,ua as i,va as j,wa as k,xa as l,ya as m,za as n}from"../chunk-wa84ybnt.js";import"../chunk-qeq8hv3t.js";import"../chunk-522q81af.js";import"../chunk-syaxsp9y.js";import"../chunk-8cqkdzyh.js";import"../chunk-hzw2y2rz.js";import"../chunk-q0y425d3.js";import"../chunk-1kmbs8cd.js";import"../chunk-zaa3yt2w.js";import"../chunk-358x9aca.js";import"../chunk-pxcv9ccp.js";import"../chunk-qzemjynx.js";import"../chunk-shpca068.js";import"../chunk-b3qebxqh.js";import"../chunk-n1xpxhm0.js";import"../chunk-bfnh3gwv.js";import"../chunk-cwq1vdcb.js";export{v as XOAuthProvider,m as ViewRouterServiceProvider,z as Singleton,r as Sharp,e as S3Driver,j as ResendDriver,y as RedisServiceProvider,h as RateLimiterServiceProvider,f as RateLimiterDriver,o as QueueServiceProvider,t as OAuthProvider,n as LoggingServiceProvider,p as Job,g as InMemoryRateLimiter,s as ImageOptimizationServiceProvider,q as ImageOptimizationDriver,u as GoogleOAuthProvider,b as FileSystemDriver,c as FileStorageServiceProvider,a as FileStorageDriver,k as EmailServiceProvider,i as EmailDriver,w as CronServiceProvider,x as CronJob,l as BroadcastingServiceProvider,d as ApiRouterServiceProvider};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=E4D0FCDFD54249E164756E2164756E21
|
|
@@ -3,11 +3,20 @@ import { type FlatViewRoutes } from "./createFlatViewRoutes";
|
|
|
3
3
|
import type { ViewRouterServiceProvider } from "./ViewRouterServiceProvider";
|
|
4
4
|
import { ServiceContainer } from "../ServiceContainer";
|
|
5
5
|
import type { ComponentTree } from "../../client/types";
|
|
6
|
+
/**
|
|
7
|
+
* `/assets` is where the client build output is served from, ahead of the
|
|
8
|
+
* router — a route mounted there could never be reached in production, and in
|
|
9
|
+
* dev it would appear to work. Fail at boot instead of shipping that.
|
|
10
|
+
*/
|
|
11
|
+
export declare const RESERVED_ROUTE_PREFIX = "/assets";
|
|
12
|
+
export declare function assertNoReservedRoutePaths(routePaths: string[]): void;
|
|
6
13
|
export declare class ViewRouterServiceContainer extends ServiceContainer {
|
|
7
14
|
service: ViewRouterServiceProvider;
|
|
8
15
|
static _name: string;
|
|
9
16
|
flatViewRoutes: FlatViewRoutes;
|
|
10
17
|
routeManifest: Record<string, string[]>;
|
|
18
|
+
/** `routeManifest` without file routes — they have no component to render client side. */
|
|
19
|
+
clientRouteManifest: Record<string, string[]>;
|
|
11
20
|
componentTree: ComponentTree;
|
|
12
21
|
flatComponentTree: string[];
|
|
13
22
|
root: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewRouterServiceContainer.d.ts","sourceRoot":"","sources":["../../../services/router/ViewRouterServiceContainer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAO7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA4CxD,qBAAa,0BAA2B,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ViewRouterServiceContainer.d.ts","sourceRoot":"","sources":["../../../services/router/ViewRouterServiceContainer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAO7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA4CxD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAE/C,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,QAc9D;AAED,qBAAa,0BAA2B,SAAQ,gBAAgB;IAW3C,OAAO,EAAE,yBAAyB;IAVrD,MAAM,CAAC,KAAK,SAAgC;IAE5C,cAAc,EAAE,cAAc,CAAM;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAC7C,0FAA0F;IAC1F,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IACnD,aAAa,EAAE,aAAa,CAAM;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,IAAI,EAAE,GAAG,CAAQ;gBAEE,OAAO,EAAE,yBAAyB;IAiBrD,IAAI;IAEE,YAAY,CAAC,GAAG,EAAE,WAAW;YAarB,MAAM;IAuKd,iBAAiB,CAAC,GAAG,EAAE,OAAO,gCArGZ;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,aAAa,EAAE,GAAG,CAAC;QACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC5B;CA+VJ"}
|
package/dist/vite/index.mjs
CHANGED
package/package.json
CHANGED
package/dist/chunk-21r4g9h0.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{La as a,Ma as b,Na as c,Oa as d,Pa as e,Qa as f,Ra as g}from"./chunk-y7qsts67.js";import"./chunk-wfbgtbae.js";import"./chunk-h465ja8n.js";import"./chunk-agvzqxv7.js";export{g as fromEnv,c as ENV_SESSION,b as ENV_SECRET,a as ENV_KEY,d as ENV_EXPIRATION,e as ENV_CREDENTIAL_SCOPE,f as ENV_ACCOUNT_ID};
|
|
3
|
-
|
|
4
|
-
//# debugId=6D11A461A1D24C5864756E2164756E21
|
package/dist/chunk-3xpfa0ye.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{h as W,i as g}from"./chunk-pdr63tqe.js";import"./chunk-ppt296ye.js";import{M as Y}from"./chunk-c9wa4rtm.js";import"./chunk-agvzqxv7.js";import{join as x}from"path";function V(T){let _=T.toString(),k=new Bun.CryptoHasher("sha1");return k.update(_),k.digest("hex")}if(!globalThis.URLPattern)globalThis.URLPattern=Y;import{exists as F}from"fs/promises";var u=process.env.GEMI_PROJECT_DIR??"",Z=x(process.cwd(),u),h=x(Z,"app"),Q=x(Z,"dist");async function a(T,_){let k=await import(`${Q}/client/.vite/manifest.json`),$=await import(`${Q}/server/.vite/manifest.json`);process.env.ROOT_DIR=Z,process.env.APP_DIR=h,process.env.DIST_DIR=Q;let A={},I={},P={},S=(L,U)=>`"${L}": () => import("${U}")`,C=[];for(let L of["404",...T.getFlatComponentTree.call(T)]){let U=$[`app/views/${L}.tsx`];if(!U?.file){console.log(`Server file not found for ${L}`),console.log(U);let B=Object.keys($),H=`app/views/${L}.tsx`;console.log(`${H} not found in server manifest`),console.log(B)}let z=await import(`${process.env.DIST_DIR}/server/${U?.file}`);A[L]=z.default,I[L]=z.OpenGraph;let G=k[`app/views/${L}.tsx`];if(G?.css&&G?.css.length>0)P[L]=G?.css;if(G)C.push(S(L,`/${G?.file}`))}let y=`{${C.join(",")}}`,N=k["app/client.tsx"]?.css??[],w=(await Promise.all(N.map((L)=>Bun.file(`${Q}/client/${L}`).text()))).join(`
|
|
3
|
-
`);async function D(L){let{pathname:U}=new URL(L.url),z=new Y({pathname:"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf|map)"}),G=U.startsWith("/.well-known"),B=z.test({pathname:U})||G,H=U.startsWith("/api");if(B&&!H){let R=new URL(L.url),J=L.url.replace(R.origin,"").split("?")[0],X=`${Q}/client${J.replace("/assets/assets","/assets")}`,O=await F(X);if(!O&&R.pathname.includes(".js"))return new Response(`if(caches){caches?.delete("${X}")}window.location.reload();export {}`,{headers:{"Content-Type":"application/javascript"}});if(!O)return new Response("Not found",{status:404});try{let b=Bun.file(X),K=V(b.lastModified);return new Response(b.stream(),{headers:{"Content-Type":b.type,"Cache-Control":"public, max-age=31536000, must-revalidate","Content-Length":String(b.size),ETag:K}})}catch(b){return T.onException?.(b),new Response("Not found",{status:404})}}let M=T.fetch.bind(T);try{let R=await M(L);if(R instanceof Response)return R;else{let J=[];return J.push({content:w}),await R({getStyles:async(O)=>{if(!O)return W([]);for(let b of O){let K=k[`app/views/${b}.tsx`];for(let E of K?.css??[]){let v=Bun.file(`${process.env.DIST_DIR}/client/${E}`);J.push({id:E,content:await v.text()})}}return W(J)},bootstrapModules:[`/${k["app/client.tsx"].file}`],loaders:y,viewImportMap:A,ogMap:I,cssManifest:P})}}catch(R){if(console.error(R),U.startsWith("/api"))return new Response(JSON.stringify({error:R.message}),{status:500,headers:{"Content-Type":"application/json"}});return T.onException?.(R),new Response(R.stack,{status:500})}}let j=Bun.serve({maxRequestBodySize:10737418240,fetch:async(L,U)=>{if(!L.headers.get("x-forwarded-for")){let z=U.requestIP(L);if(z)L.headers.set("x-forwarded-for",z.address)}return await _(L,D)},idleTimeout:Number(process.env.SERVER_IDLE_TIMEOUT??10),port:process.env.PORT||5173});return g({port:j.port,rootDir:Z}),j}export{a as httpProd};
|
|
4
|
-
|
|
5
|
-
//# debugId=9746BCBA13C1DFAB64756E2164756E21
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../server/httpProd.ts", "../server/generateEtag.ts", "../../../node_modules/.bun/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/index.js"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { join } from \"node:path\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { exists } from \"node:fs/promises\";\nimport { createStyles } from \"./styles\";\nimport type { App } from \"../app\";\nimport { Instrumentation } from \"./types\";\nimport { printStartupBanner } from \"./banner\";\n\nconst projectDir = process.env.GEMI_PROJECT_DIR ?? \"\";\nconst rootDir = join(process.cwd(), projectDir);\n\nconst appDir = join(rootDir, \"app\");\nconst distDir = join(rootDir, \"dist\");\n\n// `app` is built by `Server.start` (from the kernel) and passed in — same as\n// `httpDev` — so prod and dev share one construction path. What differs here is\n// that views/styles are served from the built `dist/` manifests instead of\n// Vite's dev SSR graph.\nexport async function httpProd(app: App, instrumentation: Instrumentation) {\n const manifest = await import(`${distDir}/client/.vite/manifest.json`);\n const serverManifest = await import(`${distDir}/server/.vite/manifest.json`);\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n process.env.DIST_DIR = distDir;\n\n const viewImportMap = {};\n const ogMap = {};\n const cssManifest = {};\n const template = (viewName: string, path: string) => `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\"404\", ...app.getFlatComponentTree.call(app)]) {\n const serverFile = serverManifest[`app/views/${fileName}.tsx`];\n if (!serverFile?.file) {\n console.log(`Server file not found for ${fileName}`);\n console.log(serverFile);\n const files = Object.keys(serverManifest);\n const path = `app/views/${fileName}.tsx`;\n console.log(`${path} not found in server manifest`);\n console.log(files);\n }\n const mod = await import(`${process.env.DIST_DIR}/server/${serverFile?.file}`);\n viewImportMap[fileName] = mod.default;\n ogMap[fileName] = mod.OpenGraph;\n const clientFile = manifest[`app/views/${fileName}.tsx`];\n\n if (clientFile?.css && clientFile?.css.length > 0) {\n cssManifest[fileName] = clientFile?.css;\n }\n if (clientFile) {\n templates.push(template(fileName, `/${clientFile?.file}`));\n }\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n\n // Vite's manifest `css` field is a `string[]` — a client entry can emit more\n // than one CSS chunk. Read and concatenate them all instead of interpolating\n // the array into a single path (which only works for a one-element array).\n const appCssFiles: string[] = manifest[\"app/client.tsx\"]?.css ?? [];\n const appCSSContent = (\n await Promise.all(\n appCssFiles.map((cssFile) => Bun.file(`${distDir}/client/${cssFile}`).text()),\n )\n ).join(\"\\n\");\n\n async function requestHandler(req: Request) {\n const { pathname } = new URL(req.url);\n\n const pattern = new URLPattern({\n pathname:\n \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf|map)\",\n });\n\n const isWellKnownFile = pathname.startsWith(\"/.well-known\");\n const isFileRequest = pattern.test({ pathname }) || isWellKnownFile;\n\n const isApi = pathname.startsWith(\"/api\");\n\n if (isFileRequest && !isApi) {\n const url = new URL(req.url);\n const filePath = req.url.replace(url.origin, \"\").split(\"?\")[0];\n const distPath = `${distDir}/client${filePath.replace(\"/assets/assets\", \"/assets\")}`;\n const doesExist = await exists(distPath);\n\n if (!doesExist && url.pathname.includes(\".js\")) {\n return new Response(\n `if(caches){caches?.delete(\"${distPath}\")}window.location.reload();export {}`,\n {\n headers: { \"Content-Type\": \"application/javascript\" },\n },\n );\n }\n\n // `Bun.file(path).stream()` is lazy — a missing file only throws ENOENT\n // once the body is streamed, which is *after* this handler has returned,\n // so the `try/catch` below can't catch it (it surfaces as an unhandled\n // rejection with the response already committed as 200). Bail out to a\n // clean 404 before we ever build the streaming Response.\n if (!doesExist) {\n return new Response(\"Not found\", { status: 404 });\n }\n\n try {\n const file = Bun.file(distPath);\n\n const etag = generateETag(file.lastModified);\n return new Response(file.stream(), {\n headers: {\n \"Content-Type\": file.type,\n \"Cache-Control\": \"public, max-age=31536000, must-revalidate\",\n \"Content-Length\": String(file.size),\n ETag: etag,\n },\n });\n } catch (error) {\n app.onException?.(error);\n return new Response(\"Not found\", { status: 404 });\n }\n }\n\n const handler = app.fetch.bind(app);\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const styles = [];\n\n styles.push({\n content: appCSSContent,\n });\n\n const getStyles = async (currentViews: string[]) => {\n if (!currentViews) {\n return createStyles([]);\n }\n for (const view of currentViews) {\n const clientFile = manifest[`app/views/${view}.tsx`];\n for (const cssFile of clientFile?.css ?? []) {\n const css = Bun.file(`${process.env.DIST_DIR}/client/${cssFile}`);\n styles.push({\n id: cssFile,\n content: await css.text(),\n });\n }\n }\n return createStyles(styles);\n };\n\n return await result({\n getStyles,\n bootstrapModules: [`/${manifest[\"app/client.tsx\"].file}`],\n loaders,\n viewImportMap,\n ogMap,\n cssManifest,\n });\n }\n } catch (err) {\n console.error(err);\n if (pathname.startsWith(\"/api\")) {\n return new Response(JSON.stringify({ error: err.message }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n app.onException?.(err);\n return new Response(err.stack, { status: 500 });\n }\n }\n\n const server = Bun.serve({\n maxRequestBodySize: 10 * 1024 * 1024 * 1024, // 10 GB\n fetch: async (req, server) => {\n if (!req.headers.get(\"x-forwarded-for\")) {\n // `requestIP` is null for closed/unix sockets — guard so it never\n // throws before the request is handled.\n const ip = server.requestIP(req);\n if (ip) req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await instrumentation(req, requestHandler);\n },\n idleTimeout: Number(process.env.SERVER_IDLE_TIMEOUT ?? 10),\n port: process.env.PORT || 5173,\n });\n\n printStartupBanner({ port: server.port, rootDir });\n\n return server;\n}\n",
|
|
6
|
-
"export function generateETag(lastModified: number): string {\n // Assuming the last modified timestamp is in milliseconds\n const lastModifiedStr = lastModified.toString();\n\n const hasher = new Bun.CryptoHasher(\"sha1\");\n hasher.update(lastModifiedStr);\n const hash = hasher.digest(\"hex\");\n\n return hash;\n}\n",
|
|
7
|
-
"import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n"
|
|
8
|
-
],
|
|
9
|
-
"mappings": ";iKAAA,SAAS,OCAF,GAAS,CAAY,CAAC,EAA8B,CAEzD,IAAM,EAAkB,EAAa,SAAS,EAExC,EAAS,IAAI,IAAI,aAAa,MAAM,EAI1C,OAHA,EAAO,OAAO,CAAe,EAChB,EAAO,OAAO,KAAK,ECFlC,GAAI,CAAC,WAAW,WACd,WAAW,WAAa,EFF1B,iBAAS,oBAMT,IAAM,EAAa,QAAQ,IAAI,kBAAoB,GAC7C,EAAU,EAAK,QAAQ,IAAI,EAAG,CAAU,EAExC,EAAS,EAAK,EAAS,KAAK,EAC5B,EAAU,EAAK,EAAS,MAAM,EAMpC,eAAsB,CAAQ,CAAC,EAAU,EAAkC,CACzE,IAAM,EAAW,MAAa,UAAG,gCAC3B,EAAiB,MAAa,UAAG,gCAEvC,QAAQ,IAAI,SAAW,EACvB,QAAQ,IAAI,QAAU,EACtB,QAAQ,IAAI,SAAW,EAEvB,IAAM,EAAgB,CAAC,EACjB,EAAQ,CAAC,EACT,EAAc,CAAC,EACf,EAAW,CAAC,EAAkB,IAAiB,IAAI,qBAA4B,MAC/E,EAAY,CAAC,EAEnB,QAAW,IAAY,CAAC,MAAO,GAAG,EAAI,qBAAqB,KAAK,CAAG,CAAC,EAAG,CACrE,IAAM,EAAa,EAAe,aAAa,SAC/C,GAAI,CAAC,GAAY,KAAM,CACrB,QAAQ,IAAI,6BAA6B,GAAU,EACnD,QAAQ,IAAI,CAAU,EACtB,IAAM,EAAQ,OAAO,KAAK,CAAc,EAClC,EAAO,aAAa,QAC1B,QAAQ,IAAI,GAAG,gCAAmC,EAClD,QAAQ,IAAI,CAAK,EAEnB,IAAM,EAAM,MAAa,UAAG,QAAQ,IAAI,mBAAmB,GAAY,QACvE,EAAc,GAAY,EAAI,QAC9B,EAAM,GAAY,EAAI,UACtB,IAAM,EAAa,EAAS,aAAa,SAEzC,GAAI,GAAY,KAAO,GAAY,IAAI,OAAS,EAC9C,EAAY,GAAY,GAAY,IAEtC,GAAI,EACF,EAAU,KAAK,EAAS,EAAU,IAAI,GAAY,MAAM,CAAC,EAI7D,IAAM,EAAU,IAAI,EAAU,KAAK,GAAG,KAKhC,EAAwB,EAAS,mBAAmB,KAAO,CAAC,EAC5D,GACJ,MAAM,QAAQ,IACZ,EAAY,IAAI,CAAC,IAAY,IAAI,KAAK,GAAG,YAAkB,GAAS,EAAE,KAAK,CAAC,CAC9E,GACA,KAAK;AAAA,CAAI,EAEX,eAAe,CAAc,CAAC,EAAc,CAC1C,IAAQ,YAAa,IAAI,IAAI,EAAI,GAAG,EAE9B,EAAU,IAAI,EAAW,CAC7B,SACE,iEACJ,CAAC,EAEK,EAAkB,EAAS,WAAW,cAAc,EACpD,EAAgB,EAAQ,KAAK,CAAE,UAAS,CAAC,GAAK,EAE9C,EAAQ,EAAS,WAAW,MAAM,EAExC,GAAI,GAAiB,CAAC,EAAO,CAC3B,IAAM,EAAM,IAAI,IAAI,EAAI,GAAG,EACrB,EAAW,EAAI,IAAI,QAAQ,EAAI,OAAQ,EAAE,EAAE,MAAM,GAAG,EAAE,GACtD,EAAW,GAAG,WAAiB,EAAS,QAAQ,iBAAkB,SAAS,IAC3E,EAAY,MAAM,EAAO,CAAQ,EAEvC,GAAI,CAAC,GAAa,EAAI,SAAS,SAAS,KAAK,EAC3C,OAAO,IAAI,SACT,8BAA8B,yCAC9B,CACE,QAAS,CAAE,eAAgB,wBAAyB,CACtD,CACF,EAQF,GAAI,CAAC,EACH,OAAO,IAAI,SAAS,YAAa,CAAE,OAAQ,GAAI,CAAC,EAGlD,GAAI,CACF,IAAM,EAAO,IAAI,KAAK,CAAQ,EAExB,EAAO,EAAa,EAAK,YAAY,EAC3C,OAAO,IAAI,SAAS,EAAK,OAAO,EAAG,CACjC,QAAS,CACP,eAAgB,EAAK,KACrB,gBAAiB,4CACjB,iBAAkB,OAAO,EAAK,IAAI,EAClC,KAAM,CACR,CACF,CAAC,EACD,MAAO,EAAO,CAEd,OADA,EAAI,cAAc,CAAK,EAChB,IAAI,SAAS,YAAa,CAAE,OAAQ,GAAI,CAAC,GAIpD,IAAM,EAAU,EAAI,MAAM,KAAK,CAAG,EAElC,GAAI,CACF,IAAM,EAAS,MAAM,EAAQ,CAAG,EAChC,GAAI,aAAkB,SACpB,OAAO,EACF,KACL,IAAM,EAAS,CAAC,EAuBhB,OArBA,EAAO,KAAK,CACV,QAAS,CACX,CAAC,EAmBM,MAAM,EAAO,CAClB,UAlBgB,MAAO,IAA2B,CAClD,GAAI,CAAC,EACH,OAAO,EAAa,CAAC,CAAC,EAExB,QAAW,KAAQ,EAAc,CAC/B,IAAM,EAAa,EAAS,aAAa,SACzC,QAAW,KAAW,GAAY,KAAO,CAAC,EAAG,CAC3C,IAAM,EAAM,IAAI,KAAK,GAAG,QAAQ,IAAI,mBAAmB,GAAS,EAChE,EAAO,KAAK,CACV,GAAI,EACJ,QAAS,MAAM,EAAI,KAAK,CAC1B,CAAC,GAGL,OAAO,EAAa,CAAM,GAK1B,iBAAkB,CAAC,IAAI,EAAS,kBAAkB,MAAM,EACxD,UACA,gBACA,QACA,aACF,CAAC,GAEH,MAAO,EAAK,CAEZ,GADA,QAAQ,MAAM,CAAG,EACb,EAAS,WAAW,MAAM,EAC5B,OAAO,IAAI,SAAS,KAAK,UAAU,CAAE,MAAO,EAAI,OAAQ,CAAC,EAAG,CAC1D,OAAQ,IACR,QAAS,CAAE,eAAgB,kBAAmB,CAChD,CAAC,EAGH,OADA,EAAI,cAAc,CAAG,EACd,IAAI,SAAS,EAAI,MAAO,CAAE,OAAQ,GAAI,CAAC,GAIlD,IAAM,EAAS,IAAI,MAAM,CACvB,mBAAoB,YACpB,MAAO,MAAO,EAAK,IAAW,CAC5B,GAAI,CAAC,EAAI,QAAQ,IAAI,iBAAiB,EAAG,CAGvC,IAAM,EAAK,EAAO,UAAU,CAAG,EAC/B,GAAI,EAAI,EAAI,QAAQ,IAAI,kBAAmB,EAAG,OAAO,EAEvD,OAAO,MAAM,EAAgB,EAAK,CAAc,GAElD,YAAa,OAAO,QAAQ,IAAI,qBAAuB,EAAE,EACzD,KAAM,QAAQ,IAAI,MAAQ,IAC5B,CAAC,EAID,OAFA,EAAmB,CAAE,KAAM,EAAO,KAAM,SAAQ,CAAC,EAE1C",
|
|
10
|
-
"debugId": "9746BCBA13C1DFAB64756E2164756E21",
|
|
11
|
-
"names": []
|
|
12
|
-
}
|