gemi 0.4.126 → 0.5.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 (116) hide show
  1. package/dist/app/index.js +2 -2
  2. package/dist/app/index.js.map +2 -2
  3. package/dist/bin/index.js +30767 -57
  4. package/dist/broadcasting/index.js +1 -1
  5. package/dist/{chunk-716jpkxk.js → chunk-0s3yapam.js} +3 -3
  6. package/dist/{chunk-716jpkxk.js.map → chunk-0s3yapam.js.map} +1 -1
  7. package/dist/chunk-1tpqxqmt.js +20 -0
  8. package/dist/{chunk-1qw2v7pp.js.map → chunk-1tpqxqmt.js.map} +12 -25
  9. package/dist/chunk-3pfpq2xc.js +4 -0
  10. package/dist/{chunk-49eas1md.js.map → chunk-3pfpq2xc.js.map} +1 -1
  11. package/dist/chunk-45df2pgm.js +5 -0
  12. package/dist/chunk-45df2pgm.js.map +65 -0
  13. package/dist/{chunk-99h5xbnm.js → chunk-6y378xez.js} +2 -2
  14. package/dist/{chunk-99h5xbnm.js.map → chunk-6y378xez.js.map} +1 -1
  15. package/dist/chunk-740bx4ar.js +3 -0
  16. package/dist/chunk-740bx4ar.js.map +15 -0
  17. package/dist/chunk-77gdtbj7.js +4 -0
  18. package/dist/{chunk-5vx2z0tr.js.map → chunk-77gdtbj7.js.map} +2 -2
  19. package/dist/chunk-7v15p9nn.js +4 -0
  20. package/dist/chunk-7v15p9nn.js.map +26 -0
  21. package/dist/{chunk-jtv3vbyw.js → chunk-83snmykp.js} +3 -3
  22. package/dist/{chunk-jtv3vbyw.js.map → chunk-83snmykp.js.map} +1 -1
  23. package/dist/{chunk-2h3dg6ak.js → chunk-95hz1khz.js} +2 -2
  24. package/dist/{chunk-2h3dg6ak.js.map → chunk-95hz1khz.js.map} +1 -1
  25. package/dist/{chunk-h64zrvbm.js → chunk-9877dbvm.js} +2 -2
  26. package/dist/{chunk-h64zrvbm.js.map → chunk-9877dbvm.js.map} +1 -1
  27. package/dist/chunk-9em80ypy.js +4 -0
  28. package/dist/{chunk-3sgwee0d.js.map → chunk-9em80ypy.js.map} +2 -2
  29. package/dist/{chunk-cqn3123n.js → chunk-ac7dhq1c.js} +2 -2
  30. package/dist/{chunk-cqn3123n.js.map → chunk-ac7dhq1c.js.map} +1 -1
  31. package/dist/chunk-ch0p7trm.js +4 -0
  32. package/dist/chunk-ch0p7trm.js.map +14 -0
  33. package/dist/chunk-dfc3y8yn.js +4 -0
  34. package/dist/{chunk-mkwkxzth.js.map → chunk-dfc3y8yn.js.map} +5 -5
  35. package/dist/{chunk-tmp6k3re.js → chunk-ewp71f92.js} +2 -2
  36. package/dist/{chunk-tmp6k3re.js.map → chunk-ewp71f92.js.map} +1 -1
  37. package/dist/chunk-fn89vt9j.js +4 -0
  38. package/dist/{chunk-mr2ew71j.js.map → chunk-fn89vt9j.js.map} +6 -6
  39. package/dist/chunk-hhbd5qn0.js +11 -0
  40. package/dist/{chunk-75wm7ysh.js.map → chunk-hhbd5qn0.js.map} +5 -5
  41. package/dist/{chunk-wdx058ey.js → chunk-hnyegpzf.js} +3 -3
  42. package/dist/{chunk-wdx058ey.js.map → chunk-hnyegpzf.js.map} +1 -1
  43. package/dist/chunk-hrf5jh5c.js +8 -0
  44. package/dist/{chunk-qcdwj08x.js.map → chunk-hrf5jh5c.js.map} +2 -2
  45. package/dist/chunk-k8t4vgx8.js +4 -0
  46. package/dist/{chunk-yd2678ws.js.map → chunk-k8t4vgx8.js.map} +4 -4
  47. package/dist/chunk-n34j31ss.js +4 -0
  48. package/dist/chunk-n34j31ss.js.map +16 -0
  49. package/dist/{chunk-2srb036m.js → chunk-rr5j1686.js} +2 -2
  50. package/dist/{chunk-2srb036m.js.map → chunk-rr5j1686.js.map} +1 -1
  51. package/dist/chunk-sqgv2xyc.js +4 -0
  52. package/dist/{chunk-4rgtv394.js.map → chunk-sqgv2xyc.js.map} +4 -4
  53. package/dist/{chunk-qf0qr76c.js → chunk-srsjrh5y.js} +3 -3
  54. package/dist/{chunk-qf0qr76c.js.map → chunk-srsjrh5y.js.map} +1 -1
  55. package/dist/chunk-t34vnmky.js +4 -0
  56. package/dist/{chunk-sdejryyp.js.map → chunk-t34vnmky.js.map} +1 -1
  57. package/dist/chunk-vc1yv3v5.js +4 -0
  58. package/dist/{chunk-7vggss3r.js.map → chunk-vc1yv3v5.js.map} +2 -2
  59. package/dist/chunk-vp96f2zv.js +4 -0
  60. package/dist/{chunk-w1t51rk3.js.map → chunk-vp96f2zv.js.map} +4 -4
  61. package/dist/chunk-yq60hz8s.js +4 -0
  62. package/dist/{chunk-5e4ahq43.js.map → chunk-yq60hz8s.js.map} +6 -6
  63. package/dist/client/ClientRouter.d.ts.map +1 -1
  64. package/dist/client/ClientRouterContext.d.ts +2 -0
  65. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  66. package/dist/client/Mutation.d.ts.map +1 -1
  67. package/dist/client/ServerDataProvider.d.ts +2 -0
  68. package/dist/client/ServerDataProvider.d.ts.map +1 -1
  69. package/dist/client/index.js +38 -5
  70. package/dist/client/index.js.map +1 -1
  71. package/dist/client/useNavigate.d.ts.map +1 -1
  72. package/dist/email/index.js +2 -2
  73. package/dist/email/index.js.map +2 -2
  74. package/dist/facades/index.js +2 -2
  75. package/dist/facades/index.js.map +4 -4
  76. package/dist/http/CSRFMiddleware.d.ts +18 -0
  77. package/dist/http/CSRFMiddleware.d.ts.map +1 -0
  78. package/dist/http/HttpRequest.d.ts +4 -9
  79. package/dist/http/HttpRequest.d.ts.map +1 -1
  80. package/dist/http/index.d.ts +1 -0
  81. package/dist/http/index.d.ts.map +1 -1
  82. package/dist/http/index.js +2 -2
  83. package/dist/http/index.js.map +7 -6
  84. package/dist/http/requestContext.d.ts +2 -0
  85. package/dist/http/requestContext.d.ts.map +1 -1
  86. package/dist/kernel/index.js +2 -2
  87. package/dist/kernel/index.js.map +2 -2
  88. package/dist/server/index.js +5 -5
  89. package/dist/server/index.js.map +5 -5
  90. package/dist/services/index.js +5 -5
  91. package/dist/services/index.js.map +6 -7
  92. package/dist/services/router/ViewRouterServiceContainer.d.ts +5 -1
  93. package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -1
  94. package/package.json +1 -1
  95. package/dist/chunk-1qw2v7pp.js +0 -20
  96. package/dist/chunk-3sgwee0d.js +0 -4
  97. package/dist/chunk-49eas1md.js +0 -4
  98. package/dist/chunk-4rgtv394.js +0 -4
  99. package/dist/chunk-5e4ahq43.js +0 -4
  100. package/dist/chunk-5vx2z0tr.js +0 -4
  101. package/dist/chunk-75wm7ysh.js +0 -11
  102. package/dist/chunk-7sn2drtt.js +0 -5
  103. package/dist/chunk-7sn2drtt.js.map +0 -64
  104. package/dist/chunk-7vggss3r.js +0 -4
  105. package/dist/chunk-a0zzg1ga.js +0 -3
  106. package/dist/chunk-a0zzg1ga.js.map +0 -16
  107. package/dist/chunk-hxntatg7.js +0 -4
  108. package/dist/chunk-hxntatg7.js.map +0 -10
  109. package/dist/chunk-mkwkxzth.js +0 -4
  110. package/dist/chunk-mr2ew71j.js +0 -4
  111. package/dist/chunk-qcdwj08x.js +0 -8
  112. package/dist/chunk-sdejryyp.js +0 -4
  113. package/dist/chunk-tq3grsay.js +0 -4
  114. package/dist/chunk-tq3grsay.js.map +0 -14
  115. package/dist/chunk-w1t51rk3.js +0 -4
  116. package/dist/chunk-yd2678ws.js +0 -4
