gemi 0.38.0 → 0.40.1

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 (170) hide show
  1. package/dist/app/App.d.ts +5 -3
  2. package/dist/app/App.d.ts.map +1 -1
  3. package/dist/app/index.js +2 -272
  4. package/dist/app/index.js.map +3 -9
  5. package/dist/auth/oauth/XOAuthProvider.d.ts +1 -1
  6. package/dist/auth/oauth/XOAuthProvider.d.ts.map +1 -1
  7. package/dist/bin/gemi.js +66804 -26887
  8. package/dist/bin/gemi.js.map +110 -20
  9. package/dist/broadcasting/index.js +1 -1
  10. package/dist/bun/plugin.js +4 -0
  11. package/dist/{chunk-hw6nrw6g.js.map → bun/plugin.js.map} +1 -1
  12. package/dist/bun/preload.js +4 -0
  13. package/dist/bun/preload.js.map +10 -0
  14. package/dist/{chunk-vgz78xam.js → chunk-0xabjqdt.js} +2 -2
  15. package/dist/{chunk-vgz78xam.js.map → chunk-0xabjqdt.js.map} +1 -1
  16. package/dist/chunk-1wv2m67p.js +4 -0
  17. package/dist/{chunk-kfekwtbp.js.map → chunk-1wv2m67p.js.map} +1 -1
  18. package/dist/{chunk-twncacnk.js → chunk-34bhbqbh.js} +2 -2
  19. package/dist/{chunk-twncacnk.js.map → chunk-34bhbqbh.js.map} +1 -1
  20. package/dist/{chunk-sm6zbv38.js → chunk-37qn44wf.js} +3 -3
  21. package/dist/{chunk-sm6zbv38.js.map → chunk-37qn44wf.js.map} +1 -1
  22. package/dist/{chunk-7fx4zpqd.js → chunk-46g7xzc3.js} +3 -3
  23. package/dist/{chunk-7fx4zpqd.js.map → chunk-46g7xzc3.js.map} +1 -1
  24. package/dist/{chunk-nacrt2vw.js → chunk-55jrzaj0.js} +2 -2
  25. package/dist/{chunk-nacrt2vw.js.map → chunk-55jrzaj0.js.map} +1 -1
  26. package/dist/{chunk-a44rr4a0.js → chunk-5jar30t5.js} +2 -2
  27. package/dist/{chunk-a44rr4a0.js.map → chunk-5jar30t5.js.map} +1 -1
  28. package/dist/{chunk-kt67sv2v.js → chunk-6nm2pt02.js} +2 -2
  29. package/dist/{chunk-kt67sv2v.js.map → chunk-6nm2pt02.js.map} +1 -1
  30. package/dist/{chunk-871hrt5k.js → chunk-71e1rmh4.js} +21 -21
  31. package/dist/{chunk-871hrt5k.js.map → chunk-71e1rmh4.js.map} +6 -5
  32. package/dist/{chunk-frdxhs0s.js → chunk-7219pj06.js} +3 -3
  33. package/dist/{chunk-frdxhs0s.js.map → chunk-7219pj06.js.map} +1 -1
  34. package/dist/chunk-8z5r7z7w.js +5 -0
  35. package/dist/chunk-8z5r7z7w.js.map +10 -0
  36. package/dist/{chunk-g9htz9wp.js → chunk-8zrzjvj8.js} +4 -4
  37. package/dist/{chunk-g9htz9wp.js.map → chunk-8zrzjvj8.js.map} +1 -1
  38. package/dist/{chunk-9p8h8aej.js → chunk-9x52jhc8.js} +2 -2
  39. package/dist/{chunk-9p8h8aej.js.map → chunk-9x52jhc8.js.map} +1 -1
  40. package/dist/{chunk-gm3gevhz.js → chunk-ar3kj71m.js} +2 -2
  41. package/dist/{chunk-gm3gevhz.js.map → chunk-ar3kj71m.js.map} +1 -1
  42. package/dist/{chunk-rda8ja4x.js → chunk-b2f631nw.js} +2 -2
  43. package/dist/{chunk-rda8ja4x.js.map → chunk-b2f631nw.js.map} +1 -1
  44. package/dist/{chunk-zf8mc5nr.js → chunk-cy0yet3t.js} +2 -2
  45. package/dist/{chunk-zf8mc5nr.js.map → chunk-cy0yet3t.js.map} +1 -1
  46. package/dist/{chunk-e4v7ay0q.js → chunk-e40j5tgj.js} +3 -3
  47. package/dist/{chunk-e4v7ay0q.js.map → chunk-e40j5tgj.js.map} +1 -1
  48. package/dist/{chunk-pwhb292c.js → chunk-e43m0sz9.js} +29 -29
  49. package/dist/{chunk-pwhb292c.js.map → chunk-e43m0sz9.js.map} +7 -5
  50. package/dist/{chunk-ektbs6gq.js → chunk-e7wdb957.js} +3 -3
  51. package/dist/{chunk-ektbs6gq.js.map → chunk-e7wdb957.js.map} +1 -1
  52. package/dist/chunk-ffj2g6wn.js +101 -0
  53. package/dist/chunk-ffj2g6wn.js.map +48 -0
  54. package/dist/{chunk-kv145fsh.js → chunk-fs8zhe24.js} +2 -2
  55. package/dist/{chunk-kv145fsh.js.map → chunk-fs8zhe24.js.map} +1 -1
  56. package/dist/{chunk-fa8tk1f8.js → chunk-gky8x4rv.js} +2 -2
  57. package/dist/{chunk-fa8tk1f8.js.map → chunk-gky8x4rv.js.map} +1 -1
  58. package/dist/{chunk-3464zptf.js → chunk-he4nzstf.js} +2 -2
  59. package/dist/{chunk-3464zptf.js.map → chunk-he4nzstf.js.map} +1 -1
  60. package/dist/chunk-hq4yhfaq.js +274 -0
  61. package/dist/chunk-hq4yhfaq.js.map +15 -0
  62. package/dist/{chunk-kfekwtbp.js → chunk-j6eh0etj.js} +2 -2
  63. package/dist/chunk-j6eh0etj.js.map +9 -0
  64. package/dist/{chunk-qmpybvq3.js → chunk-jhp3h3kc.js} +3 -3
  65. package/dist/{chunk-qmpybvq3.js.map → chunk-jhp3h3kc.js.map} +1 -1
  66. package/dist/{chunk-wspcma7s.js → chunk-jnbtsgrp.js} +3 -3
  67. package/dist/{chunk-wspcma7s.js.map → chunk-jnbtsgrp.js.map} +1 -1
  68. package/dist/chunk-k4kdssr3.js +5 -0
  69. package/dist/{chunk-34ac0e8a.js.map → chunk-k4kdssr3.js.map} +1 -1
  70. package/dist/{chunk-gyhg162v.js → chunk-kk353x3p.js} +1 -1
  71. package/dist/{chunk-y9m0jemc.js → chunk-m1vjp86n.js} +3 -3
  72. package/dist/{chunk-y9m0jemc.js.map → chunk-m1vjp86n.js.map} +1 -1
  73. package/dist/{chunk-md7n9kmr.js → chunk-m5nxws92.js} +3 -3
  74. package/dist/{chunk-md7n9kmr.js.map → chunk-m5nxws92.js.map} +1 -1
  75. package/dist/{chunk-3s6dm0ff.js → chunk-pca557td.js} +2 -2
  76. package/dist/{chunk-3s6dm0ff.js.map → chunk-pca557td.js.map} +1 -1
  77. package/dist/chunk-py00anah.js +6 -0
  78. package/dist/chunk-py00anah.js.map +14 -0
  79. package/dist/{chunk-sbt387js.js → chunk-qksh8x1f.js} +2 -2
  80. package/dist/{chunk-sbt387js.js.map → chunk-qksh8x1f.js.map} +1 -1
  81. package/dist/{chunk-j06ebr2s.js → chunk-tgrnmmg5.js} +2 -2
  82. package/dist/{chunk-j06ebr2s.js.map → chunk-tgrnmmg5.js.map} +1 -1
  83. package/dist/{chunk-b8t8hrgm.js → chunk-wss9zewk.js} +4 -4
  84. package/dist/{chunk-b8t8hrgm.js.map → chunk-wss9zewk.js.map} +1 -1
  85. package/dist/{chunk-9krpj7nc.js → chunk-ww5pp0rp.js} +3 -3
  86. package/dist/{chunk-9krpj7nc.js.map → chunk-ww5pp0rp.js.map} +1 -1
  87. package/dist/{chunk-3hb1j6ty.js → chunk-wypjxj9v.js} +3 -3
  88. package/dist/{chunk-3hb1j6ty.js.map → chunk-wypjxj9v.js.map} +1 -1
  89. package/dist/{chunk-ks022k0g.js → chunk-xdsym1c8.js} +2 -2
  90. package/dist/{chunk-ks022k0g.js.map → chunk-xdsym1c8.js.map} +1 -1
  91. package/dist/{chunk-703zn6wy.js → chunk-xfeqd7as.js} +2 -2
  92. package/dist/{chunk-703zn6wy.js.map → chunk-xfeqd7as.js.map} +1 -1
  93. package/dist/{chunk-rtmsz7yd.js → chunk-xxdb06dz.js} +3 -3
  94. package/dist/{chunk-rtmsz7yd.js.map → chunk-xxdb06dz.js.map} +1 -1
  95. package/dist/{chunk-8by5dnz7.js → chunk-yhphtr31.js} +3 -3
  96. package/dist/{chunk-8by5dnz7.js.map → chunk-yhphtr31.js.map} +1 -1
  97. package/dist/{chunk-05yzymd6.js → chunk-z3tgcb5r.js} +2 -2
  98. package/dist/{chunk-05yzymd6.js.map → chunk-z3tgcb5r.js.map} +1 -1
  99. package/dist/chunk-zjxbe8tx.js +5 -0
  100. package/dist/chunk-zjxbe8tx.js.map +10 -0
  101. package/dist/client/Head.d.ts.map +1 -1
  102. package/dist/client/HttpReload.d.ts.map +1 -1
  103. package/dist/client/index.js +26975 -35189
  104. package/dist/client/index.js.map +1 -1
  105. package/dist/client/init.d.ts +2 -2
  106. package/dist/client/init.d.ts.map +1 -1
  107. package/dist/config/index.js +4 -0
  108. package/dist/config/index.js.map +10 -0
  109. package/dist/email/index.js +2 -2
  110. package/dist/email/index.js.map +2 -2
  111. package/dist/facades/Redis.d.ts +12 -0
  112. package/dist/facades/Redis.d.ts.map +1 -0
  113. package/dist/facades/index.d.ts +1 -0
  114. package/dist/facades/index.d.ts.map +1 -1
  115. package/dist/facades/index.js +2 -2
  116. package/dist/facades/index.js.map +1 -1
  117. package/dist/http/index.js +2 -2
  118. package/dist/http/index.js.map +1 -1
  119. package/dist/i18n/index.js +2 -2
  120. package/dist/i18n/index.js.map +1 -1
  121. package/dist/internal/gemiExternals.d.ts +3 -0
  122. package/dist/internal/gemiExternals.d.ts.map +1 -0
  123. package/dist/kernel/Kernel.d.ts +2 -0
  124. package/dist/kernel/Kernel.d.ts.map +1 -1
  125. package/dist/kernel/index.js +2 -2
  126. package/dist/kernel/index.js.map +5 -6
  127. package/dist/server/Server.d.ts +12 -0
  128. package/dist/server/Server.d.ts.map +1 -0
  129. package/dist/server/banner.d.ts +5 -0
  130. package/dist/server/banner.d.ts.map +1 -0
  131. package/dist/server/generateEtag.d.ts +2 -0
  132. package/dist/server/generateEtag.d.ts.map +1 -0
  133. package/dist/server/httpDev.d.ts +26 -0
  134. package/dist/server/httpDev.d.ts.map +1 -0
  135. package/dist/server/httpProd.d.ts +4 -0
  136. package/dist/server/httpProd.d.ts.map +1 -0
  137. package/dist/server/index.d.ts +2 -0
  138. package/dist/server/index.d.ts.map +1 -0
  139. package/dist/server/index.js +2 -51
  140. package/dist/server/index.js.map +4 -9
  141. package/dist/server/renderErrorPage.d.ts +2 -0
  142. package/dist/server/renderErrorPage.d.ts.map +1 -0
  143. package/dist/server/styles.d.ts +18 -0
  144. package/dist/server/styles.d.ts.map +1 -0
  145. package/dist/server/types.d.ts +2 -0
  146. package/dist/server/types.d.ts.map +1 -0
  147. package/dist/server/watchEnv.d.ts +7 -0
  148. package/dist/server/watchEnv.d.ts.map +1 -0
  149. package/dist/services/cron/CronJob.d.ts +1 -1
  150. package/dist/services/cron/CronJob.d.ts.map +1 -1
  151. package/dist/services/cron/CronServiceContainer.d.ts +5 -0
  152. package/dist/services/cron/CronServiceContainer.d.ts.map +1 -1
  153. package/dist/services/index.d.ts +1 -0
  154. package/dist/services/index.d.ts.map +1 -1
  155. package/dist/services/index.js +2 -2
  156. package/dist/services/index.js.map +1 -1
  157. package/dist/services/redis/RedisServiceContainer.d.ts +10 -0
  158. package/dist/services/redis/RedisServiceContainer.d.ts.map +1 -0
  159. package/dist/services/redis/RedisServiceProvider.d.ts +8 -0
  160. package/dist/services/redis/RedisServiceProvider.d.ts.map +1 -0
  161. package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -1
  162. package/dist/vite/index.mjs +62 -3
  163. package/package.json +16 -10
  164. package/dist/chunk-34ac0e8a.js +0 -5
  165. package/dist/chunk-hw6nrw6g.js +0 -4
  166. package/dist/chunk-jk9aba71.js +0 -61
  167. package/dist/chunk-jk9aba71.js.map +0 -55
  168. package/dist/vite/index-3fSp4NVF.mjs +0 -20135
  169. package/dist/vite/typescript-1ZdUKbbC.mjs +0 -14693
  170. /package/dist/{chunk-gyhg162v.js.map → chunk-kk353x3p.js.map} +0 -0
