gemi 0.41.0 → 0.41.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.js +2 -2
- package/dist/app/index.js.map +1 -1
- package/dist/broadcasting/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +2 -2
- package/dist/bun/preload.js.map +1 -1
- package/dist/{chunk-55jrzaj0.js → chunk-1g3qpb60.js} +2 -2
- package/dist/{chunk-55jrzaj0.js.map → chunk-1g3qpb60.js.map} +1 -1
- package/dist/{chunk-m1vjp86n.js → chunk-1nm4bfjq.js} +2 -2
- package/dist/{chunk-m1vjp86n.js.map → chunk-1nm4bfjq.js.map} +1 -1
- package/dist/chunk-21r4g9h0.js +4 -0
- package/dist/{chunk-cy0yet3t.js.map → chunk-21r4g9h0.js.map} +1 -1
- package/dist/{chunk-46g7xzc3.js → chunk-3hgk4fxz.js} +3 -3
- package/dist/{chunk-46g7xzc3.js.map → chunk-3hgk4fxz.js.map} +1 -1
- package/dist/{chunk-1skcvfwy.js → chunk-3hjfype8.js} +2 -2
- package/dist/{chunk-1skcvfwy.js.map → chunk-3hjfype8.js.map} +1 -1
- package/dist/{chunk-5a4hvpbv.js → chunk-4cqg9kg4.js} +2 -2
- package/dist/{chunk-5a4hvpbv.js.map → chunk-4cqg9kg4.js.map} +1 -1
- package/dist/{chunk-gky8x4rv.js → chunk-4e4ax9bs.js} +2 -2
- package/dist/{chunk-gky8x4rv.js.map → chunk-4e4ax9bs.js.map} +1 -1
- package/dist/{chunk-6nm2pt02.js → chunk-4f45pw0v.js} +2 -2
- package/dist/{chunk-6nm2pt02.js.map → chunk-4f45pw0v.js.map} +1 -1
- package/dist/{chunk-jhp3h3kc.js → chunk-6b1abejc.js} +4 -4
- package/dist/{chunk-jhp3h3kc.js.map → chunk-6b1abejc.js.map} +2 -2
- package/dist/{chunk-8egdqsbr.js → chunk-85hzphk5.js} +2 -2
- package/dist/{chunk-8egdqsbr.js.map → chunk-85hzphk5.js.map} +1 -1
- package/dist/{chunk-e43m0sz9.js → chunk-88fb6hzq.js} +18 -18
- package/dist/{chunk-e43m0sz9.js.map → chunk-88fb6hzq.js.map} +2 -2
- package/dist/{chunk-w262fkzb.js → chunk-8rm601h3.js} +2 -2
- package/dist/{chunk-w262fkzb.js.map → chunk-8rm601h3.js.map} +1 -1
- package/dist/{chunk-w102mcq7.js → chunk-9nfdjzen.js} +4 -4
- package/dist/{chunk-w102mcq7.js.map → chunk-9nfdjzen.js.map} +1 -1
- package/dist/{chunk-qksh8x1f.js → chunk-a8wmfnw6.js} +2 -2
- package/dist/{chunk-qksh8x1f.js.map → chunk-a8wmfnw6.js.map} +2 -2
- package/dist/{chunk-cy0yet3t.js → chunk-agvzqxv7.js} +2 -2
- package/dist/{chunk-j6eh0etj.js.map → chunk-agvzqxv7.js.map} +1 -1
- package/dist/{chunk-m5nxws92.js → chunk-awscq13h.js} +3 -3
- package/dist/{chunk-m5nxws92.js.map → chunk-awscq13h.js.map} +1 -1
- package/dist/chunk-b4xfh9pg.js +7 -0
- package/dist/{chunk-jnbtsgrp.js.map → chunk-b4xfh9pg.js.map} +2 -2
- package/dist/{chunk-59dfj0a9.js → chunk-c1bjq2ss.js} +2 -2
- package/dist/{chunk-59dfj0a9.js.map → chunk-c1bjq2ss.js.map} +1 -1
- package/dist/{chunk-xfeqd7as.js → chunk-c1hsc4aa.js} +2 -2
- package/dist/{chunk-xfeqd7as.js.map → chunk-c1hsc4aa.js.map} +1 -1
- package/dist/{chunk-xdsym1c8.js → chunk-c74f9zbq.js} +2 -2
- package/dist/{chunk-xdsym1c8.js.map → chunk-c74f9zbq.js.map} +1 -1
- package/dist/{chunk-9x52jhc8.js → chunk-c9wa4rtm.js} +2 -2
- package/dist/{chunk-9x52jhc8.js.map → chunk-c9wa4rtm.js.map} +1 -1
- package/dist/chunk-emt6gz1d.js +5 -0
- package/dist/{chunk-k4kdssr3.js.map → chunk-emt6gz1d.js.map} +1 -1
- package/dist/{chunk-e40j5tgj.js → chunk-h465ja8n.js} +3 -3
- package/dist/{chunk-e40j5tgj.js.map → chunk-h465ja8n.js.map} +1 -1
- package/dist/chunk-j7290k00.js +5 -0
- package/dist/chunk-j7290k00.js.map +11 -0
- package/dist/{chunk-wss9zewk.js → chunk-jt0z45dn.js} +4 -4
- package/dist/{chunk-wss9zewk.js.map → chunk-jt0z45dn.js.map} +1 -1
- package/dist/{chunk-kk353x3p.js → chunk-kd4whs4z.js} +1 -1
- package/dist/{chunk-e7wdb957.js → chunk-kw1g4bjh.js} +3 -3
- package/dist/{chunk-e7wdb957.js.map → chunk-kw1g4bjh.js.map} +1 -1
- package/dist/{chunk-wypjxj9v.js → chunk-p6ezs2w7.js} +3 -3
- package/dist/{chunk-wypjxj9v.js.map → chunk-p6ezs2w7.js.map} +1 -1
- package/dist/{chunk-j6eh0etj.js → chunk-p9qt93zk.js} +2 -2
- package/dist/{chunk-1wv2m67p.js.map → chunk-p9qt93zk.js.map} +1 -1
- package/dist/chunk-ppt296ye.js +6 -0
- package/dist/{chunk-zjxbe8tx.js.map → chunk-ppt296ye.js.map} +2 -2
- package/dist/{chunk-th24m9jj.js → chunk-q3wpyr9y.js} +2 -2
- package/dist/{chunk-th24m9jj.js.map → chunk-q3wpyr9y.js.map} +1 -1
- package/dist/{chunk-ffj2g6wn.js → chunk-q91708he.js} +3 -3
- package/dist/{chunk-ffj2g6wn.js.map → chunk-q91708he.js.map} +1 -1
- package/dist/chunk-qfewe82j.js +5 -0
- package/dist/chunk-qfewe82j.js.map +12 -0
- package/dist/{chunk-k5ddt5jb.js → chunk-r9p9g2x9.js} +2 -2
- package/dist/{chunk-k5ddt5jb.js.map → chunk-r9p9g2x9.js.map} +1 -1
- package/dist/{chunk-8spbzsaa.js → chunk-rkf1stc0.js} +2 -2
- package/dist/{chunk-8spbzsaa.js.map → chunk-rkf1stc0.js.map} +1 -1
- package/dist/{chunk-ar3kj71m.js → chunk-rm5y1v00.js} +2 -2
- package/dist/{chunk-ar3kj71m.js.map → chunk-rm5y1v00.js.map} +1 -1
- package/dist/{chunk-37qn44wf.js → chunk-s3zn2vas.js} +3 -3
- package/dist/{chunk-37qn44wf.js.map → chunk-s3zn2vas.js.map} +1 -1
- package/dist/{chunk-9gj1htjp.js → chunk-sgv88qqn.js} +5 -5
- package/dist/{chunk-9gj1htjp.js.map → chunk-sgv88qqn.js.map} +1 -1
- package/dist/{chunk-yhphtr31.js → chunk-vfvetfjg.js} +3 -3
- package/dist/{chunk-yhphtr31.js.map → chunk-vfvetfjg.js.map} +1 -1
- package/dist/{chunk-8z5r7z7w.js → chunk-vv72kw74.js} +2 -2
- package/dist/{chunk-8z5r7z7w.js.map → chunk-vv72kw74.js.map} +1 -1
- package/dist/chunk-w96mexnd.js +6 -0
- package/dist/chunk-w96mexnd.js.map +11 -0
- package/dist/{chunk-xxdb06dz.js → chunk-wfbgtbae.js} +3 -3
- package/dist/{chunk-xxdb06dz.js.map → chunk-wfbgtbae.js.map} +1 -1
- package/dist/{chunk-7219pj06.js → chunk-xdk56snm.js} +3 -3
- package/dist/{chunk-7219pj06.js.map → chunk-xdk56snm.js.map} +1 -1
- package/dist/{chunk-z3tgcb5r.js → chunk-xnhktttd.js} +2 -2
- package/dist/{chunk-z3tgcb5r.js.map → chunk-xnhktttd.js.map} +1 -1
- package/dist/{chunk-5jar30t5.js → chunk-y7qsts67.js} +2 -2
- package/dist/{chunk-5jar30t5.js.map → chunk-y7qsts67.js.map} +1 -1
- package/dist/{chunk-ww5pp0rp.js → chunk-yk9aw128.js} +3 -3
- package/dist/{chunk-ww5pp0rp.js.map → chunk-yk9aw128.js.map} +1 -1
- package/dist/chunk-zpqmtc3q.js +55 -0
- package/dist/chunk-zpqmtc3q.js.map +11 -0
- package/dist/client/index.js +4 -23957
- package/dist/client/index.js.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/http/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/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +2 -2
- package/dist/server/httpProd.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +2 -2
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-1wv2m67p.js +0 -4
- package/dist/chunk-j7harkz1.js +0 -6
- package/dist/chunk-j7harkz1.js.map +0 -14
- package/dist/chunk-jnbtsgrp.js +0 -7
- package/dist/chunk-k4kdssr3.js +0 -5
- package/dist/chunk-zjxbe8tx.js +0 -5
- /package/dist/{chunk-kk353x3p.js.map → chunk-kd4whs4z.js.map} +0 -0
package/dist/config/index.js
CHANGED
package/dist/email/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{r as w}from"../chunk-emt6gz1d.js";import{ja as J}from"../chunk-p6ezs2w7.js";import"../chunk-c1hsc4aa.js";import"../chunk-agvzqxv7.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=8AB9B2CE3B325B7764756E2164756E21
|
package/dist/email/index.js.map
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
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
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": "
|
|
8
|
+
"debugId": "8AB9B2CE3B325B7764756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/facades/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{B as h,C as i,D as j,F as k,t as b,u as c,w as d,x as e,y as f,z as g}from"../chunk-88fb6hzq.js";import"../chunk-c9wa4rtm.js";import"../chunk-a8wmfnw6.js";import"../chunk-p6ezs2w7.js";import{Mb as a}from"../chunk-xnhktttd.js";import"../chunk-c1hsc4aa.js";import"../chunk-agvzqxv7.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=E4245644089B80E064756E2164756E21
|
package/dist/http/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{N as a,O as b,R as d,S as e,T as f,U as g,V as h,W as i,X as j,Y as k,Z as l,_ as m,ba as n,ca as o,da as p,fa as q,ga as r,ha as s,ia as t}from"../chunk-a8wmfnw6.js";import{Kb as c}from"../chunk-xnhktttd.js";import"../chunk-c1hsc4aa.js";import"../chunk-agvzqxv7.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=50088918C0BB390464756E2164756E21
|
package/dist/http/index.js.map
CHANGED
package/dist/i18n/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{q as x}from"../chunk-yk9aw128.js";import{u as S}from"../chunk-88fb6hzq.js";import"../chunk-c9wa4rtm.js";import"../chunk-a8wmfnw6.js";import"../chunk-p6ezs2w7.js";import"../chunk-xnhktttd.js";import"../chunk-c1hsc4aa.js";import"../chunk-agvzqxv7.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=DA447AF15CE3DA8264756E2164756E21
|
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": "DA447AF15CE3DA8264756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/dist/kernel/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{q as y}from"../chunk-yk9aw128.js";import{r as z}from"../chunk-emt6gz1d.js";import{A as X,E as Y,G as N,H as Z,I as $,J,K,L as V,s as Q,v as W}from"../chunk-88fb6hzq.js";import"../chunk-c9wa4rtm.js";import{X as p,aa as H,ea as L}from"../chunk-a8wmfnw6.js";import{ja as T}from"../chunk-p6ezs2w7.js";import{Ca as m,Ga as C,Ia as c,Ja as E,ma as A,na as R,ra as S,ua as d,va as h,wa as k,xa as I,ya as u}from"../chunk-sgv88qqn.js";import"../chunk-y7qsts67.js";import"../chunk-9nfdjzen.js";import"../chunk-vfvetfjg.js";import"../chunk-jt0z45dn.js";import"../chunk-s3zn2vas.js";import"../chunk-1nm4bfjq.js";import"../chunk-awscq13h.js";import"../chunk-kw1g4bjh.js";import"../chunk-xdk56snm.js";import"../chunk-wfbgtbae.js";import"../chunk-h465ja8n.js";import"../chunk-3hgk4fxz.js";import{Ib as _}from"../chunk-6b1abejc.js";import{Nb as B}from"../chunk-xnhktttd.js";import{Ob as G,Pb as O}from"../chunk-c1hsc4aa.js";import"../chunk-agvzqxv7.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=8FCD7FD2841AF9E764756E2164756E21
|
package/dist/kernel/index.js.map
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
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",
|
|
9
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"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "8FCD7FD2841AF9E764756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
|
@@ -1 +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,
|
|
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,kCA8KxE"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"../chunk-
|
|
2
|
+
import{n as g}from"../chunk-ppt296ye.js";import{o as b}from"../chunk-q3wpyr9y.js";import"../chunk-88fb6hzq.js";import"../chunk-c9wa4rtm.js";import"../chunk-a8wmfnw6.js";import"../chunk-p6ezs2w7.js";import"../chunk-6b1abejc.js";import"../chunk-xnhktttd.js";import"../chunk-c1hsc4aa.js";import{Tb as S}from"../chunk-agvzqxv7.js";class i{app;instrumentation;constructor(f){this.app=new b({kernel:f.kernel}),this.instrumentation=f.instrumentation??((z,B)=>B(z))}async start(){if(Bun.env.NODE_ENV==="production"){let{httpProd:f}=await import("../chunk-qfewe82j.js");await f(this.app,this.instrumentation.bind(this))}else{g();let{httpDev:f}=await import("../chunk-zpqmtc3q.js");await f(this.app,this.instrumentation.bind(this))}}}export{i as Server};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=989445B19C66D48064756E2164756E21
|
package/dist/server/index.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { App } from \"../app\";\nimport { Kernel } from \"../kernel\";\nimport { Instrumentation } from \"./types\";\nimport { watchEnv } from \"./watchEnv\";\n\nexport class Server {\n private app: App;\n private instrumentation: Instrumentation;\n\n constructor(params: { kernel: new () => Kernel; instrumentation?: Instrumentation }) {\n this.app = new App({ kernel: params.kernel });\n this.instrumentation =\n params.instrumentation ??\n ((req: Request, next: (req: Request) => Promise<Response>) => next(req));\n }\n\n async start() {\n // Dynamic import so each mode only pulls in its own code: `httpDev` drags in\n // Vite (dev-only) and `httpProd` reads the built `dist/` manifests — neither\n // should load in the other environment.\n if (process.env.NODE_ENV === \"production\") {\n const { httpProd } = await import(\"./httpProd.js\");\n await httpProd(this.app, this.instrumentation.bind(this));\n } else {\n // Dev only: reload `.env` into process.env on change so config edits take\n // effect without restarting the dev server (Bun reads `.env` only at\n // startup, even under `--hot`).\n watchEnv();\n const { httpDev } = await import(\"./httpDev.js\");\n await httpDev(this.app, this.instrumentation.bind(this));\n }\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";oXAKO,CAAM,JAAO,JACV,DACA,WAER,MAAW,JAAC,HAAyE,JACnF,KAAK,IAAM,IAAI,EAAI,CAAE,OAAQ,EAAO,MAAO,CAAC,EAC5C,KAAK,gBACH,EAAO,kBACN,CAAC,EAAc,IAA8C,EAAK,CAAG,QAGpE,MAAK,EAAG,CAIZ,GAAI,mBAAyB,aAAc,CACzC,IAAQ,YAAa,KAAa,gCAClC,MAAM,EAAS,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,EACnD,KAIL,EAAS,EACT,IAAQ,WAAY,KAAa,gCACjC,MAAM,EAAQ,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAG7D",
|
|
8
|
+
"debugId": "989445B19C66D48064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/services/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Aa as
|
|
2
|
+
import{Aa as q,Ba as r,Ca as s,Da as t,Ea as u,Fa as v,Ga as w,Ha as x,Ia as y,Ka as z,ka as a,la as b,ma as c,na as d,oa as e,pa as f,qa as g,ra as h,sa as i,ta as j,ua as k,va as l,wa as m,xa as n,ya as o,za as p}from"../chunk-sgv88qqn.js";import"../chunk-y7qsts67.js";import"../chunk-9nfdjzen.js";import"../chunk-vfvetfjg.js";import"../chunk-jt0z45dn.js";import"../chunk-s3zn2vas.js";import"../chunk-1nm4bfjq.js";import"../chunk-awscq13h.js";import"../chunk-kw1g4bjh.js";import"../chunk-xdk56snm.js";import"../chunk-wfbgtbae.js";import"../chunk-h465ja8n.js";import"../chunk-3hgk4fxz.js";import"../chunk-6b1abejc.js";import"../chunk-xnhktttd.js";import"../chunk-c1hsc4aa.js";import"../chunk-agvzqxv7.js";export{v as XOAuthProvider,m as ViewRouterServiceProvider,z as Singleton,r as Sharp,e as S3Driver,j as ResendDriver,y as RedisServiceProvider,h as RateLimiterServiceProvider,f as RateLimiterDriver,o as QueueServiceProvider,t as OAuthProvider,n as LoggingServiceProvider,p as Job,g as InMemoryRateLimiter,s as ImageOptimizationServiceProvider,q as ImageOptimizationDriver,u as GoogleOAuthProvider,b as FileSystemDriver,c as FileStorageServiceProvider,a as FileStorageDriver,k as EmailServiceProvider,i as EmailDriver,w as CronServiceProvider,x as CronJob,l as BroadcastingServiceProvider,d as ApiRouterServiceProvider};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=0ABBBD965EFB880964756E2164756E21
|
package/package.json
CHANGED
package/dist/chunk-1wv2m67p.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Fa as a,Ga as b,Ha as c,Ia as d,Ja as e,Ka as f,La as g}from"./chunk-5jar30t5.js";import"./chunk-xxdb06dz.js";import"./chunk-e40j5tgj.js";import"./chunk-cy0yet3t.js";export{g as fromEnv,c as ENV_SESSION,b as ENV_SECRET,a as ENV_KEY,d as ENV_EXPIRATION,e as ENV_CREDENTIAL_SCOPE,f as ENV_ACCOUNT_ID};
|
|
3
|
-
|
|
4
|
-
//# debugId=871E11C2C5F3125F64756E2164756E21
|
package/dist/chunk-j7harkz1.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{h as C}from"./chunk-zjxbe8tx.js";import{G as Y}from"./chunk-9x52jhc8.js";import"./chunk-cy0yet3t.js";import{join as d}from"path";function P(b){let x=b.toString(),g=new Bun.CryptoHasher("sha1");return g.update(x),g.digest("hex")}if(!globalThis.URLPattern)globalThis.URLPattern=Y;import{exists as bb}from"fs/promises";import{createElement as F}from"react";async function A(b=[]){return b.map((x,g)=>{return F("style",{key:g,id:x?.id,type:"text/css",dangerouslySetInnerHTML:{__html:x.content}})})}import{existsSync as w}from"fs";import{basename as M}from"path";import{networkInterfaces as f}from"os";var S={name:"gemi",version:"0.41.0",private:!1,license:"MIT",author:"Enes Tufekci <enes@gemijs.dev>",repository:{type:"git",url:"git+https://github.com/nstfkc/gemi.git",directory:"packages/gemi"},bin:{gemi:"./dist/bin/gemi.js"},files:["dist/**/*"],module:!0,exports:{"./http":"./http/index.ts","./client":"./client/index.ts","./app":"./app/index.ts","./facades":"./facades/index.ts","./email":"./email/index.ts","./vite":"./dist/vite/index.mjs","./runtime":"./client/runtime.ts","./kernel":"./kernel/index.ts","./services":"./services/index.ts","./broadcasting":"./broadcasting/index.ts","./i18n":"./i18n/index.ts","./server":"./server/index.ts","./config":"./config/index.ts","./bun/preload":"./bun/preload.ts","./bun/plugin":"./bun/plugin.ts"},scripts:{lint:"oxlint",build:"NODE_ENV=production bun run build:core && bun run build:bin && bun run build:types && bun run build:client && bun run build:plugin && bun run build:client-types","build:core":"bun ./scripts/build.ts","build:bin":"bun build --outdir=./dist/bin --target=bun --external=vite --external=react-dom --external=react/jsx-runtime --external=bun --external=sharp --sourcemap ./bin/gemi.ts && bun ./scripts/prepare-bin.ts","build:client":"vite build -c vite.client.config.mts","build:plugin":"vite build -c vite.plugin.config.mts","build:types":"tsc","build:client-types":"tsc -p tsconfig.browser.json",test:"vitest","build:publish":"bun scripts/build-publish.ts",prepublishOnly:"echo 'Do not publish from this directory \u2014 its exports point at TS source. Run: bun run build:publish, then publish from .publish/' && exit 1"},dependencies:{"@aws-sdk/client-s3":"^3.629.0","@aws-sdk/s3-request-presigner":"^3.629.0","@prisma/client":"^6.4.1","ast-types":"^0.14.2",commander:"^12.1.0",history:"^5.3.0","jsx-email":"2.0.0-rc2.1",open:"^10.1.0","react-error-boundary":"^6.0.0",recast:"^0.23.9",resend:"^6.12.3",satori:"^0.12.2","temporal-polyfill":"^0.2.5","twitter-api-v2":"^1.20.2","urlpattern-polyfill":"^10.0.0",uuid:"^9.0.1"},devDependencies:{"@babel/parser":"^7.25.4","@repo/typescript-config":"*","@types/bun":"^1.3.14","@types/eslint":"^8.56.5","@types/node":"^20.11.24","@types/react":"^19.0.2","@types/react-dom":"^19.0.2",eslint:"^8.57.0",oxlint:"^1.39.0",react:"19.2.3","react-dom":"19.2.3",typescript:"^5.7.3",vitest:"^4.0.0"},peerDependencies:{react:">=19","react-dom":">=19",sharp:"^0.34.2",vite:"^8.0.0"}};var m=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557\u2588\u2588\u2557","\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551","\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2551","\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551","\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2551"," \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D"],l=Boolean(process.stdout.isTTY)&&!process.env.NO_COLOR,J=(b,x)=>l?`\x1B[${b}m${x}\x1B[0m`:x,o=(b)=>J("1",b),E=(b)=>J("2",b),I=(b)=>J("36",b),t=(b)=>J("32",b),s=(b)=>J("35",b);function r(){return S.version??"?"}function a(b){for(let x of Object.values(f()))for(let g of x??[])if((g.family==="IPv4"||g.family===4)&&!g.internal)return`http://${g.address}:${b}`;return null}function e(b){return C(b).filter((x)=>w(x)).map((x)=>M(x))}function N(b){let{port:x,rootDir:g}=b,j=`http://localhost:${x}`,_=a(x),z=e(g),R=(U,k)=>` ${t("\u279C")} ${o(U.padEnd(9))}${k}`,$=["",...m.map((U)=>s(U)),"",` ${E("gemi")} ${I(`v${r()}`)}`,"",R("Local:",I(j)),R("Network:",_?I(_):E("unavailable")),R("Env:",z.length?z.join(", "):E("none")),""];console.log($.join(`
|
|
3
|
-
`))}var ub=process.env.GEMI_PROJECT_DIR??"",Z=d(process.cwd(),ub),xb=d(Z,"app"),Q=d(Z,"dist");async function kb(b,x){let g=await import(`${Q}/client/.vite/manifest.json`),j=await import(`${Q}/server/.vite/manifest.json`);process.env.ROOT_DIR=Z,process.env.APP_DIR=xb,process.env.DIST_DIR=Q;let _={},z={},R={},$=(u,n)=>`"${u}": () => import("${n}")`,U=[];for(let u of["404",...b.getFlatComponentTree.call(b)]){let n=j[`app/views/${u}.tsx`];if(!n?.file){console.log(`Server file not found for ${u}`),console.log(n);let H=Object.keys(j),W=`app/views/${u}.tsx`;console.log(`${W} not found in server manifest`),console.log(H)}let O=await import(`${process.env.DIST_DIR}/server/${n?.file}`);_[u]=O.default,z[u]=O.OpenGraph;let c=g[`app/views/${u}.tsx`];if(c?.css&&c?.css.length>0)R[u]=c?.css;if(c)U.push($(u,`/${c?.file}`))}let k=`{${U.join(",")}}`,v=g["app/client.tsx"]?.css??[],h=(await Promise.all(v.map((u)=>Bun.file(`${Q}/client/${u}`).text()))).join(`
|
|
4
|
-
`);async function D(u){let{pathname:n}=new URL(u.url),O=new Y({pathname:"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf|map)"}),c=n.startsWith("/.well-known"),H=O.test({pathname:n})||c,W=n.startsWith("/api");if(H&&!W){let T=new URL(u.url),G=u.url.replace(T.origin,"").split("?")[0],X=`${Q}/client${G.replace("/assets/assets","/assets")}`;if(!await bb(X)&&T.pathname.includes(".js"))return new Response(`if(caches){caches?.delete("${X}")}window.location.reload();export {}`,{headers:{"Content-Type":"application/javascript"}});try{let L=Bun.file(X),K=P(L.lastModified);return new Response(L.stream(),{headers:{"Content-Type":L.type,"Cache-Control":"public, max-age=31536000, must-revalidate","Content-Length":String(L.size),ETag:K}})}catch(L){return b.onException?.(L),new Response("Not found",{status:404})}}let i=b.fetch.bind(b);try{let T=await i(u);if(T instanceof Response)return T;else{let G=[];return G.push({content:h}),await T({getStyles:async(B)=>{if(!B)return A([]);for(let L of B){let K=g[`app/views/${L}.tsx`];for(let y of K?.css??[]){let q=Bun.file(`${process.env.DIST_DIR}/client/${y}`);G.push({id:y,content:await q.text()})}}return A(G)},bootstrapModules:[`/${g["app/client.tsx"].file}`],loaders:k,viewImportMap:_,ogMap:z,cssManifest:R})}}catch(T){if(console.error(T),n.startsWith("/api"))return new Response(JSON.stringify({error:T.message}),{status:500,headers:{"Content-Type":"application/json"}});return b.onException?.(T),new Response(T.stack,{status:500})}}let V=Bun.serve({maxRequestBodySize:10737418240,fetch:async(u,n)=>{if(!u.headers.get("x-forwarded-for")){let O=n.requestIP(u);if(O)u.headers.set("x-forwarded-for",O.address)}return await x(u,D)},idleTimeout:Number(process.env.SERVER_IDLE_TIMEOUT??10),port:process.env.PORT||5173});return N({port:V.port,rootDir:Z}),V}export{kb as httpProd};
|
|
5
|
-
|
|
6
|
-
//# debugId=FD37F250C0B5B13564756E2164756E21
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../server/httpProd.ts", "../server/generateEtag.ts", "../../../node_modules/.bun/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/index.js", "../server/styles.ts", "../server/banner.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { join } from \"node:path\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { exists } from \"node:fs/promises\";\nimport { createStyles } from \"./styles\";\nimport type { App } from \"../app\";\nimport { Instrumentation } from \"./types\";\nimport { printStartupBanner } from \"./banner\";\n\nconst projectDir = process.env.GEMI_PROJECT_DIR ?? \"\";\nconst rootDir = join(process.cwd(), projectDir);\n\nconst appDir = join(rootDir, \"app\");\nconst distDir = join(rootDir, \"dist\");\n\n// `app` is built by `Server.start` (from the kernel) and passed in — same as\n// `httpDev` — so prod and dev share one construction path. What differs here is\n// that views/styles are served from the built `dist/` manifests instead of\n// Vite's dev SSR graph.\nexport async function httpProd(app: App, instrumentation: Instrumentation) {\n const manifest = await import(`${distDir}/client/.vite/manifest.json`);\n const serverManifest = await import(`${distDir}/server/.vite/manifest.json`);\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n process.env.DIST_DIR = distDir;\n\n const viewImportMap = {};\n const ogMap = {};\n const cssManifest = {};\n const template = (viewName: string, path: string) => `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\"404\", ...app.getFlatComponentTree.call(app)]) {\n const serverFile = serverManifest[`app/views/${fileName}.tsx`];\n if (!serverFile?.file) {\n console.log(`Server file not found for ${fileName}`);\n console.log(serverFile);\n const files = Object.keys(serverManifest);\n const path = `app/views/${fileName}.tsx`;\n console.log(`${path} not found in server manifest`);\n console.log(files);\n }\n const mod = await import(`${process.env.DIST_DIR}/server/${serverFile?.file}`);\n viewImportMap[fileName] = mod.default;\n ogMap[fileName] = mod.OpenGraph;\n const clientFile = manifest[`app/views/${fileName}.tsx`];\n\n if (clientFile?.css && clientFile?.css.length > 0) {\n cssManifest[fileName] = clientFile?.css;\n }\n if (clientFile) {\n templates.push(template(fileName, `/${clientFile?.file}`));\n }\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n\n // Vite's manifest `css` field is a `string[]` — a client entry can emit more\n // than one CSS chunk. Read and concatenate them all instead of interpolating\n // the array into a single path (which only works for a one-element array).\n const appCssFiles: string[] = manifest[\"app/client.tsx\"]?.css ?? [];\n const appCSSContent = (\n await Promise.all(\n appCssFiles.map((cssFile) => Bun.file(`${distDir}/client/${cssFile}`).text()),\n )\n ).join(\"\\n\");\n\n async function requestHandler(req: Request) {\n const { pathname } = new URL(req.url);\n\n const pattern = new URLPattern({\n pathname:\n \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf|map)\",\n });\n\n const isWellKnownFile = pathname.startsWith(\"/.well-known\");\n const isFileRequest = pattern.test({ pathname }) || isWellKnownFile;\n\n const isApi = pathname.startsWith(\"/api\");\n\n if (isFileRequest && !isApi) {\n const url = new URL(req.url);\n const filePath = req.url.replace(url.origin, \"\").split(\"?\")[0];\n const distPath = `${distDir}/client${filePath.replace(\"/assets/assets\", \"/assets\")}`;\n const doesExist = await exists(distPath);\n\n if (!doesExist && url.pathname.includes(\".js\")) {\n return new Response(\n `if(caches){caches?.delete(\"${distPath}\")}window.location.reload();export {}`,\n {\n headers: { \"Content-Type\": \"application/javascript\" },\n },\n );\n }\n try {\n const file = Bun.file(distPath);\n\n const etag = generateETag(file.lastModified);\n return new Response(file.stream(), {\n headers: {\n \"Content-Type\": file.type,\n \"Cache-Control\": \"public, max-age=31536000, must-revalidate\",\n \"Content-Length\": String(file.size),\n ETag: etag,\n },\n });\n } catch (error) {\n app.onException?.(error);\n return new Response(\"Not found\", { status: 404 });\n }\n }\n\n const handler = app.fetch.bind(app);\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const styles = [];\n\n styles.push({\n content: appCSSContent,\n });\n\n const getStyles = async (currentViews: string[]) => {\n if (!currentViews) {\n return createStyles([]);\n }\n for (const view of currentViews) {\n const clientFile = manifest[`app/views/${view}.tsx`];\n for (const cssFile of clientFile?.css ?? []) {\n const css = Bun.file(`${process.env.DIST_DIR}/client/${cssFile}`);\n styles.push({\n id: cssFile,\n content: await css.text(),\n });\n }\n }\n return createStyles(styles);\n };\n\n return await result({\n getStyles,\n bootstrapModules: [`/${manifest[\"app/client.tsx\"].file}`],\n loaders,\n viewImportMap,\n ogMap,\n cssManifest,\n });\n }\n } catch (err) {\n console.error(err);\n if (pathname.startsWith(\"/api\")) {\n return new Response(JSON.stringify({ error: err.message }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n app.onException?.(err);\n return new Response(err.stack, { status: 500 });\n }\n }\n\n const server = Bun.serve({\n maxRequestBodySize: 10 * 1024 * 1024 * 1024, // 10 GB\n fetch: async (req, server) => {\n if (!req.headers.get(\"x-forwarded-for\")) {\n // `requestIP` is null for closed/unix sockets — guard so it never\n // throws before the request is handled.\n const ip = server.requestIP(req);\n if (ip) req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await instrumentation(req, requestHandler);\n },\n idleTimeout: Number(process.env.SERVER_IDLE_TIMEOUT ?? 10),\n port: process.env.PORT || 5173,\n });\n\n printStartupBanner({ port: server.port, rootDir });\n\n return server;\n}\n",
|
|
6
|
-
"export function generateETag(lastModified: number): string {\n // Assuming the last modified timestamp is in milliseconds\n const lastModifiedStr = lastModified.toString();\n\n const hasher = new Bun.CryptoHasher(\"sha1\");\n hasher.update(lastModifiedStr);\n const hash = hasher.digest(\"hex\");\n\n return hash;\n}\n",
|
|
7
|
-
"import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n",
|
|
8
|
-
"import { createElement } from \"react\";\nimport { type ModuleNode, type ViteDevServer } from \"vite\";\n\nfunction replaceStrings(text: string, record: Record<string, string>): string {\n const escapedKeys = Object.keys(record)\n .sort((a, b) => b.length - a.length)\n .map((key) => key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n\n // Create a single regex with all keys\n const regex = new RegExp(escapedKeys.join(\"|\"), \"g\");\n\n return text.replace(regex, (match) => record[match]);\n}\n\nexport async function createDevStyles(\n appDir: string,\n vite: ViteDevServer,\n currentViews: string[] = [],\n) {\n const views = [\n ...currentViews.map((view) => `${appDir}/views/${view}.tsx`),\n `${appDir}/views/RootLayout.tsx`,\n ];\n\n const modules = new Set<ModuleNode>();\n for (const view of views) {\n const mod = vite.moduleGraph.getModulesByFile(view);\n if (mod) {\n for (const m of mod) modules.add(m);\n }\n }\n\n const styles = [];\n const cssModules = [];\n const cssModuleContent: Record<string, string> = {};\n for (const mod of modules as any) {\n if (mod) {\n for (const imported of mod.importedModules) {\n if (imported.file.includes(\"module.css\")) {\n cssModuleContent[imported.file] = imported.ssrTransformResult.map.sourcesContent.join(\"\");\n }\n if (imported.file.includes(\".css\")) {\n cssModules.push(imported.file);\n }\n }\n }\n }\n\n for (const cssModulePath of cssModules) {\n const transform = await vite.transformRequest(cssModulePath + \"?direct\");\n\n const isCssModule = cssModulePath.includes(\"module.css\");\n\n let transformedCssModule = \"\";\n\n if (isCssModule) {\n transformedCssModule = replaceStrings(\n cssModuleContent[cssModulePath],\n // Vite's `TransformResult` type has no `default`, but the CSS-module\n // transform attaches the class-name mapping there at runtime.\n (transform as unknown as { default: Record<string, string> }).default,\n );\n }\n\n styles.push({\n isDev: true,\n id: cssModulePath,\n content: isCssModule ? transformedCssModule : transform.code,\n });\n }\n\n return styles.map((style, i) => {\n return createElement(\"style\", {\n key: i,\n type: \"text/css\",\n \"data-vite-dev-id\": style.id,\n dangerouslySetInnerHTML: { __html: style.content },\n });\n });\n}\n\nexport async function createStyles(styles = []) {\n return styles.map((style, i) => {\n return createElement(\"style\", {\n key: i,\n id: style?.id,\n type: \"text/css\",\n dangerouslySetInnerHTML: { __html: style.content },\n });\n });\n}\n",
|
|
9
|
-
"import { existsSync } from \"node:fs\";\nimport { basename } from \"node:path\";\nimport { networkInterfaces } from \"node:os\";\nimport { envFiles } from \"./watchEnv\";\nimport pkg from \"../package.json\";\n\n// \"GEMI\" — ANSI Shadow figlet font.\nconst ART = [\n \" ██████╗ ███████╗███╗ ███╗██╗\",\n \"██╔════╝ ██╔════╝████╗ ████║██║\",\n \"██║ ███╗█████╗ ██╔████╔██║██║\",\n \"██║ ██║██╔══╝ ██║╚██╔╝██║██║\",\n \"╚██████╔╝███████╗██║ ╚═╝ ██║██║\",\n \" ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝\",\n];\n\nconst useColor = Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;\nconst paint = (code: string, text: string) =>\n useColor ? `\\x1b[${code}m${text}\\x1b[0m` : text;\nconst bold = (t: string) => paint(\"1\", t);\nconst dim = (t: string) => paint(\"2\", t);\nconst cyan = (t: string) => paint(\"36\", t);\nconst green = (t: string) => paint(\"32\", t);\nconst magenta = (t: string) => paint(\"35\", t);\n\nfunction gemiVersion(): string {\n return (pkg as { version?: string }).version ?? \"?\";\n}\n\nfunction networkUrl(port: number | string): string | null {\n for (const ifaces of Object.values(networkInterfaces())) {\n for (const iface of ifaces ?? []) {\n // Node <18 reported `family` as the number 4; newer Bun/Node use \"IPv4\".\n const isV4 = iface.family === \"IPv4\" || (iface.family as unknown) === 4;\n if (isV4 && !iface.internal) return `http://${iface.address}:${port}`;\n }\n }\n return null;\n}\n\nfunction loadedEnvFiles(rootDir: string): string[] {\n return envFiles(rootDir)\n .filter((file) => existsSync(file))\n .map((file) => basename(file));\n}\n\nexport function printStartupBanner(params: {\n port: number | string;\n rootDir: string;\n}) {\n const { port, rootDir } = params;\n const local = `http://localhost:${port}`;\n const network = networkUrl(port);\n const env = loadedEnvFiles(rootDir);\n\n const row = (label: string, value: string) =>\n ` ${green(\"➜\")} ${bold(label.padEnd(9))}${value}`;\n\n const out = [\n \"\",\n ...ART.map((line) => magenta(line)),\n \"\",\n ` ${dim(\"gemi\")} ${cyan(`v${gemiVersion()}`)}`,\n \"\",\n row(\"Local:\", cyan(local)),\n row(\"Network:\", network ? cyan(network) : dim(\"unavailable\")),\n row(\"Env:\", env.length ? env.join(\", \") : dim(\"none\")),\n \"\",\n ];\n\n console.log(out.join(\"\\n\"));\n}\n"
|
|
10
|
-
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "FD37F250C0B5B13564756E2164756E21",
|
|
13
|
-
"names": []
|
|
14
|
-
}
|