@@ -2,15 +2,15 @@
2
2
  "version": 3,
3
3
  "sources": ["../server/dev.ts", "../server/styles.tsx", "../server/imageHandler.ts", "../server/renderErrorPage.ts", "../server/prod.ts", "../server/generateEtag.ts", "../../../node_modules/urlpattern-polyfill/index.js"],
4
4
  "sourcesContent": [
5
- "import { join } from \"path\";\nimport type { App } from \"../app/App\";\nimport { createStyles } from \"./styles\";\nimport { imageHandler } from \"./imageHandler\";\nimport { renderErrorPage } from \"./renderErrorPage\";\nimport { Serve } from \"bun\";\n\nconst rootDir = process.cwd();\nconst appDir = join(rootDir, \"app\");\n\nexport async function startDevServer() {\n const root = process.cwd();\n\n const vite = await (\n await import(\"vite\")\n ).createServer({\n root,\n logLevel: \"error\",\n server: {\n watch: {\n usePolling: true,\n interval: 100,\n ignored: [\"**/storage/**\"],\n },\n hmr: {\n clientPort: 5174,\n },\n },\n appType: \"custom\",\n resolve: {\n alias: {\n \"@/app\": appDir,\n },\n },\n });\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n\n async function handleDevRequests(req: Request): Promise<Response> {\n const { pathname } = new URL(req.url);\n if (pathname.startsWith(\"/refresh.js\")) {\n return new Response(\n `\n import RefreshRuntime from \"http://localhost:5173/@react-refresh\";\n RefreshRuntime.injectIntoGlobalHook(window);\n window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n `,\n {\n headers: {\n \"Content-Type\": \"application/javascript\",\n },\n },\n );\n }\n\n try {\n const res = await fetch(`http://localhost:5174${pathname}`);\n\n if (res.ok) {\n return res;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n async function getApp(): Promise<App> {\n try {\n return (\n await vite.ssrLoadModule(join(appDir, \"bootstrap.ts\"), {\n fixStacktrace: true,\n })\n ).app;\n } catch (err) {\n vite.ws.send({ type: \"error\", err });\n console.error(err);\n }\n }\n\n async function createServe(app: App): Promise<Serve> {\n const handler = app.fetch.bind(app);\n return {\n fetch: async (req, server) => {\n if (server.upgrade(req, { data: { headers: req.headers } })) {\n return; // do not return a Response\n }\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n\n const { pathname } = new URL(req.url);\n\n const devResponse = await handleDevRequests(req);\n if (devResponse instanceof Response) {\n return devResponse;\n }\n\n if (pathname.startsWith(\"/__gemi/image\")) {\n return await imageHandler(req);\n }\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const viewImportMap = {};\n const template = (viewName: string, path: string) =>\n `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\n \"404\",\n ...app.getFlatComponentTree.call(app),\n ]) {\n if (process.env.NODE_ENV === \"test\") {\n break;\n }\n const appDir = `${process.env.APP_DIR}`;\n const mod = await vite.ssrLoadModule(\n `${appDir}/views/${fileName}.tsx`,\n );\n viewImportMap[fileName] = mod.default;\n templates.push(\n template(fileName, `${appDir}/views/${fileName}.tsx`),\n );\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n const { default: css } = await vite.ssrLoadModule(\n `${appDir}/app.css`,\n );\n\n const styles = [];\n styles.push({\n isDev: true,\n id: `${appDir}/app.css`,\n content: css,\n });\n return await result({\n styles: createStyles(styles),\n bootstrapModules: [\n \"/refresh.js\",\n \"/app/client.tsx\",\n \"http://localhost:5173/@vite/client\",\n ],\n viewImportMap,\n loaders,\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 return new Response(renderErrorPage(err), {\n headers: { \"Content-Type\": \"text/html\" },\n });\n }\n },\n port: process.env.PORT || 5173,\n websocket: app.websocket,\n };\n }\n\n await vite.listen(5174);\n\n const app = await getApp();\n const serve = await createServe(app);\n const server = Bun.serve(serve);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n\n console.log(`Server started on http://localhost:${process.env.PORT || 5173}`);\n\n vite.watcher.on(\"change\", async (file) => {\n const fileRelativePath = file.replace(rootDir, \"\");\n if (fileRelativePath.startsWith(\"/logs\")) {\n return;\n }\n if (fileRelativePath.startsWith(\"/app/views\")) {\n console.log(`[vite] ${fileRelativePath} changed. 🍜 Hot reloading...`);\n return;\n }\n\n console.log(`[vite] ${fileRelativePath} changed. Reloading...`);\n const modules = vite.moduleGraph.getModulesByFile(file) ?? [];\n for (const mod of Array.from(modules)) {\n vite.moduleGraph.invalidateModule(mod);\n }\n\n try {\n const app = await getApp();\n const serve = await createServe(app);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n server.reload(serve);\n vite.ws.send({\n type: \"custom\",\n event: \"http-reload\",\n });\n } catch (err) {\n console.log(\"Error on server reload\");\n console.log(err);\n vite.ws.send({\n type: \"error\",\n err,\n });\n }\n });\n\n return server;\n}\n",
6
- "export function createStyles(styles) {\n return styles.map((style, i) => {\n if (style.isDev) {\n return (\n <style key={style.id} type=\"text/css\" data-vite-dev-id={style.id}>\n {style.content}\n </style>\n );\n } else {\n return (\n <style key={i} type=\"text/css\">\n {style.content}\n </style>\n );\n }\n });\n}\n",
5
+ "import { join } from \"path\";\nimport type { App } from \"../app/App\";\nimport { createStyles } from \"./styles\";\nimport { imageHandler } from \"./imageHandler\";\nimport { renderErrorPage } from \"./renderErrorPage\";\nimport { Serve } from \"bun\";\n\nconst rootDir = process.cwd();\nconst appDir = join(rootDir, \"app\");\n\nexport async function startDevServer() {\n const root = process.cwd();\n\n const vite = await (\n await import(\"vite\")\n ).createServer({\n root,\n logLevel: \"error\",\n server: {\n watch: {\n usePolling: true,\n interval: 100,\n ignored: [\"**/storage/**\"],\n },\n hmr: {\n clientPort: 5174,\n },\n },\n appType: \"custom\",\n resolve: {\n alias: {\n \"@/app\": appDir,\n },\n },\n });\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n\n async function handleDevRequests(req: Request): Promise<Response> {\n const { pathname } = new URL(req.url);\n if (pathname.startsWith(\"/refresh.js\")) {\n return new Response(\n `\n import RefreshRuntime from \"http://localhost:5173/@react-refresh\";\n RefreshRuntime.injectIntoGlobalHook(window);\n window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n `,\n {\n headers: {\n \"Content-Type\": \"application/javascript\",\n },\n },\n );\n }\n\n try {\n const res = await fetch(`http://localhost:5174${pathname}`);\n\n if (res.ok) {\n return res;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n async function getApp(): Promise<App> {\n try {\n return (\n await vite.ssrLoadModule(join(appDir, \"bootstrap.ts\"), {\n fixStacktrace: true,\n })\n ).app;\n } catch (err) {\n vite.ws.send({ type: \"error\", err });\n console.error(err);\n }\n }\n\n async function createServe(app: App): Promise<Serve> {\n const handler = app.fetch.bind(app);\n return {\n fetch: async (req, server) => {\n if (server.upgrade(req, { data: { headers: req.headers } })) {\n return; // do not return a Response\n }\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n\n const { pathname } = new URL(req.url);\n\n const devResponse = await handleDevRequests(req);\n if (devResponse instanceof Response) {\n return devResponse;\n }\n\n if (pathname.startsWith(\"/__gemi/image\")) {\n return await imageHandler(req);\n }\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const viewImportMap = {};\n const template = (viewName: string, path: string) =>\n `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\n \"404\",\n ...app.getFlatComponentTree.call(app),\n ]) {\n if (process.env.NODE_ENV === \"test\") {\n break;\n }\n const appDir = `${process.env.APP_DIR}`;\n const mod = await vite.ssrLoadModule(\n `${appDir}/views/${fileName}.tsx`,\n );\n viewImportMap[fileName] = mod.default;\n templates.push(\n template(fileName, `${appDir}/views/${fileName}.tsx`),\n );\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n const { default: css } = await vite.ssrLoadModule(\n `${appDir}/app.css`,\n );\n\n const styles = [];\n styles.push({\n isDev: true,\n id: `${appDir}/app.css`,\n content: css,\n });\n return await result({\n getStyles: () => createStyles(styles),\n bootstrapModules: [\n \"/refresh.js\",\n \"/app/client.tsx\",\n \"http://localhost:5173/@vite/client\",\n ],\n viewImportMap,\n loaders,\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 return new Response(renderErrorPage(err), {\n headers: { \"Content-Type\": \"text/html\" },\n });\n }\n },\n port: process.env.PORT || 5173,\n websocket: app.websocket,\n };\n }\n\n await vite.listen(5174);\n\n const app = await getApp();\n const serve = await createServe(app);\n const server = Bun.serve(serve);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n\n console.log(`Server started on http://localhost:${process.env.PORT || 5173}`);\n\n vite.watcher.on(\"change\", async (file) => {\n const fileRelativePath = file.replace(rootDir, \"\");\n if (fileRelativePath.startsWith(\"/logs\")) {\n return;\n }\n if (fileRelativePath.startsWith(\"/app/views\")) {\n console.log(`[vite] ${fileRelativePath} changed. 🍜 Hot reloading...`);\n return;\n }\n\n console.log(`[vite] ${fileRelativePath} changed. Reloading...`);\n const modules = vite.moduleGraph.getModulesByFile(file) ?? [];\n for (const mod of Array.from(modules)) {\n vite.moduleGraph.invalidateModule(mod);\n }\n\n try {\n const app = await getApp();\n const serve = await createServe(app);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n server.reload(serve);\n vite.ws.send({\n type: \"custom\",\n event: \"http-reload\",\n });\n } catch (err) {\n console.log(\"Error on server reload\");\n console.log(err);\n vite.ws.send({\n type: \"error\",\n err,\n });\n }\n });\n\n return server;\n}\n",
6
+ "export function createStyles(styles) {\n return styles.map((style, i) => {\n if (style.isDev) {\n return (\n <style key={style.id} type=\"text/css\" data-vite-dev-id={style.id}>\n {style.content}\n </style>\n );\n } else {\n return (\n <style key={i} id={style?.id} type=\"text/css\">\n {style.content}\n </style>\n );\n }\n });\n}\n",
7
7
  "import sharp, { type FitEnum } from \"sharp\";\n\nexport async function imageHandler(req: Request): Promise<Response> {\n const url = new URL(req.url);\n const rawImageUrl = url.searchParams.get(\"url\");\n const width = Number(url.searchParams.get(\"w\"));\n const height = Number(url.searchParams.get(\"h\"));\n const fit = (url.searchParams.get(\"fit\") ??\n \"cover\") as unknown as keyof FitEnum;\n const quality = Number(url.searchParams.get(\"q\"));\n\n if (!rawImageUrl) {\n return new Response(\n JSON.stringify({\n error: \"url query parameter is required\",\n }),\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n status: 404,\n },\n );\n }\n const prefix = rawImageUrl.startsWith(\"http\")\n ? \"\"\n : `http://localhost:${process.env.PORT || 5173}`;\n const fullImageUrl = `${prefix}${rawImageUrl}`;\n const res = await fetch(fullImageUrl);\n if (!res.ok) {\n return new Response(\n JSON.stringify({\n error: \"Image not found\",\n info: fullImageUrl,\n }),\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n status: 404,\n },\n );\n }\n const imageBuffer = Buffer.from(await res.arrayBuffer());\n\n const buffer = await sharp(imageBuffer)\n .resize(width > 0 ? width : undefined, height > 0 ? height : undefined, {\n fit,\n })\n .webp({ quality: quality > 0 ? quality : 80, force: true })\n .toBuffer();\n\n res.headers.delete(\"Content-Type\");\n res.headers.delete(\"Content-Length\");\n return new Response(buffer, {\n headers: {\n \"Content-Type\": \"image/webp\",\n \"Content-Length\": `${buffer.byteLength}`,\n ...res.headers.toJSON(),\n },\n });\n}\n",
8
8
  "export function renderErrorPage(err: any) {\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1.0\"\n />\n <title>Error</title>\n <style>\n body {\n font-family: Arial, sans-serif;\n padding: 20px;\n }\n h1 {\n color: red;\n }\n </style>\n </head>\n <body>\n <h1>Error</h1>\n <pre>${JSON.stringify(err, null, 2)}</pre>\n <script type=\"module\" src=\"/refresh.js\"></script>\n </body>\n</html>\n`;\n}\n",
9
- "import { join } from \"path\";\nimport { imageHandler } from \"./imageHandler\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { createStyles } from \"./styles\";\n\nconst rootDir = process.cwd();\n\nconst appDir = join(rootDir, \"app\");\nconst distDir = join(rootDir, \"dist\");\n\nexport async function startProdServer() {\n const { app } = await import(`${distDir}/server/bootstrap.mjs`);\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 async function requestHandler(req: Request) {\n const { pathname } = new URL(req.url);\n\n if (pathname.startsWith(\"/__gemi/image\")) {\n return await imageHandler(req);\n }\n\n const pattern = new URLPattern({\n pathname: \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|ico|ttf)\",\n });\n\n const isApi = pathname.startsWith(\"/api\");\n\n if (pattern.test({ pathname }) && !isApi) {\n const url = new URL(req.url);\n const filePath = req.url.replace(url.origin, \"\").split(\"?\")[0];\n const file = Bun.file(\n `dist/client${filePath.replace(\"/assets/assets\", \"/assets\")}`,\n );\n if (!file) {\n return new Response(\"Not found\", { status: 404 });\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 }\n\n const styles = [];\n const cssFile = Bun.file(\n `${distDir}/client/${manifest[\"app/client.tsx\"].css}`,\n );\n const cssContent = await cssFile.text();\n styles.push({\n content: cssContent,\n });\n\n const viewImportMap = {};\n const template = (viewName: string, path: string) =>\n `\"${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(\n `${process.env.DIST_DIR}/server/${serverFile?.file}`\n );\n viewImportMap[fileName] = mod.default;\n const clientFile = manifest[`app/views/${fileName}.tsx`];\n if (clientFile) {\n templates.push(template(fileName, `/${clientFile?.file}`));\n }\n }\n\n const loaders = `{${templates.join(\",\")}}`;\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 return await result({\n styles: createStyles(styles),\n bootstrapModules: [`/${manifest[\"app/client.tsx\"].file}`],\n loaders,\n viewImportMap,\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 return new Response(err.stack, { status: 500 });\n }\n }\n\n const server = Bun.serve({\n fetch: async (req, server) => {\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await requestHandler(req);\n },\n port: process.env.PORT || 5173,\n });\n\n console.log(\"Production server running on\", server.url.href);\n\n return server;\n}\n",
9
+ "import { join } from \"path\";\nimport { imageHandler } from \"./imageHandler\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { createStyles } from \"./styles\";\n\nconst rootDir = process.cwd();\n\nconst appDir = join(rootDir, \"app\");\nconst distDir = join(rootDir, \"dist\");\n\nexport async function startProdServer() {\n const { app } = await import(`${distDir}/server/bootstrap.mjs`);\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 cssManifest = {};\n const template = (viewName: string, path: string) =>\n `\"${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(\n `${process.env.DIST_DIR}/server/${serverFile?.file}`\n );\n viewImportMap[fileName] = mod.default;\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 const appCssFile = Bun.file(\n `${distDir}/client/${manifest[\"app/client.tsx\"].css}`,\n );\n const appCSSContent = await appCssFile.text();\n\n async function requestHandler(req: Request) {\n const { pathname } = new URL(req.url);\n\n if (pathname.startsWith(\"/__gemi/image\")) {\n return await imageHandler(req);\n }\n\n const pattern = new URLPattern({\n pathname: \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|ico|ttf)\",\n });\n\n const isApi = pathname.startsWith(\"/api\");\n\n if (pattern.test({ pathname }) && !isApi) {\n const url = new URL(req.url);\n const filePath = req.url.replace(url.origin, \"\").split(\"?\")[0];\n const file = Bun.file(\n `dist/client${filePath.replace(\"/assets/assets\", \"/assets\")}`,\n );\n if (!file) {\n return new Response(\"Not found\", { status: 404 });\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 }\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 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 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 return new Response(err.stack, { status: 500 });\n }\n }\n\n const server = Bun.serve({\n fetch: async (req, server) => {\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await requestHandler(req);\n },\n port: process.env.PORT || 5173,\n });\n\n console.log(\"Production server running on\", server.url.href);\n\n return server;\n}\n",
10
10
  "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",
11
11
  "import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n"
12
12
  ],