@@ -1,15 +1,10 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../server/dev.ts", "../server/styles.tsx", "../server/renderErrorPage.ts", "../server/prod.ts", "../server/generateEtag.ts", "../../../node_modules/.bun/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/index.js"],
3
+ "sources": ["../server/Server.ts"],
4
4
  "sourcesContent": [
5
- "import type { Serve } from \"bun\";\nimport { join } from \"node:path\";\n\nimport type { App } from \"../app/App\";\nimport { createDevStyles } from \"./styles\";\nimport { renderErrorPage } from \"./renderErrorPage\";\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 (await import(\"vite\")).createServer({\n root,\n logLevel: \"error\",\n server: {\n watch: {\n usePolling: true,\n interval: 100,\n // ignore paths starts with .\n ignored: [\"**/storage/**\", \"**/node_modules/**\", \"**/.**\"],\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, host, protocol } = new URL(req.url);\n if (pathname.startsWith(\"/render-error.js\")) {\n return new Response(\"window.render_error = true\", {\n headers: {\n \"Content-Type\": \"application/javascript\",\n },\n });\n }\n if (pathname.startsWith(\"/refresh.js\")) {\n return new Response(\n `\n import RefreshRuntime from \"${protocol}//${host}/@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 const module = await vite.ssrLoadModule(join(appDir, \"bootstrap.ts\"), {\n fixStacktrace: true,\n });\n return module.app;\n } catch (err) {\n vite.ws.send({ type: \"error\", err: { ...err, message: \"\" } });\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 maxRequestBodySize: 10 * 1024 * 1024 * 1024, // 10 GB\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 try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const viewImportMap = {};\n const ogMap = {};\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 { fixStacktrace: true },\n );\n\n viewImportMap[fileName] = mod.default;\n ogMap[fileName] = mod?.OpenGraph;\n templates.push(\n template(fileName, `${appDir}/views/${fileName}.tsx`),\n );\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n\n return await result({\n getStyles: async (currentViews: string[]) =>\n await createDevStyles(appDir, vite, currentViews),\n bootstrapModules: [\n \"/refresh.js\",\n \"/app/client.tsx\",\n \"/@vite/client\",\n ],\n viewImportMap,\n ogMap,\n loaders,\n cssManifest: {},\n });\n }\n } catch (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\n return new Response(renderErrorPage(err), {\n headers: { \"Content-Type\": \"text/html\" },\n });\n }\n },\n\n idleTimeout: Number(process.env.SERVER_IDLE_TIMEOUT ?? 10),\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\n if (fileRelativePath.startsWith(\"/prisma\")) {\n return;\n }\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 try {\n vite.moduleGraph.invalidateModule(mod);\n } catch (err) {}\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 vite.ws.send({\n type: \"update\",\n updates: [],\n });\n } catch (err) {\n console.log(\"Error on server reload\");\n console.log(vite.ssrFixStacktrace(err));\n }\n });\n\n return server;\n}\n",
6
- "import { ModuleNode, type ViteDevServer } from \"vite\";\n\nfunction replaceStrings(text: string, record: Record<string, string>): string {\n const escapedKeys = Object.keys(record)\n .sort((a, b) => b.length - a.length)\n .map((key) => key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n\n // Create a single regex with all keys\n const regex = new RegExp(escapedKeys.join(\"|\"), \"g\");\n\n return text.replace(regex, (match) => record[match]);\n}\n\nexport async function createDevStyles(\n appDir: string,\n vite: ViteDevServer,\n currentViews: string[] = [],\n) {\n const views = [\n ...currentViews.map((view) => `${appDir}/views/${view}.tsx`),\n `${appDir}/views/RootLayout.tsx`,\n ];\n\n let modules = new Set<ModuleNode>();\n for (const view of views) {\n const mod = vite.moduleGraph.getModulesByFile(view);\n if (mod) {\n modules = modules.union(mod);\n }\n }\n\n const styles = [];\n const cssModules = [];\n const cssModuleContent: Record<string, string> = {};\n for (const mod of modules as any) {\n if (mod) {\n for (const imported of mod.importedModules) {\n if (imported.file.includes(\"module.css\")) {\n cssModuleContent[imported.file] =\n imported.ssrTransformResult.map.sourcesContent.join(\"\");\n }\n if (imported.file.includes(\".css\")) {\n cssModules.push(imported.file);\n }\n }\n }\n }\n\n for (const cssModulePath of cssModules) {\n const transform = await vite.transformRequest(cssModulePath + \"?direct\");\n\n const isCssModule = cssModulePath.includes(\"module.css\");\n\n let transformedCssModule = \"\";\n\n if (isCssModule) {\n transformedCssModule = replaceStrings(\n cssModuleContent[cssModulePath],\n transform.default,\n );\n }\n\n styles.push({\n isDev: true,\n id: cssModulePath,\n content: isCssModule ? transformedCssModule : transform.code,\n });\n }\n\n return styles.map((style, i) => {\n return (\n <style key={i} type=\"text/css\" data-vite-dev-id={style.id}>\n {style.content}\n </style>\n );\n });\n}\n\nexport async function createStyles(styles = []) {\n return styles.map((style, i) => {\n return (\n <style key={i} id={style?.id} type=\"text/css\">\n {style.content}\n </style>\n );\n });\n}\n",
7
- "function cleanupTerminalText(text) {\n return (\n text\n // Remove ANSI escape sequences (colors, formatting)\n .replace(/\\x1b\\[[0-9;]*m/g, \"\")\n // Remove ANSI escape sequences with different format\n .replace(/\\[[0-9;]*m/g, \"\")\n // Remove excessive whitespace and normalize line breaks\n .replace(/\\n\\s*\\n/g, \"\\n\")\n // Trim each line\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter((line) => line.length > 0)\n .join(\"\\n\")\n .trim()\n );\n}\n\nexport 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\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 <div id=\"overlay\"></div>\n <script type=\"module\" src=\"/refresh.js\"></script>\n <script type=\"module\" src=\"/@vite/client\"></script>\n <script>\n ${cleanupTerminalText.toString()}\n const err = ${JSON.stringify(err, Object.getOwnPropertyNames(err), 2)}\n\n window.addEventListener('load', () => {\n const container = document.getElementById('overlay')\n const ErrorOverlay = customElements.get('vite-error-overlay')\n if (ErrorOverlay) {\n const overlay = new ErrorOverlay({ ...err, message: cleanupTerminalText(err.message) });\n container.appendChild(overlay)\n }\n })\n </script>\n </body>\n</html>\n`;\n}\n",
8
- "import { join } from \"node:path\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { exists } from \"node:fs/promises\";\nimport { createStyles } from \"./styles\";\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\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 ogMap = {};\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 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 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 const pattern = new URLPattern({\n pathname: \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf)\",\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 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 const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await requestHandler(req);\n },\n idleTimeout: Number(process.env.SERVER_IDLE_TIMEOUT ?? 10),\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
- "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",
10
- "import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n"
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"
11
6
  ],
