gemi 0.5.3 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/app/App.d.ts +1 -0
  2. package/dist/app/App.d.ts.map +1 -1
  3. package/dist/app/index.js +2 -2
  4. package/dist/app/index.js.map +3 -3
  5. package/dist/bin/index.js +16 -57
  6. package/dist/broadcasting/index.js +1 -1
  7. package/dist/chunk-29e47ya6.js +4 -0
  8. package/dist/{chunk-bt35atmf.js.map → chunk-29e47ya6.js.map} +2 -2
  9. package/dist/{chunk-ch0p7trm.js → chunk-40n82x2t.js} +2 -2
  10. package/dist/{chunk-ch0p7trm.js.map → chunk-40n82x2t.js.map} +1 -1
  11. package/dist/{chunk-yaqp7fex.js → chunk-7gjzt5mt.js} +2 -2
  12. package/dist/{chunk-yaqp7fex.js.map → chunk-7gjzt5mt.js.map} +1 -1
  13. package/dist/{chunk-3saf3cee.js → chunk-7j1dd4f2.js} +3 -3
  14. package/dist/{chunk-3saf3cee.js.map → chunk-7j1dd4f2.js.map} +1 -1
  15. package/dist/{chunk-6y378xez.js → chunk-7mernq2y.js} +2 -2
  16. package/dist/{chunk-6y378xez.js.map → chunk-7mernq2y.js.map} +1 -1
  17. package/dist/{chunk-hnyegpzf.js → chunk-9j0y1qh6.js} +3 -3
  18. package/dist/{chunk-hnyegpzf.js.map → chunk-9j0y1qh6.js.map} +1 -1
  19. package/dist/{chunk-77gdtbj7.js → chunk-aj66pefs.js} +2 -2
  20. package/dist/{chunk-77gdtbj7.js.map → chunk-aj66pefs.js.map} +1 -1
  21. package/dist/{chunk-7tq73gy6.js → chunk-cd9b5bzy.js} +2 -2
  22. package/dist/{chunk-7tq73gy6.js.map → chunk-cd9b5bzy.js.map} +1 -1
  23. package/dist/chunk-d1egpgtj.js +4 -0
  24. package/dist/{chunk-zze295mv.js.map → chunk-d1egpgtj.js.map} +2 -2
  25. package/dist/{chunk-azwtbn3m.js → chunk-ehc0mn9k.js} +2 -2
  26. package/dist/{chunk-azwtbn3m.js.map → chunk-ehc0mn9k.js.map} +1 -1
  27. package/dist/chunk-enrcacxy.js +4 -0
  28. package/dist/{chunk-3pfpq2xc.js.map → chunk-enrcacxy.js.map} +1 -1
  29. package/dist/{chunk-ewp71f92.js → chunk-fffvz62j.js} +2 -2
  30. package/dist/{chunk-ewp71f92.js.map → chunk-fffvz62j.js.map} +1 -1
  31. package/dist/chunk-fnfwj35q.js +4 -0
  32. package/dist/{chunk-njjn5kvb.js.map → chunk-fnfwj35q.js.map} +2 -2
  33. package/dist/{chunk-srsjrh5y.js → chunk-hfbzs201.js} +3 -3
  34. package/dist/{chunk-srsjrh5y.js.map → chunk-hfbzs201.js.map} +1 -1
  35. package/dist/{chunk-0gs55008.js → chunk-hrbw2kv8.js} +2 -2
  36. package/dist/{chunk-0gs55008.js.map → chunk-hrbw2kv8.js.map} +1 -1
  37. package/dist/{chunk-83snmykp.js → chunk-n30t8qwk.js} +3 -3
  38. package/dist/{chunk-83snmykp.js.map → chunk-n30t8qwk.js.map} +1 -1
  39. package/dist/{chunk-95hz1khz.js → chunk-ndyf70tp.js} +2 -2
  40. package/dist/{chunk-95hz1khz.js.map → chunk-ndyf70tp.js.map} +1 -1
  41. package/dist/{chunk-rr5j1686.js → chunk-nxr0f68f.js} +2 -2
  42. package/dist/{chunk-rr5j1686.js.map → chunk-nxr0f68f.js.map} +1 -1
  43. package/dist/{chunk-7v15p9nn.js → chunk-nypmy0sk.js} +3 -3
  44. package/dist/{chunk-7v15p9nn.js.map → chunk-nypmy0sk.js.map} +1 -1
  45. package/dist/{chunk-740bx4ar.js → chunk-s5375554.js} +2 -2
  46. package/dist/{chunk-740bx4ar.js.map → chunk-s5375554.js.map} +1 -1
  47. package/dist/{chunk-wthx7151.js → chunk-sa6cw8g8.js} +3 -3
  48. package/dist/{chunk-wthx7151.js.map → chunk-sa6cw8g8.js.map} +1 -1
  49. package/dist/chunk-t6e82v6r.js +4 -0
  50. package/dist/{chunk-t34vnmky.js.map → chunk-t6e82v6r.js.map} +1 -1
  51. package/dist/{chunk-ac7dhq1c.js → chunk-t7t45jw7.js} +2 -2
  52. package/dist/{chunk-ac7dhq1c.js.map → chunk-t7t45jw7.js.map} +1 -1
  53. package/dist/{chunk-0q8sry4s.js → chunk-tmba4sjp.js} +2 -2
  54. package/dist/{chunk-0q8sry4s.js.map → chunk-tmba4sjp.js.map} +1 -1
  55. package/dist/{chunk-9877dbvm.js → chunk-x1ry5x7k.js} +2 -2
  56. package/dist/{chunk-9877dbvm.js.map → chunk-x1ry5x7k.js.map} +1 -1
  57. package/dist/{chunk-0s3yapam.js → chunk-xbh456md.js} +3 -3
  58. package/dist/{chunk-0s3yapam.js.map → chunk-xbh456md.js.map} +1 -1
  59. package/dist/{chunk-9em80ypy.js → chunk-y05jg3hz.js} +2 -2
  60. package/dist/{chunk-9em80ypy.js.map → chunk-y05jg3hz.js.map} +1 -1
  61. package/dist/chunk-ytd79zth.js +20 -0
  62. package/dist/{chunk-9we58rz2.js.map → chunk-ytd79zth.js.map} +7 -7
  63. package/dist/{chunk-ckn0v6nd.js → chunk-zsw4pga0.js} +3 -3
  64. package/dist/{chunk-ckn0v6nd.js.map → chunk-zsw4pga0.js.map} +1 -1
  65. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  66. package/dist/client/HttpClientContext.d.ts +12 -0
  67. package/dist/client/HttpClientContext.d.ts.map +1 -0
  68. package/dist/client/QueryManagerContext.d.ts.map +1 -1
  69. package/dist/client/QueryResource.d.ts +3 -1
  70. package/dist/client/QueryResource.d.ts.map +1 -1
  71. package/dist/client/i18n/I18nContext.d.ts.map +1 -1
  72. package/dist/client/i18n/useLocale.d.ts.map +1 -1
  73. package/dist/client/index.d.ts +2 -1
  74. package/dist/client/index.d.ts.map +1 -1
  75. package/dist/client/index.js +209 -159
  76. package/dist/client/index.js.map +1 -1
  77. package/dist/client/init.d.ts +1 -0
  78. package/dist/client/init.d.ts.map +1 -1
  79. package/dist/client/useMutation.d.ts.map +1 -1
  80. package/dist/client/useNavigate.d.ts.map +1 -1
  81. package/dist/email/index.js +2 -2
  82. package/dist/email/index.js.map +1 -1
  83. package/dist/facades/index.js +2 -2
  84. package/dist/facades/index.js.map +5 -4
  85. package/dist/http/index.js +2 -2
  86. package/dist/http/index.js.map +1 -1
  87. package/dist/kernel/Kernel.d.ts +2 -0
  88. package/dist/kernel/Kernel.d.ts.map +1 -1
  89. package/dist/kernel/index.js +2 -2
  90. package/dist/kernel/index.js.map +3 -3
  91. package/dist/server/index.js +5 -5
  92. package/dist/server/index.js.map +5 -6
  93. package/dist/services/image-optimization/ImageOptimizationServiceContainer.d.ts +14 -0
  94. package/dist/services/image-optimization/ImageOptimizationServiceContainer.d.ts.map +1 -0
  95. package/dist/services/image-optimization/ImageOptimizationServiceProvider.d.ts +7 -0
  96. package/dist/services/image-optimization/ImageOptimizationServiceProvider.d.ts.map +1 -0
  97. package/dist/services/image-optimization/drivers/ImageOptimizationDriver.d.ts +5 -0
  98. package/dist/services/image-optimization/drivers/ImageOptimizationDriver.d.ts.map +1 -0
  99. package/dist/services/image-optimization/drivers/SharpDriver.d.ts +6 -0
  100. package/dist/services/image-optimization/drivers/SharpDriver.d.ts.map +1 -0
  101. package/dist/services/image-optimization/drivers/types.d.ts +14 -0
  102. package/dist/services/image-optimization/drivers/types.d.ts.map +1 -0
  103. package/dist/services/index.d.ts +4 -0
  104. package/dist/services/index.d.ts.map +1 -1
  105. package/dist/services/index.js +3 -12
  106. package/dist/services/index.js.map +8 -16
  107. package/dist/services/router/ApiRouterServiceContainer.d.ts.map +1 -1
  108. package/package.json +1 -1
  109. package/dist/chunk-3pfpq2xc.js +0 -4
  110. package/dist/chunk-9we58rz2.js +0 -20
  111. package/dist/chunk-bt35atmf.js +0 -4
  112. package/dist/chunk-njjn5kvb.js +0 -4
  113. package/dist/chunk-t34vnmky.js +0 -4
  114. package/dist/chunk-zze295mv.js +0 -4
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Rb as f}from"../chunk-t34vnmky.js";import{Tb as w}from"../chunk-ewp71f92.js";import"../chunk-rr5j1686.js";class K{static kind="controller";constructor(){}}class M extends K{}function E(e){return typeof e==="function"&&e.prototype!==void 0}function Q(e){return E(e)}class l{e;t;r;__internal_brand="RouteHandler";middlewares=[];constructor(e,t,r){this.method=e;this.handler=t;this.methodName=r;this.handler=t,this.methodName=r,this.method=e}__internal_use(){return{run:this.run.bind(this),middlewares:this.middlewares}}run(e){if(Q(this.handler)){let t=new this.handler;return t[this.methodName].bind(t)()}else return this.handler()}middleware(e){return this.middlewares=e,this}}class q{constructor(...e){return new l(...e)}}class A{static __brand="ApiRouter";routes={};middlewares=[];middleware(e){}get(e,t){return new l("GET",e,t)}post(e,t){return new l("POST",e,t)}put(e,t){return new l("PUT",e,t)}patch(e,t){return new l("PATCH",e,t)}delete(e,t){return new l("DELETE",e,t)}resource(e){return(t)=>{return{"/":{list:new l("GET",e,"list"),create:new l("POST",e,"create")},[`/:${String(t)}`]:{show:new l("GET",e,"show"),update:new l("PUT",e,"update"),delete:new l("DELETE",e,"delete")}}}}file(e,t){return new q("GET",e,t)}}class S{e;middlewares=[];handler;constructor(e,t){this.viewPath=e;if(!t)this.handler=()=>({});else if(typeof t==="function")this.handler=t;else{let[r,n]=t,s=new r,o=s[n].bind(s);this.handler=(i)=>{return o()}}}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class ${e;children;middlewares=[];handler=()=>({});constructor(e,t,r){this.viewPath=e;if(typeof t==="function")this.handler=t,this.children=class extends x{routes=r??{}};else if(Array.isArray(t)){let[n,s]=t,o=new n,i=o[s].bind(o);this.handler=(a)=>{return i(a)},this.children=class extends x{routes=r??{}}}else this.children=class extends x{routes=t},this.handler=()=>({})}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class x{middlewares=[];routes={};view(e,t){return new S(e,t)}layout(e,t,r){return new $(e,t,r)}}var de="GEMI_REQUEST_BREAKER_ERROR";class d extends Error{kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class P extends d{errors={};constructor(e){super("Validation error");this.name="ValidationError",this.errors=e,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:e}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}import{AsyncLocalStorage as Y}from"async_hooks";class g{e;t;r;constructor(e,t,r={}){this.name=e;this.value=t;this.options=r}toString(){return[`${this.name}=${this.value}`,this.options.maxAge?`Max-Age=${this.options.maxAge}`:"",this.options.httpOnly?"HttpOnly":"",this.options.secure?"Secure":"",this.options.sameSite?`SameSite=${this.options.sameSite}`:"SameSite=Strict",this.options.path?`Path=${this.options.path}`:"Path=/",this.options.domain?`Domain=${this.options.domain}`:"",this.options.expires?`Expires=${this.options.expires.toUTCString()}`:"",this.options.partitioned?"Partitioned":""].filter((e)=>e!=="").join("; ")}}var O=new Y;class v{e;cookies=new Set;headers=new Headers;prefetchedResources=new Map;prefetchPromiseQueue=new Set;user=null;csrfHmac=null;constructor(e){this.req=e}setCSRFHmac(e){this.csrfHmac=e}setCookie(e,t,r={}){this.cookies.add(new g(e,t,r))}setHeaders(e,t){this.headers.set(e,t)}setUser(e){this.user=e}setRequest(e){this.req=e}destroy(){delete this.cookies,delete this.headers,delete this.prefetchedResources,delete this.prefetchPromiseQueue,delete this.user}}class y{static getStore(){return O.getStore()}static setRequest(e){O.getStore().req=e}static run(e,t){return O.run(new v(e),t)}}class T{e;constructor(e){this.data=e}get(e){return this.data[e]}has(e){return this.data[e]!==void 0}toJSON(){return this.data}}function J(e){let[t,r]=e.match(/\d+|\D+/g)??[];if(!t||!r)return 0;let n=parseInt(t);switch(r){case"B":return n;case"KB":return n*1024;case"MB":return n*1024*1024;case"GB":return n*1024*1024*1024;case"TB":return n*1024*1024*1024*1024;default:return 0}}function W(e){switch(e){case"image":return"image";case"png":return"image/png";case"jpg":return"image/jpeg";case"jpeg":return"image/jpeg";case"ttf":return"font/ttf";case"excel":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case"csv":return"text/csv";case"word":return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case"pdf":return"application/pdf";case"json":return"application/json";default:return e}}function X(e){let[t,r]=e.split(":");switch(t){case"required":return(n)=>{if(n instanceof Blob)return n.size>0;return n!==null&&n!==void 0&&n?.length>0};case"password":return(n)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(n)};case"number":return(n)=>{if(typeof n!=="number")return!1;return!isNaN(n)};case"min":return(n)=>{return n?.length>=parseInt(r)};case"max":return(n)=>{return n?.length<=parseInt(r)};case"email":return(n)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)};case"file":return(n)=>{return n instanceof Blob};case"fileType":return(n)=>{if(n instanceof Blob){let s=W(r);return n.type.startsWith(s)}};case"fileSize":return(n)=>{if(n instanceof Blob){let s=J(r);return n.size<=s}};default:return()=>!0}}class R{kind;rawRequest;headers;cookies;search;schema={};routePath;params;constructor(e,t,r,n){if(!e){let i=y.getStore().req;this.params=i.params,this.rawRequest=i.rawRequest,this.kind=i.kind,this.routePath=i.routePath}else this.params=t,this.rawRequest=e,this.routePath=n,this.kind=r??"api";this.headers=this.rawRequest.headers;let s=this.rawRequest.headers.get("Cookie"),o=new Map;if(s){let i=s.split(";");for(let a of i){let[p,c]=a.split("=");o.set(p.trim(),c.trim())}}if(this.rawRequest.method==="GET"){let i=new URL(this.rawRequest.url),a=new Map;for(let[c,H]of i.searchParams)if(a.has(c)){let m=a.get(c);if(Array.isArray(m))m.push(H),a.set(c,m);else a.set(c,[m,H])}else a.set(c,H);let p=Object.fromEntries(a.entries());this.search=new T(p)}this.cookies=o}ctx(){return y.getStore()}refine(e){return{}}async parseBody(){let e=new T({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){let t=await this.rawRequest.json();e=new T(t)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){let t=await this.rawRequest.formData();e=new T(t)}if(this.rawRequest.headers.get("Content-Type")?.startsWith("multipart/form-data")){let t=await this.rawRequest.formData(),r=new Map;for(let[n,s]of t.entries())if(r.has(n)){let o=r.get(n);if(Array.isArray(o))o.push(s),r.set(n,o);else r.set(n,[o,s])}else r.set(n,s);e=new T(Object.fromEntries(r.entries()))}return e}validateInput(e){let t={};for(let[r,n]of Object.entries(this.schema))for(let[s,o]of Object.entries(n)){let i=X(s),a=o,p=!1;if(typeof o==="function")a=o(e.get(r)),p=typeof a==="undefined";else p=i(e.get(r));if(p)continue;if(!t[r])t[r]=[];if(s==="required"){t[r]=[String(a)];break}else t[r].push(String(a))}for(let[r,n]of Object.entries(this.refine(e.toJSON())??{})){if(!t[r])t[r]=[];t[r]=[...t[r]??[],n]}if(Object.keys(t).length>0)throw new P(t);else return e}async input(){return this.validateInput(await this.parseBody())}async safeInput(){let e=await this.parseBody();try{return this.validateInput(e),{isValid:!0,errors:{},input:e}}catch(t){if(!(t instanceof P))throw t;return{isValid:!1,errors:t.errors,input:e}}}}class u{e;constructor(e){this.req=e}run(...e){return{}}}function Z(e){let t=e.headers.get("cookie");if(!t)return new Map;let r=new Map,n=t.split(";");for(let s of n){let[o,i]=s.split("=");r.set(o.trim(),i)}return r}class U extends f{aliases={};boot(){}}class L extends d{error;constructor(e="Not authorized"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class V extends d{error;constructor(e="Insufficient permissions"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class h extends d{constructor(){super("Authentication error");this.name="AuthenticationError"}payload={api:{status:401,data:{error:"Authentication error"}},view:{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:"/auth/sign-in"}}}}class b extends w{e;static _name="AuthenticationServiceContainer";constructor(e){super();this.provider=e}async getSession(e,t){let r=await this.provider.adapter.findSession({token:e,userAgent:t}),n=null;if(r?.user)n=await this.provider.extendSession(r.user),r.user.extension=n;return r}}class k extends u{async run(e){let t=y.getStore(),r=t.req.cookies.get("access_token");if(!r)throw new h;let n=t.user;if(!n){let s=await b.use().getSession(r,t.req.headers.get("User-Agent"));if(!s)throw new h;n=s?.user,t.setUser(n)}return{}}}class _ extends u{async run(...e){let[t="public",r="864000",...n]=e,s=`${t}, max-age=${r}${n.length>0?", ":""}${n.join(", ")}`;if(e.length===0)s="public, max-age=864000, stale-while-revalidate=300, stale-if-error=600";if(e.length===1&&e[0]==="public")s="public, max-age=864000, stale-while-revalidate=300, stale-if-error=600";if(e.length===1&&e[0]==="private")s="private, max-age=0, stale-while-revalidate=300, stale-if-error=600";if(this.req.rawRequest.method==="GET")this.req.ctx().setHeaders("Cache-Control",s);return{}}}class I extends w{e;static _name="RateLimiterServiceContainer";constructor(e){super();this.service=e}}class G extends d{constructor(){super("Rate limit exceeded");this.payload={api:{status:429,data:{error:{message:"Rate limit exceeded"}},headers:{"Content-Type":"application/json"}},view:{error:{message:"Rate limit exceeded"},status:429}}}}class D extends u{async run(e=1000){let t=this.req.headers.get("x-forwarded-for"),r=I.use().service.driver;if(r.consume.call(r,t,this.req.routePath)>e)throw new G;return{}}}import{createHmac as z,timingSafeEqual as ee}from"crypto";class N extends u{async run(){let e=this.req.cookies.get("csrf_token");if(!e)throw new C;if(!["POST","PUT","PATCH","DELETE"].includes(this.req.rawRequest.method))return{};try{let r=Buffer.from(process.env.SECRET,"utf8"),n=z("sha256",r);n.update(e);let s=n.digest(),o=this.req.rawRequest.clone(),a=await new R(o).input(),p=Buffer.from(a.get("__csrf"),"base64");if(!ee(p,s))throw new C}catch(r){throw new C}return{}}}class C extends d{constructor(){super("Invalid CSRF token");this.name="InvalidCSRFTokenError"}payload={api:{status:403,data:{error:"Invalid CSRF token"}},view:{}}}class B{policiesList={};constructor(){let e=this.register();for(let t of e){let r=new t;this.policiesList[t.name]=r}}register(){return[]}}class F{all(e,t){return!0}}class j extends f{dictionary={};supportedLocales=[];defaultLocale="en-US";async init(){}detectLocale(e){return""}boot(){}}export{Z as getCookies,x as ViewRouter,P as ValidationError,M as ResourceController,d as RequestBreakerError,D as RateLimitMiddleware,B as PoliciesServiceProvider,F as Policies,U as MiddlewareServiceProvider,u as Middleware,V as InsufficientPermissionsError,j as I18nServiceProvider,R as HttpRequest,K as Controller,_ as CacheMiddleware,N as CSRFMiddleware,L as AuthorizationError,k as AuthenticationMiddleware,h as AuthenticationError,A as ApiRouter};export{K as n,E as o,A as p,x as q,de as r,d as s,P as t,y as u,R as v,U as w,L as x,V as y,b as z,I as A,j as B};
2
+ import{Ub as f}from"../chunk-t6e82v6r.js";import{Wb as w}from"../chunk-fffvz62j.js";import"../chunk-nxr0f68f.js";class K{static kind="controller";constructor(){}}class M extends K{}function E(e){return typeof e==="function"&&e.prototype!==void 0}function Q(e){return E(e)}class l{e;t;r;__internal_brand="RouteHandler";middlewares=[];constructor(e,t,r){this.method=e;this.handler=t;this.methodName=r;this.handler=t,this.methodName=r,this.method=e}__internal_use(){return{run:this.run.bind(this),middlewares:this.middlewares}}run(e){if(Q(this.handler)){let t=new this.handler;return t[this.methodName].bind(t)()}else return this.handler()}middleware(e){return this.middlewares=e,this}}class q{constructor(...e){return new l(...e)}}class A{static __brand="ApiRouter";routes={};middlewares=[];middleware(e){}get(e,t){return new l("GET",e,t)}post(e,t){return new l("POST",e,t)}put(e,t){return new l("PUT",e,t)}patch(e,t){return new l("PATCH",e,t)}delete(e,t){return new l("DELETE",e,t)}resource(e){return(t)=>{return{"/":{list:new l("GET",e,"list"),create:new l("POST",e,"create")},[`/:${String(t)}`]:{show:new l("GET",e,"show"),update:new l("PUT",e,"update"),delete:new l("DELETE",e,"delete")}}}}file(e,t){return new q("GET",e,t)}}class S{e;middlewares=[];handler;constructor(e,t){this.viewPath=e;if(!t)this.handler=()=>({});else if(typeof t==="function")this.handler=t;else{let[r,n]=t,s=new r,o=s[n].bind(s);this.handler=(i)=>{return o()}}}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class ${e;children;middlewares=[];handler=()=>({});constructor(e,t,r){this.viewPath=e;if(typeof t==="function")this.handler=t,this.children=class extends x{routes=r??{}};else if(Array.isArray(t)){let[n,s]=t,o=new n,i=o[s].bind(o);this.handler=(a)=>{return i(a)},this.children=class extends x{routes=r??{}}}else this.children=class extends x{routes=t},this.handler=()=>({})}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class x{middlewares=[];routes={};view(e,t){return new S(e,t)}layout(e,t,r){return new $(e,t,r)}}var de="GEMI_REQUEST_BREAKER_ERROR";class d extends Error{kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class P extends d{errors={};constructor(e){super("Validation error");this.name="ValidationError",this.errors=e,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:e}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}import{AsyncLocalStorage as Y}from"async_hooks";class g{e;t;r;constructor(e,t,r={}){this.name=e;this.value=t;this.options=r}toString(){return[`${this.name}=${this.value}`,this.options.maxAge?`Max-Age=${this.options.maxAge}`:"",this.options.httpOnly?"HttpOnly":"",this.options.secure?"Secure":"",this.options.sameSite?`SameSite=${this.options.sameSite}`:"SameSite=Strict",this.options.path?`Path=${this.options.path}`:"Path=/",this.options.domain?`Domain=${this.options.domain}`:"",this.options.expires?`Expires=${this.options.expires.toUTCString()}`:"",this.options.partitioned?"Partitioned":""].filter((e)=>e!=="").join("; ")}}var O=new Y;class v{e;cookies=new Set;headers=new Headers;prefetchedResources=new Map;prefetchPromiseQueue=new Set;user=null;csrfHmac=null;constructor(e){this.req=e}setCSRFHmac(e){this.csrfHmac=e}setCookie(e,t,r={}){this.cookies.add(new g(e,t,r))}setHeaders(e,t){this.headers.set(e,t)}setUser(e){this.user=e}setRequest(e){this.req=e}destroy(){delete this.cookies,delete this.headers,delete this.prefetchedResources,delete this.prefetchPromiseQueue,delete this.user}}class y{static getStore(){return O.getStore()}static setRequest(e){O.getStore().req=e}static run(e,t){return O.run(new v(e),t)}}class T{e;constructor(e){this.data=e}get(e){return this.data[e]}has(e){return this.data[e]!==void 0}toJSON(){return this.data}}function J(e){let[t,r]=e.match(/\d+|\D+/g)??[];if(!t||!r)return 0;let n=parseInt(t);switch(r){case"B":return n;case"KB":return n*1024;case"MB":return n*1024*1024;case"GB":return n*1024*1024*1024;case"TB":return n*1024*1024*1024*1024;default:return 0}}function W(e){switch(e){case"image":return"image";case"png":return"image/png";case"jpg":return"image/jpeg";case"jpeg":return"image/jpeg";case"ttf":return"font/ttf";case"excel":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case"csv":return"text/csv";case"word":return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case"pdf":return"application/pdf";case"json":return"application/json";default:return e}}function X(e){let[t,r]=e.split(":");switch(t){case"required":return(n)=>{if(n instanceof Blob)return n.size>0;return n!==null&&n!==void 0&&n?.length>0};case"password":return(n)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(n)};case"number":return(n)=>{if(typeof n!=="number")return!1;return!isNaN(n)};case"min":return(n)=>{return n?.length>=parseInt(r)};case"max":return(n)=>{return n?.length<=parseInt(r)};case"email":return(n)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)};case"file":return(n)=>{return n instanceof Blob};case"fileType":return(n)=>{if(n instanceof Blob){let s=W(r);return n.type.startsWith(s)}};case"fileSize":return(n)=>{if(n instanceof Blob){let s=J(r);return n.size<=s}};default:return()=>!0}}class R{kind;rawRequest;headers;cookies;search;schema={};routePath;params;constructor(e,t,r,n){if(!e){let i=y.getStore().req;this.params=i.params,this.rawRequest=i.rawRequest,this.kind=i.kind,this.routePath=i.routePath}else this.params=t,this.rawRequest=e,this.routePath=n,this.kind=r??"api";this.headers=this.rawRequest.headers;let s=this.rawRequest.headers.get("Cookie"),o=new Map;if(s){let i=s.split(";");for(let a of i){let[p,c]=a.split("=");o.set(p.trim(),c.trim())}}if(this.rawRequest.method==="GET"){let i=new URL(this.rawRequest.url),a=new Map;for(let[c,H]of i.searchParams)if(a.has(c)){let m=a.get(c);if(Array.isArray(m))m.push(H),a.set(c,m);else a.set(c,[m,H])}else a.set(c,H);let p=Object.fromEntries(a.entries());this.search=new T(p)}this.cookies=o}ctx(){return y.getStore()}refine(e){return{}}async parseBody(){let e=new T({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){let t=await this.rawRequest.json();e=new T(t)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){let t=await this.rawRequest.formData();e=new T(t)}if(this.rawRequest.headers.get("Content-Type")?.startsWith("multipart/form-data")){let t=await this.rawRequest.formData(),r=new Map;for(let[n,s]of t.entries())if(r.has(n)){let o=r.get(n);if(Array.isArray(o))o.push(s),r.set(n,o);else r.set(n,[o,s])}else r.set(n,s);e=new T(Object.fromEntries(r.entries()))}return e}validateInput(e){let t={};for(let[r,n]of Object.entries(this.schema))for(let[s,o]of Object.entries(n)){let i=X(s),a=o,p=!1;if(typeof o==="function")a=o(e.get(r)),p=typeof a==="undefined";else p=i(e.get(r));if(p)continue;if(!t[r])t[r]=[];if(s==="required"){t[r]=[String(a)];break}else t[r].push(String(a))}for(let[r,n]of Object.entries(this.refine(e.toJSON())??{})){if(!t[r])t[r]=[];t[r]=[...t[r]??[],n]}if(Object.keys(t).length>0)throw new P(t);else return e}async input(){return this.validateInput(await this.parseBody())}async safeInput(){let e=await this.parseBody();try{return this.validateInput(e),{isValid:!0,errors:{},input:e}}catch(t){if(!(t instanceof P))throw t;return{isValid:!1,errors:t.errors,input:e}}}}class u{e;constructor(e){this.req=e}run(...e){return{}}}function Z(e){let t=e.headers.get("cookie");if(!t)return new Map;let r=new Map,n=t.split(";");for(let s of n){let[o,i]=s.split("=");r.set(o.trim(),i)}return r}class U extends f{aliases={};boot(){}}class L extends d{error;constructor(e="Not authorized"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class V extends d{error;constructor(e="Insufficient permissions"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class h extends d{constructor(){super("Authentication error");this.name="AuthenticationError"}payload={api:{status:401,data:{error:"Authentication error"}},view:{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:"/auth/sign-in"}}}}class b extends w{e;static _name="AuthenticationServiceContainer";constructor(e){super();this.provider=e}async getSession(e,t){let r=await this.provider.adapter.findSession({token:e,userAgent:t}),n=null;if(r?.user)n=await this.provider.extendSession(r.user),r.user.extension=n;return r}}class k extends u{async run(e){let t=y.getStore(),r=t.req.cookies.get("access_token");if(!r)throw new h;let n=t.user;if(!n){let s=await b.use().getSession(r,t.req.headers.get("User-Agent"));if(!s)throw new h;n=s?.user,t.setUser(n)}return{}}}class _ extends u{async run(...e){let[t="public",r="864000",...n]=e,s=`${t}, max-age=${r}${n.length>0?", ":""}${n.join(", ")}`;if(e.length===0)s="public, max-age=864000, stale-while-revalidate=300, stale-if-error=600";if(e.length===1&&e[0]==="public")s="public, max-age=864000, stale-while-revalidate=300, stale-if-error=600";if(e.length===1&&e[0]==="private")s="private, max-age=0, stale-while-revalidate=300, stale-if-error=600";if(this.req.rawRequest.method==="GET")this.req.ctx().setHeaders("Cache-Control",s);return{}}}class I extends w{e;static _name="RateLimiterServiceContainer";constructor(e){super();this.service=e}}class G extends d{constructor(){super("Rate limit exceeded");this.payload={api:{status:429,data:{error:{message:"Rate limit exceeded"}},headers:{"Content-Type":"application/json"}},view:{error:{message:"Rate limit exceeded"},status:429}}}}class D extends u{async run(e=1000){let t=this.req.headers.get("x-forwarded-for"),r=I.use().service.driver;if(r.consume.call(r,t,this.req.routePath)>e)throw new G;return{}}}import{createHmac as z,timingSafeEqual as ee}from"crypto";class N extends u{async run(){let e=this.req.cookies.get("csrf_token");if(!e)throw new C;if(!["POST","PUT","PATCH","DELETE"].includes(this.req.rawRequest.method))return{};try{let r=Buffer.from(process.env.SECRET,"utf8"),n=z("sha256",r);n.update(e);let s=n.digest(),o=this.req.rawRequest.clone(),a=await new R(o).input(),p=Buffer.from(a.get("__csrf"),"base64");if(!ee(p,s))throw new C}catch(r){throw new C}return{}}}class C extends d{constructor(){super("Invalid CSRF token");this.name="InvalidCSRFTokenError"}payload={api:{status:403,data:{error:"Invalid CSRF token"}},view:{}}}class B{policiesList={};constructor(){let e=this.register();for(let t of e){let r=new t;this.policiesList[t.name]=r}}register(){return[]}}class F{all(e,t){return!0}}class j extends f{dictionary={};supportedLocales=[];defaultLocale="en-US";async init(){}detectLocale(e){return""}boot(){}}export{Z as getCookies,x as ViewRouter,P as ValidationError,M as ResourceController,d as RequestBreakerError,D as RateLimitMiddleware,B as PoliciesServiceProvider,F as Policies,U as MiddlewareServiceProvider,u as Middleware,V as InsufficientPermissionsError,j as I18nServiceProvider,R as HttpRequest,K as Controller,_ as CacheMiddleware,N as CSRFMiddleware,L as AuthorizationError,k as AuthenticationMiddleware,h as AuthenticationError,A as ApiRouter};export{K as o,E as p,A as q,x as r,de as s,d as t,P as u,y as v,R as w,U as x,L as y,V as z,b as A,I as B,j as C};
3
3
 
4
- //# debugId=8D360E20478C55EB64756E2164756E21
4
+ //# debugId=F607AF653CA96D6C64756E2164756E21
@@ -26,6 +26,6 @@
26
26
  "import { HttpRequest } from \"./HttpRequest\";\n\nimport type { Translations } from \"../client/i18n/I18nContext\";\nimport { ServiceProvider } from \"../services/ServiceProvider\";\n\nexport class I18nServiceProvider extends ServiceProvider {\n dictionary: Translations = {};\n supportedLocales: string[] = [];\n defaultLocale = \"en-US\";\n\n async init() {}\n\n detectLocale(_req: HttpRequest) {\n return \"\";\n }\n\n boot() {}\n}\n"
27
27
  ],
28
28
  "mappings": "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",
29
- "debugId": "8D360E20478C55EB64756E2164756E21",
29
+ "debugId": "F607AF653CA96D6C64756E2164756E21",
30
30
  "names": []
31
31
  }
@@ -9,6 +9,7 @@ import { BroadcastingServiceProvider } from "../services/pubsub/BroadcastingServ
9
9
  import { ViewRouterServiceProvider } from "../services/router/ViewRouterServiceProvider";
10
10
  import { ServiceContainer } from "../services/ServiceContainer";
11
11
  import { LoggingServiceProvider } from "../services/logging/LoggingServiceProvider";
12
+ import { ImageOptimizationServiceProvider } from "../services/image-optimization/ImageOptimizationServiceProvider";
12
13
  export declare class Kernel {
13
14
  protected emailServiceProvider: typeof EmailServiceProvider;
14
15
  protected authenticationServiceProvider: typeof AuthenticationServiceProvider;
@@ -21,6 +22,7 @@ export declare class Kernel {
21
22
  protected broadcastingsServiceProvider: typeof BroadcastingServiceProvider;
22
23
  protected loggingServiceProvider: typeof LoggingServiceProvider;
23
24
  protected queueServiceProvider: typeof QueueServiceProvider;
25
+ protected imageServiceProvider: typeof ImageOptimizationServiceProvider;
24
26
  services: Record<string, ServiceContainer>;
25
27
  boot(): void;
26
28
  run<T>(cb: () => T): T;
@@ -1 +1 @@
1
- {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAGtF,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,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAGpF,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;IAEtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM;IAEhD,IAAI;IAuCJ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;IAKlB,OAAO;CAOR"}
1
+ {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAGtF,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,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iEAAiE,CAAC;AAGnH,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;IAElE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM;IAEhD,IAAI;IAyCJ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;IAKlB,OAAO;CAOR"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{e as Z}from"../chunk-ch0p7trm.js";import{f as K,g as N,h as U,i as W,k as q,l as X,m as Y}from"../facades/index.js";import{A as J,B as T,w as D,z as H}from"../http/index.js";import{C as $}from"../chunk-3pfpq2xc.js";import"../chunk-9877dbvm.js";import"../chunk-83snmykp.js";import{F as f,G as O,H as b,I as y,J as B,K as E,L as F,M}from"../services/index.js";import"../chunk-ckn0v6nd.js";import"../chunk-9we58rz2.js";import"../chunk-wthx7151.js";import"../chunk-3saf3cee.js";import"../chunk-ac7dhq1c.js";import"../chunk-srsjrh5y.js";import"../chunk-9em80ypy.js";import"../chunk-740bx4ar.js";import{Ob as _}from"../chunk-0s3yapam.js";import"../chunk-7v15p9nn.js";import"../chunk-t34vnmky.js";import{Sb as G}from"../chunk-ewp71f92.js";import"../chunk-hnyegpzf.js";import"../chunk-rr5j1686.js";class V{emailServiceProvider=y;authenticationServiceProvider=q;middlewareServiceProvider=D;i18nServiceProvider=T;fileStorageServiceProvider=f;apiRouterServiceProvider=O;viewRouterServiceProvider=E;rateLimiterServiceProvider=b;broadcastingsServiceProvider=B;loggingServiceProvider=F;queueServiceProvider=M;services={};boot(){this.services={[$._name]:new $(new this.emailServiceProvider),[H._name]:new H(new this.authenticationServiceProvider),[X._name]:new X(new this.middlewareServiceProvider),[N._name]:new N(new this.i18nServiceProvider),[U._name]:new U(new this.fileStorageServiceProvider),[Y._name]:new Y(new this.apiRouterServiceProvider),[Z._name]:new Z(new this.viewRouterServiceProvider),[J._name]:new J(new this.rateLimiterServiceProvider),[K._name]:new K(new this.broadcastingsServiceProvider),[W._name]:new W(new this.loggingServiceProvider),[_._name]:new _(new this.queueServiceProvider)}}run(j){let z=this.services;return G.run(z,j)}destroy(){for(let j of Object.keys(this.services))delete this.services[j];G.disable()}}class x{j;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:{id:j},data:{emailVerifiedAt:new Date}})}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})}async deleteSession(j){return await this.prisma.session.deleteMany({where:{token:j.token}})}async findUserByEmailAddress(j,z){if(z)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,userAgent:j.userAgent},include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}catch(z){return console.log(z),null}}async updateSession(j){return await this.prisma.session.update({where:{token:j.token},data:{expiresAt:j.expiresAt},include:{user:{select:{password:!1,email:!0,globalRole:!0,name:!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:z}=j;return await this.prisma.passwordResetToken.findUnique({where:{token:z},include:{user:!0}})}async deleteAllUserSessions(j){return await this.prisma.session.deleteMany({where:{userId:j}})}async deletePasswordResetToken(j){let{token:z}=j;return await this.prisma.passwordResetToken.delete({where:{token:z}})}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,z){return await this.prisma.organizationInvitation.findFirst({where:{publicId:j,email:z}})}}export{x as PrismaAuthenticationAdapter,V as Kernel,q as AuthenticationServiceProvider};
2
+ import{e as N}from"../chunk-40n82x2t.js";import{f as F,g as G,h as H,i as J,k as V,l as K,m as L,n as M}from"../facades/index.js";import{A as B,B as E,C as X,x as W}from"../http/index.js";import{D as U}from"../chunk-enrcacxy.js";import"../chunk-x1ry5x7k.js";import{F as Y,G as Z,H as _,I as $,J as D,K as P,L as T,M as f,N as x}from"../services/index.js";import"../chunk-zsw4pga0.js";import"../chunk-ytd79zth.js";import"../chunk-sa6cw8g8.js";import"../chunk-7j1dd4f2.js";import"../chunk-t7t45jw7.js";import"../chunk-hfbzs201.js";import"../chunk-y05jg3hz.js";import"../chunk-s5375554.js";import{Qb as Q}from"../chunk-xbh456md.js";import"../chunk-nypmy0sk.js";import"../chunk-n30t8qwk.js";import"../chunk-t6e82v6r.js";import{Vb as w}from"../chunk-fffvz62j.js";import"../chunk-9j0y1qh6.js";import"../chunk-nxr0f68f.js";class z{emailServiceProvider=$;authenticationServiceProvider=V;middlewareServiceProvider=W;i18nServiceProvider=X;fileStorageServiceProvider=Y;apiRouterServiceProvider=Z;viewRouterServiceProvider=P;rateLimiterServiceProvider=_;broadcastingsServiceProvider=D;loggingServiceProvider=T;queueServiceProvider=f;imageServiceProvider=x;services={};boot(){this.services={[U._name]:new U(new this.emailServiceProvider),[B._name]:new B(new this.authenticationServiceProvider),[L._name]:new L(new this.middlewareServiceProvider),[G._name]:new G(new this.i18nServiceProvider),[H._name]:new H(new this.fileStorageServiceProvider),[M._name]:new M(new this.apiRouterServiceProvider),[N._name]:new N(new this.viewRouterServiceProvider),[E._name]:new E(new this.rateLimiterServiceProvider),[F._name]:new F(new this.broadcastingsServiceProvider),[J._name]:new J(new this.loggingServiceProvider),[Q._name]:new Q(new this.queueServiceProvider),[K._name]:new K(new this.imageServiceProvider)}}run(j){let q=this.services;return w.run(q,j)}destroy(){for(let j of Object.keys(this.services))delete this.services[j];w.disable()}}class R{j;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:{id:j},data:{emailVerifiedAt:new Date}})}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})}async deleteSession(j){return await this.prisma.session.deleteMany({where:{token:j.token}})}async findUserByEmailAddress(j,q){if(q)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,userAgent:j.userAgent},include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}catch(q){return console.log(q),null}}async updateSession(j){return await this.prisma.session.update({where:{token:j.token},data:{expiresAt:j.expiresAt},include:{user:{select:{password:!1,email:!0,globalRole:!0,name:!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:q}=j;return await this.prisma.passwordResetToken.findUnique({where:{token:q},include:{user:!0}})}async deleteAllUserSessions(j){return await this.prisma.session.deleteMany({where:{userId:j}})}async deletePasswordResetToken(j){let{token:q}=j;return await this.prisma.passwordResetToken.delete({where:{token:q}})}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,q){return await this.prisma.organizationInvitation.findFirst({where:{publicId:j,email:q}})}}export{R as PrismaAuthenticationAdapter,z as Kernel,V as AuthenticationServiceProvider};
3
3
 
4
- //# debugId=400DA86F01763B1D64756E2164756E21
4
+ //# debugId=FCF4BD21FA5B9DA764756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../kernel/Kernel.ts", "../auth/adapters/prisma.ts"],
4
4
  "sourcesContent": [
5
- "import { AuthenticationServiceProvider } from \"../auth/AuthenticationServiceProvider\";\nimport { AuthenticationServiceContainer } from \"../auth/AuthenticationServiceContainer\";\nimport { kernelContext } from \"./context\";\nimport { MiddlewareServiceProvider } from \"../http/MiddlewareServiceProvider\";\nimport { I18nServiceProvider } from \"../http/I18nServiceProvider\";\nimport { I18nServiceContainer } from \"../http/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 { ServiceContainer } from \"../services/ServiceContainer\";\nimport { LoggingServiceContainer } from \"../services/logging/LoggingServiceContainer\";\nimport { LoggingServiceProvider } from \"../services/logging/LoggingServiceProvider\";\nimport { QueueServiceContainer } from \"../services/queue/QueueServiceContainer\";\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\n services: Record<string, ServiceContainer> = {};\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 };\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",
5
+ "import { AuthenticationServiceProvider } from \"../auth/AuthenticationServiceProvider\";\nimport { AuthenticationServiceContainer } from \"../auth/AuthenticationServiceContainer\";\nimport { kernelContext } from \"./context\";\nimport { MiddlewareServiceProvider } from \"../http/MiddlewareServiceProvider\";\nimport { I18nServiceProvider } from \"../http/I18nServiceProvider\";\nimport { I18nServiceContainer } from \"../http/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 { 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\";\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\n services: Record<string, ServiceContainer> = {};\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 };\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",
6
6
  "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} from \"./types\";\n\nexport class PrismaAuthenticationAdapter implements IAuthenticationAdapter {\n constructor(private 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(userId: number): Promise<User> {\n return await this.prisma.user.update({\n where: { id: userId },\n data: { emailVerifiedAt: new Date() },\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({ data: args });\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 return await this.prisma.user.findUnique({ where: { email } });\n }\n\n // TODO: extend the session until absolute expiration\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 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 password: false,\n email: true,\n globalRole: true,\n name: 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"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "400DA86F01763B1D64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "FCF4BD21FA5B9DA764756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{D as C}from"../chunk-9877dbvm.js";import{E as F}from"../chunk-83snmykp.js";import{Vb as L}from"../chunk-rr5j1686.js";import{join as B}from"path";import{jsx as j}from"react/jsx-runtime";function T(c){return c.map((e,l)=>{if(e.isDev)return j("style",{type:"text/css","data-vite-dev-id":e.id,children:e.content},e.id);else return j("style",{id:e?.id,type:"text/css",children:e.content},l)})}var O=L(F(),1);async function D(c){let e=new URL(c.url),l=e.searchParams.get("url"),u=Number(e.searchParams.get("w")),d=Number(e.searchParams.get("h")),y=e.searchParams.get("fit")??"cover",g=Number(e.searchParams.get("q"));if(!l)return new Response(JSON.stringify({error:"url query parameter is required"}),{headers:{"Content-Type":"application/json"},status:404});let s=`${l.startsWith("http")?"":`http://localhost:${process.env.PORT||5173}`}${l}`,o=await fetch(s);if(!o.ok)return new Response(JSON.stringify({error:"Image not found",info:s}),{headers:{"Content-Type":"application/json"},status:404});let r=Buffer.from(await o.arrayBuffer()),i=await O.default(r).resize(u>0?u:void 0,d>0?d:void 0,{fit:y}).webp({quality:g>0?g:80,force:!0}).toBuffer();return o.headers.delete("Content-Type"),o.headers.delete("Content-Length"),new Response(i,{headers:{"Content-Type":"image/webp","Content-Length":`${i.byteLength}`,...o.headers.toJSON()}})}function A(c){return`
2
+ import{E as T}from"../chunk-x1ry5x7k.js";import{Yb as k}from"../chunk-nxr0f68f.js";import{join as C}from"path";import{jsx as I}from"react/jsx-runtime";function D(p){return p.map((e,f)=>{if(e.isDev)return I("style",{type:"text/css","data-vite-dev-id":e.id,children:e.content},e.id);else return I("style",{id:e?.id,type:"text/css",children:e.content},f)})}function j(p){return`
3
3
  <!DOCTYPE html>
4
4
  <html lang="en">
5
5
  <head>
@@ -21,16 +21,16 @@ import{D as C}from"../chunk-9877dbvm.js";import{E as F}from"../chunk-83snmykp.js
21
21
  </head>
22
22
  <body>
23
23
  <h1>Error</h1>
24
- <pre>${JSON.stringify(c,null,2)}</pre>
24
+ <pre>${JSON.stringify(p,null,2)}</pre>
25
25
  <script type="module" src="/refresh.js"></script>
26
26
  </body>
27
27
  </html>
28
- `}var _=process.cwd(),b=B(_,"app");async function U(){let c=process.cwd(),e=await(await import("vite")).createServer({root:c,logLevel:"error",server:{watch:{usePolling:!0,interval:100,ignored:["**/storage/**"]},hmr:{clientPort:5174}},appType:"custom",resolve:{alias:{"@/app":b}}});process.env.ROOT_DIR=_,process.env.APP_DIR=b;async function l(s){let{pathname:o}=new URL(s.url);if(o.startsWith("/refresh.js"))return new Response(`
28
+ `}var _=process.cwd(),$=C(_,"app");async function E(){let p=process.cwd(),e=await(await import("vite")).createServer({root:p,logLevel:"error",server:{watch:{usePolling:!0,interval:100,ignored:["**/storage/**"]},hmr:{clientPort:5174}},appType:"custom",resolve:{alias:{"@/app":$}}});process.env.ROOT_DIR=_,process.env.APP_DIR=$;async function f(o){let{pathname:i}=new URL(o.url);if(i.startsWith("/refresh.js"))return new Response(`
29
29
  import RefreshRuntime from "http://localhost:5173/@react-refresh";
30
30
  RefreshRuntime.injectIntoGlobalHook(window);
31
31
  window.\$RefreshReg\$ = () => {};
32
32
  window.\$RefreshSig\$ = () => (type) => type;
33
33
  window.__vite_plugin_react_preamble_installed__ = true;
34
- `,{headers:{"Content-Type":"application/javascript"}});try{let r=await fetch(`http://localhost:5174${o}`);if(r.ok)return r}catch(r){console.log(r)}}async function u(){try{return(await e.ssrLoadModule(B(b,"bootstrap.ts"),{fixStacktrace:!0})).app}catch(s){e.ws.send({type:"error",err:s}),console.error(s)}}async function d(s){let o=s.fetch.bind(s);return{fetch:async(r,i)=>{if(i.upgrade(r,{data:{headers:r.headers}}))return;if(!r.headers.get("x-forwarded-for")){let a=i.requestIP(r);r.headers.set("x-forwarded-for",a.address)}let{pathname:t}=new URL(r.url),n=await l(r);if(n instanceof Response)return n;if(t.startsWith("/__gemi/image"))return await D(r);try{let a=await o(r);if(a instanceof Response)return a;else{let f={},P=(m,$)=>`"${m}": () => import("${$}")`,p=[];for(let m of["404",...s.getFlatComponentTree.call(s)]){let $=`${process.env.APP_DIR}`,x=await e.ssrLoadModule(`${$}/views/${m}.tsx`);f[m]=x.default,p.push(P(m,`${$}/views/${m}.tsx`))}let v=`{${p.join(",")}}`,{default:h}=await e.ssrLoadModule(`${b}/app.css`),R=[];return R.push({isDev:!0,id:`${b}/app.css`,content:h}),await a({getStyles:()=>T(R),bootstrapModules:["/refresh.js","/app/client.tsx","http://localhost:5173/@vite/client"],viewImportMap:f,loaders:v,cssManifest:{}})}}catch(a){if(console.error(a),t.startsWith("/api"))return new Response(JSON.stringify({error:a.message}),{status:500,headers:{"Content-Type":"application/json"}});return new Response(A(a),{headers:{"Content-Type":"text/html"}})}},port:process.env.PORT||5173,websocket:s.websocket}}await e.listen(5174);let y=await u(),g=await d(y),w=Bun.serve(g);return y.onPublish((s,o,r)=>{w.publish(s,o,r)}),console.log(`Server started on http://localhost:${process.env.PORT||5173}`),e.watcher.on("change",async(s)=>{let o=s.replace(_,"");if(o.startsWith("/logs"))return;if(o.startsWith("/app/views")){console.log(`[vite] ${o} changed. \uD83C\uDF5C Hot reloading...`);return}console.log(`[vite] ${o} changed. Reloading...`);let r=e.moduleGraph.getModulesByFile(s)??[];for(let i of Array.from(r))e.moduleGraph.invalidateModule(i);try{let i=await u(),t=await d(i);i.onPublish((n,a,f)=>{w.publish(n,a,f)}),w.reload(t),e.ws.send({type:"custom",event:"http-reload"})}catch(i){console.log("Error on server reload"),console.log(i),e.ws.send({type:"error",err:i})}}),w}import{join as k}from"path";function N(c){let e=c.toString(),l=new Bun.CryptoHasher("sha1");return l.update(e),l.digest("hex")}if(!globalThis.URLPattern)globalThis.URLPattern=C;var I=process.cwd(),M=k(I,"app"),S=k(I,"dist");async function W(){let{app:c}=await import(`${S}/server/bootstrap.mjs`),e=await import(`${S}/client/.vite/manifest.json`),l=await import(`${S}/server/.vite/manifest.json`);process.env.ROOT_DIR=I,process.env.APP_DIR=M,process.env.DIST_DIR=S;let u={},d={},y=(t,n)=>`"${t}": () => import("${n}")`,g=[];for(let t of["404",...c.getFlatComponentTree.call(c)]){let n=l[`app/views/${t}.tsx`];if(!n?.file){console.log(`Server file not found for ${t}`),console.log(n);let P=Object.keys(l),p=`app/views/${t}.tsx`;console.log(`${p} not found in server manifest`),console.log(P)}let a=await import(`${process.env.DIST_DIR}/server/${n?.file}`);u[t]=a.default;let f=e[`app/views/${t}.tsx`];if(f?.css&&f?.css.length>0)d[t]=f?.css;if(f)g.push(y(t,`/${f?.file}`))}let w=`{${g.join(",")}}`,o=await Bun.file(`${S}/client/${e["app/client.tsx"].css}`).text();async function r(t){let{pathname:n}=new URL(t.url);if(n.startsWith("/__gemi/image"))return await D(t);let a=new C({pathname:"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|ico|ttf)"}),f=n.startsWith("/api");if(a.test({pathname:n})&&!f){let p=new URL(t.url),v=t.url.replace(p.origin,"").split("?")[0],h=Bun.file(`dist/client${v.replace("/assets/assets","/assets")}`);if(!h)return new Response("Not found",{status:404});let R=N(h.lastModified);return new Response(h.stream(),{headers:{"Content-Type":h.type,"Cache-Control":"public, max-age=31536000, must-revalidate","Content-Length":String(h.size),ETag:R}})}let P=c.fetch.bind(c);try{let p=await P(t);if(p instanceof Response)return p;else{let v=[];return v.push({content:o}),await p({getStyles:async(R)=>{for(let m of R){let $=e[`app/views/${m}.tsx`];for(let x of $?.css??[]){let E=Bun.file(`${process.env.DIST_DIR}/client/${x}`);v.push({id:x,content:await E.text()})}}return T(v)},bootstrapModules:[`/${e["app/client.tsx"].file}`],loaders:w,viewImportMap:u,cssManifest:d})}}catch(p){if(console.error(p),n.startsWith("/api"))return new Response(JSON.stringify({error:p.message}),{status:500,headers:{"Content-Type":"application/json"}});return new Response(p.stack,{status:500})}}let i=Bun.serve({fetch:async(t,n)=>{if(!t.headers.get("x-forwarded-for")){let a=n.requestIP(t);t.headers.set("x-forwarded-for",a.address)}return await r(t)},port:process.env.PORT||5173});return console.log("Production server running on",i.url.href),i}export{W as startProdServer,U as startDevServer};
34
+ `,{headers:{"Content-Type":"application/javascript"}});try{let s=await fetch(`http://localhost:5174${i}`);if(s.ok)return s}catch(s){console.log(s)}}async function m(){try{return(await e.ssrLoadModule(C($,"bootstrap.ts"),{fixStacktrace:!0})).app}catch(o){e.ws.send({type:"error",err:o}),console.error(o)}}async function y(o){let i=o.fetch.bind(o);return{fetch:async(s,c)=>{if(c.upgrade(s,{data:{headers:s.headers}}))return;if(!s.headers.get("x-forwarded-for")){let r=c.requestIP(s);s.headers.set("x-forwarded-for",r.address)}let{pathname:t}=new URL(s.url),n=await f(s);if(n instanceof Response)return n;try{let r=await i(s);if(r instanceof Response)return r;else{let l={},R=(d,g)=>`"${d}": () => import("${g}")`,a=[];for(let d of["404",...o.getFlatComponentTree.call(o)]){let g=`${process.env.APP_DIR}`,b=await e.ssrLoadModule(`${g}/views/${d}.tsx`);l[d]=b.default,a.push(R(d,`${g}/views/${d}.tsx`))}let h=`{${a.join(",")}}`,{default:u}=await e.ssrLoadModule(`${$}/app.css`),w=[];return w.push({isDev:!0,id:`${$}/app.css`,content:u}),await r({getStyles:()=>D(w),bootstrapModules:["/refresh.js","/app/client.tsx","http://localhost:5173/@vite/client"],viewImportMap:l,loaders:h,cssManifest:{}})}}catch(r){if(console.error(r),t.startsWith("/api"))return new Response(JSON.stringify({error:r.message}),{status:500,headers:{"Content-Type":"application/json"}});return new Response(j(r),{headers:{"Content-Type":"text/html"}})}},port:process.env.PORT||5173,websocket:o.websocket}}await e.listen(5174);let S=await m(),x=await y(S),v=Bun.serve(x);return S.onPublish((o,i,s)=>{v.publish(o,i,s)}),console.log(`Server started on http://localhost:${process.env.PORT||5173}`),e.watcher.on("change",async(o)=>{let i=o.replace(_,"");if(i.startsWith("/logs"))return;if(i.startsWith("/app/views")){console.log(`[vite] ${i} changed. \uD83C\uDF5C Hot reloading...`);return}console.log(`[vite] ${i} changed. Reloading...`);let s=e.moduleGraph.getModulesByFile(o)??[];for(let c of Array.from(s))e.moduleGraph.invalidateModule(c);try{let c=await m(),t=await y(c);c.onPublish((n,r,l)=>{v.publish(n,r,l)}),v.reload(t),e.ws.send({type:"custom",event:"http-reload"})}catch(c){console.log("Error on server reload"),console.log(c),e.ws.send({type:"error",err:c})}}),v}import{join as O}from"path";function L(p){let e=p.toString(),f=new Bun.CryptoHasher("sha1");return f.update(e),f.digest("hex")}if(!globalThis.URLPattern)globalThis.URLPattern=T;var A=process.cwd(),F=O(A,"app"),P=O(A,"dist");async function M(){let{app:p}=await import(`${P}/server/bootstrap.mjs`),e=await import(`${P}/client/.vite/manifest.json`),f=await import(`${P}/server/.vite/manifest.json`);process.env.ROOT_DIR=A,process.env.APP_DIR=F,process.env.DIST_DIR=P;let m={},y={},S=(t,n)=>`"${t}": () => import("${n}")`,x=[];for(let t of["404",...p.getFlatComponentTree.call(p)]){let n=f[`app/views/${t}.tsx`];if(!n?.file){console.log(`Server file not found for ${t}`),console.log(n);let R=Object.keys(f),a=`app/views/${t}.tsx`;console.log(`${a} not found in server manifest`),console.log(R)}let r=await import(`${process.env.DIST_DIR}/server/${n?.file}`);m[t]=r.default;let l=e[`app/views/${t}.tsx`];if(l?.css&&l?.css.length>0)y[t]=l?.css;if(l)x.push(S(t,`/${l?.file}`))}let v=`{${x.join(",")}}`,i=await Bun.file(`${P}/client/${e["app/client.tsx"].css}`).text();async function s(t){let{pathname:n}=new URL(t.url),r=new T({pathname:"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|ico|ttf)"}),l=n.startsWith("/api");if(r.test({pathname:n})&&!l){let a=new URL(t.url),h=t.url.replace(a.origin,"").split("?")[0],u=Bun.file(`dist/client${h.replace("/assets/assets","/assets")}`);if(!u)return new Response("Not found",{status:404});let w=L(u.lastModified);return new Response(u.stream(),{headers:{"Content-Type":u.type,"Cache-Control":"public, max-age=31536000, must-revalidate","Content-Length":String(u.size),ETag:w}})}let R=p.fetch.bind(p);try{let a=await R(t);if(a instanceof Response)return a;else{let h=[];return h.push({content:i}),await a({getStyles:async(w)=>{for(let d of w){let g=e[`app/views/${d}.tsx`];for(let b of g?.css??[]){let B=Bun.file(`${process.env.DIST_DIR}/client/${b}`);h.push({id:b,content:await B.text()})}}return D(h)},bootstrapModules:[`/${e["app/client.tsx"].file}`],loaders:v,viewImportMap:m,cssManifest:y})}}catch(a){if(console.error(a),n.startsWith("/api"))return new Response(JSON.stringify({error:a.message}),{status:500,headers:{"Content-Type":"application/json"}});return new Response(a.stack,{status:500})}}let c=Bun.serve({fetch:async(t,n)=>{if(!t.headers.get("x-forwarded-for")){let r=n.requestIP(t);t.headers.set("x-forwarded-for",r.address)}return await s(t)},port:process.env.PORT||5173});return console.log("Production server running on",c.url.href),c}export{M as startProdServer,E as startDevServer};
35
35
 
36
- //# debugId=BE91FD614E013E9E64756E2164756E21
36
+ //# debugId=82E088ADD333517464756E2164756E21
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../server/dev.ts", "../server/styles.tsx", "../server/imageHandler.ts", "../server/renderErrorPage.ts", "../server/prod.ts", "../server/generateEtag.ts", "../../../node_modules/urlpattern-polyfill/index.js"],
3
+ "sources": ["../server/dev.ts", "../server/styles.tsx", "../server/renderErrorPage.ts", "../server/prod.ts", "../server/generateEtag.ts", "../../../node_modules/urlpattern-polyfill/index.js"],
4
4
  "sourcesContent": [
5
- "import { join } from \"path\";\nimport type { App } from \"../app/App\";\nimport { createStyles } from \"./styles\";\nimport { imageHandler } from \"./imageHandler\";\nimport { renderErrorPage } from \"./renderErrorPage\";\nimport { Serve } from \"bun\";\n\nconst rootDir = process.cwd();\nconst appDir = join(rootDir, \"app\");\n\nexport async function startDevServer() {\n const root = process.cwd();\n\n const vite = await (\n await import(\"vite\")\n ).createServer({\n root,\n logLevel: \"error\",\n server: {\n watch: {\n usePolling: true,\n interval: 100,\n ignored: [\"**/storage/**\"],\n },\n hmr: {\n clientPort: 5174,\n },\n },\n appType: \"custom\",\n resolve: {\n alias: {\n \"@/app\": appDir,\n },\n },\n });\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n\n async function handleDevRequests(req: Request): Promise<Response> {\n const { pathname } = new URL(req.url);\n if (pathname.startsWith(\"/refresh.js\")) {\n return new Response(\n `\n import RefreshRuntime from \"http://localhost:5173/@react-refresh\";\n RefreshRuntime.injectIntoGlobalHook(window);\n window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n `,\n {\n headers: {\n \"Content-Type\": \"application/javascript\",\n },\n },\n );\n }\n\n try {\n const res = await fetch(`http://localhost:5174${pathname}`);\n\n if (res.ok) {\n return res;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n async function getApp(): Promise<App> {\n try {\n return (\n await vite.ssrLoadModule(join(appDir, \"bootstrap.ts\"), {\n fixStacktrace: true,\n })\n ).app;\n } catch (err) {\n vite.ws.send({ type: \"error\", err });\n console.error(err);\n }\n }\n\n async function createServe(app: App): Promise<Serve> {\n const handler = app.fetch.bind(app);\n return {\n fetch: async (req, server) => {\n if (server.upgrade(req, { data: { headers: req.headers } })) {\n return; // do not return a Response\n }\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n\n const { pathname } = new URL(req.url);\n\n const devResponse = await handleDevRequests(req);\n if (devResponse instanceof Response) {\n return devResponse;\n }\n\n if (pathname.startsWith(\"/__gemi/image\")) {\n return await imageHandler(req);\n }\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const viewImportMap = {};\n const template = (viewName: string, path: string) =>\n `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\n \"404\",\n ...app.getFlatComponentTree.call(app),\n ]) {\n if (process.env.NODE_ENV === \"test\") {\n break;\n }\n const appDir = `${process.env.APP_DIR}`;\n const mod = await vite.ssrLoadModule(\n `${appDir}/views/${fileName}.tsx`,\n );\n viewImportMap[fileName] = mod.default;\n templates.push(\n template(fileName, `${appDir}/views/${fileName}.tsx`),\n );\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n const { default: css } = await vite.ssrLoadModule(\n `${appDir}/app.css`,\n );\n\n const styles = [];\n styles.push({\n isDev: true,\n id: `${appDir}/app.css`,\n content: css,\n });\n return await result({\n getStyles: () => createStyles(styles),\n bootstrapModules: [\n \"/refresh.js\",\n \"/app/client.tsx\",\n \"http://localhost:5173/@vite/client\",\n ],\n viewImportMap,\n loaders,\n cssManifest: {},\n });\n }\n } catch (err) {\n console.error(err);\n if (pathname.startsWith(\"/api\")) {\n return new Response(JSON.stringify({ error: err.message }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n return new Response(renderErrorPage(err), {\n headers: { \"Content-Type\": \"text/html\" },\n });\n }\n },\n port: process.env.PORT || 5173,\n websocket: app.websocket,\n };\n }\n\n await vite.listen(5174);\n\n const app = await getApp();\n const serve = await createServe(app);\n const server = Bun.serve(serve);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n\n console.log(`Server started on http://localhost:${process.env.PORT || 5173}`);\n\n vite.watcher.on(\"change\", async (file) => {\n const fileRelativePath = file.replace(rootDir, \"\");\n if (fileRelativePath.startsWith(\"/logs\")) {\n return;\n }\n if (fileRelativePath.startsWith(\"/app/views\")) {\n console.log(`[vite] ${fileRelativePath} changed. 🍜 Hot reloading...`);\n return;\n }\n\n console.log(`[vite] ${fileRelativePath} changed. Reloading...`);\n const modules = vite.moduleGraph.getModulesByFile(file) ?? [];\n for (const mod of Array.from(modules)) {\n vite.moduleGraph.invalidateModule(mod);\n }\n\n try {\n const app = await getApp();\n const serve = await createServe(app);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n server.reload(serve);\n vite.ws.send({\n type: \"custom\",\n event: \"http-reload\",\n });\n } catch (err) {\n console.log(\"Error on server reload\");\n console.log(err);\n vite.ws.send({\n type: \"error\",\n err,\n });\n }\n });\n\n return server;\n}\n",
5
+ "import { join } from \"path\";\nimport type { App } from \"../app/App\";\nimport { createStyles } from \"./styles\";\nimport { imageHandler } from \"./imageHandler\";\nimport { renderErrorPage } from \"./renderErrorPage\";\nimport { Serve } from \"bun\";\n\nconst rootDir = process.cwd();\nconst appDir = join(rootDir, \"app\");\n\nexport async function startDevServer() {\n const root = process.cwd();\n\n const vite = await (\n await import(\"vite\")\n ).createServer({\n root,\n logLevel: \"error\",\n server: {\n watch: {\n usePolling: true,\n interval: 100,\n ignored: [\"**/storage/**\"],\n },\n hmr: {\n clientPort: 5174,\n },\n },\n appType: \"custom\",\n resolve: {\n alias: {\n \"@/app\": appDir,\n },\n },\n });\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n\n async function handleDevRequests(req: Request): Promise<Response> {\n const { pathname } = new URL(req.url);\n if (pathname.startsWith(\"/refresh.js\")) {\n return new Response(\n `\n import RefreshRuntime from \"http://localhost:5173/@react-refresh\";\n RefreshRuntime.injectIntoGlobalHook(window);\n window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n `,\n {\n headers: {\n \"Content-Type\": \"application/javascript\",\n },\n },\n );\n }\n\n try {\n const res = await fetch(`http://localhost:5174${pathname}`);\n\n if (res.ok) {\n return res;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n async function getApp(): Promise<App> {\n try {\n return (\n await vite.ssrLoadModule(join(appDir, \"bootstrap.ts\"), {\n fixStacktrace: true,\n })\n ).app;\n } catch (err) {\n vite.ws.send({ type: \"error\", err });\n console.error(err);\n }\n }\n\n async function createServe(app: App): Promise<Serve> {\n const handler = app.fetch.bind(app);\n return {\n fetch: async (req, server) => {\n if (server.upgrade(req, { data: { headers: req.headers } })) {\n return; // do not return a Response\n }\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n\n const { pathname } = new URL(req.url);\n\n const devResponse = await handleDevRequests(req);\n if (devResponse instanceof Response) {\n return devResponse;\n }\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const viewImportMap = {};\n const template = (viewName: string, path: string) =>\n `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\n \"404\",\n ...app.getFlatComponentTree.call(app),\n ]) {\n if (process.env.NODE_ENV === \"test\") {\n break;\n }\n const appDir = `${process.env.APP_DIR}`;\n const mod = await vite.ssrLoadModule(\n `${appDir}/views/${fileName}.tsx`,\n );\n viewImportMap[fileName] = mod.default;\n templates.push(\n template(fileName, `${appDir}/views/${fileName}.tsx`),\n );\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n const { default: css } = await vite.ssrLoadModule(\n `${appDir}/app.css`,\n );\n\n const styles = [];\n styles.push({\n isDev: true,\n id: `${appDir}/app.css`,\n content: css,\n });\n return await result({\n getStyles: () => createStyles(styles),\n bootstrapModules: [\n \"/refresh.js\",\n \"/app/client.tsx\",\n \"http://localhost:5173/@vite/client\",\n ],\n viewImportMap,\n loaders,\n cssManifest: {},\n });\n }\n } catch (err) {\n console.error(err);\n if (pathname.startsWith(\"/api\")) {\n return new Response(JSON.stringify({ error: err.message }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n return new Response(renderErrorPage(err), {\n headers: { \"Content-Type\": \"text/html\" },\n });\n }\n },\n port: process.env.PORT || 5173,\n websocket: app.websocket,\n };\n }\n\n await vite.listen(5174);\n\n const app = await getApp();\n const serve = await createServe(app);\n const server = Bun.serve(serve);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n\n console.log(`Server started on http://localhost:${process.env.PORT || 5173}`);\n\n vite.watcher.on(\"change\", async (file) => {\n const fileRelativePath = file.replace(rootDir, \"\");\n if (fileRelativePath.startsWith(\"/logs\")) {\n return;\n }\n if (fileRelativePath.startsWith(\"/app/views\")) {\n console.log(`[vite] ${fileRelativePath} changed. 🍜 Hot reloading...`);\n return;\n }\n\n console.log(`[vite] ${fileRelativePath} changed. Reloading...`);\n const modules = vite.moduleGraph.getModulesByFile(file) ?? [];\n for (const mod of Array.from(modules)) {\n vite.moduleGraph.invalidateModule(mod);\n }\n\n try {\n const app = await getApp();\n const serve = await createServe(app);\n app.onPublish(\n (\n topic: string,\n data: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,\n compress?: boolean,\n ) => {\n server.publish(topic, data, compress);\n },\n );\n server.reload(serve);\n vite.ws.send({\n type: \"custom\",\n event: \"http-reload\",\n });\n } catch (err) {\n console.log(\"Error on server reload\");\n console.log(err);\n vite.ws.send({\n type: \"error\",\n err,\n });\n }\n });\n\n return server;\n}\n",
6
6
  "export function createStyles(styles) {\n return styles.map((style, i) => {\n if (style.isDev) {\n return (\n <style key={style.id} type=\"text/css\" data-vite-dev-id={style.id}>\n {style.content}\n </style>\n );\n } else {\n return (\n <style key={i} id={style?.id} type=\"text/css\">\n {style.content}\n </style>\n );\n }\n });\n}\n",
7
- "import sharp, { type FitEnum } from \"sharp\";\n\nexport async function imageHandler(req: Request): Promise<Response> {\n const url = new URL(req.url);\n const rawImageUrl = url.searchParams.get(\"url\");\n const width = Number(url.searchParams.get(\"w\"));\n const height = Number(url.searchParams.get(\"h\"));\n const fit = (url.searchParams.get(\"fit\") ??\n \"cover\") as unknown as keyof FitEnum;\n const quality = Number(url.searchParams.get(\"q\"));\n\n if (!rawImageUrl) {\n return new Response(\n JSON.stringify({\n error: \"url query parameter is required\",\n }),\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n status: 404,\n },\n );\n }\n const prefix = rawImageUrl.startsWith(\"http\")\n ? \"\"\n : `http://localhost:${process.env.PORT || 5173}`;\n const fullImageUrl = `${prefix}${rawImageUrl}`;\n const res = await fetch(fullImageUrl);\n if (!res.ok) {\n return new Response(\n JSON.stringify({\n error: \"Image not found\",\n info: fullImageUrl,\n }),\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n status: 404,\n },\n );\n }\n const imageBuffer = Buffer.from(await res.arrayBuffer());\n\n const buffer = await sharp(imageBuffer)\n .resize(width > 0 ? width : undefined, height > 0 ? height : undefined, {\n fit,\n })\n .webp({ quality: quality > 0 ? quality : 80, force: true })\n .toBuffer();\n\n res.headers.delete(\"Content-Type\");\n res.headers.delete(\"Content-Length\");\n return new Response(buffer, {\n headers: {\n \"Content-Type\": \"image/webp\",\n \"Content-Length\": `${buffer.byteLength}`,\n ...res.headers.toJSON(),\n },\n });\n}\n",
8
7
  "export function renderErrorPage(err: any) {\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1.0\"\n />\n <title>Error</title>\n <style>\n body {\n font-family: Arial, sans-serif;\n padding: 20px;\n }\n h1 {\n color: red;\n }\n </style>\n </head>\n <body>\n <h1>Error</h1>\n <pre>${JSON.stringify(err, null, 2)}</pre>\n <script type=\"module\" src=\"/refresh.js\"></script>\n </body>\n</html>\n`;\n}\n",
9
- "import { join } from \"path\";\nimport { imageHandler } from \"./imageHandler\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { createStyles } from \"./styles\";\n\nconst rootDir = process.cwd();\n\nconst appDir = join(rootDir, \"app\");\nconst distDir = join(rootDir, \"dist\");\n\nexport async function startProdServer() {\n const { app } = await import(`${distDir}/server/bootstrap.mjs`);\n const manifest = await import(`${distDir}/client/.vite/manifest.json`);\n const serverManifest = await import(`${distDir}/server/.vite/manifest.json`);\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n process.env.DIST_DIR = distDir;\n\n const viewImportMap = {};\n const cssManifest = {};\n const template = (viewName: string, path: string) =>\n `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\"404\", ...app.getFlatComponentTree.call(app)]) {\n const serverFile = serverManifest[`app/views/${fileName}.tsx`];\n if (!serverFile?.file) {\n console.log(`Server file not found for ${fileName}`);\n console.log(serverFile);\n const files = Object.keys(serverManifest);\n const path = `app/views/${fileName}.tsx`;\n console.log(`${path} not found in server manifest`);\n console.log(files);\n }\n const mod = await import(\n `${process.env.DIST_DIR}/server/${serverFile?.file}`\n );\n viewImportMap[fileName] = mod.default;\n const clientFile = manifest[`app/views/${fileName}.tsx`];\n\n if (clientFile?.css && clientFile?.css.length > 0) {\n cssManifest[fileName] = clientFile?.css;\n }\n if (clientFile) {\n templates.push(template(fileName, `/${clientFile?.file}`));\n }\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n\n const appCssFile = Bun.file(\n `${distDir}/client/${manifest[\"app/client.tsx\"].css}`,\n );\n const appCSSContent = await appCssFile.text();\n\n async function requestHandler(req: Request) {\n const { pathname } = new URL(req.url);\n\n if (pathname.startsWith(\"/__gemi/image\")) {\n return await imageHandler(req);\n }\n\n const pattern = new URLPattern({\n pathname: \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|ico|ttf)\",\n });\n\n const isApi = pathname.startsWith(\"/api\");\n\n if (pattern.test({ pathname }) && !isApi) {\n const url = new URL(req.url);\n const filePath = req.url.replace(url.origin, \"\").split(\"?\")[0];\n const file = Bun.file(\n `dist/client${filePath.replace(\"/assets/assets\", \"/assets\")}`,\n );\n if (!file) {\n return new Response(\"Not found\", { status: 404 });\n }\n const etag = generateETag(file.lastModified);\n return new Response(file.stream(), {\n headers: {\n \"Content-Type\": file.type,\n \"Cache-Control\": \"public, max-age=31536000, must-revalidate\",\n \"Content-Length\": String(file.size),\n ETag: etag,\n },\n });\n }\n\n const handler = app.fetch.bind(app);\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const styles = [];\n\n styles.push({\n content: appCSSContent,\n });\n\n const getStyles = async (currentViews: string[]) => {\n for (const view of currentViews) {\n const clientFile = manifest[`app/views/${view}.tsx`];\n for (const cssFile of clientFile?.css ?? []) {\n const css = Bun.file(`${process.env.DIST_DIR}/client/${cssFile}`);\n styles.push({\n id: cssFile,\n content: await css.text(),\n });\n }\n }\n return createStyles(styles);\n };\n\n return await result({\n getStyles,\n bootstrapModules: [`/${manifest[\"app/client.tsx\"].file}`],\n loaders,\n viewImportMap,\n cssManifest,\n });\n }\n } catch (err) {\n console.error(err);\n if (pathname.startsWith(\"/api\")) {\n return new Response(JSON.stringify({ error: err.message }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n return new Response(err.stack, { status: 500 });\n }\n }\n\n const server = Bun.serve({\n fetch: async (req, server) => {\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await requestHandler(req);\n },\n port: process.env.PORT || 5173,\n });\n\n console.log(\"Production server running on\", server.url.href);\n\n return server;\n}\n",
8
+ "import { join } from \"path\";\nimport { generateETag } from \"./generateEtag\";\nimport { URLPattern } from \"urlpattern-polyfill\";\nimport { createStyles } from \"./styles\";\n\nconst rootDir = process.cwd();\n\nconst appDir = join(rootDir, \"app\");\nconst distDir = join(rootDir, \"dist\");\n\nexport async function startProdServer() {\n const { app } = await import(`${distDir}/server/bootstrap.mjs`);\n const manifest = await import(`${distDir}/client/.vite/manifest.json`);\n const serverManifest = await import(`${distDir}/server/.vite/manifest.json`);\n\n process.env.ROOT_DIR = rootDir;\n process.env.APP_DIR = appDir;\n process.env.DIST_DIR = distDir;\n\n const viewImportMap = {};\n const cssManifest = {};\n const template = (viewName: string, path: string) =>\n `\"${viewName}\": () => import(\"${path}\")`;\n const templates = [];\n\n for (const fileName of [\"404\", ...app.getFlatComponentTree.call(app)]) {\n const serverFile = serverManifest[`app/views/${fileName}.tsx`];\n if (!serverFile?.file) {\n console.log(`Server file not found for ${fileName}`);\n console.log(serverFile);\n const files = Object.keys(serverManifest);\n const path = `app/views/${fileName}.tsx`;\n console.log(`${path} not found in server manifest`);\n console.log(files);\n }\n const mod = await import(\n `${process.env.DIST_DIR}/server/${serverFile?.file}`\n );\n viewImportMap[fileName] = mod.default;\n const clientFile = manifest[`app/views/${fileName}.tsx`];\n\n if (clientFile?.css && clientFile?.css.length > 0) {\n cssManifest[fileName] = clientFile?.css;\n }\n if (clientFile) {\n templates.push(template(fileName, `/${clientFile?.file}`));\n }\n }\n\n const loaders = `{${templates.join(\",\")}}`;\n\n const appCssFile = Bun.file(\n `${distDir}/client/${manifest[\"app/client.tsx\"].css}`,\n );\n const appCSSContent = await appCssFile.text();\n\n async function requestHandler(req: Request) {\n const { pathname } = new URL(req.url);\n\n const pattern = new URLPattern({\n pathname: \"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|ico|ttf)\",\n });\n\n const isApi = pathname.startsWith(\"/api\");\n\n if (pattern.test({ pathname }) && !isApi) {\n const url = new URL(req.url);\n const filePath = req.url.replace(url.origin, \"\").split(\"?\")[0];\n const file = Bun.file(\n `dist/client${filePath.replace(\"/assets/assets\", \"/assets\")}`,\n );\n if (!file) {\n return new Response(\"Not found\", { status: 404 });\n }\n const etag = generateETag(file.lastModified);\n return new Response(file.stream(), {\n headers: {\n \"Content-Type\": file.type,\n \"Cache-Control\": \"public, max-age=31536000, must-revalidate\",\n \"Content-Length\": String(file.size),\n ETag: etag,\n },\n });\n }\n\n const handler = app.fetch.bind(app);\n\n try {\n const result = await handler(req);\n if (result instanceof Response) {\n return result;\n } else {\n const styles = [];\n\n styles.push({\n content: appCSSContent,\n });\n\n const getStyles = async (currentViews: string[]) => {\n for (const view of currentViews) {\n const clientFile = manifest[`app/views/${view}.tsx`];\n for (const cssFile of clientFile?.css ?? []) {\n const css = Bun.file(`${process.env.DIST_DIR}/client/${cssFile}`);\n styles.push({\n id: cssFile,\n content: await css.text(),\n });\n }\n }\n return createStyles(styles);\n };\n\n return await result({\n getStyles,\n bootstrapModules: [`/${manifest[\"app/client.tsx\"].file}`],\n loaders,\n viewImportMap,\n cssManifest,\n });\n }\n } catch (err) {\n console.error(err);\n if (pathname.startsWith(\"/api\")) {\n return new Response(JSON.stringify({ error: err.message }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n return new Response(err.stack, { status: 500 });\n }\n }\n\n const server = Bun.serve({\n fetch: async (req, server) => {\n if (!req.headers.get(\"x-forwarded-for\")) {\n const ip = server.requestIP(req);\n req.headers.set(\"x-forwarded-for\", ip.address);\n }\n return await requestHandler(req);\n },\n port: process.env.PORT || 5173,\n });\n\n console.log(\"Production server running on\", server.url.href);\n\n return server;\n}\n",
10
9
  "export function generateETag(lastModified: number): string {\n // Assuming the last modified timestamp is in milliseconds\n const lastModifiedStr = lastModified.toString();\n\n const hasher = new Bun.CryptoHasher(\"sha1\");\n hasher.update(lastModifiedStr);\n const hash = hasher.digest(\"hex\");\n\n return hash;\n}\n",
11
10
  "import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n"
12
11
  ],
13
- "mappings": "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",
14
- "debugId": "BE91FD614E013E9E64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "82E088ADD333517464756E2164756E21",
15
14
  "names": []
16
15
  }
@@ -0,0 +1,14 @@
1
+ import { ApiRouter } from "../../http";
2
+ import { ServiceContainer } from "../ServiceContainer";
3
+ import { ImageOptimizationServiceProvider } from "./ImageOptimizationServiceProvider";
4
+ export declare class ImageOptimizationRouter extends ApiRouter {
5
+ routes: {
6
+ "/resize": import("../../http/ApiRouter").FileHandler;
7
+ };
8
+ }
9
+ export declare class ImageOptimizationServiceContainer extends ServiceContainer {
10
+ service: ImageOptimizationServiceProvider;
11
+ static _name: string;
12
+ constructor(service: ImageOptimizationServiceProvider);
13
+ }
14
+ //# sourceMappingURL=ImageOptimizationServiceContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageOptimizationServiceContainer.d.ts","sourceRoot":"","sources":["../../../services/image-optimization/ImageOptimizationServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF,qBAAa,uBAAwB,SAAQ,SAAS;IACpD,MAAM;;MA6DJ;CACH;AAED,qBAAa,iCAAkC,SAAQ,gBAAgB;IAGlD,OAAO,EAAE,gCAAgC;IAF5D,MAAM,CAAC,KAAK,SAAuC;gBAEhC,OAAO,EAAE,gCAAgC;CAG7D"}
@@ -0,0 +1,7 @@
1
+ import { ServiceProvider } from "../ServiceProvider";
2
+ import { Sharp } from "./drivers/SharpDriver";
3
+ export declare class ImageOptimizationServiceProvider extends ServiceProvider {
4
+ driver: Sharp;
5
+ boot(): void;
6
+ }
7
+ //# sourceMappingURL=ImageOptimizationServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageOptimizationServiceProvider.d.ts","sourceRoot":"","sources":["../../../services/image-optimization/ImageOptimizationServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,qBAAa,gCAAiC,SAAQ,eAAe;IACnE,MAAM,QAAe;IACrB,IAAI;CACL"}
@@ -0,0 +1,5 @@
1
+ import type { ResizeParameters } from "./types";
2
+ export declare abstract class ImageOptimizationDriver {
3
+ abstract resize(buffer: Buffer, parameters: ResizeParameters): Promise<Buffer>;
4
+ }
5
+ //# sourceMappingURL=ImageOptimizationDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageOptimizationDriver.d.ts","sourceRoot":"","sources":["../../../../services/image-optimization/drivers/ImageOptimizationDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,8BAAsB,uBAAuB;IAC3C,QAAQ,CAAC,MAAM,CACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC;CACnB"}
@@ -0,0 +1,6 @@
1
+ import { ImageOptimizationDriver } from "./ImageOptimizationDriver";
2
+ import type { ResizeParameters } from "./types";
3
+ export declare class Sharp extends ImageOptimizationDriver {
4
+ resize(buffer: Buffer, parameters: ResizeParameters): Promise<any>;
5
+ }
6
+ //# sourceMappingURL=SharpDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharpDriver.d.ts","sourceRoot":"","sources":["../../../../services/image-optimization/drivers/SharpDriver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,qBAAa,KAAM,SAAQ,uBAAuB;IAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB;CAS1D"}
@@ -0,0 +1,14 @@
1
+ export type FitEnum = {
2
+ contain: "contain";
3
+ cover: "cover";
4
+ fill: "fill";
5
+ inside: "inside";
6
+ outside: "outside";
7
+ };
8
+ export type ResizeParameters = {
9
+ width: number;
10
+ height: number;
11
+ quality?: number;
12
+ fit?: keyof FitEnum;
13
+ };
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../services/image-optimization/drivers/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC;CACrB,CAAC"}
@@ -17,4 +17,8 @@ export { LoggingServiceProvider } from "./logging/LoggingServiceProvider";
17
17
  export type { LogEntry } from "./logging/types";
18
18
  export { QueueServiceProvider } from "./queue/QueueServiceProvider";
19
19
  export { Job } from "./queue/Job";
20
+ export { ImageOptimizationServiceProvider } from "./image-optimization/ImageOptimizationServiceProvider";
21
+ export type { FitEnum, ResizeParameters, } from "./image-optimization/drivers/types";
22
+ export { ImageOptimizationDriver } from "./image-optimization/drivers/ImageOptimizationDriver";
23
+ export { Sharp } from "./image-optimization/drivers/SharpDriver";
20
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAI7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAI7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AACzG,YAAY,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC"}