13
- "mappings": ";sIAAA,UAAS,gDCAF,SAAS,CAAY,CAAC,EAAQ,CACnC,OAAO,EAAO,IAAI,CAAC,EAAO,IAAM,CAC9B,GAAI,EAAM,MACR,OACE,EAEE,QAFF,CAAsB,KAAK,WAAW,mBAAkB,EAAM,GAA9D,SACG,EAAM,SADG,EAAM,EAEhB,MAGJ,QACE,EAEE,QAFF,CAAe,KAAK,WAApB,SACG,EAAM,SADG,CAEV,EAGP,ECfH,eAEA,eAAsB,CAAY,CAAC,EAAiC,CAClE,IAAM,EAAM,IAAI,IAAI,EAAI,GAAG,EACrB,EAAc,EAAI,aAAa,IAAI,KAAK,EACxC,EAAQ,OAAO,EAAI,aAAa,IAAI,GAAG,CAAC,EACxC,EAAS,OAAO,EAAI,aAAa,IAAI,GAAG,CAAC,EACzC,EAAO,EAAI,aAAa,IAAI,KAAK,GACrC,QACI,EAAU,OAAO,EAAI,aAAa,IAAI,GAAG,CAAC,EAEhD,IAAK,EACH,OAAO,IAAI,SACT,KAAK,UAAU,CACb,MAAO,iCACT,CAAC,EACD,CACE,QAAS,CACP,eAAgB,kBAClB,EACA,OAAQ,GACV,CACF,EAKF,IAAM,EAAe,GAHN,EAAY,WAAW,MAAM,EACxC,GACA,oBAAoB,QAAQ,IAAI,MAAQ,SACX,IAC3B,EAAM,MAAM,MAAM,CAAY,EACpC,IAAK,EAAI,GACP,OAAO,IAAI,SACT,KAAK,UAAU,CACb,MAAO,kBACP,KAAM,CACR,CAAC,EACD,CACE,QAAS,CACP,eAAgB,kBAClB,EACA,OAAQ,GACV,CACF,EAEF,IAAM,EAAc,OAAO,KAAK,MAAM,EAAI,YAAY,CAAC,EAEjD,EAAS,MAAM,UAAM,CAAW,EACnC,OAAO,EAAQ,EAAI,EAAQ,OAAW,EAAS,EAAI,EAAS,OAAW,CACtE,KACF,CAAC,EACA,KAAK,CAAE,QAAS,EAAU,EAAI,EAAU,GAAI,MAAO,EAAK,CAAC,EACzD,SAAS,EAIZ,OAFA,EAAI,QAAQ,OAAO,cAAc,EACjC,EAAI,QAAQ,OAAO,gBAAgB,EAC5B,IAAI,SAAS,EAAQ,CAC1B,QAAS,CACP,eAAgB,aAChB,iBAAkB,GAAG,EAAO,gBACzB,EAAI,QAAQ,OAAO,CACxB,CACF,CAAC,EC5DI,SAAS,CAAe,CAAC,EAAU,CACxC,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAsBE,KAAK,UAAU,EAAK,KAAM,CAAC;AAAA;AAAA;AAAA;EHhBtC,IAAM,EAAU,QAAQ,IAAI,EACtB,EAAS,EAAK,EAAS,KAAK,EAElC,eAAsB,CAAc,EAAG,CACrC,IAAM,EAAO,QAAQ,IAAI,EAEnB,EAAO,MACX,KAAa,iBACb,aAAa,CACb,OACA,SAAU,QACV,OAAQ,CACN,MAAO,CACL,WAAY,GACZ,SAAU,IACV,QAAS,CAAC,eAAe,CAC3B,EACA,IAAK,CACH,WAAY,IACd,CACF,EACA,QAAS,SACT,QAAS,CACP,MAAO,CACL,QAAS,CACX,CACF,CACF,CAAC,EAED,QAAQ,IAAI,SAAW,EACvB,QAAQ,IAAI,QAAU,EAEtB,eAAe,CAAiB,CAAC,EAAiC,CAChE,IAAQ,YAAa,IAAI,IAAI,EAAI,GAAG,EACpC,GAAI,EAAS,WAAW,aAAa,EACnC,OAAO,IAAI,SACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,CACE,QAAS,CACP,eAAgB,wBAClB,CACF,CACF,EAGF,GAAI,CACF,IAAM,EAAM,MAAM,MAAM,wBAAwB,GAAU,EAE1D,GAAI,EAAI,GACN,OAAO,QAEF,EAAP,CACA,QAAQ,IAAI,CAAG,GAInB,eAAe,CAAM,EAAiB,CACpC,GAAI,CACF,OACE,MAAM,EAAK,cAAc,EAAK,EAAQ,cAAc,EAAG,CACrD,cAAe,EACjB,CAAC,GACD,UACK,EAAP,CACA,EAAK,GAAG,KAAK,CAAE,KAAM,QAAS,KAAI,CAAC,EACnC,QAAQ,MAAM,CAAG,GAIrB,eAAe,CAAW,CAAC,EAA0B,CACnD,IAAM,EAAU,EAAI,MAAM,KAAK,CAAG,EAClC,MAAO,CACL,MAAO,MAAO,EAAK,IAAW,CAC5B,GAAI,EAAO,QAAQ,EAAK,CAAE,KAAM,CAAE,QAAS,EAAI,OAAQ,CAAE,CAAC,EACxD,OAEF,IAAK,EAAI,QAAQ,IAAI,iBAAiB,EAAG,CACvC,IAAM,EAAK,EAAO,UAAU,CAAG,EAC/B,EAAI,QAAQ,IAAI,kBAAmB,EAAG,OAAO,EAG/C,IAAQ,YAAa,IAAI,IAAI,EAAI,GAAG,EAE9B,EAAc,MAAM,EAAkB,CAAG,EAC/C,GAAI,aAAuB,SACzB,OAAO,EAGT,GAAI,EAAS,WAAW,eAAe,EACrC,OAAO,MAAM,EAAa,CAAG,EAG/B,GAAI,CACF,IAAM,EAAS,MAAM,EAAQ,CAAG,EAChC,GAAI,aAAkB,SACpB,OAAO,MACF,CACL,IAAM,EAAgB,CAAC,EACjB,EAAW,CAAC,EAAkB,IAClC,IAAI,qBAA4B,MAC5B,EAAY,CAAC,EAEnB,QAAW,IAAY,CACrB,MACA,GAAG,EAAI,qBAAqB,KAAK,CAAG,CACtC,EAAG,CAID,IAAM,EAAS,GAAG,QAAQ,IAAI,UACxB,EAAM,MAAM,EAAK,cACrB,GAAG,WAAgB,OACrB,EACA,EAAc,GAAY,EAAI,QAC9B,EAAU,KACR,EAAS,EAAU,GAAG,WAAgB,OAAc,CACtD,EAGF,IAAM,EAAU,IAAI,EAAU,KAAK,GAAG,MAC9B,QAAS,GAAQ,MAAM,EAAK,cAClC,GAAG,WACL,EAEM,EAAS,CAAC,EAMhB,OALA,EAAO,KAAK,CACV,MAAO,GACP,GAAI,GAAG,YACP,QAAS,CACX,CAAC,EACM,MAAM,EAAO,CAClB,OAAQ,EAAa,CAAM,EAC3B,iBAAkB,CAChB,cACA,kBACA,oCACF,EACA,gBACA,SACF,CAAC,SAEI,EAAP,CAEA,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,EAEH,OAAO,IAAI,SAAS,EAAgB,CAAG,EAAG,CACxC,QAAS,CAAE,eAAgB,WAAY,CACzC,CAAC,IAGL,KAAM,QAAQ,IAAI,MAAQ,KAC1B,UAAW,EAAI,SACjB,EAGF,MAAM,EAAK,OAAO,IAAI,EAEtB,IAAM,EAAM,MAAM,EAAO,EACnB,EAAQ,MAAM,EAAY,CAAG,EAC7B,EAAS,IAAI,MAAM,CAAK,EAwD9B,OAvDA,EAAI,UACF,CACE,EACA,EACA,IACG,CACH,EAAO,QAAQ,EAAO,EAAM,CAAQ,EAExC,EAEA,QAAQ,IAAI,sCAAsC,QAAQ,IAAI,MAAQ,MAAM,EAE5E,EAAK,QAAQ,GAAG,SAAU,MAAO,IAAS,CACxC,IAAM,EAAmB,EAAK,QAAQ,EAAS,EAAE,EACjD,GAAI,EAAiB,WAAW,OAAO,EACrC,OAEF,GAAI,EAAiB,WAAW,YAAY,EAAG,CAC7C,QAAQ,IAAI,UAAU,0CAA8C,EACpE,OAGF,QAAQ,IAAI,UAAU,yBAAwC,EAC9D,IAAM,EAAU,EAAK,YAAY,iBAAiB,CAAI,GAAK,CAAC,EAC5D,QAAW,KAAO,MAAM,KAAK,CAAO,EAClC,EAAK,YAAY,iBAAiB,CAAG,EAGvC,GAAI,CACF,IAAM,EAAM,MAAM,EAAO,EACnB,EAAQ,MAAM,EAAY,CAAG,EACnC,EAAI,UACF,CACE,EACA,EACA,IACG,CACH,EAAO,QAAQ,EAAO,EAAM,CAAQ,EAExC,EACA,EAAO,OAAO,CAAK,EACnB,EAAK,GAAG,KAAK,CACX,KAAM,SACN,MAAO,aACT,CAAC,QACM,EAAP,CACA,QAAQ,IAAI,wBAAwB,EACpC,QAAQ,IAAI,CAAG,EACf,EAAK,GAAG,KAAK,CACX,KAAM,QACN,KACF,CAAC,GAEJ,EAEM,EIxOT,eAAS,aCAF,SAAS,CAAY,CAAC,EAA8B,CAEzD,IAAM,EAAkB,EAAa,SAAS,EAExC,EAAS,IAAI,IAAI,aAAa,MAAM,EAI1C,OAHA,EAAO,OAAO,CAAe,EAChB,EAAO,OAAO,KAAK,ECFlC,IAAK,WAAW,WACd,WAAW,WAAa,EFC1B,IAAM,EAAU,QAAQ,IAAI,EAEtB,EAAS,EAAK,EAAS,KAAK,EAC5B,EAAU,EAAK,EAAS,MAAM,EAEpC,eAAsB,CAAe,EAAG,CACtC,IAAQ,OAAQ,MAAa,UAAG,0BAC1B,EAAW,MAAa,UAAG,gCAC3B,EAAiB,MAAa,UAAG,gCAEvC,QAAQ,IAAI,SAAW,EACvB,QAAQ,IAAI,QAAU,EACtB,QAAQ,IAAI,SAAW,EAEvB,eAAe,CAAc,CAAC,EAAc,CAC1C,IAAQ,YAAa,IAAI,IAAI,EAAI,GAAG,EAEpC,GAAI,EAAS,WAAW,eAAe,EACrC,OAAO,MAAM,EAAa,CAAG,EAG/B,IAAM,EAAU,IAAI,EAAW,CAC7B,SAAU,mDACZ,CAAC,EAEK,EAAQ,EAAS,WAAW,MAAM,EAExC,GAAI,EAAQ,KAAK,CAAE,UAAS,CAAC,IAAM,EAAO,CACxC,IAAM,EAAM,IAAI,IAAI,EAAI,GAAG,EACrB,EAAW,EAAI,IAAI,QAAQ,EAAI,OAAQ,EAAE,EAAE,MAAM,GAAG,EAAE,GACtD,EAAO,IAAI,KACf,cAAc,EAAS,QAAQ,iBAAkB,SAAS,GAC5D,EACA,IAAK,EACH,OAAO,IAAI,SAAS,YAAa,CAAE,OAAQ,GAAI,CAAC,EAElD,IAAM,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,EAGH,IAAM,EAAS,CAAC,EAIV,EAAa,MAHH,IAAI,KAClB,GAAG,YAAkB,EAAS,kBAAkB,KAClD,EACiC,KAAK,EACtC,EAAO,KAAK,CACV,QAAS,CACX,CAAC,EAED,IAAM,EAAgB,CAAC,EACjB,EAAW,CAAC,EAAkB,IAClC,IAAI,qBAA4B,MAC5B,EAAY,CAAC,EAEnB,QAAW,IAAY,CAAC,MAAO,GAAG,EAAI,qBAAqB,KAAK,CAAG,CAAC,EAAG,CACrE,IAAM,EAAa,EAAe,aAAa,SAC/C,IAAK,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,MACV,UAAG,QAAQ,IAAI,mBAAmB,GAAY,QAEhD,EAAc,GAAY,EAAI,QAC9B,IAAM,EAAa,EAAS,aAAa,SACzC,GAAI,EACF,EAAU,KAAK,EAAS,EAAU,IAAI,GAAY,MAAM,CAAC,EAI7D,IAAM,EAAU,IAAI,EAAU,KAAK,GAAG,KAEhC,EAAU,EAAI,MAAM,KAAK,CAAG,EAElC,GAAI,CACF,IAAM,EAAS,MAAM,EAAQ,CAAG,EAChC,GAAI,aAAkB,SACpB,OAAO,MAEP,QAAO,MAAM,EAAO,CAClB,OAAQ,EAAa,CAAM,EAC3B,iBAAkB,CAAC,IAAI,EAAS,kBAAkB,MAAM,EACxD,UACA,eACF,CAAC,QAEI,EAAP,CAEA,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,EAEH,OAAO,IAAI,SAAS,EAAI,MAAO,CAAE,OAAQ,GAAI,CAAC,GAIlD,IAAM,EAAS,IAAI,MAAM,CACvB,MAAO,MAAO,EAAK,IAAW,CAC5B,IAAK,EAAI,QAAQ,IAAI,iBAAiB,EAAG,CACvC,IAAM,EAAK,EAAO,UAAU,CAAG,EAC/B,EAAI,QAAQ,IAAI,kBAAmB,EAAG,OAAO,EAE/C,OAAO,MAAM,EAAe,CAAG,GAEjC,KAAM,QAAQ,IAAI,MAAQ,IAC5B,CAAC,EAID,OAFA,QAAQ,IAAI,+BAAgC,EAAO,IAAI,IAAI,EAEpD",
14
- "debugId": "FA4CFD286905860064756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "BE91FD614E013E9E64756E2164756E21",
15
15
  "names": []
16
16
  }