12
- "mappings": "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",
13
- "debugId": "60D6A45AB29703A064756E2164756E21",
7
+ "mappings": ";wWAKO,CAAM,JAAO,JACV,DACA,WAER,MAAW,JAAC,HAAyE,JACnF,KAAK,IAAM,IAAI,EAAI,CAAE,OAAQ,EAAO,MAAO,CAAC,EAC5C,KAAK,gBACH,EAAO,kBACN,CAAC,EAAc,IAA8C,EAAK,CAAG,QAGpE,MAAK,EAAG,CAI+B,CACzC,IAAQ,YAAa,KAAa,gCAClC,MAAM,EAAS,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAU9D",
8
+ "debugId": "229A28E52D20B9BB64756E2164756E21",
14
9
  "names": []
15
10
  }
@@ -0,0 +1,2 @@
1
+ export declare function renderErrorPage(err: any): string;
2
+ //# sourceMappingURL=renderErrorPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderErrorPage.d.ts","sourceRoot":"","sources":["../../server/renderErrorPage.ts"],"names":[],"mappings":"AAkBA,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,UA0CvC"}
@@ -0,0 +1,18 @@
1
+ import { type ViteDevServer } from "vite";
2
+ export declare function createDevStyles(appDir: string, vite: ViteDevServer, currentViews?: string[]): Promise<import("react").DetailedReactHTMLElement<{
3
+ key: number;
4
+ type: string;
5
+ "data-vite-dev-id": any;
6
+ dangerouslySetInnerHTML: {
7
+ __html: any;
8
+ };
9
+ }, HTMLElement>[]>;
10
+ export declare function createStyles(styles?: any[]): Promise<import("react").DetailedReactHTMLElement<{
11
+ key: number;
12
+ id: any;
13
+ type: string;
14
+ dangerouslySetInnerHTML: {
15
+ __html: any;
16
+ };
17
+ }, HTMLElement>[]>;
18
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../server/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAa3D,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,YAAY,GAAE,MAAM,EAAO;;;;;;;mBA8D5B;AAED,wBAAsB,YAAY,CAAC,MAAM,QAAK;;;;;;;mBAS7C"}
@@ -0,0 +1,2 @@
1
+ export type Instrumentation = (req: Request, next: (req: Request) => Promise<Response>) => Promise<Response>;
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../server/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,KACtC,OAAO,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type FSWatcher } from "node:fs";
2
+ declare global {
3
+ var __gemiEnvWatcher: FSWatcher | undefined;
4
+ }
5
+ export declare function envFiles(rootDir: string): string[];
6
+ export declare function watchEnv(rootDir?: string): void;
7
+ //# sourceMappingURL=watchEnv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchEnv.d.ts","sourceRoot":"","sources":["../../server/watchEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAG1E,OAAO,CAAC,MAAM,CAAC;IAGb,IAAI,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAAC;CAC7C;AA8BD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CASlD;AAgCD,wBAAgB,QAAQ,CAAC,OAAO,GAAE,MAAsB,QAmBvD"}
@@ -1,4 +1,4 @@
1
- import type { CronExpression } from "cronbake";
1
+ export type CronExpression = "@yearly" | "@annually" | "@monthly" | "@weekly" | "@daily" | "@midnight" | "@hourly" | (string & {});
2
2
  export declare class CronJob {
3
3
  name: string;
4
4
  cron: CronExpression;
@@ -1 +1 @@
1
- {"version":3,"file":"CronJob.d.ts","sourceRoot":"","sources":["../../../services/cron/CronJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,qBAAa,OAAO;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IAErB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAChC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAElC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc;CAGtC"}
1
+ {"version":3,"file":"CronJob.d.ts","sourceRoot":"","sources":["../../../services/cron/CronJob.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,qBAAa,OAAO;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IAErB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAChC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAElC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc;CAGtC"}
@@ -1,8 +1,13 @@
1
1
  import { ServiceContainer } from "../ServiceContainer";
2
2
  import type { CronServiceProvider } from "./CronServiceProvider";
3
+ type BunCronHandle = Bun.CronJob;
4
+ declare global {
5
+ var __gemiCronJobs: Map<string, BunCronHandle> | undefined;
6
+ }
3
7
  export declare class CronServiceContainer extends ServiceContainer {
4
8
  service: CronServiceProvider;
5
9
  static _name: string;
6
10
  constructor(service: CronServiceProvider);
7
11
  }
12
+ export {};
8
13
  //# sourceMappingURL=CronServiceContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CronServiceContainer.d.ts","sourceRoot":"","sources":["../../../services/cron/CronServiceContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,qBAAa,oBAAqB,SAAQ,gBAAgB;IAGrC,OAAO,EAAE,mBAAmB;IAF/C,MAAM,CAAC,KAAK,SAA0B;gBAEnB,OAAO,EAAE,mBAAmB;CAqDhD"}
1
+ {"version":3,"file":"CronServiceContainer.d.ts","sourceRoot":"","sources":["../../../services/cron/CronServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,KAAK,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;AAEjC,OAAO,CAAC,MAAM,CAAC;IAMb,IAAI,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;CAC5D;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;IAGrC,OAAO,EAAE,mBAAmB;IAF/C,MAAM,CAAC,KAAK,SAA0B;gBAEnB,OAAO,EAAE,mBAAmB;CAoDhD"}
@@ -26,5 +26,6 @@ export { XOAuthProvider } from "../auth/oauth/XOAuthProvider";
26
26
  export { OAuthProvider } from "../auth/oauth/OAuthProvider";
27
27
  export { CronServiceProvider } from "./cron/CronServiceProvider";
28
28
  export { CronJob } from "./cron/CronJob";
29
+ export { RedisServiceProvider } from "./redis/RedisServiceProvider";
29
30
  export { Singleton } from "./Singleton";
30
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAI7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AACzG,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAI7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AACzG,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{$ as c,Z as a,_ as b,aa as d,ba as e,ca as f,da as g,ea as h,fa as i,ga as j,ha as k,ia as l,ja as m,ka as n,la as o,ma as p,na as q,oa as r,pa as s,qa as t,ra as u,sa as v,ta as w,ua as x,wa as y}from"../chunk-871hrt5k.js";import"../chunk-a44rr4a0.js";import"../chunk-g9htz9wp.js";import"../chunk-8by5dnz7.js";import"../chunk-ektbs6gq.js";import"../chunk-b8t8hrgm.js";import"../chunk-sm6zbv38.js";import"../chunk-rtmsz7yd.js";import"../chunk-y9m0jemc.js";import"../chunk-md7n9kmr.js";import"../chunk-frdxhs0s.js";import"../chunk-e4v7ay0q.js";import"../chunk-qmpybvq3.js";import"../chunk-05yzymd6.js";import"../chunk-703zn6wy.js";import"../chunk-7fx4zpqd.js";import"../chunk-zf8mc5nr.js";export{v as XOAuthProvider,m as ViewRouterServiceProvider,y as Singleton,r as Sharp,e as S3Driver,j as ResendDriver,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};
2
+ import{Aa as w,Ba as x,Ca as y,Ea as z,ea as a,fa as b,ga as c,ha as d,ia as e,ja as f,ka as g,la as h,ma as i,na as j,oa as k,pa as l,qa as m,ra as n,sa as o,ta as p,ua as q,va as r,wa as s,xa as t,ya as u,za as v}from"../chunk-71e1rmh4.js";import"../chunk-5jar30t5.js";import"../chunk-8zrzjvj8.js";import"../chunk-yhphtr31.js";import"../chunk-wss9zewk.js";import"../chunk-37qn44wf.js";import"../chunk-m5nxws92.js";import"../chunk-e7wdb957.js";import"../chunk-7219pj06.js";import"../chunk-xxdb06dz.js";import"../chunk-e40j5tgj.js";import"../chunk-46g7xzc3.js";import"../chunk-m1vjp86n.js";import"../chunk-jhp3h3kc.js";import"../chunk-z3tgcb5r.js";import"../chunk-xfeqd7as.js";import"../chunk-cy0yet3t.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=30EDC90F958D8FFA64756E2164756E21
4
+ //# debugId=CC6036AE62B6E81B64756E2164756E21
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "30EDC90F958D8FFA64756E2164756E21",
7
+ "debugId": "CC6036AE62B6E81B64756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -0,0 +1,10 @@
1
+ import { RedisClient } from "bun";
2
+ import { ServiceContainer } from "../ServiceContainer";
3
+ import type { RedisServiceProvider } from "./RedisServiceProvider";
4
+ export declare class RedisServiceContainer extends ServiceContainer {
5
+ service: RedisServiceProvider;
6
+ static _name: string;
7
+ client: RedisClient;
8
+ constructor(service: RedisServiceProvider);
9
+ }
10
+ //# sourceMappingURL=RedisServiceContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisServiceContainer.d.ts","sourceRoot":"","sources":["../../../services/redis/RedisServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,qBAAa,qBAAsB,SAAQ,gBAAgB;IAQtC,OAAO,EAAE,oBAAoB;IAPhD,MAAM,CAAC,KAAK,SAA2B;IAKhC,MAAM,EAAE,WAAW,CAAC;gBAER,OAAO,EAAE,oBAAoB;CAIjD"}
@@ -0,0 +1,8 @@
1
+ import type { RedisOptions } from "bun";
2
+ import { ServiceProvider } from "../ServiceProvider";
3
+ export declare class RedisServiceProvider extends ServiceProvider {
4
+ url?: string;
5
+ options?: RedisOptions;
6
+ boot(): void;
7
+ }
8
+ //# sourceMappingURL=RedisServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisServiceProvider.d.ts","sourceRoot":"","sources":["../../../services/redis/RedisServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,oBAAqB,SAAQ,eAAe;IAIvD,GAAG,CAAC,EAAE,MAAM,CAAyB;IAGrC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,IAAI;CACL"}
@@ -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;IAS3C,OAAO,EAAE,yBAAyB;IARrD,MAAM,CAAC,KAAK,SAAgC;IAE5C,cAAc,EAAE,cAAc,CAAM;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAC7C,aAAa,EAAE,aAAa,CAAM;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,IAAI,EAAE,GAAG,CAAQ;gBAEE,OAAO,EAAE,yBAAyB;IAarD,IAAI;IAEE,YAAY,CAAC,GAAG,EAAE,WAAW;YAarB,MAAM;IAkLd,iBAAiB,CAAC,GAAG,EAAE,OAAO,gCAhHZ;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;CA2WJ"}
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;IAS3C,OAAO,EAAE,yBAAyB;IARrD,MAAM,CAAC,KAAK,SAAgC;IAE5C,cAAc,EAAE,cAAc,CAAM;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAC7C,aAAa,EAAE,aAAa,CAAM;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,IAAI,EAAE,GAAG,CAAQ;gBAEE,OAAO,EAAE,yBAAyB;IAarD,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;CAwVJ"}
@@ -1,4 +1,63 @@
1
- import { b } from "./index-3fSp4NVF.mjs";
2
- export {
3
- b as default
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ //#region config/load.ts
4
+ var CONFIG_FILES = [
5
+ "gemi.config.ts",
6
+ "gemi.config.js",
7
+ "gemi.config.mjs"
8
+ ];
9
+ async function loadGemiConfig(rootDir = process.cwd()) {
10
+ for (const name of CONFIG_FILES) {
11
+ const path = join(rootDir, name);
12
+ if (existsSync(path)) {
13
+ const mod = await import(path);
14
+ return mod.default ?? mod;
15
+ }
16
+ }
17
+ return {};
18
+ }
19
+ //#endregion
20
+ //#region internal/gemiExternals.ts
21
+ function isGemiExternal(id) {
22
+ return id === "gemi" || id.startsWith("gemi/");
23
+ }
24
+ //#endregion
25
+ //#region vite/index.ts
26
+ var gemi = async () => {
27
+ const { plugins: userVitePlugins = [], ...userViteConfig } = (await loadGemiConfig(process.cwd())).vite ?? {};
28
+ return [
29
+ {
30
+ name: "gemi-plugin-config",
31
+ enforce: "pre",
32
+ config: async (_config, env) => {
33
+ const appPath = `${process.cwd()}/app`;
34
+ return {
35
+ assetsInclude: ["/public"],
36
+ build: {
37
+ manifest: true,
38
+ ssrEmitAssets: true,
39
+ sourcemap: true,
40
+ rollupOptions: {
41
+ input: Array.from(JSON.parse(process.env.GEMI_INPUT ?? "[]")),
42
+ ...env.isSsrBuild ? { external: isGemiExternal } : {}
43
+ }
44
+ },
45
+ resolve: { alias: { "@/app": appPath } }
46
+ };
47
+ }
48
+ },
49
+ {
50
+ name: "gemi-plugin-user-config",
51
+ config: () => userViteConfig
52
+ },
53
+ {
54
+ name: "gemi-plugin-hot-reload",
55
+ handleHotUpdate({ server, modules }) {
56
+ if (modules?.[0]?.id?.includes("/app/http/")) return [];
57
+ }
58
+ },
59
+ ...userVitePlugins
60
+ ];
4
61
  };
62
+ //#endregion
63
+ export { gemi as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemi",
3
- "version": "0.38.0",
3
+ "version": "0.40.1",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "Enes Tufekci <enes@gemijs.dev>",
@@ -21,7 +21,12 @@
21
21
  "./runtime": "./dist/runtime/index.js",
22
22
  "./kernel": "./dist/kernel/index.js",
23
23
  "./services": "./dist/services/index.js",
24
- "./i18n": "./dist/i18n/index.js"
24
+ "./broadcasting": "./dist/broadcasting/index.js",
25
+ "./i18n": "./dist/i18n/index.js",
26
+ "./server": "./dist/server/index.js",
27
+ "./config": "./dist/config/index.js",
28
+ "./bun/preload": "./dist/bun/preload.js",
29
+ "./bun/plugin": "./dist/bun/plugin.js"
25
30
  },
26
31
  "scripts": {
27
32
  "lint": "oxlint",
@@ -42,12 +47,9 @@
42
47
  "@prisma/client": "^6.4.1",
43
48
  "ast-types": "^0.14.2",
44
49
  "commander": "^12.1.0",
45
- "cronbake": "^0.1.2",
46
50
  "history": "^5.3.0",
47
51
  "jsx-email": "2.0.0-rc2.1",
48
52
  "open": "^10.1.0",
49
- "react": "19.2.3",
50
- "react-dom": "19.2.3",
51
53
  "react-error-boundary": "^6.0.0",
52
54
  "recast": "^0.23.9",
53
55
  "resend": "^6.12.3",
@@ -55,23 +57,27 @@
55
57
  "temporal-polyfill": "^0.2.5",
56
58
  "twitter-api-v2": "^1.20.2",
57
59
  "urlpattern-polyfill": "^10.0.0",
58
- "uuid": "^9.0.1",
59
- "vite": "^6.3.5"
60
+ "uuid": "^9.0.1"
60
61
  },
61
62
  "devDependencies": {
62
63
  "@babel/parser": "^7.25.4",
63
64
  "@repo/typescript-config": "*",
64
- "@types/bun": "^1.2.10",
65
+ "@types/bun": "^1.3.14",
65
66
  "@types/eslint": "^8.56.5",
66
67
  "@types/node": "^20.11.24",
67
68
  "@types/react": "^19.0.2",
68
69
  "@types/react-dom": "^19.0.2",
69
70
  "eslint": "^8.57.0",
70
71
  "oxlint": "^1.39.0",
72
+ "react": "19.2.3",
73
+ "react-dom": "19.2.3",
71
74
  "typescript": "^5.7.3",
72
- "vitest": "^1.6.0"
75
+ "vitest": "^4.0.0"
73
76
  },
74
77
  "peerDependencies": {
75
- "sharp": "^0.34.2"
78
+ "react": ">=19",
79
+ "react-dom": ">=19",
80
+ "sharp": "^0.34.2",
81
+ "vite": "^8.0.0"
76
82
  }
77
83
  }
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{Ab as e}from"./chunk-703zn6wy.js";class r extends e{service;static _name="EmailServiceContainer";constructor(i){super();this.service=i}}
3
- export{r as W};
4
-
5
- //# debugId=B316917ECA03C6EB64756E2164756E21
@@ -1,4 +0,0 @@
1
- // @bun
2
- import{Aa as d,Ba as e,Ca as f,Da as g,xa as a,ya as b,za as c}from"./chunk-a44rr4a0.js";import"./chunk-rtmsz7yd.js";import"./chunk-e4v7ay0q.js";import"./chunk-zf8mc5nr.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=D85C64315EE056D664756E2164756E21