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.
- package/dist/app/App.d.ts +5 -3
- package/dist/app/App.d.ts.map +1 -1
- package/dist/app/index.js +2 -272
- package/dist/app/index.js.map +3 -9
- package/dist/auth/oauth/XOAuthProvider.d.ts +1 -1
- package/dist/auth/oauth/XOAuthProvider.d.ts.map +1 -1
- package/dist/bin/gemi.js +66804 -26887
- package/dist/bin/gemi.js.map +110 -20
- package/dist/broadcasting/index.js +1 -1
- package/dist/bun/plugin.js +4 -0
- package/dist/{chunk-hw6nrw6g.js.map → bun/plugin.js.map} +1 -1
- package/dist/bun/preload.js +4 -0
- package/dist/bun/preload.js.map +10 -0
- package/dist/{chunk-vgz78xam.js → chunk-0xabjqdt.js} +2 -2
- package/dist/{chunk-vgz78xam.js.map → chunk-0xabjqdt.js.map} +1 -1
- package/dist/chunk-1wv2m67p.js +4 -0
- package/dist/{chunk-kfekwtbp.js.map → chunk-1wv2m67p.js.map} +1 -1
- package/dist/{chunk-twncacnk.js → chunk-34bhbqbh.js} +2 -2
- package/dist/{chunk-twncacnk.js.map → chunk-34bhbqbh.js.map} +1 -1
- package/dist/{chunk-sm6zbv38.js → chunk-37qn44wf.js} +3 -3
- package/dist/{chunk-sm6zbv38.js.map → chunk-37qn44wf.js.map} +1 -1
- package/dist/{chunk-7fx4zpqd.js → chunk-46g7xzc3.js} +3 -3
- package/dist/{chunk-7fx4zpqd.js.map → chunk-46g7xzc3.js.map} +1 -1
- package/dist/{chunk-nacrt2vw.js → chunk-55jrzaj0.js} +2 -2
- package/dist/{chunk-nacrt2vw.js.map → chunk-55jrzaj0.js.map} +1 -1
- package/dist/{chunk-a44rr4a0.js → chunk-5jar30t5.js} +2 -2
- package/dist/{chunk-a44rr4a0.js.map → chunk-5jar30t5.js.map} +1 -1
- package/dist/{chunk-kt67sv2v.js → chunk-6nm2pt02.js} +2 -2
- package/dist/{chunk-kt67sv2v.js.map → chunk-6nm2pt02.js.map} +1 -1
- package/dist/{chunk-871hrt5k.js → chunk-71e1rmh4.js} +21 -21
- package/dist/{chunk-871hrt5k.js.map → chunk-71e1rmh4.js.map} +6 -5
- package/dist/{chunk-frdxhs0s.js → chunk-7219pj06.js} +3 -3
- package/dist/{chunk-frdxhs0s.js.map → chunk-7219pj06.js.map} +1 -1
- package/dist/chunk-8z5r7z7w.js +5 -0
- package/dist/chunk-8z5r7z7w.js.map +10 -0
- package/dist/{chunk-g9htz9wp.js → chunk-8zrzjvj8.js} +4 -4
- package/dist/{chunk-g9htz9wp.js.map → chunk-8zrzjvj8.js.map} +1 -1
- package/dist/{chunk-9p8h8aej.js → chunk-9x52jhc8.js} +2 -2
- package/dist/{chunk-9p8h8aej.js.map → chunk-9x52jhc8.js.map} +1 -1
- package/dist/{chunk-gm3gevhz.js → chunk-ar3kj71m.js} +2 -2
- package/dist/{chunk-gm3gevhz.js.map → chunk-ar3kj71m.js.map} +1 -1
- package/dist/{chunk-rda8ja4x.js → chunk-b2f631nw.js} +2 -2
- package/dist/{chunk-rda8ja4x.js.map → chunk-b2f631nw.js.map} +1 -1
- package/dist/{chunk-zf8mc5nr.js → chunk-cy0yet3t.js} +2 -2
- package/dist/{chunk-zf8mc5nr.js.map → chunk-cy0yet3t.js.map} +1 -1
- package/dist/{chunk-e4v7ay0q.js → chunk-e40j5tgj.js} +3 -3
- package/dist/{chunk-e4v7ay0q.js.map → chunk-e40j5tgj.js.map} +1 -1
- package/dist/{chunk-pwhb292c.js → chunk-e43m0sz9.js} +29 -29
- package/dist/{chunk-pwhb292c.js.map → chunk-e43m0sz9.js.map} +7 -5
- package/dist/{chunk-ektbs6gq.js → chunk-e7wdb957.js} +3 -3
- package/dist/{chunk-ektbs6gq.js.map → chunk-e7wdb957.js.map} +1 -1
- package/dist/chunk-ffj2g6wn.js +101 -0
- package/dist/chunk-ffj2g6wn.js.map +48 -0
- package/dist/{chunk-kv145fsh.js → chunk-fs8zhe24.js} +2 -2
- package/dist/{chunk-kv145fsh.js.map → chunk-fs8zhe24.js.map} +1 -1
- package/dist/{chunk-fa8tk1f8.js → chunk-gky8x4rv.js} +2 -2
- package/dist/{chunk-fa8tk1f8.js.map → chunk-gky8x4rv.js.map} +1 -1
- package/dist/{chunk-3464zptf.js → chunk-he4nzstf.js} +2 -2
- package/dist/{chunk-3464zptf.js.map → chunk-he4nzstf.js.map} +1 -1
- package/dist/chunk-hq4yhfaq.js +274 -0
- package/dist/chunk-hq4yhfaq.js.map +15 -0
- package/dist/{chunk-kfekwtbp.js → chunk-j6eh0etj.js} +2 -2
- package/dist/chunk-j6eh0etj.js.map +9 -0
- package/dist/{chunk-qmpybvq3.js → chunk-jhp3h3kc.js} +3 -3
- package/dist/{chunk-qmpybvq3.js.map → chunk-jhp3h3kc.js.map} +1 -1
- package/dist/{chunk-wspcma7s.js → chunk-jnbtsgrp.js} +3 -3
- package/dist/{chunk-wspcma7s.js.map → chunk-jnbtsgrp.js.map} +1 -1
- package/dist/chunk-k4kdssr3.js +5 -0
- package/dist/{chunk-34ac0e8a.js.map → chunk-k4kdssr3.js.map} +1 -1
- package/dist/{chunk-gyhg162v.js → chunk-kk353x3p.js} +1 -1
- package/dist/{chunk-y9m0jemc.js → chunk-m1vjp86n.js} +3 -3
- package/dist/{chunk-y9m0jemc.js.map → chunk-m1vjp86n.js.map} +1 -1
- package/dist/{chunk-md7n9kmr.js → chunk-m5nxws92.js} +3 -3
- package/dist/{chunk-md7n9kmr.js.map → chunk-m5nxws92.js.map} +1 -1
- package/dist/{chunk-3s6dm0ff.js → chunk-pca557td.js} +2 -2
- package/dist/{chunk-3s6dm0ff.js.map → chunk-pca557td.js.map} +1 -1
- package/dist/chunk-py00anah.js +6 -0
- package/dist/chunk-py00anah.js.map +14 -0
- package/dist/{chunk-sbt387js.js → chunk-qksh8x1f.js} +2 -2
- package/dist/{chunk-sbt387js.js.map → chunk-qksh8x1f.js.map} +1 -1
- package/dist/{chunk-j06ebr2s.js → chunk-tgrnmmg5.js} +2 -2
- package/dist/{chunk-j06ebr2s.js.map → chunk-tgrnmmg5.js.map} +1 -1
- package/dist/{chunk-b8t8hrgm.js → chunk-wss9zewk.js} +4 -4
- package/dist/{chunk-b8t8hrgm.js.map → chunk-wss9zewk.js.map} +1 -1
- package/dist/{chunk-9krpj7nc.js → chunk-ww5pp0rp.js} +3 -3
- package/dist/{chunk-9krpj7nc.js.map → chunk-ww5pp0rp.js.map} +1 -1
- package/dist/{chunk-3hb1j6ty.js → chunk-wypjxj9v.js} +3 -3
- package/dist/{chunk-3hb1j6ty.js.map → chunk-wypjxj9v.js.map} +1 -1
- package/dist/{chunk-ks022k0g.js → chunk-xdsym1c8.js} +2 -2
- package/dist/{chunk-ks022k0g.js.map → chunk-xdsym1c8.js.map} +1 -1
- package/dist/{chunk-703zn6wy.js → chunk-xfeqd7as.js} +2 -2
- package/dist/{chunk-703zn6wy.js.map → chunk-xfeqd7as.js.map} +1 -1
- package/dist/{chunk-rtmsz7yd.js → chunk-xxdb06dz.js} +3 -3
- package/dist/{chunk-rtmsz7yd.js.map → chunk-xxdb06dz.js.map} +1 -1
- package/dist/{chunk-8by5dnz7.js → chunk-yhphtr31.js} +3 -3
- package/dist/{chunk-8by5dnz7.js.map → chunk-yhphtr31.js.map} +1 -1
- package/dist/{chunk-05yzymd6.js → chunk-z3tgcb5r.js} +2 -2
- package/dist/{chunk-05yzymd6.js.map → chunk-z3tgcb5r.js.map} +1 -1
- package/dist/chunk-zjxbe8tx.js +5 -0
- package/dist/chunk-zjxbe8tx.js.map +10 -0
- package/dist/client/Head.d.ts.map +1 -1
- package/dist/client/HttpReload.d.ts.map +1 -1
- package/dist/client/index.js +26975 -35189
- package/dist/client/index.js.map +1 -1
- package/dist/client/init.d.ts +2 -2
- package/dist/client/init.d.ts.map +1 -1
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +10 -0
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +2 -2
- package/dist/facades/Redis.d.ts +12 -0
- package/dist/facades/Redis.d.ts.map +1 -0
- package/dist/facades/index.d.ts +1 -0
- package/dist/facades/index.d.ts.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.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 +1 -1
- package/dist/internal/gemiExternals.d.ts +3 -0
- package/dist/internal/gemiExternals.d.ts.map +1 -0
- package/dist/kernel/Kernel.d.ts +2 -0
- package/dist/kernel/Kernel.d.ts.map +1 -1
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +5 -6
- package/dist/server/Server.d.ts +12 -0
- package/dist/server/Server.d.ts.map +1 -0
- package/dist/server/banner.d.ts +5 -0
- package/dist/server/banner.d.ts.map +1 -0
- package/dist/server/generateEtag.d.ts +2 -0
- package/dist/server/generateEtag.d.ts.map +1 -0
- package/dist/server/httpDev.d.ts +26 -0
- package/dist/server/httpDev.d.ts.map +1 -0
- package/dist/server/httpProd.d.ts +4 -0
- package/dist/server/httpProd.d.ts.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2 -51
- package/dist/server/index.js.map +4 -9
- package/dist/server/renderErrorPage.d.ts +2 -0
- package/dist/server/renderErrorPage.d.ts.map +1 -0
- package/dist/server/styles.d.ts +18 -0
- package/dist/server/styles.d.ts.map +1 -0
- package/dist/server/types.d.ts +2 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/watchEnv.d.ts +7 -0
- package/dist/server/watchEnv.d.ts.map +1 -0
- package/dist/services/cron/CronJob.d.ts +1 -1
- package/dist/services/cron/CronJob.d.ts.map +1 -1
- package/dist/services/cron/CronServiceContainer.d.ts +5 -0
- package/dist/services/cron/CronServiceContainer.d.ts.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/services/redis/RedisServiceContainer.d.ts +10 -0
- package/dist/services/redis/RedisServiceContainer.d.ts.map +1 -0
- package/dist/services/redis/RedisServiceProvider.d.ts +8 -0
- package/dist/services/redis/RedisServiceProvider.d.ts.map +1 -0
- package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -1
- package/dist/vite/index.mjs +62 -3
- package/package.json +16 -10
- package/dist/chunk-34ac0e8a.js +0 -5
- package/dist/chunk-hw6nrw6g.js +0 -4
- package/dist/chunk-jk9aba71.js +0 -61
- package/dist/chunk-jk9aba71.js.map +0 -55
- package/dist/vite/index-3fSp4NVF.mjs +0 -20135
- package/dist/vite/typescript-1ZdUKbbC.mjs +0 -14693
- /package/dist/{chunk-gyhg162v.js.map → chunk-kk353x3p.js.map} +0 -0
package/dist/client/init.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type ComponentType } from "react";
|
|
2
|
-
export declare function init(RootLayout: ComponentType<any
|
|
3
|
-
export declare function create(RootLayout: ComponentType<any>, { componentTree, loaders, routeManifest, router, i18n, auth, prefetchedData, viewImportMap
|
|
2
|
+
export declare function init(RootLayout: ComponentType<any>): void;
|
|
3
|
+
export declare function create(RootLayout: ComponentType<any>, { componentTree, loaders, routeManifest, router, i18n, auth, prefetchedData, viewImportMap }: any): void;
|
|
4
4
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../client/init.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAwBtD,wBAAgB,IAAI,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../client/init.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAwBtD,wBAAgB,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,QAiClD;AAED,wBAAgB,MAAM,CACpB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,EAC9B,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,GAAG,QAiBlG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../config/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { PluginOption } from \"vite\";\nimport type { BunPlugin } from \"bun\";\n\n// Vite configuration contributed by the app. `plugins` are appended to gemi's\n// own Vite plugins; every other key is a standard Vite `UserConfig` field and is\n// merged (by Vite) on top of gemi's base config for the client + SSR view\n// builds. See `gemi/vite`.\nexport interface GemiViteConfig {\n plugins?: PluginOption[];\n [key: string]: unknown;\n}\n\n// Bun configuration contributed by the app. `plugins` are applied both at build\n// time (the server `Bun.build`) and at runtime (registered via `--preload` for\n// `dev`/`start`), alongside gemi's built-in custom-request plugin.\nexport interface GemiBunConfig {\n plugins?: BunPlugin[];\n}\n\nexport interface GemiConfig {\n vite?: GemiViteConfig;\n bun?: GemiBunConfig;\n}\n\n// Identity helper that gives `gemi.config.ts` full type-checking and editor\n// autocomplete. Usage:\n//\n// import { defineConfig } from \"gemi/config\";\n// export default defineConfig({ vite: { plugins: [] }, bun: { plugins: [] } });\nexport function defineConfig(config: GemiConfig): GemiConfig {\n return config;\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";6BA6BO,SAAS,CAAY,CAAC,EAAgC,CAC3D,OAAO",
|
|
8
|
+
"debugId": "FB1D7FB1C6C96D0964756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/dist/email/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{l as w}from"../chunk-k4kdssr3.js";import{da as J}from"../chunk-wypjxj9v.js";import"../chunk-xfeqd7as.js";import"../chunk-cy0yet3t.js";import{render as G}from"jsx-email";import{jsx as H}from"react/jsx-runtime";class K{from="";to=[];subject="No Subject";cc=[];bcc=[];attachments=[];template;headers={};static async send(q){let k=new this,M=J.use().service.defaultLocale,y=w.use().service,{to:z=k.to,from:O=k.from,subject:A=typeof k.subject==="string"?k.subject:k.subject[q.locale||M],cc:P=k.cc,bcc:Q=k.bcc,attachments:R=k.attachments,data:B,headers:U={}}=q,V={...y.headers??{},...k.headers??{},...U??{}};if(!(await y.filterRecipients(z)).length)return;let[D,W]=await Promise.all([k.render({...B,locale:q.locale}),k.renderText({...B,locale:q.locale})]);if(process.env.EMAIL_DEBUG==="true"){let F=`${process.env.ROOT_DIR}/.debug/emails/${new Date().toISOString()}${A}.html`;await Bun.write(F,D),Bun.spawnSync(["open",F]);return}await w.use().service.driver.send({bcc:Q,cc:P,from:O,subject:A,to:z,attachments:R,html:D,headers:V,text:W,scheduledAt:q.scheduledAt})}static async preview(q){return await new this().render({...q.data,locale:q.locale})}async render(q){let k=this.template;return await G(H(k,{...q}))}async renderText(q){let k=this.template;return await G(H(k,{...q}),{plainText:!0})}}export{K as Email};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=E1A950190304B5CF64756E2164756E21
|
package/dist/email/index.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { ComponentType } from \"react\";\nimport { render } from \"jsx-email\";\nimport { EmailServiceContainer } from \"../services/email/EmailServiceContainer\";\nimport type { SendEmailParams } from \"../services/email/drivers/types\";\nimport { I18nServiceContainer } from \"../i18n/I18nServiceContainer\";\n\ninterface SendEmailArgs<T> extends Partial<Omit<SendEmailParams, \"html\">> {\n data: Omit<T, \"locale\">;\n locale?: string;\n}\n\nexport class Email {\n from = \"\";\n to = [];\n subject: string | Record<string, string> = \"No Subject\";\n cc = [];\n bcc = [];\n attachments = [];\n template: ComponentType<any>;\n headers: Record<string, string> = {};\n\n static async send<T extends Email>(\n this: new () => T,\n args: SendEmailArgs<T[\"template\"] extends (p: infer P) => any ? P : never>,\n ) {\n const instance = new this();\n\n const defaultLocale = I18nServiceContainer.use().service.defaultLocale;\n const emailService = EmailServiceContainer.use().service;\n\n const {\n to = instance.to,\n from = instance.from,\n subject = typeof instance.subject === \"string\"\n ? instance.subject\n : instance.subject[args.locale || defaultLocale],\n cc = instance.cc,\n bcc = instance.bcc,\n attachments = instance.attachments,\n data,\n headers = {},\n } = args;\n\n const _headers = {\n ...(emailService.headers ?? {}),\n ...(instance.headers ?? {}),\n ...(headers ?? {}),\n };\n\n const recipients = await emailService.filterRecipients(to);\n\n if (!recipients.length) {\n return;\n }\n\n const [html, text] = await Promise.all([\n instance.render({\n ...(data as any),\n locale: args.locale,\n }),\n instance.renderText({\n ...(data as any),\n locale: args.locale,\n }),\n ]);\n\n if (process.env.EMAIL_DEBUG === \"true\") {\n const fileName = `${process.env.ROOT_DIR}/.debug/emails/${new Date().toISOString()}${subject}.html`;\n await Bun.write(fileName, html);\n Bun.spawnSync([\"open\", fileName]);\n return;\n }\n\n await EmailServiceContainer.use().service.driver.send({\n bcc,\n cc,\n from,\n subject,\n to,\n attachments,\n html,\n headers: _headers,\n text,\n scheduledAt: args.scheduledAt,\n });\n }\n\n static async preview<T extends Email>(\n this: new () => T,\n args: Pick<SendEmailArgs<T[\"template\"] extends (p: infer P) => any ? P : never>, \"data\" | \"locale\">,\n ) {\n\n const instance = new this();\n\n return await instance.render({\n ...args.data,\n locale: args.locale,\n })\n }\n\n protected async render<T extends Record<string, any>>(props: T) {\n const Template = this.template;\n return await render(<Template {...props} />);\n }\n\n protected async renderText<T extends Record<string, any>>(props: T) {\n const Template = this.template;\n return await render(<Template {...props} />, { plainText: true });\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";4JACA,YAAS,qDAUF,CAAM,CAAM,CACjB,KAAO,GACP,GAAK,CAAC,EACN,QAA2C,aAC3C,GAAK,CAAC,EACN,IAAM,CAAC,EACP,YAAc,CAAC,EACf,SACA,QAAkC,CAAC,cAEtB,KAAqB,CAEhC,EACA,CACA,IAAM,EAAW,IAAI,KAEf,EAAgB,EAAqB,IAAI,EAAE,QAAQ,cACnD,EAAe,EAAsB,IAAI,EAAE,SAG/C,KAAK,EAAS,GACd,OAAO,EAAS,KAChB,UAAU,OAAO,EAAS,UAAY,SAClC,EAAS,QACT,EAAS,QAAQ,EAAK,QAAU,GACpC,KAAK,EAAS,GACd,MAAM,EAAS,IACf,cAAc,EAAS,YACvB,OACA,UAAU,CAAC,GACT,EAEE,EAAW,IACX,EAAa,SAAW,CAAC,KACzB,EAAS,SAAW,CAAC,KACrB,GAAW,CAAC,CAClB,EAIA,GAAI,EAFe,MAAM,EAAa,iBAAiB,CAAE,GAEzC,OACd,OAGF,IAAO,EAAM,GAAQ,MAAM,QAAQ,IAAI,CACrC,EAAS,OAAO,IACV,EACJ,OAAQ,EAAK,MACf,CAAC,EACD,EAAS,WAAW,IACd,EACJ,OAAQ,EAAK,MACf,CAAC,CACH,CAAC,EAED,GAAI,QAAQ,IAAI,cAAgB,OAAQ,CACtC,IAAM,EAAW,GAAG,QAAQ,IAAI,0BAA0B,IAAI,KAAK,EAAE,YAAY,IAAI,SACrF,MAAM,IAAI,MAAM,EAAU,CAAI,EAC9B,IAAI,UAAU,CAAC,OAAQ,CAAQ,CAAC,EAChC,OAGF,MAAM,EAAsB,IAAI,EAAE,QAAQ,OAAO,KAAK,CACpD,MACA,KACA,OACA,UACA,KACA,cACA,OACA,QAAS,EACT,OACA,YAAa,EAAK,WACpB,CAAC,cAGU,QAAwB,CAEnC,EACA,CAIA,OAAO,MAFU,IAAI,KAAK,EAEJ,OAAO,IACxB,EAAK,KACR,OAAQ,EAAK,MACf,CAAC,OAGa,OAAqC,CAAC,EAAU,CAC9D,IAAM,EAAW,KAAK,SACtB,OAAO,MAAM,EAAO,EAAC,EAAD,IAAc,EAAO,CAAE,OAG7B,WAAyC,CAAC,EAAU,CAClE,IAAM,EAAW,KAAK,SACtB,OAAO,MAAM,EAAO,EAAC,EAAD,IAAc,EAAO,EAAI,CAAE,UAAW,EAAK,CAAC,EAEpE",
|
|
8
|
+
"debugId": "E1A950190304B5CF64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RedisClient } from "bun";
|
|
2
|
+
export declare class Redis {
|
|
3
|
+
static get client(): RedisClient;
|
|
4
|
+
static get(key: string): Promise<string>;
|
|
5
|
+
static set(key: string, value: string): Promise<"OK">;
|
|
6
|
+
static del(...keys: string[]): Promise<number>;
|
|
7
|
+
static exists(key: string): Promise<boolean>;
|
|
8
|
+
static incr(key: string): Promise<number>;
|
|
9
|
+
static expire(key: string, seconds: number): Promise<number>;
|
|
10
|
+
static ttl(key: string): Promise<number>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=Redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Redis.d.ts","sourceRoot":"","sources":["../../facades/Redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAMvC,qBAAa,KAAK;IAChB,MAAM,KAAK,MAAM,IAAI,WAAW,CAE/B;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;IAItB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIrC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE;IAI5B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;IAIzB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM;IAIvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAI1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;CAGvB"}
|
package/dist/facades/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../facades/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../facades/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/facades/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{n as b,o as c,q as d,r as e,s as f,t as g,v as h,w as i,x as j,z as k}from"../chunk-e43m0sz9.js";import"../chunk-9x52jhc8.js";import"../chunk-qksh8x1f.js";import"../chunk-wypjxj9v.js";import{Gb as a}from"../chunk-z3tgcb5r.js";import"../chunk-xfeqd7as.js";import"../chunk-cy0yet3t.js";export{g as Url,k as Redis,a as Redirect,e as Query,i as Meta,h as Log,c as I18n,d as FileStorage,j as Cookie,f as Broadcast,b as Auth};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=DC59DFA1C74184E964756E2164756E21
|
package/dist/http/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{$ as q,H as a,I as b,L as d,M as e,N as f,O as g,P as h,Q as i,R as j,S as k,T as l,U as m,X as n,Y as o,Z as p,aa as r,ba as s,ca as t}from"../chunk-qksh8x1f.js";import{Eb as c}from"../chunk-z3tgcb5r.js";import"../chunk-xfeqd7as.js";import"../chunk-cy0yet3t.js";export{i as getCookies,g as ViewRouter,d as ValidationError,b as ResourceController,c as RequestBreakerError,q as RateLimitMiddleware,s as PoliciesServiceProvider,t as Policies,j as MiddlewareServiceProvider,h as Middleware,l as InsufficientPermissionsError,e as HttpRequest,p as CorsMiddleware,a as Controller,o as CacheMiddleware,r as CSRFMiddleware,k as AuthorizationError,n as AuthenticationMiddleware,m as AuthenticationError,f as ApiRouter};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=2D929DD6D809F0C164756E2164756E21
|
package/dist/http/index.js.map
CHANGED
package/dist/i18n/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{k as x}from"../chunk-ww5pp0rp.js";import{o as S}from"../chunk-e43m0sz9.js";import"../chunk-9x52jhc8.js";import"../chunk-qksh8x1f.js";import"../chunk-wypjxj9v.js";import"../chunk-z3tgcb5r.js";import"../chunk-xfeqd7as.js";import"../chunk-cy0yet3t.js";import{createElement as $,Fragment as e,isValidElement as b}from"react";function y(r,n){let s=Object.values(n).some((o)=>typeof o==="function"&&b(o(""))),g=/{{([^{}]+?)(?::([^{}\[\]]+?))?(?:\[(.*?)\])?}}/g;if(!s)return r.replace(g,(f,d,t,w)=>{let P=d.includes(":")?d.split(":")[0]:d,i=n[P];if(i===void 0)return f;if(typeof i==="function"){let U=i(w!==void 0?w:"");if(b(U))throw Error("JSX returned in string context");return String(U)}if(t)switch(t.toLowerCase()){case"number":return Number(i).toString();case"string":return String(i);case"boolean":return Boolean(i).toString();default:return String(i)}return String(i)});else{let o=[],f=0,d=null;while((d=g.exec(r))!==null){let[t,w,P,i]=d,c=d.index,U=w.includes(":")?w.split(":")[0]:w;if(c>f)o.push(r.substring(f,c));let T=n[U];if(T===void 0)o.push(t);else if(typeof T==="function"){let K=T(i!==void 0?i:"");o.push(K)}else if(P)switch(P.toLowerCase()){case"number":o.push(Number(T).toString());break;case"string":o.push(String(T));break;case"boolean":o.push(Boolean(T).toString());break;default:o.push(String(T))}else o.push(String(T));f=c+t.length}if(f<r.length)o.push(r.substring(f));return $(e,{},...o)}}class R{name;dictionary;constructor(r,n){this.name=r;this.dictionary=n}reference(r){if(typeof window<"u")throw Error("Cannot use reference in the browser");if(!this.dictionary?.[r])throw Error(`Translation not found for ${String(r)}`);return this.dictionary[r]}render(r,...n){let{locale:s=S.locale(),params:g}={params:{},...n[0]};if(typeof window<"u")throw Error("Cannot use render in the browser");if(!this.dictionary?.[r]?.[s])throw Error(`Translation not found for ${String(r)} in ${String(s)}`);return y(this.dictionary[r][s],g??{})}static create(r,n){return new R(r,n)}static text(r,...n){let{locale:s=S.locale(),params:g}={params:{},...n?.[0]};if(!r?.[s])throw Error(`Translation not found for ${String(s)}`);return y(r[s],g??{})}}export{x as I18nServiceProvider,R as Dictionary};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=E7059B5E6582D1A664756E2164756E21
|
package/dist/i18n/index.js.map
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import { I18n } from \"../facades\";\nimport { parseTranslation } from \"../utils/parseTranslation\";\nimport type {\n ParseTranslationParams,\n ParseTranslationParamsServer,\n Prettify,\n} from \"../utils/type\";\n\ntype Translations = Record<string, Record<string, string>>;\n\nexport class Dictionary<T extends Translations> {\n constructor(\n public name: string,\n public dictionary: T,\n ) {}\n\n reference(key: keyof T) {\n if (typeof window !== \"undefined\") {\n throw new Error(\"Cannot use reference in the browser\");\n }\n if (!this.dictionary?.[key]) {\n throw new Error(`Translation not found for ${String(key)}`);\n }\n return this.dictionary[key];\n }\n\n render<\n K extends keyof T,\n U extends keyof T[K],\n R = Prettify<ParseTranslationParams<T[K][U]>>,\n >(\n key: K,\n ...args: R extends Record<string, never>\n ? [args?: { locale?: U | (string & {}) }]\n : [args: { locale?: U | (string & {}); params: R }]\n ) {\n const { locale = I18n.locale(), params } = {\n params: {},\n ...args[0],\n };\n\n if (typeof window !== \"undefined\") {\n throw new Error(\"Cannot use render in the browser\");\n }\n\n if (!this.dictionary?.[key]?.[locale]) {\n throw new Error(\n `Translation not found for ${String(key)} in ${String(locale)}`,\n );\n }\n return parseTranslation(this.dictionary[key][locale], params ?? {});\n }\n\n static create<const T extends Translations>(name: string, translations: T) {\n return new Dictionary<T>(name, translations);\n }\n\n static text<const T extends Record<string, string>, U extends keyof T>(\n content: T,\n ...args: Prettify<ParseTranslationParamsServer<T[U]>> extends Record<\n string,\n never\n >\n ? [args?: { locale?: U | (string & {}) }]\n : [\n args: {\n locale?: U | (string & {});\n params: Prettify<ParseTranslationParamsServer<T[U]>>;\n },\n ]\n ): string {\n const { locale = I18n.locale(), params } = { params: {}, ...args?.[0] };\n\n if (!content?.[locale]) {\n throw new Error(`Translation not found for ${String(locale)}`);\n }\n\n return parseTranslation(content[locale], params ?? {});\n }\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "E7059B5E6582D1A664756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const GEMI_EXTERNAL_SPECIFIERS: readonly ["gemi", "gemi/client", "gemi/http", "gemi/app", "gemi/facades", "gemi/email", "gemi/runtime", "gemi/kernel", "gemi/services", "gemi/broadcasting", "gemi/i18n"];
|
|
2
|
+
export declare function isGemiExternal(id: string): boolean;
|
|
3
|
+
//# sourceMappingURL=gemiExternals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemiExternals.d.ts","sourceRoot":"","sources":["../../internal/gemiExternals.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,wBAAwB,2KAY3B,CAAC;AAIX,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD"}
|
package/dist/kernel/Kernel.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { LoggingServiceProvider } from "../services/logging/LoggingServiceProvid
|
|
|
12
12
|
import { ImageOptimizationServiceProvider } from "../services/image-optimization/ImageOptimizationServiceProvider";
|
|
13
13
|
import { CronServiceProvider } from "../services/cron/CronServiceProvider";
|
|
14
14
|
import { KernelIdServiceProvider } from "../services/kernel-id/KernelIdServiceProvider";
|
|
15
|
+
import { RedisServiceProvider } from "../services/redis/RedisServiceProvider";
|
|
15
16
|
export declare class Kernel {
|
|
16
17
|
protected emailServiceProvider: typeof EmailServiceProvider;
|
|
17
18
|
protected authenticationServiceProvider: typeof AuthenticationServiceProvider;
|
|
@@ -27,6 +28,7 @@ export declare class Kernel {
|
|
|
27
28
|
protected imageServiceProvider: typeof ImageOptimizationServiceProvider;
|
|
28
29
|
protected cronServiceProvider: typeof CronServiceProvider;
|
|
29
30
|
protected kernelIdServiceProvider: typeof KernelIdServiceProvider;
|
|
31
|
+
protected redisServiceProvider: typeof RedisServiceProvider;
|
|
30
32
|
services: Record<string, ServiceContainer>;
|
|
31
33
|
private booted;
|
|
32
34
|
boot(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AAEjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAG9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iEAAiE,CAAC;AAEnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AAEjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAG9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iEAAiE,CAAC;AAEnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAIxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAG9E,qBAAa,MAAM;IACjB,SAAS,CAAC,oBAAoB,8BAAwB;IACtD,SAAS,CAAC,6BAA6B,uCAAiC;IACxE,SAAS,CAAC,yBAAyB,mCAA6B;IAChE,SAAS,CAAC,mBAAmB,6BAAuB;IACpD,SAAS,CAAC,0BAA0B,oCAA8B;IAClE,SAAS,CAAC,wBAAwB,kCAA4B;IAC9D,SAAS,CAAC,yBAAyB,mCAA6B;IAChE,SAAS,CAAC,0BAA0B,oCAA8B;IAClE,SAAS,CAAC,4BAA4B,qCAA+B;IACrE,SAAS,CAAC,sBAAsB,gCAA0B;IAC1D,SAAS,CAAC,oBAAoB,8BAAwB;IACtD,SAAS,CAAC,oBAAoB,0CAAoC;IAClE,SAAS,CAAC,mBAAmB,6BAAuB;IACpD,SAAS,CAAC,uBAAuB,iCAA2B;IAC5D,SAAS,CAAC,oBAAoB,8BAAwB;IAEtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM;IAChD,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI;IAsDJ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;IAKlB,OAAO;IAQD,WAAW;CAalB"}
|
package/dist/kernel/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{f as k}from"../chunk-9krpj7nc.js";import{g as Q,j as Y,o as Z,s as x,t as K,u as N,v as V,w as W,x as z}from"../chunk-pwhb292c.js";import{I as f,N as L,R as M}from"../chunk-sbt387js.js";import{W as B}from"../chunk-34ac0e8a.js";import{X}from"../chunk-3hb1j6ty.js";import"../chunk-9p8h8aej.js";import{$ as C,aa as I,ea as _,ha as v,ia as l,ja as d,ka as p,la as u,pa as g,ta as T,va as w}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{tb as A}from"../chunk-qmpybvq3.js";import{yb as E}from"../chunk-05yzymd6.js";import{Ab as R,zb as H}from"../chunk-703zn6wy.js";import"../chunk-7fx4zpqd.js";import"../chunk-zf8mc5nr.js";var t=async(j)=>j instanceof Promise?await j:j,q=async(j)=>{try{if(j)await t(j())}catch(b){}},i=class j{name;cron;callback;onTick;onComplete;interval=null;next=null;status="stopped";parser;constructor(b){if(this.name=b.name,this.cron=b.cron,this.callback=q.bind(this,b.callback),this.onTick=q.bind(this,b.onTick),this.onComplete=q.bind(this,b.onComplete),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.destroy=this.destroy.bind(this),this.getStatus=this.getStatus.bind(this),this.isRunning=this.isRunning.bind(this),this.lastExecution=this.lastExecution.bind(this),this.nextExecution=this.nextExecution.bind(this),this.remaining=this.remaining.bind(this),this.time=this.time.bind(this),this.parser=new U(this.cron),b.start)this.start()}start(){if(this.status==="running")return;this.status="running",this.next=this.parser.getNext(),this.interval=setInterval(()=>{if(this.next&&this.next.getTime()<=Date.now())this.callback(),this.onTick(),this.next=this.parser.getNext()},1000)}stop(){if(this.status==="stopped")return;if(this.status="stopped",this.interval)clearInterval(this.interval)}destroy(){this.stop(),this.onComplete()}getStatus(){return this.status}isRunning(){return this.status==="running"}lastExecution(){return this.parser.getPrevious()}nextExecution(){return this.next||new Date}remaining(){return this.next?this.next.getTime()-Date.now():0}time(){return Date.now()}static create(b){return new j(b)}static parse(b){return new U(b).parse()}static getNext(b){return new U(b).getNext()}static getPrevious(b){return new U(b).getPrevious()}static isCron(b){try{return new U(b).parse(),!0}catch($){return!1}}static isValid(b){return j.isCron(b)}},o=i,s=class j{crons=new Map;constructor(b={}){if(b.autoStart)this.bakeAll()}add(b){let $=o.create(b);return this.crons.set($.name,$),$}remove(b){let $=this.crons.get(b);if($)$.destroy(),this.crons.delete(b)}bake(b){let $=this.crons.get(b);if($)$.start()}stop(b){let $=this.crons.get(b);if($)$.stop()}destroy(b){let $=this.crons.get(b);if($)$.destroy(),this.crons.delete(b)}getStatus(b){let $=this.crons.get(b);return $?$.getStatus():"stopped"}isRunning(b){let $=this.crons.get(b);return $?$.isRunning():!1}lastExecution(b){let $=this.crons.get(b);return $?$.lastExecution():new Date}nextExecution(b){let $=this.crons.get(b);return $?$.nextExecution():new Date}remaining(b){let $=this.crons.get(b);return $?$.remaining():0}time(b){let $=this.crons.get(b);return $?$.time():0}bakeAll(){this.crons.forEach((b)=>b.start())}stopAll(){this.crons.forEach((b)=>b.stop())}destroyAll(){this.crons.forEach((b)=>b.destroy()),this.crons.clear()}static create(b={}){return new j(b)}},a=s,r=class{constructor(j){this.cron=j}aliases=new Map([["@every_second","* * * * * *"],["@every_minute","0 * * * * *"],["@yearly","0 0 1 1 * *"],["@annually","0 0 1 1 * *"],["@monthly","0 0 1 * * *"],["@weekly","0 0 * * 0 *"],["@daily","0 0 * * * *"],["@hourly","0 * * * * *"]]);parseEveryStr(j){let[,b,$]=j.split("_");switch($){case"seconds":return`*/${b} * * * * *`;case"minutes":return`0 */${b} * * * *`;case"hours":return`0 0 */${b} * * *`;case"dayOfMonth":return`0 0 0 */${b} * *`;case"months":return`0 0 0 0 */${b} *`;case"dayOfWeek":return`0 0 0 0 0 */${b}`;default:return"* * * * * *"}}parseAtHourStr(j){let[,b]=j.split("_"),[$,J]=b.split(":");return`0 ${J} ${$} * * *`}parseOnDayStr(j){let[,b,$]=j.split("_");return`0 0 0 * * ${new Map([["sunday",1],["monday",2],["tuesday",3],["wednesday",4],["thursday",5],["friday",6],["saturday",7]]).get(b)}`}parseBetweenStr(j){let[,b,$]=j.split("_");return`0 0 ${b}-${$} * * *`}parseStr(j){if(this.aliases.has(j))return this.aliases.get(j)||"";if(j.includes("@every_"))return this.parseEveryStr(j);if(j.includes("@at_"))return this.parseAtHourStr(j);if(j.includes("@on_"))return this.parseOnDayStr(j);if(j.includes("@between_"))return this.parseBetweenStr(j);return j}parse(){this.cron=this.parseStr(this.cron);let[j,b,$,J,y,P]=this.cron.split(" ");return{second:this.parseCronTime(j,0,59),minute:this.parseCronTime(b,0,59),hour:this.parseCronTime($,0,23),dayOfMonth:this.parseCronTime(J,1,31),month:this.parseCronTime(y,1,12),dayOfWeek:this.parseCronTime(P,0,6)}}getNext(){let j=this.parse(),b=new Date,$=new Date(b.getFullYear(),b.getMonth(),b.getDate(),b.getHours(),b.getMinutes(),b.getSeconds());$.setMilliseconds(0),$.setSeconds($.getSeconds()+1);while(!this.checkCronTime(j,$))$.setSeconds($.getSeconds()+1);return $}getPrevious(){let j=this.parse(),b=new Date,$=new Date(b.getFullYear(),b.getMonth(),b.getDate(),b.getHours(),b.getMinutes(),b.getSeconds());$.setMilliseconds(0),$.setSeconds($.getSeconds()-1);while(!this.checkCronTime(j,$))$.setSeconds($.getSeconds()-1);return $}parseCronTime(j,b,$){let J=[];switch(!0){case j==="*":for(let y=b;y<=$;y++)J.push(y);break;case j.includes("-"):{let[y,P]=j.split("-"),F=this.getStep(j);for(let S=parseInt(y);S<=parseInt(P);S+=F)J.push(S);break}case j.includes("/"):{let[y,P]=j.split("/"),F=y==="*"?b:parseInt(y);for(let S=F;S<=$;S+=parseInt(P))J.push(S);break}case j.includes(","):{let y=j.split(",");for(let P=0;P<y.length;P++)J.push(parseInt(y[P]));break}default:J.push(parseInt(j));break}return J}getStep(j){let[,b]=j.split("/"),$=parseInt(b);return isNaN($)?1:$}checkCronTime(j,b){if(j.second&&!j.second.includes(b.getSeconds()))return!1;if(j.minute&&!j.minute.includes(b.getMinutes()))return!1;if(j.hour&&!j.hour.includes(b.getHours()))return!1;if(j.dayOfMonth&&!j.dayOfMonth.includes(b.getDate()))return!1;if(j.month&&!j.month.includes(b.getMonth()+1))return!1;else if(j.dayOfWeek&&!j.dayOfWeek.includes(b.getDay()))return!1;return!0}},U=r,O=a;class h extends R{service;static _name="CronServiceContainer";constructor(j){super();this.service=j;if(this.service.jobs.length===0)return;let b=O.create({autoStart:!0}),$=async(J)=>{return await this.service.kernel.waitForBoot.call(this.service.kernel),await this.service.kernel.run.call(this.service.kernel,J)};for(let J of this.service.jobs){let y=new J;if(!y.name){console.error(`Cron job must have a name. Job: ${JSON.stringify(y)}`);continue}if(!y.cron){console.error(`Cron job must have an expression. Job: ${y.name}`);continue}b.add({name:y.name,cron:y.cron,callback:()=>$(async()=>{try{await y.callback.call(y)}catch(P){console.error(`Error in cron job ${y.name}:`,P)}}),onComplete:()=>$(async()=>{try{await y.onComplete.call(y)}catch(P){console.error(`Error completing cron job ${y.name}:`,P)}}),onTick:()=>$(async()=>{try{await y.onTick.call(y)}catch(P){console.error(`Error executing cron job ${y.name}:`,P)}})})}b.bakeAll()}}class D extends E{id=crypto.randomUUID();boot(){}}class G extends E{services=new Map;boot(){}}class c{emailServiceProvider=v;authenticationServiceProvider=x;middlewareServiceProvider=f;i18nServiceProvider=k;fileStorageServiceProvider=C;apiRouterServiceProvider=I;viewRouterServiceProvider=d;rateLimiterServiceProvider=_;broadcastingsServiceProvider=l;loggingServiceProvider=p;queueServiceProvider=u;imageServiceProvider=g;cronServiceProvider=T;kernelIdServiceProvider=D;services={};booted=!1;boot(){this.services={[B._name]:new B(new this.emailServiceProvider),[L._name]:new L(new this.authenticationServiceProvider),[N._name]:new N(new this.middlewareServiceProvider),[X._name]:new X(new this.i18nServiceProvider),[Y._name]:new Y(new this.fileStorageServiceProvider),[z._name]:new z(new this.apiRouterServiceProvider),[W._name]:new W(new this.viewRouterServiceProvider),[M._name]:new M(new this.rateLimiterServiceProvider),[Q._name]:new Q(new this.broadcastingsServiceProvider),[Z._name]:new Z(new this.loggingServiceProvider),[A._name]:new A(new this.queueServiceProvider),[K._name]:new K(new this.imageServiceProvider),[h._name]:new h(new this.cronServiceProvider(this)),[V._name]:new V(new this.kernelIdServiceProvider),[w._name]:new w(new G)},this.booted=!0}run(j){let b=this.services;return H.run(b,j)}destroy(){for(let j of Object.keys(this.services))delete this.services[j];H.disable()}async waitForBoot(){if(!this.booted)await new Promise((j)=>{while(!this.booted)setTimeout(()=>{if(this.booted)j()},10)})}}class m{prisma;constructor(j){this.prisma=j}async findUserByVerificationToken(j){return await this.prisma.user.findFirst({where:{verificationToken:j}})}async verifyUser(j){return await this.prisma.user.update({where:{email:j},data:{emailVerifiedAt:new Date}})}async createSessionV2(j){return await this.prisma.session.create({data:j,include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}async createSession(j){return await this.prisma.session.create({data:j,include:{user:!0}})}async createUser(j){return await this.prisma.user.create({data:j,omit:{password:!0}})}async deleteSession(j){return await this.prisma.session.deleteMany({where:{token:j.token}})}async findUserByEmailAddress(j,b){if(b)return await this.prisma.user.findUnique({where:{email:j,emailVerifiedAt:{not:null}}});return await this.prisma.user.findUnique({where:{email:j}})}async findSession(j){if(!j.token)return null;try{return await this.prisma.session.findUnique({where:{token:j.token},include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}catch(b){return console.log(b),null}}async updateSession(j){return await this.prisma.session.update({where:{token:j.token},data:{expiresAt:j.expiresAt},include:{user:{select:{id:!0,password:!1,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}},organization:!0}}}})}async updateUserPassword(j){return await this.prisma.user.update({where:{id:j.id},data:{password:j.password}})}async createPasswordResetToken(j){return await this.prisma.passwordResetToken.create({data:{user:{connect:{id:j.user.id}},token:j.token}})}async findPasswordResetToken(j){let{token:b}=j;return await this.prisma.passwordResetToken.findUnique({where:{token:b},include:{user:!0}})}async deleteAllUserSessions(j){return await this.prisma.session.deleteMany({where:{userId:j}})}async deletePasswordResetToken(j){let{token:b}=j;return await this.prisma.passwordResetToken.delete({where:{token:b}})}async createAccount(j){return await this.prisma.account.create({data:{organizationId:j.organizationId,organizationRole:j.organizationRole,userId:j.userId}})}async deleteInvitationById(j){return await this.prisma.organizationInvitation.delete({where:{publicId:j}})}async findInvitation(j,b){return await this.prisma.organizationInvitation.findFirst({where:{publicId:j,email:b}})}async createMagicLinkToken(j){return await this.prisma.magicLinkToken.create({data:{email:j.email,token:j.token,pin:j.pin}})}async findUserMagicLinkToken(j){let{token:b,pin:$,email:J}=j;if(b)return this.prisma.magicLinkToken.findUnique({where:{token_email:{email:J,token:b}}});else return await this.prisma.magicLinkToken.findUnique({where:{pin_email:{email:J,pin:$}}})}async deleteMagicLinkToken(j){return await this.prisma.magicLinkToken.deleteMany({where:{email:j}})}async createSocialAccount(j){return await this.prisma.socialAccount.create({data:j})}}export{m as PrismaAuthenticationAdapter,c as Kernel,x as AuthenticationServiceProvider};
|
|
2
|
+
import{k as y}from"../chunk-ww5pp0rp.js";import{l as z}from"../chunk-k4kdssr3.js";import{A as N,B as Z,C as $,D as J,E as K,F as V,m as Q,p as W,u as X,y as Y}from"../chunk-e43m0sz9.js";import"../chunk-9x52jhc8.js";import{R as p,W as H,_ as L}from"../chunk-qksh8x1f.js";import{da as T}from"../chunk-wypjxj9v.js";import{Aa as C,Ca as c,Da as E,ga as A,ha as R,la as S,oa as d,pa as h,qa as k,ra as I,sa as u,wa as m}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{Cb as _}from"../chunk-jhp3h3kc.js";import{Hb as B}from"../chunk-z3tgcb5r.js";import{Ib as G,Jb as O}from"../chunk-xfeqd7as.js";import"../chunk-cy0yet3t.js";class q extends O{service;static _name="CronServiceContainer";constructor(x){super();this.service=x;if(this.service.jobs.length===0)return;let P=globalThis.__gemiCronJobs??=new Map,f=async(w)=>{return await this.service.kernel.waitForBoot.call(this.service.kernel),await this.service.kernel.run.call(this.service.kernel,w)};for(let w of this.service.jobs){let U=new w;if(!U.name){console.error(`Cron job must have a name. Job: ${JSON.stringify(U)}`);continue}if(!U.cron){console.error(`Cron job must have an expression. Job: ${U.name}`);continue}P.get(U.name)?.stop();let l=Bun.cron(U.cron,()=>f(async()=>{try{await U.onTick.call(U)}catch(M){console.error(`Error executing cron job ${U.name}:`,M)}try{await U.callback.call(U)}catch(M){console.error(`Error in cron job ${U.name}:`,M)}try{await U.onComplete.call(U)}catch(M){console.error(`Error completing cron job ${U.name}:`,M)}}));P.set(U.name,l)}}}class D extends B{id=crypto.randomUUID();boot(){}}class F extends B{services=new Map;boot(){}}class j{emailServiceProvider=d;authenticationServiceProvider=N;middlewareServiceProvider=p;i18nServiceProvider=y;fileStorageServiceProvider=A;apiRouterServiceProvider=R;viewRouterServiceProvider=k;rateLimiterServiceProvider=S;broadcastingsServiceProvider=h;loggingServiceProvider=I;queueServiceProvider=u;imageServiceProvider=m;cronServiceProvider=C;kernelIdServiceProvider=D;redisServiceProvider=c;services={};booted=!1;boot(){this.services={[z._name]:new z(new this.emailServiceProvider),[H._name]:new H(new this.authenticationServiceProvider),[$._name]:new $(new this.middlewareServiceProvider),[T._name]:new T(new this.i18nServiceProvider),[W._name]:new W(new this.fileStorageServiceProvider),[V._name]:new V(new this.apiRouterServiceProvider),[K._name]:new K(new this.viewRouterServiceProvider),[L._name]:new L(new this.rateLimiterServiceProvider),[Q._name]:new Q(new this.broadcastingsServiceProvider),[X._name]:new X(new this.loggingServiceProvider),[_._name]:new _(new this.queueServiceProvider),[Z._name]:new Z(new this.imageServiceProvider),[q._name]:new q(new this.cronServiceProvider(this)),[J._name]:new J(new this.kernelIdServiceProvider),[Y._name]:new Y(new this.redisServiceProvider),[E._name]:new E(new F)},this.booted=!0}run(x){let P=this.services;return G.run(P,x)}destroy(){for(let x of Object.keys(this.services))delete this.services[x];G.disable()}async waitForBoot(){if(!this.booted)await new Promise((x)=>{while(!this.booted)setTimeout(()=>{if(this.booted)x()},10)})}}class v{prisma;constructor(x){this.prisma=x}async findUserByVerificationToken(x){return await this.prisma.user.findFirst({where:{verificationToken:x}})}async verifyUser(x){return await this.prisma.user.update({where:{email:x},data:{emailVerifiedAt:new Date}})}async createSessionV2(x){return await this.prisma.session.create({data:x,include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}async createSession(x){return await this.prisma.session.create({data:x,include:{user:!0}})}async createUser(x){return await this.prisma.user.create({data:x,omit:{password:!0}})}async deleteSession(x){return await this.prisma.session.deleteMany({where:{token:x.token}})}async findUserByEmailAddress(x,P){if(P)return await this.prisma.user.findUnique({where:{email:x,emailVerifiedAt:{not:null}}});return await this.prisma.user.findUnique({where:{email:x}})}async findSession(x){if(!x.token)return null;try{return await this.prisma.session.findUnique({where:{token:x.token},include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}catch(P){return console.log(P),null}}async updateSession(x){return await this.prisma.session.update({where:{token:x.token},data:{expiresAt:x.expiresAt},include:{user:{select:{id:!0,password:!1,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}},organization:!0}}}})}async updateUserPassword(x){return await this.prisma.user.update({where:{id:x.id},data:{password:x.password}})}async createPasswordResetToken(x){return await this.prisma.passwordResetToken.create({data:{user:{connect:{id:x.user.id}},token:x.token}})}async findPasswordResetToken(x){let{token:P}=x;return await this.prisma.passwordResetToken.findUnique({where:{token:P},include:{user:!0}})}async deleteAllUserSessions(x){return await this.prisma.session.deleteMany({where:{userId:x}})}async deletePasswordResetToken(x){let{token:P}=x;return await this.prisma.passwordResetToken.delete({where:{token:P}})}async createAccount(x){return await this.prisma.account.create({data:{organizationId:x.organizationId,organizationRole:x.organizationRole,userId:x.userId}})}async deleteInvitationById(x){return await this.prisma.organizationInvitation.delete({where:{publicId:x}})}async findInvitation(x,P){return await this.prisma.organizationInvitation.findFirst({where:{publicId:x,email:P}})}async createMagicLinkToken(x){return await this.prisma.magicLinkToken.create({data:{email:x.email,token:x.token,pin:x.pin}})}async findUserMagicLinkToken(x){let{token:P,pin:f,email:w}=x;if(P)return this.prisma.magicLinkToken.findUnique({where:{token_email:{email:w,token:P}}});else return await this.prisma.magicLinkToken.findUnique({where:{pin_email:{email:w,pin:f}}})}async deleteMagicLinkToken(x){return await this.prisma.magicLinkToken.deleteMany({where:{email:x}})}async createSocialAccount(x){return await this.prisma.socialAccount.create({data:x})}}export{v as PrismaAuthenticationAdapter,j as Kernel,N as AuthenticationServiceProvider};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=68106C8511E4EDB164756E2164756E21
|
package/dist/kernel/index.js.map
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../services/cron/CronServiceContainer.ts", "../services/kernel-id/KernelIdServiceProvider.ts", "../services/singleton/SingletonServiceProvider.ts", "../kernel/Kernel.ts", "../auth/adapters/prisma.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// lib/utils.ts\nvar resolveIfPromise = async (value) => value instanceof Promise ? await value : value;\nvar CBResolver = async (callback) => {\n try {\n if (callback) {\n await resolveIfPromise(callback());\n }\n } catch (e) {\n }\n};\n\n// lib/cron.ts\nvar Cron = class _Cron {\n name;\n cron;\n callback;\n onTick;\n onComplete;\n interval = null;\n next = null;\n status = \"stopped\";\n parser;\n /**\n * Creates a new instance of the `Cron` class.\n */\n constructor(options) {\n this.name = options.name;\n this.cron = options.cron;\n this.callback = CBResolver.bind(this, options.callback);\n this.onTick = CBResolver.bind(this, options.onTick);\n this.onComplete = CBResolver.bind(this, options.onComplete);\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.destroy = this.destroy.bind(this);\n this.getStatus = this.getStatus.bind(this);\n this.isRunning = this.isRunning.bind(this);\n this.lastExecution = this.lastExecution.bind(this);\n this.nextExecution = this.nextExecution.bind(this);\n this.remaining = this.remaining.bind(this);\n this.time = this.time.bind(this);\n this.parser = new parser_default(this.cron);\n if (options.start) {\n this.start();\n }\n }\n start() {\n if (this.status === \"running\") {\n return;\n }\n this.status = \"running\";\n this.next = this.parser.getNext();\n this.interval = setInterval(() => {\n if (this.next && this.next.getTime() <= Date.now()) {\n this.callback();\n this.onTick();\n this.next = this.parser.getNext();\n }\n }, 1e3);\n }\n stop() {\n if (this.status === \"stopped\") {\n return;\n }\n this.status = \"stopped\";\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n destroy() {\n this.stop();\n this.onComplete();\n }\n getStatus() {\n return this.status;\n }\n isRunning() {\n return this.status === \"running\";\n }\n lastExecution() {\n return this.parser.getPrevious();\n }\n nextExecution() {\n return this.next || /* @__PURE__ */ new Date();\n }\n remaining() {\n return this.next ? this.next.getTime() - Date.now() : 0;\n }\n time() {\n return Date.now();\n }\n /**\n * Creates a new cron job with the specified options.\n * @returns A new `ICron` object representing the cron job.\n */\n static create(options) {\n return new _Cron(options);\n }\n /**\n * Parses the specified cron expression and returns a `CronTime` object.\n * @returns A `CronTime` object representing the parsed cron expression.\n */\n static parse(cron) {\n return new parser_default(cron).parse();\n }\n /**\n * Gets the next execution time for the specified cron expression.\n * @template T The type of the cron expression.\n * @returns A `Date` object representing the next execution time.\n */\n static getNext(cron) {\n return new parser_default(cron).getNext();\n }\n /**\n * Gets the previous execution time for the specified cron expression.\n * @returns A `Date` object representing the previous execution time.\n */\n static getPrevious(cron) {\n return new parser_default(cron).getPrevious();\n }\n /**\n * Checks if the specified string is a valid cron expression.\n * @returns `true` if the string is a valid cron expression, `false` otherwise.\n */\n static isCron(cron) {\n try {\n new parser_default(cron).parse();\n return true;\n } catch (e) {\n return false;\n }\n }\n /**\n * Checks if the specified string is a valid cron expression.\n * @returns `true` if the string is a valid cron expression, `false` otherwise.\n */\n static isValid(cron) {\n return _Cron.isCron(cron);\n }\n};\nvar cron_default = Cron;\n\n// lib/baker.ts\nvar Baker = class _Baker {\n crons = /* @__PURE__ */ new Map();\n constructor(options = {}) {\n if (options.autoStart) {\n this.bakeAll();\n }\n }\n add(options) {\n const cron = cron_default.create(options);\n this.crons.set(cron.name, cron);\n return cron;\n }\n remove(name) {\n const cron = this.crons.get(name);\n if (cron) {\n cron.destroy();\n this.crons.delete(name);\n }\n }\n bake(name) {\n const cron = this.crons.get(name);\n if (cron) {\n cron.start();\n }\n }\n stop(name) {\n const cron = this.crons.get(name);\n if (cron) {\n cron.stop();\n }\n }\n destroy(name) {\n const cron = this.crons.get(name);\n if (cron) {\n cron.destroy();\n this.crons.delete(name);\n }\n }\n getStatus(name) {\n const cron = this.crons.get(name);\n return cron ? cron.getStatus() : \"stopped\";\n }\n isRunning(name) {\n const cron = this.crons.get(name);\n return cron ? cron.isRunning() : false;\n }\n lastExecution(name) {\n const cron = this.crons.get(name);\n return cron ? cron.lastExecution() : /* @__PURE__ */ new Date();\n }\n nextExecution(name) {\n const cron = this.crons.get(name);\n return cron ? cron.nextExecution() : /* @__PURE__ */ new Date();\n }\n remaining(name) {\n const cron = this.crons.get(name);\n return cron ? cron.remaining() : 0;\n }\n time(name) {\n const cron = this.crons.get(name);\n return cron ? cron.time() : 0;\n }\n bakeAll() {\n this.crons.forEach((cron) => cron.start());\n }\n stopAll() {\n this.crons.forEach((cron) => cron.stop());\n }\n destroyAll() {\n this.crons.forEach((cron) => cron.destroy());\n this.crons.clear();\n }\n /**\n * Creates a new instance of `Baker`.\n */\n static create(options = {}) {\n return new _Baker(options);\n }\n};\nvar baker_default = Baker;\n\n// lib/parser.ts\nvar CronParser = class {\n /**\n * Creates a new instance of the `CronParser` class.\n */\n constructor(cron) {\n this.cron = cron;\n }\n /**\n * A map of cron expression aliases to their corresponding cron expressions.\n */\n aliases = /* @__PURE__ */ new Map([\n [\"@every_second\", \"* * * * * *\"],\n [\"@every_minute\", \"0 * * * * *\"],\n [\"@yearly\", \"0 0 1 1 * *\"],\n [\"@annually\", \"0 0 1 1 * *\"],\n [\"@monthly\", \"0 0 1 * * *\"],\n [\"@weekly\", \"0 0 * * 0 *\"],\n [\"@daily\", \"0 0 * * * *\"],\n [\"@hourly\", \"0 * * * * *\"]\n ]);\n /**\n * Parses a string in the format \"@every_<value>_<unit>\" and returns the corresponding cron expression.\n */\n parseEveryStr(str) {\n const [, value, unit] = str.split(\"_\");\n switch (unit) {\n case \"seconds\":\n return `*/${value} * * * * *`;\n case \"minutes\":\n return `0 */${value} * * * *`;\n case \"hours\":\n return `0 0 */${value} * * *`;\n case \"dayOfMonth\":\n return `0 0 0 */${value} * *`;\n case \"months\":\n return `0 0 0 0 */${value} *`;\n case \"dayOfWeek\":\n return `0 0 0 0 0 */${value}`;\n default:\n return \"* * * * * *\";\n }\n }\n /**\n * Parses a string in the format \"@at_<time>\" and returns the corresponding cron expression.\n */\n parseAtHourStr(str) {\n const [, time] = str.split(\"_\");\n const [hour, minute] = time.split(\":\");\n return `0 ${minute} ${hour} * * *`;\n }\n /**\n * Parses a string in the format \"@on_<day>_<unit>\" and returns the corresponding cron expression.\n */\n parseOnDayStr(str) {\n const [, day, _unit] = str.split(\"_\");\n const days = /* @__PURE__ */ new Map([\n [\"sunday\", 1],\n [\"monday\", 2],\n [\"tuesday\", 3],\n [\"wednesday\", 4],\n [\"thursday\", 5],\n [\"friday\", 6],\n [\"saturday\", 7]\n ]);\n return `0 0 0 * * ${days.get(day)}`;\n }\n /**\n * Parses a string in the format \"@between_<start>_<end>\" and returns the corresponding cron expression.\n */\n parseBetweenStr(str) {\n const [, start, end] = str.split(\"_\");\n return `0 0 ${start}-${end} * * *`;\n }\n /**\n * Parses the input string and returns the corresponding cron expression.\n */\n parseStr(str) {\n if (this.aliases.has(str)) {\n return this.aliases.get(str) || \"\";\n }\n if (str.includes(\"@every_\")) {\n return this.parseEveryStr(str);\n }\n if (str.includes(\"@at_\")) {\n return this.parseAtHourStr(str);\n }\n if (str.includes(\"@on_\")) {\n return this.parseOnDayStr(str);\n }\n if (str.includes(\"@between_\")) {\n return this.parseBetweenStr(\n str\n );\n }\n return str;\n }\n /**\n * Parses the cron expression and returns a `CronTime` object representing the parsed cron expression.\n * @returns A `CronTime` object representing the parsed cron expression.\n */\n parse() {\n this.cron = this.parseStr(this.cron);\n const [second, minute, hour, dayOfMonth, month, dayOfWeek] = this.cron.split(\" \");\n return {\n second: this.parseCronTime(second, 0, 59),\n minute: this.parseCronTime(minute, 0, 59),\n hour: this.parseCronTime(hour, 0, 23),\n dayOfMonth: this.parseCronTime(dayOfMonth, 1, 31),\n month: this.parseCronTime(month, 1, 12),\n dayOfWeek: this.parseCronTime(dayOfWeek, 0, 6)\n };\n }\n /**\n * Gets the next execution time based on the current time.\n * @returns A `Date` object representing the next execution time.\n */\n getNext() {\n const cronTime = this.parse();\n const now = /* @__PURE__ */ new Date();\n let next = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n now.getHours(),\n now.getMinutes(),\n now.getSeconds()\n );\n next.setMilliseconds(0);\n next.setSeconds(next.getSeconds() + 1);\n while (!this.checkCronTime(cronTime, next)) {\n next.setSeconds(next.getSeconds() + 1);\n }\n return next;\n }\n /**\n * Gets the previous execution time based on the current time.\n * @returns A `Date` object representing the previous execution time.\n */\n getPrevious() {\n const cronTime = this.parse();\n const now = /* @__PURE__ */ new Date();\n let previous = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n now.getHours(),\n now.getMinutes(),\n now.getSeconds()\n );\n previous.setMilliseconds(0);\n previous.setSeconds(previous.getSeconds() - 1);\n while (!this.checkCronTime(cronTime, previous)) {\n previous.setSeconds(previous.getSeconds() - 1);\n }\n return previous;\n }\n /**\n * Parses a cron time string and returns an array of numbers representing the valid values for that field.\n */\n parseCronTime(cronTime, min, max) {\n const result = [];\n switch (true) {\n case cronTime === \"*\":\n for (let i = min; i <= max; i++) {\n result.push(i);\n }\n break;\n case cronTime.includes(\"-\"): {\n const [start, end] = cronTime.split(\"-\");\n const step = this.getStep(cronTime);\n for (let i = parseInt(start); i <= parseInt(end); i += step) {\n result.push(i);\n }\n break;\n }\n case cronTime.includes(\"/\"): {\n const [value, step] = cronTime.split(\"/\");\n const start = value === \"*\" ? min : parseInt(value);\n for (let i = start; i <= max; i += parseInt(step)) {\n result.push(i);\n }\n break;\n }\n case cronTime.includes(\",\"): {\n const times = cronTime.split(\",\");\n for (let i = 0; i < times.length; i++) {\n result.push(parseInt(times[i]));\n }\n break;\n }\n default:\n result.push(parseInt(cronTime));\n break;\n }\n return result;\n }\n /**\n * Gets the step value for a cron time string.\n */\n getStep(cronTime) {\n const [, step] = cronTime.split(\"/\");\n const parsedStep = parseInt(step);\n return isNaN(parsedStep) ? 1 : parsedStep;\n }\n /**\n * Checks if the given date matches the cron time.\n */\n checkCronTime(cronTime, date) {\n if (cronTime.second && !cronTime.second.includes(date.getSeconds())) {\n return false;\n }\n if (cronTime.minute && !cronTime.minute.includes(date.getMinutes())) {\n return false;\n }\n if (cronTime.hour && !cronTime.hour.includes(date.getHours())) {\n return false;\n }\n if (cronTime.dayOfMonth && !cronTime.dayOfMonth.includes(date.getDate())) {\n return false;\n }\n if (cronTime.month && !cronTime.month.includes(date.getMonth() + 1)) {\n return false;\n } else if (cronTime.dayOfWeek && !cronTime.dayOfWeek.includes(date.getDay())) {\n return false;\n }\n return true;\n }\n};\nvar parser_default = CronParser;\n\n// lib/index.ts\nvar lib_default = baker_default;\nexport {\n baker_default as Baker,\n cron_default as Cron,\n parser_default as CronParser,\n lib_default as default\n};\n",
|
|
6
|
-
"import Baker from \"cronbake\";\nimport { ServiceContainer } from \"../ServiceContainer\";\nimport type { CronServiceProvider } from \"./CronServiceProvider\";\n\nexport class CronServiceContainer extends ServiceContainer {\n static _name = \"CronServiceContainer\";\n\n constructor(public service: CronServiceProvider) {\n super();\n\n if (this.service.jobs.length === 0) {\n return;\n }\n\n const driver = Baker.create({ autoStart: true });\n const kernelRun = async <T>(cb: () => T) => {\n await this.service.kernel.waitForBoot.call(this.service.kernel);\n return await this.service.kernel.run.call(this.service.kernel, cb);\n };\n for (const Job of this.service.jobs) {\n const job = new Job();\n if (!job.name) {\n console.error(`Cron job must have a name. Job: ${JSON.stringify(job)}`);\n continue;\n }\n if (!job.cron) {\n console.error(`Cron job must have an expression. Job: ${job.name}`);\n continue;\n }\n driver.add({\n name: job.name,\n cron: job.cron,\n callback: () =>\n kernelRun(async () => {\n try {\n await job.callback.call(job);\n } catch (error) {\n console.error(`Error in cron job ${job.name}:`, error);\n }\n }),\n onComplete: () =>\n kernelRun(async () => {\n try {\n await job.onComplete.call(job);\n } catch (error) {\n console.error(`Error completing cron job ${job.name}:`, error);\n }\n }),\n onTick: () =>\n kernelRun(async () => {\n try {\n await job.onTick.call(job);\n } catch (error) {\n console.error(`Error executing cron job ${job.name}:`, error);\n }\n }),\n });\n }\n driver.bakeAll();\n }\n}\n",
|
|
5
|
+
"import { ServiceContainer } from \"../ServiceContainer\";\nimport type { CronServiceProvider } from \"./CronServiceProvider\";\n\n// The handle the in-process `Bun.cron(schedule, callback)` overload returns\n// (has `.stop()`). `ReturnType<typeof Bun.cron>` can't be used — it resolves to\n// the module-path overload's `Promise<void>` instead.\ntype BunCronHandle = Bun.CronJob;\n\ndeclare global {\n // Registered cron jobs keyed by name, kept on `globalThis` so it survives\n // `bun --hot` reloads. Re-registering a name stops the previous schedule\n // first, so a reload *updates* the job in place instead of stacking a\n // duplicate. (Bun also stops all in-process cron jobs before re-evaluating on\n // hot reload; this makes the intent explicit and covers any re-construction.)\n var __gemiCronJobs: Map<string, BunCronHandle> | undefined;\n}\n\nexport class CronServiceContainer extends ServiceContainer {\n static _name = \"CronServiceContainer\";\n\n constructor(public service: CronServiceProvider) {\n super();\n\n if (this.service.jobs.length === 0) {\n return;\n }\n\n const registry = (globalThis.__gemiCronJobs ??= new Map());\n\n const kernelRun = async <T>(cb: () => T) => {\n await this.service.kernel.waitForBoot.call(this.service.kernel);\n return await this.service.kernel.run.call(this.service.kernel, cb);\n };\n\n for (const Job of this.service.jobs) {\n const job = new Job();\n if (!job.name) {\n console.error(`Cron job must have a name. Job: ${JSON.stringify(job)}`);\n continue;\n }\n if (!job.cron) {\n console.error(`Cron job must have an expression. Job: ${job.name}`);\n continue;\n }\n\n // Update in place: stop any schedule previously registered under this name\n // before re-registering, so a hot reload replaces rather than duplicates.\n registry.get(job.name)?.stop();\n\n const handle = Bun.cron(job.cron, () =>\n kernelRun(async () => {\n try {\n await job.onTick.call(job);\n } catch (error) {\n console.error(`Error executing cron job ${job.name}:`, error);\n }\n try {\n await job.callback.call(job);\n } catch (error) {\n console.error(`Error in cron job ${job.name}:`, error);\n }\n try {\n await job.onComplete.call(job);\n } catch (error) {\n console.error(`Error completing cron job ${job.name}:`, error);\n }\n }),\n );\n\n registry.set(job.name, handle);\n }\n }\n}\n",
|
|
7
6
|
"import { ServiceProvider } from \"../ServiceProvider\";\n\nexport class KernelIdServiceProvider extends ServiceProvider {\n id = crypto.randomUUID();\n boot() {}\n}\n",
|
|
8
7
|
"import { Singleton } from \"../Singleton\";\nimport { ServiceProvider } from \"../ServiceProvider\";\n\nexport class SingletonServiceProvider extends ServiceProvider {\n services = new Map<string, Singleton>();\n\n boot() {}\n}\n",
|
|
9
|
-
"import { kernelContext } from \"./context\";\nimport { AuthenticationServiceProvider } from \"../auth/AuthenticationServiceProvider\";\nimport { AuthenticationServiceContainer } from \"../auth/AuthenticationServiceContainer\";\nimport { MiddlewareServiceProvider } from \"../http/MiddlewareServiceProvider\";\nimport { I18nServiceProvider } from \"../i18n/I18nServiceProvider\";\nimport { I18nServiceContainer } from \"../i18n/I18nServiceContainer\";\nimport { FileStorageServiceContainer } from \"../services/file-storage/FileStorageServiceContainer\";\nimport { FileStorageServiceProvider } from \"../services/file-storage/FileStorageServiceProvider\";\nimport { ApiRouterServiceContainer } from \"../services/router/ApiRouterServiceContainer\";\nimport { ApiRouterServiceProvider } from \"../services/router/ApiRouterServiceProvider\";\nimport { MiddlewareServiceContainer } from \"../services/middleware/MiddlewareServiceContainer\";\nimport { RateLimiterServiceContainer } from \"../services/rate-limiter/RateLimiterServiceContainer\";\nimport { QueueServiceProvider, RateLimiterServiceProvider } from \"../services\";\nimport { EmailServiceProvider } from \"../services/email/EmailServiceProvider\";\nimport { EmailServiceContainer } from \"../services/email/EmailServiceContainer\";\nimport { BroadcastingServiceContainer } from \"../services/pubsub/BroadcastingServiceContainer\";\nimport { BroadcastingServiceProvider } from \"../services/pubsub/BroadcastingServiceProvider\";\nimport { ViewRouterServiceContainer } from \"../services/router/ViewRouterServiceContainer\";\nimport { ViewRouterServiceProvider } from \"../services/router/ViewRouterServiceProvider\";\nimport type { ServiceContainer } from \"../services/ServiceContainer\";\nimport { LoggingServiceContainer } from \"../services/logging/LoggingServiceContainer\";\nimport { LoggingServiceProvider } from \"../services/logging/LoggingServiceProvider\";\nimport { QueueServiceContainer } from \"../services/queue/QueueServiceContainer\";\nimport { ImageOptimizationServiceProvider } from \"../services/image-optimization/ImageOptimizationServiceProvider\";\nimport { ImageOptimizationServiceContainer } from \"../services/image-optimization/ImageOptimizationServiceContainer\";\nimport { CronServiceProvider } from \"../services/cron/CronServiceProvider\";\nimport { CronServiceContainer } from \"../services/cron/CronServiceContainer\";\nimport { KernelIdServiceProvider } from \"../services/kernel-id/KernelIdServiceProvider\";\nimport { KernelIdServiceContainer } from \"../services/kernel-id/KernelIdServiceContainer\";\nimport { SingletonServiceContainer } from \"../services/singleton/SingletonServiceContainer\";\nimport { SingletonServiceProvider } from \"../services/singleton/SingletonServiceProvider\";\n\nexport class Kernel {\n protected emailServiceProvider = EmailServiceProvider;\n protected authenticationServiceProvider = AuthenticationServiceProvider;\n protected middlewareServiceProvider = MiddlewareServiceProvider;\n protected i18nServiceProvider = I18nServiceProvider;\n protected fileStorageServiceProvider = FileStorageServiceProvider;\n protected apiRouterServiceProvider = ApiRouterServiceProvider;\n protected viewRouterServiceProvider = ViewRouterServiceProvider;\n protected rateLimiterServiceProvider = RateLimiterServiceProvider;\n protected broadcastingsServiceProvider = BroadcastingServiceProvider;\n protected loggingServiceProvider = LoggingServiceProvider;\n protected queueServiceProvider = QueueServiceProvider;\n protected imageServiceProvider = ImageOptimizationServiceProvider;\n protected cronServiceProvider = CronServiceProvider;\n protected kernelIdServiceProvider = KernelIdServiceProvider;\n\n services: Record<string, ServiceContainer> = {};\n private booted = false;\n\n boot() {\n this.services = {\n [EmailServiceContainer._name]: new EmailServiceContainer(\n new this.emailServiceProvider(),\n ),\n [AuthenticationServiceContainer._name]:\n new AuthenticationServiceContainer(\n new this.authenticationServiceProvider(),\n ),\n [MiddlewareServiceContainer._name]: new MiddlewareServiceContainer(\n new this.middlewareServiceProvider(),\n ),\n [I18nServiceContainer._name]: new I18nServiceContainer(\n new this.i18nServiceProvider(),\n ),\n [FileStorageServiceContainer._name]: new FileStorageServiceContainer(\n new this.fileStorageServiceProvider(),\n ),\n [ApiRouterServiceContainer._name]: new ApiRouterServiceContainer(\n new this.apiRouterServiceProvider(),\n ),\n [ViewRouterServiceContainer._name]: new ViewRouterServiceContainer(\n new this.viewRouterServiceProvider(),\n ),\n [RateLimiterServiceContainer._name]: new RateLimiterServiceContainer(\n new this.rateLimiterServiceProvider(),\n ),\n [BroadcastingServiceContainer._name]: new BroadcastingServiceContainer(\n new this.broadcastingsServiceProvider(),\n ),\n [LoggingServiceContainer._name]: new LoggingServiceContainer(\n new this.loggingServiceProvider(),\n ),\n [QueueServiceContainer._name]: new QueueServiceContainer(\n new this.queueServiceProvider(),\n ),\n [ImageOptimizationServiceContainer._name]:\n new ImageOptimizationServiceContainer(new this.imageServiceProvider()),\n [CronServiceContainer._name]: new CronServiceContainer(\n new this.cronServiceProvider(this),\n ),\n [KernelIdServiceContainer._name]: new KernelIdServiceContainer(\n new this.kernelIdServiceProvider(),\n ),\n [SingletonServiceContainer._name]: new SingletonServiceContainer(\n new SingletonServiceProvider(),\n ),\n };\n this.booted = true;\n }\n\n run<T>(cb: () => T) {\n const services = this.services;\n return kernelContext.run(services, cb);\n }\n\n destroy() {\n for (const key of Object.keys(this.services)) {\n delete this.services[key];\n }\n\n kernelContext.disable();\n }\n\n async waitForBoot() {\n if (!this.booted) {\n await new Promise<void>((resolve) => {\n while (!this.booted) {\n setTimeout(() => {\n if (this.booted) {\n resolve();\n }\n }, 10);\n }\n });\n }\n }\n}\n",
|
|
8
|
+
"import { kernelContext } from \"./context\";\nimport { AuthenticationServiceProvider } from \"../auth/AuthenticationServiceProvider\";\nimport { AuthenticationServiceContainer } from \"../auth/AuthenticationServiceContainer\";\nimport { MiddlewareServiceProvider } from \"../http/MiddlewareServiceProvider\";\nimport { I18nServiceProvider } from \"../i18n/I18nServiceProvider\";\nimport { I18nServiceContainer } from \"../i18n/I18nServiceContainer\";\nimport { FileStorageServiceContainer } from \"../services/file-storage/FileStorageServiceContainer\";\nimport { FileStorageServiceProvider } from \"../services/file-storage/FileStorageServiceProvider\";\nimport { ApiRouterServiceContainer } from \"../services/router/ApiRouterServiceContainer\";\nimport { ApiRouterServiceProvider } from \"../services/router/ApiRouterServiceProvider\";\nimport { MiddlewareServiceContainer } from \"../services/middleware/MiddlewareServiceContainer\";\nimport { RateLimiterServiceContainer } from \"../services/rate-limiter/RateLimiterServiceContainer\";\nimport { QueueServiceProvider, RateLimiterServiceProvider } from \"../services\";\nimport { EmailServiceProvider } from \"../services/email/EmailServiceProvider\";\nimport { EmailServiceContainer } from \"../services/email/EmailServiceContainer\";\nimport { BroadcastingServiceContainer } from \"../services/pubsub/BroadcastingServiceContainer\";\nimport { BroadcastingServiceProvider } from \"../services/pubsub/BroadcastingServiceProvider\";\nimport { ViewRouterServiceContainer } from \"../services/router/ViewRouterServiceContainer\";\nimport { ViewRouterServiceProvider } from \"../services/router/ViewRouterServiceProvider\";\nimport type { ServiceContainer } from \"../services/ServiceContainer\";\nimport { LoggingServiceContainer } from \"../services/logging/LoggingServiceContainer\";\nimport { LoggingServiceProvider } from \"../services/logging/LoggingServiceProvider\";\nimport { QueueServiceContainer } from \"../services/queue/QueueServiceContainer\";\nimport { ImageOptimizationServiceProvider } from \"../services/image-optimization/ImageOptimizationServiceProvider\";\nimport { ImageOptimizationServiceContainer } from \"../services/image-optimization/ImageOptimizationServiceContainer\";\nimport { CronServiceProvider } from \"../services/cron/CronServiceProvider\";\nimport { CronServiceContainer } from \"../services/cron/CronServiceContainer\";\nimport { KernelIdServiceProvider } from \"../services/kernel-id/KernelIdServiceProvider\";\nimport { KernelIdServiceContainer } from \"../services/kernel-id/KernelIdServiceContainer\";\nimport { SingletonServiceContainer } from \"../services/singleton/SingletonServiceContainer\";\nimport { SingletonServiceProvider } from \"../services/singleton/SingletonServiceProvider\";\nimport { RedisServiceProvider } from \"../services/redis/RedisServiceProvider\";\nimport { RedisServiceContainer } from \"../services/redis/RedisServiceContainer\";\n\nexport class Kernel {\n protected emailServiceProvider = EmailServiceProvider;\n protected authenticationServiceProvider = AuthenticationServiceProvider;\n protected middlewareServiceProvider = MiddlewareServiceProvider;\n protected i18nServiceProvider = I18nServiceProvider;\n protected fileStorageServiceProvider = FileStorageServiceProvider;\n protected apiRouterServiceProvider = ApiRouterServiceProvider;\n protected viewRouterServiceProvider = ViewRouterServiceProvider;\n protected rateLimiterServiceProvider = RateLimiterServiceProvider;\n protected broadcastingsServiceProvider = BroadcastingServiceProvider;\n protected loggingServiceProvider = LoggingServiceProvider;\n protected queueServiceProvider = QueueServiceProvider;\n protected imageServiceProvider = ImageOptimizationServiceProvider;\n protected cronServiceProvider = CronServiceProvider;\n protected kernelIdServiceProvider = KernelIdServiceProvider;\n protected redisServiceProvider = RedisServiceProvider;\n\n services: Record<string, ServiceContainer> = {};\n private booted = false;\n\n boot() {\n this.services = {\n [EmailServiceContainer._name]: new EmailServiceContainer(\n new this.emailServiceProvider(),\n ),\n [AuthenticationServiceContainer._name]:\n new AuthenticationServiceContainer(\n new this.authenticationServiceProvider(),\n ),\n [MiddlewareServiceContainer._name]: new MiddlewareServiceContainer(\n new this.middlewareServiceProvider(),\n ),\n [I18nServiceContainer._name]: new I18nServiceContainer(\n new this.i18nServiceProvider(),\n ),\n [FileStorageServiceContainer._name]: new FileStorageServiceContainer(\n new this.fileStorageServiceProvider(),\n ),\n [ApiRouterServiceContainer._name]: new ApiRouterServiceContainer(\n new this.apiRouterServiceProvider(),\n ),\n [ViewRouterServiceContainer._name]: new ViewRouterServiceContainer(\n new this.viewRouterServiceProvider(),\n ),\n [RateLimiterServiceContainer._name]: new RateLimiterServiceContainer(\n new this.rateLimiterServiceProvider(),\n ),\n [BroadcastingServiceContainer._name]: new BroadcastingServiceContainer(\n new this.broadcastingsServiceProvider(),\n ),\n [LoggingServiceContainer._name]: new LoggingServiceContainer(\n new this.loggingServiceProvider(),\n ),\n [QueueServiceContainer._name]: new QueueServiceContainer(\n new this.queueServiceProvider(),\n ),\n [ImageOptimizationServiceContainer._name]:\n new ImageOptimizationServiceContainer(new this.imageServiceProvider()),\n [CronServiceContainer._name]: new CronServiceContainer(\n new this.cronServiceProvider(this),\n ),\n [KernelIdServiceContainer._name]: new KernelIdServiceContainer(\n new this.kernelIdServiceProvider(),\n ),\n [RedisServiceContainer._name]: new RedisServiceContainer(\n new this.redisServiceProvider(),\n ),\n [SingletonServiceContainer._name]: new SingletonServiceContainer(\n new SingletonServiceProvider(),\n ),\n };\n this.booted = true;\n }\n\n run<T>(cb: () => T) {\n const services = this.services;\n return kernelContext.run(services, cb);\n }\n\n destroy() {\n for (const key of Object.keys(this.services)) {\n delete this.services[key];\n }\n\n kernelContext.disable();\n }\n\n async waitForBoot() {\n if (!this.booted) {\n await new Promise<void>((resolve) => {\n while (!this.booted) {\n setTimeout(() => {\n if (this.booted) {\n resolve();\n }\n }, 10);\n }\n });\n }\n }\n}\n",
|
|
10
9
|
"import type {\n User,\n CreateSessionArgs,\n DeleteSessionArgs,\n SessionWithUser,\n CreateUserArgs,\n FindSessionArgs,\n UpdateSessionArgs,\n IAuthenticationAdapter,\n CreatePasswordResetTokenArgs,\n PasswordResetToken,\n FindPasswordResetTokenArgs,\n DeletePasswordResetTokenArgs,\n CreateAccountArgs,\n CreateSocialAccountArgs,\n} from \"./types\";\n\nexport class PrismaAuthenticationAdapter implements IAuthenticationAdapter {\n constructor(protected prisma: any) {}\n\n async findUserByVerificationToken(token: string): Promise<User | null> {\n return await this.prisma.user.findFirst({\n where: { verificationToken: token },\n });\n }\n\n async verifyUser(email: string): Promise<User> {\n return await this.prisma.user.update({\n where: { email },\n data: { emailVerifiedAt: new Date() },\n });\n }\n\n async createSessionV2(args: CreateSessionArgs): Promise<SessionWithUser> {\n return await this.prisma.session.create({\n data: args,\n include: {\n user: {\n select: {\n password: false,\n id: true,\n email: true,\n globalRole: true,\n name: true,\n locale: true,\n publicId: true,\n accounts: {\n select: {\n id: true,\n publicId: true,\n organization: true,\n organizationRole: true,\n },\n },\n },\n },\n },\n });\n }\n\n async createSession(args: CreateSessionArgs): Promise<SessionWithUser> {\n return await this.prisma.session.create({\n data: args,\n include: { user: true },\n });\n }\n\n async createUser(args: CreateUserArgs): Promise<User> {\n return await this.prisma.user.create({\n data: args,\n omit: { password: true },\n });\n }\n\n async deleteSession(args: DeleteSessionArgs): Promise<void> {\n return await this.prisma.session.deleteMany({\n where: { token: args.token },\n });\n }\n\n async findUserByEmailAddress(email: string, verify: boolean): Promise<User> {\n if (verify) {\n return await this.prisma.user.findUnique({\n where: { email, emailVerifiedAt: { not: null } },\n });\n }\n\n const user = await this.prisma.user.findUnique({\n where: { email },\n });\n\n return user;\n }\n\n async findSession(args: FindSessionArgs): Promise<SessionWithUser | null> {\n if (!args.token) return null;\n try {\n const session = await this.prisma.session.findUnique({\n where: {\n token: args.token,\n // userAgent:\n // process.env.NODE_ENV === \"development\" ? \"local\" : args.userAgent,\n },\n include: {\n user: {\n select: {\n password: false,\n id: true,\n email: true,\n globalRole: true,\n name: true,\n locale: true,\n publicId: true,\n accounts: {\n select: {\n id: true,\n publicId: true,\n organization: true,\n organizationRole: true,\n },\n },\n },\n },\n },\n });\n\n return session;\n } catch (err) {\n console.log(err);\n return null;\n }\n }\n\n async updateSession(\n args: UpdateSessionArgs,\n ): Promise<SessionWithUser | null> {\n return await this.prisma.session.update({\n where: { token: args.token },\n data: { expiresAt: args.expiresAt },\n include: {\n user: {\n select: {\n id: true,\n password: false,\n email: true,\n globalRole: true,\n name: true,\n locale: true,\n publicId: true,\n accounts: {\n select: {\n id: true,\n publicId: true,\n organization: true,\n organizationRole: true,\n },\n },\n organization: true,\n },\n },\n },\n });\n }\n\n async updateUserPassword(args: {\n id: number;\n password: string;\n }): Promise<User> {\n return await this.prisma.user.update({\n where: { id: args.id },\n data: { password: args.password },\n });\n }\n\n async createPasswordResetToken(args: CreatePasswordResetTokenArgs) {\n return await this.prisma.passwordResetToken.create({\n data: {\n user: { connect: { id: args.user.id } },\n token: args.token,\n },\n });\n }\n\n async findPasswordResetToken(\n args: FindPasswordResetTokenArgs,\n ): Promise<PasswordResetToken | null> {\n const { token } = args;\n return await this.prisma.passwordResetToken.findUnique({\n where: { token },\n include: { user: true },\n });\n }\n\n async deleteAllUserSessions(userId: number) {\n return await this.prisma.session.deleteMany({ where: { userId } });\n }\n\n async deletePasswordResetToken(args: DeletePasswordResetTokenArgs) {\n const { token } = args;\n return await this.prisma.passwordResetToken.delete({ where: { token } });\n }\n\n async createAccount(args: CreateAccountArgs) {\n return await this.prisma.account.create({\n data: {\n organizationId: args.organizationId,\n organizationRole: args.organizationRole,\n userId: args.userId,\n },\n });\n }\n\n async deleteInvitationById(invitationId: string) {\n return await this.prisma.organizationInvitation.delete({\n where: { publicId: invitationId },\n });\n }\n\n async findInvitation(invitationId: string, email: string) {\n return await this.prisma.organizationInvitation.findFirst({\n where: { publicId: invitationId, email },\n });\n }\n\n async createMagicLinkToken(args: {\n email: string;\n token: string;\n pin: string;\n }) {\n return await this.prisma.magicLinkToken.create({\n data: {\n email: args.email,\n token: args.token,\n pin: args.pin,\n },\n });\n }\n\n async findUserMagicLinkToken(args: {\n email: string;\n token?: string;\n pin?: string;\n }) {\n const { token, pin, email } = args;\n\n if (token) {\n return this.prisma.magicLinkToken.findUnique({\n where: {\n token_email: {\n email,\n token,\n },\n },\n });\n } else {\n return await this.prisma.magicLinkToken.findUnique({\n where: {\n pin_email: {\n email,\n pin,\n },\n },\n });\n }\n }\n\n async deleteMagicLinkToken(email: string) {\n return await this.prisma.magicLinkToken.deleteMany({\n where: { email },\n });\n }\n\n async createSocialAccount(args: CreateSocialAccountArgs) {\n return await this.prisma.socialAccount.create({\n data: args,\n });\n }\n}\n"
|
|
11
10
|
],
|
|
12
|
-
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "68106C8511E4EDB164756E2164756E21",
|
|
14
13
|
"names": []
|
|
15
14
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Kernel } from "../kernel";
|
|
2
|
+
import { Instrumentation } from "./types";
|
|
3
|
+
export declare class Server {
|
|
4
|
+
private app;
|
|
5
|
+
private instrumentation;
|
|
6
|
+
constructor(params: {
|
|
7
|
+
kernel: new () => Kernel;
|
|
8
|
+
instrumentation?: Instrumentation;
|
|
9
|
+
});
|
|
10
|
+
start(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=Server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../server/Server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,qBAAa,MAAM;IACjB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,EAAE;QAAE,MAAM,EAAE,UAAU,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,eAAe,CAAA;KAAE;IAO7E,KAAK;CAgBZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../server/banner.ts"],"names":[],"mappings":"AA8CA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,QAsBA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEtag.d.ts","sourceRoot":"","sources":["../../server/generateEtag.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CASzD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ViteDevServer } from "vite";
|
|
2
|
+
import { App } from "../app";
|
|
3
|
+
import { Instrumentation } from "./types";
|
|
4
|
+
declare global {
|
|
5
|
+
var __gemiVite: ViteDevServer | undefined;
|
|
6
|
+
var __gemiErrorHooked: boolean | undefined;
|
|
7
|
+
var __gemiErrorActive: boolean | undefined;
|
|
8
|
+
var __gemiErrorPageServed: boolean | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function viteErrorPayload(err: any): {
|
|
11
|
+
message: any;
|
|
12
|
+
stack: string;
|
|
13
|
+
frame: string;
|
|
14
|
+
loc: {
|
|
15
|
+
file: any;
|
|
16
|
+
line: any;
|
|
17
|
+
column: any;
|
|
18
|
+
};
|
|
19
|
+
} | {
|
|
20
|
+
message: any;
|
|
21
|
+
stack: any;
|
|
22
|
+
frame?: undefined;
|
|
23
|
+
loc?: undefined;
|
|
24
|
+
};
|
|
25
|
+
export declare function httpDev(app: App, instrumentation: Instrumentation): Promise<Bun.Server<undefined>>;
|
|
26
|
+
//# sourceMappingURL=httpDev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpDev.d.ts","sourceRoot":"","sources":["../../server/httpDev.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAoD1C,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,UAAU,EAAE,aAAa,GAAG,SAAS,CAAC;IAE1C,IAAI,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IAE3C,IAAI,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IAG3C,IAAI,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAAC;CAChD;AAoBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG;;;;;;;;;;;;;;EAoBxC;AA+BD,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe,kCAqLvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpProd.d.ts","sourceRoot":"","sources":["../../server/httpProd.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAa1C,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe,kCAoKxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,53 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import
|
|
3
|
-
`).split(`
|
|
4
|
-
`).map((t)=>t.trim()).filter((t)=>t.length>0).join(`
|
|
5
|
-
`).trim()}function F(n){return`
|
|
6
|
-
<!DOCTYPE html>
|
|
7
|
-
<html lang="en">
|
|
8
|
-
<head>
|
|
9
|
-
<meta charset="UTF-8" />
|
|
10
|
-
<meta
|
|
11
|
-
name="viewport"
|
|
12
|
-
content="width=device-width, initial-scale=1.0"
|
|
13
|
-
/>
|
|
2
|
+
import"../chunk-zjxbe8tx.js";import{i as S}from"../chunk-hq4yhfaq.js";import"../chunk-e43m0sz9.js";import"../chunk-9x52jhc8.js";import"../chunk-qksh8x1f.js";import"../chunk-wypjxj9v.js";import"../chunk-jhp3h3kc.js";import"../chunk-z3tgcb5r.js";import"../chunk-xfeqd7as.js";import{Nb as z}from"../chunk-cy0yet3t.js";class b{app;instrumentation;constructor(f){this.app=new S({kernel:f.kernel}),this.instrumentation=f.instrumentation??((g,i)=>i(g))}async start(){{let{httpProd:f}=await import("../chunk-py00anah.js");await f(this.app,this.instrumentation.bind(this))}}}export{b as Server};
|
|
14
3
|
|
|
15
|
-
|
|
16
|
-
<style>
|
|
17
|
-
body {
|
|
18
|
-
font-family: Arial, sans-serif;
|
|
19
|
-
padding: 20px;
|
|
20
|
-
}
|
|
21
|
-
h1 {
|
|
22
|
-
color: red;
|
|
23
|
-
}
|
|
24
|
-
</style>
|
|
25
|
-
</head>
|
|
26
|
-
<body>
|
|
27
|
-
<div id="overlay"></div>
|
|
28
|
-
<script type="module" src="/refresh.js"></script>
|
|
29
|
-
<script type="module" src="/@vite/client"></script>
|
|
30
|
-
<script>
|
|
31
|
-
${k.toString()}
|
|
32
|
-
const err = ${JSON.stringify(n,Object.getOwnPropertyNames(n),2)}
|
|
33
|
-
|
|
34
|
-
window.addEventListener('load', () => {
|
|
35
|
-
const container = document.getElementById('overlay')
|
|
36
|
-
const ErrorOverlay = customElements.get('vite-error-overlay')
|
|
37
|
-
if (ErrorOverlay) {
|
|
38
|
-
const overlay = new ErrorOverlay({ ...err, message: cleanupTerminalText(err.message) });
|
|
39
|
-
container.appendChild(overlay)
|
|
40
|
-
}
|
|
41
|
-
})
|
|
42
|
-
</script>
|
|
43
|
-
</body>
|
|
44
|
-
</html>
|
|
45
|
-
`}var E=process.cwd(),T=C(E,"app");async function H(){let n=process.cwd(),t=await(await import("vite")).createServer({root:n,logLevel:"error",server:{watch:{usePolling:!0,interval:100,ignored:["**/storage/**","**/node_modules/**","**/.**"]},hmr:{clientPort:5174}},appType:"custom",resolve:{alias:{"@/app":T}}});process.env.ROOT_DIR=E,process.env.APP_DIR=T;async function l(e){let{pathname:s,host:i,protocol:c}=new URL(e.url);if(s.startsWith("/render-error.js"))return new Response("window.render_error = true",{headers:{"Content-Type":"application/javascript"}});if(s.startsWith("/refresh.js"))return new Response(`
|
|
46
|
-
import RefreshRuntime from "${c}//${i}/@react-refresh";
|
|
47
|
-
RefreshRuntime.injectIntoGlobalHook(window);
|
|
48
|
-
window.$RefreshReg$ = () => {};
|
|
49
|
-
window.$RefreshSig$ = () => (type) => type;
|
|
50
|
-
window.__vite_plugin_react_preamble_installed__ = true;
|
|
51
|
-
`,{headers:{"Content-Type":"application/javascript"}});try{let f=await fetch(`http://localhost:5174${s}`);if(f.ok)return f}catch(f){console.log(f)}}async function h(){try{return(await t.ssrLoadModule(C(T,"bootstrap.ts"),{fixStacktrace:!0})).app}catch(e){t.ws.send({type:"error",err:{...e,message:""}}),console.error(e)}}async function p(e){let s=e.fetch.bind(e);return{maxRequestBodySize:10737418240,fetch:async(i,c)=>{if(c.upgrade(i,{data:{headers:i.headers}}))return;if(!i.headers.get("x-forwarded-for")){let o=c.requestIP(i);i.headers.set("x-forwarded-for",o.address)}let{pathname:f}=new URL(i.url),r=await l(i);if(r instanceof Response)return r;try{let o=await s(i);if(o instanceof Response)return o;else{let u={},g={},P=(a,v)=>`"${a}": () => import("${v}")`,y=[];for(let a of["404",...e.getFlatComponentTree.call(e)]){let v=`${process.env.APP_DIR}`,R=await t.ssrLoadModule(`${v}/views/${a}.tsx`,{fixStacktrace:!0});u[a]=R.default,g[a]=R?.OpenGraph,y.push(P(a,`${v}/views/${a}.tsx`))}let x=`{${y.join(",")}}`;return await o({getStyles:async(a)=>await B(T,t,a),bootstrapModules:["/refresh.js","/app/client.tsx","/@vite/client"],viewImportMap:u,ogMap:g,loaders:x,cssManifest:{}})}}catch(o){if(f.startsWith("/api"))return new Response(JSON.stringify({error:o.message}),{status:500,headers:{"Content-Type":"application/json"}});return new Response(F(o),{headers:{"Content-Type":"text/html"}})}},idleTimeout:Number(process.env.SERVER_IDLE_TIMEOUT??10),port:process.env.PORT||5173,websocket:e.websocket}}await t.listen(5174);let w=await h(),$=await p(w),d=Bun.serve($);return w.onPublish((e,s,i)=>{d.publish(e,s,i)}),console.log(`Server started on http://localhost:${process.env.PORT||5173}`),t.watcher.on("change",async(e)=>{let s=e.replace(E,"");if(s.startsWith("/logs"))return;if(s.startsWith("/prisma"))return;if(s.startsWith("/app/views")){console.log(`[vite] ${s} changed. \uD83C\uDF5C Hot reloading...`);return}console.log(`[vite] ${s} changed. Reloading...`);let i=t.moduleGraph.getModulesByFile(e)??[];for(let c of Array.from(i))try{t.moduleGraph.invalidateModule(c)}catch(f){}try{let c=await h(),f=await p(c);c.onPublish((r,o,u)=>{d.publish(r,o,u)}),d.reload(f),t.ws.send({type:"custom",event:"http-reload"}),t.ws.send({type:"update",updates:[]})}catch(c){console.log("Error on server reload"),console.log(t.ssrFixStacktrace(c))}}),d}import{join as j}from"path";function U(n){let t=n.toString(),l=new Bun.CryptoHasher("sha1");return l.update(t),l.digest("hex")}if(!globalThis.URLPattern)globalThis.URLPattern=_;import{exists as J}from"fs/promises";var z=process.env.GEMI_PROJECT_DIR??"",O=j(process.cwd(),z),M=j(O,"app"),S=j(O,"dist");async function V(){let{app:n}=await import(`${S}/server/bootstrap.mjs`),t=await import(`${S}/client/.vite/manifest.json`),l=await import(`${S}/server/.vite/manifest.json`);process.env.ROOT_DIR=O,process.env.APP_DIR=M,process.env.DIST_DIR=S;let h={},p={},w={},$=(r,o)=>`"${r}": () => import("${o}")`,d=[];for(let r of["404",...n.getFlatComponentTree.call(n)]){let o=l[`app/views/${r}.tsx`];if(!o?.file){console.log(`Server file not found for ${r}`),console.log(o);let P=Object.keys(l),y=`app/views/${r}.tsx`;console.log(`${y} not found in server manifest`),console.log(P)}let u=await import(`${process.env.DIST_DIR}/server/${o?.file}`);h[r]=u.default,p[r]=u.OpenGraph;let g=t[`app/views/${r}.tsx`];if(g?.css&&g?.css.length>0)w[r]=g?.css;if(g)d.push($(r,`/${g?.file}`))}let e=`{${d.join(",")}}`,i=await Bun.file(`${S}/client/${t["app/client.tsx"].css}`).text();async function c(r){let{pathname:o}=new URL(r.url),u=new _({pathname:"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf)"}),g=o.startsWith("/.well-known"),P=u.test({pathname:o})||g,y=o.startsWith("/api");if(P&&!y){let a=new URL(r.url),v=r.url.replace(a.origin,"").split("?")[0],R=`${S}/client${v.replace("/assets/assets","/assets")}`;if(!await J(R)&&a.pathname.includes(".js"))return new Response(`if(caches){caches?.delete("${R}")}window.location.reload();export {}`,{headers:{"Content-Type":"application/javascript"}});try{let m=Bun.file(R),D=U(m.lastModified);return new Response(m.stream(),{headers:{"Content-Type":m.type,"Cache-Control":"public, max-age=31536000, must-revalidate","Content-Length":String(m.size),ETag:D}})}catch(m){return n.onException?.(m),new Response("Not found",{status:404})}}let x=n.fetch.bind(n);try{let a=await x(r);if(a instanceof Response)return a;else{let v=[];return v.push({content:i}),await a({getStyles:async(b)=>{if(!b)return I([]);for(let m of b){let D=t[`app/views/${m}.tsx`];for(let A of D?.css??[]){let W=Bun.file(`${process.env.DIST_DIR}/client/${A}`);v.push({id:A,content:await W.text()})}}return I(v)},bootstrapModules:[`/${t["app/client.tsx"].file}`],loaders:e,viewImportMap:h,ogMap:p,cssManifest:w})}}catch(a){if(console.error(a),o.startsWith("/api"))return new Response(JSON.stringify({error:a.message}),{status:500,headers:{"Content-Type":"application/json"}});return n.onException?.(a),new Response(a.stack,{status:500})}}let f=Bun.serve({maxRequestBodySize:10737418240,fetch:async(r,o)=>{if(!r.headers.get("x-forwarded-for")){let u=o.requestIP(r);r.headers.set("x-forwarded-for",u.address)}return await c(r)},idleTimeout:Number(process.env.SERVER_IDLE_TIMEOUT??10),port:process.env.PORT||5173});return console.log("Production server running on",f.url.href),f}export{V as startProdServer,H as startDevServer};
|
|
52
|
-
|
|
53
|
-
//# debugId=60D6A45AB29703A064756E2164756E21
|
|
4
|
+
//# debugId=229A28E52D20B9BB64756E2164756E21
|