gemi 0.4.73 → 0.4.75

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 (112) hide show
  1. package/dist/app/App.d.ts +0 -1
  2. package/dist/app/App.d.ts.map +1 -1
  3. package/dist/app/index.js +61 -61
  4. package/dist/bin/index.js +10 -2
  5. package/dist/chunk-168ace6fc79b185b.js +2 -0
  6. package/dist/chunk-1c56f79378e4123d.js +2 -0
  7. package/dist/{chunk-e9695f3cdafee20b.js → chunk-20e12a96dfe36b97.js} +1 -1
  8. package/dist/chunk-269dd2cd89aa1c32.js +2 -0
  9. package/dist/{chunk-c4424c04ab2ac6d1.js → chunk-28c7d04b6f555350.js} +2 -2
  10. package/dist/chunk-30daf610f498e198.js +6 -0
  11. package/dist/chunk-3abc648638ed6645.js +18 -0
  12. package/dist/chunk-48b2990a93ae50b3.js +2 -0
  13. package/dist/{chunk-0c3a31bca25291a6.js → chunk-4ad752c87b795617.js} +2 -2
  14. package/dist/{chunk-b9d952fe3db3df1c.js → chunk-4e37f45d636da627.js} +2 -2
  15. package/dist/chunk-52dd5453e79e1cef.js +2 -0
  16. package/dist/chunk-5c1c113b94101135.js +2 -0
  17. package/dist/{chunk-474c8dc0ac6b3cdf.js → chunk-5ea45ebea038bef4.js} +2 -2
  18. package/dist/chunk-5fb9d31b7b4629e9.js +1 -0
  19. package/dist/chunk-8bf925705fdcef0c.js +2 -0
  20. package/dist/{chunk-2c49184ec3c45a26.js → chunk-9631e167bae739a0.js} +1 -1
  21. package/dist/chunk-9c05674e98ebc485.js +2 -0
  22. package/dist/chunk-a5da5f8d6f9e8633.js +2 -0
  23. package/dist/chunk-b943cac32cc3670f.js +2 -0
  24. package/dist/chunk-d4eceea16ddc567d.js +9 -0
  25. package/dist/{chunk-7ce930fe69575c87.js → chunk-e3d242546d1a2927.js} +1 -1
  26. package/dist/chunk-e64fe80074576b85.js +2 -0
  27. package/dist/chunk-f9d7921dc209275a.js +2 -0
  28. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  29. package/dist/client/Link.d.ts +1 -1
  30. package/dist/client/Link.d.ts.map +1 -1
  31. package/dist/client/QueryManagerContext.d.ts +3 -3
  32. package/dist/client/QueryManagerContext.d.ts.map +1 -1
  33. package/dist/client/ServerDataProvider.d.ts +1 -0
  34. package/dist/client/ServerDataProvider.d.ts.map +1 -1
  35. package/dist/client/index.js +55 -25
  36. package/dist/client/useNavigate.d.ts.map +1 -1
  37. package/dist/client/useQuery.d.ts.map +1 -1
  38. package/dist/email/index.js +1 -1
  39. package/dist/facades/Prefetch.d.ts +25 -0
  40. package/dist/facades/Prefetch.d.ts.map +1 -0
  41. package/dist/facades/index.d.ts +1 -0
  42. package/dist/facades/index.d.ts.map +1 -1
  43. package/dist/facades/index.js +1 -1
  44. package/dist/http/ApiRouter.d.ts +1 -1
  45. package/dist/http/ApiRouter.d.ts.map +1 -1
  46. package/dist/http/HttpRequest.d.ts +5 -1
  47. package/dist/http/HttpRequest.d.ts.map +1 -1
  48. package/dist/http/Middleware.d.ts +3 -1
  49. package/dist/http/Middleware.d.ts.map +1 -1
  50. package/dist/http/MiddlewareServiceProvider.d.ts +1 -1
  51. package/dist/http/MiddlewareServiceProvider.d.ts.map +1 -1
  52. package/dist/http/RateLimitMiddleware.d.ts +6 -0
  53. package/dist/http/RateLimitMiddleware.d.ts.map +1 -0
  54. package/dist/http/index.d.ts +1 -0
  55. package/dist/http/index.d.ts.map +1 -1
  56. package/dist/http/index.js +1 -1
  57. package/dist/http/requestContext.d.ts +6 -3
  58. package/dist/http/requestContext.d.ts.map +1 -1
  59. package/dist/kernel/Kernel.d.ts +13 -2
  60. package/dist/kernel/Kernel.d.ts.map +1 -1
  61. package/dist/kernel/context.d.ts +6 -2
  62. package/dist/kernel/context.d.ts.map +1 -1
  63. package/dist/kernel/index.js +2 -2
  64. package/dist/server/index.js +5 -5
  65. package/dist/services/ServiceProvider.d.ts +4 -0
  66. package/dist/services/ServiceProvider.d.ts.map +1 -0
  67. package/dist/services/file-storage/drivers/FileSystemDriver.d.ts.map +1 -1
  68. package/dist/services/index.d.ts +3 -0
  69. package/dist/services/index.d.ts.map +1 -1
  70. package/dist/services/index.js +1 -1
  71. package/dist/services/middleware/MiddlewareServiceContainer.d.ts +8 -0
  72. package/dist/services/middleware/MiddlewareServiceContainer.d.ts.map +1 -0
  73. package/dist/services/rate-limiter/RateLimiterServiceContainer.d.ts +6 -0
  74. package/dist/services/rate-limiter/RateLimiterServiceContainer.d.ts.map +1 -0
  75. package/dist/services/rate-limiter/RateLimiterServiceProvider.d.ts +5 -0
  76. package/dist/services/rate-limiter/RateLimiterServiceProvider.d.ts.map +1 -0
  77. package/dist/services/rate-limiter/drivers/InMemoryRateLimiterDriver.d.ts +9 -0
  78. package/dist/services/rate-limiter/drivers/InMemoryRateLimiterDriver.d.ts.map +1 -0
  79. package/dist/services/rate-limiter/drivers/RateLimiterDriver.d.ts +4 -0
  80. package/dist/services/rate-limiter/drivers/RateLimiterDriver.d.ts.map +1 -0
  81. package/dist/services/rate-limiter/types.d.ts +2 -0
  82. package/dist/services/rate-limiter/types.d.ts.map +1 -0
  83. package/dist/services/router/ApiRouterServiceContainer.d.ts +13 -0
  84. package/dist/services/router/ApiRouterServiceContainer.d.ts.map +1 -0
  85. package/dist/services/router/ApiRouterServiceProvider.d.ts +8 -0
  86. package/dist/services/router/ApiRouterServiceProvider.d.ts.map +1 -0
  87. package/dist/services/router/createFlatApiRoutes.d.ts +16 -0
  88. package/dist/services/router/createFlatApiRoutes.d.ts.map +1 -0
  89. package/dist/utils/omitNullishValues.d.ts +2 -0
  90. package/dist/utils/omitNullishValues.d.ts.map +1 -0
  91. package/dist/vite/{index-BfdM1qcG.mjs → index-DgYsNMcB.mjs} +3 -2
  92. package/dist/vite/index.mjs +1 -1
  93. package/dist/vite/{typescript-DU6uj0V1.mjs → typescript-Cv6BtTKL.mjs} +1 -1
  94. package/package.json +1 -1
  95. package/dist/chunk-027f8856aa132d85.js +0 -6
  96. package/dist/chunk-035e233acf299392.js +0 -2
  97. package/dist/chunk-3e2f1f65cba86ad5.js +0 -2
  98. package/dist/chunk-6a30174fcc338251.js +0 -2
  99. package/dist/chunk-6def55ea02e050ec.js +0 -2
  100. package/dist/chunk-722959aee5ef3fae.js +0 -2
  101. package/dist/chunk-89067bce11a12276.js +0 -2
  102. package/dist/chunk-89c603058a8ca2e0.js +0 -2
  103. package/dist/chunk-9c10a08ee4b4d468.js +0 -9
  104. package/dist/chunk-9e6c223585edf12e.js +0 -2
  105. package/dist/chunk-a2fa7b0b7cb9d696.js +0 -2
  106. package/dist/chunk-a75cb687951e66a0.js +0 -2
  107. package/dist/chunk-b240c1abcf310471.js +0 -2
  108. package/dist/chunk-b3d1c993471a0dbe.js +0 -2
  109. package/dist/chunk-db704ae1cdab22a5.js +0 -18
  110. package/dist/chunk-e1c93f98afc62202.js +0 -2
  111. package/dist/chunk-e4119fe2a26e4a22.js +0 -2
  112. package/dist/chunk-e4fa4d02a212da4f.js +0 -2
@@ -0,0 +1,6 @@
1
+ import { HttpRequest } from "./HttpRequest";
2
+ import { Middleware } from "./Middleware";
3
+ export declare class RateLimitMiddleware extends Middleware {
4
+ run(req: HttpRequest, limit?: number): Promise<{}>;
5
+ }
6
+ //# sourceMappingURL=RateLimitMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimitMiddleware.d.ts","sourceRoot":"","sources":["../../http/RateLimitMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA2B1C,qBAAa,mBAAoB,SAAQ,UAAU;IAC3C,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,SAAO;CAYzC"}
@@ -8,6 +8,7 @@ export { getCookies } from "./getCookies";
8
8
  export { RequestBreakerError } from "./Error";
9
9
  export { MiddlewareServiceProvider } from "./MiddlewareServiceProvider";
10
10
  export { AuthenticationMiddleware } from "./AuthenticationMiddlware";
11
+ export { RateLimitMiddleware } from "./RateLimitMiddleware";
11
12
  export { PoliciesServiceProvider } from "./PoliciesServiceProvider";
12
13
  export { Policies } from "./Policy";
13
14
  export { AuthenticationError, AuthorizationError, InsufficientPermissionsError, } from "./errors";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import"../chunk-7ce930fe69575c87.js";class T{requests={};static kind="controller";constructor(){}}class f extends T{constructor(){super(...arguments)}}function H(e){return typeof e==="function"&&e.prototype!==void 0}var L=function(e){return H(e)};class u{e;t;n;middlewares=[];constructor(e,t,n){this.method=e;this.handler=t;this.methodName=n;this.handler=t,this.methodName=n,this.method=e}run(e){if(L(this.handler)){const t=new this.handler;return t[this.methodName].bind(t)()}else return this.handler(e)}middleware(e){return this.middlewares=e,this}}class K{constructor(...e){return new u(...e)}}class h{routes={};middlewares=[];middleware(e){}get(e,t){return new u("GET",e,t)}post(e,t){return new u("POST",e,t)}put(e,t){return new u("PUT",e,t)}patch(e,t){return new u("PATCH",e,t)}delete(e,t){return new u("DELETE",e,t)}resource(e){class t extends h{constructor(){super(...arguments)}routes={"/":{list:this.get(e,"list"),create:this.post(e,"create")},"/:id":{show:this.get(e,"show"),update:this.put(e,"update"),delete:this.delete(e,"delete")}}}return t}file(e,t){return new K("GET",e,t)}}class g{e;middlewares=[];handler;constructor(e,t){this.viewPath=e;if(!t)this.handler=()=>({});else if(typeof t==="function")this.handler=t;else{const[n,r]=t,o=new n,s=o[r].bind(o);this.handler=(i)=>{return s()}}}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class O{e;children;middlewares=[];handler=()=>({});constructor(e,t,n){this.viewPath=e;if(typeof t==="function")this.handler=t,this.children=class extends c{routes=n??{}};else if(Array.isArray(t)){const[r,o]=t,s=new r,i=s[o].bind(s);this.handler=(a)=>{let d=a;return d=s.requests[o]?new s.requests[o](a.rawRequest,a.params):d,i(a)},this.children=class extends c{routes=n??{}}}else this.children=class extends c{routes=t},this.handler=()=>({})}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class c{middlewares=[];routes={};view(e,t){return new g(e,t)}layout(e,t,n){return new O(e,t,n)}}var Z="GEMI_REQUEST_BREAKER_ERROR";class l extends Error{constructor(){super(...arguments)}kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class y extends l{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 U} from"async_hooks";class m{e;t;n;constructor(e,t,n={}){this.name=e;this.value=t;this.options=n}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 R=new U;class I{cookies=new Set;headers=new Headers;user=null;req=null;constructor(){}setCookie(e,t,n={}){this.cookies.add(new m(e,t,n))}setHeaders(e,t){this.headers.set(e,t)}setUser(e){this.user=e}setRequest(e){this.req=e}}class p{static getStore(){return R.getStore()}static setRequest(e){R.getStore().req=e}static async run(e){return R.run(new I,e)}}var v=function(e){const[t,n]=e.match(/\d+|\D+/g)??[];if(!t||!n)return 0;const r=parseInt(t);switch(n){case"B":return r;case"KB":return r*1024;case"MB":return r*1024*1024;case"GB":return r*1024*1024*1024;case"TB":return r*1024*1024*1024*1024;default:return 0}},D=function(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}},G=function(e){const[t,n]=e.split(":");switch(t){case"required":return(r)=>{if(r instanceof Blob)return r.size>0;return r!==null&&r!==void 0&&r?.length>0};case"password":return(r)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(r)};case"number":return(r)=>{if(typeof r!=="number")return!1;return!isNaN(r)};case"min":return(r)=>{return r?.length>=parseInt(n)};case"max":return(r)=>{return r?.length<=parseInt(n)};case"email":return(r)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)};case"file":return(r)=>{return r instanceof Blob};case"fileType":return(r)=>{if(r instanceof Blob){const o=D(n);return r.type.startsWith(o)}};case"fileSize":return(r)=>{if(r instanceof Blob){const o=v(n);return r.size<=o}};default:return()=>!0}};class w{e;constructor(e){this.data=e}get(e){return this.data[e]}set(e,t){this.data[e]=t}has(e){return this.data[e]!==void 0}toJSON(){return this.data}}class M{rawRequest;headers;cookies;schema={};params;ctx=p.getStore();constructor(e,t){if(!e){const o=p.getStore().req;this.params=o.params,this.rawRequest=o.rawRequest}else this.params=t,this.rawRequest=e;this.headers=this.rawRequest.headers;const n=this.rawRequest.headers.get("Cookie"),r=new Map;if(n){const o=n.split(";");for(let s of o){const[i,a]=s.split("=");r.set(i.trim(),a.trim())}}this.cookies=r}refine(e){return{}}async parseBody(){const e=new w({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){const t=await this.rawRequest.json();for(let[n,r]of Object.entries(t))e.set(n,r)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){const t=await this.rawRequest.formData();for(let[n,r]of t)e.set(n,r)}if(this.rawRequest.headers.get("Content-Type").startsWith("multipart/form-data")){const t=await this.rawRequest.formData();for(let[n,r]of t)if(e.has(n)){const o=e.get(n);if(Array.isArray(o))o.push(r),e.set(n,o);else e.set(n,[o,r])}else e.set(n,r)}return e}validateInput(e){const t={};for(let[n,r]of Object.entries(this.schema))for(let[o,s]of Object.entries(r)){const i=G(o);let a=s,d=!1;if(typeof s==="function")a=s(e.get(n)),d=typeof a==="undefined";else d=i(e.get(n));if(d)continue;if(!t[n])t[n]=[];if(o==="required"){t[n]=[String(a)];break}else t[n].push(String(a))}for(let[n,r]of Object.entries(this.refine(e.toJSON())??{})){if(!t[n])t[n]=[];t[n]=[...t[n]??[],r]}if(Object.keys(t).length>0)throw new y(t);else return e}async input(){if(this.rawRequest.method==="GET"){const e=new URL(this.rawRequest.url),t=Object.fromEntries(e.searchParams.entries());return this.validateInput(new w(t))}return this.validateInput(await this.parseBody())}async safeInput(){const e=await this.parseBody();try{return this.validateInput(e),{isValid:!0,errors:{},input:e}}catch(t){if(!(t instanceof y))throw t;return{isValid:!1,errors:t.errors,input:e}}}async terminate(e){throw"not implemented"}}class P{async run(e){return{}}}function N(e){const t=e.headers.get("cookie");if(!t)return new Map;const n=new Map,r=t.split(";");for(let o of r){const[s,i]=o.split("=");n.set(s.trim(),i)}return n}class b{aliases={}}import{AsyncLocalStorage as _} from"async_hooks";var q=new _;class C{static getStore=()=>q.getStore()}class E extends l{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 A extends l{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 x extends l{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 V extends P{constructor(){super(...arguments)}async run(e){const t=p.getStore(),n=t.req.cookies.get("access_token");if(!n)throw new x;let r=t.user;if(!r){const o=await C.getStore().authenticationServiceProvider.adapter.findSession({token:n,userAgent:t.req.headers.get("User-Agent")});if(!o)throw new x;r=o?.user,t.setUser(r)}return{}}}class ${policiesList={};constructor(){const e=this.register();for(let t of e){const n=new t;this.policiesList[t.name]=n}}register(){return[]}}class S{all(e,t){return!0}}class k{dictionary={};supportedLocales=[];defaultLocale="en-US";async init(){}detectLocale(e){return this.defaultLocale}}export{N as getCookies,c as ViewRouter,y as ValidationError,f as ResourceController,l as RequestBreakerError,$ as PoliciesServiceProvider,S as Policies,b as MiddlewareServiceProvider,P as Middleware,A as InsufficientPermissionsError,k as I18nServiceProvider,M as HttpRequest,T as Controller,E as AuthorizationError,V as AuthenticationMiddleware,x as AuthenticationError,h as ApiRouter};export{T as a,H as b,h as c,c as d,Z as e,l as f,y as g,p as h,M as i,b as j,q as k,C as l,E as m,A as n,$ as o,k as p};
2
+ import"../chunk-e3d242546d1a2927.js";class T{requests={};static kind="controller";constructor(){}}class C extends T{constructor(){super(...arguments)}}function H(e){return typeof e==="function"&&e.prototype!==void 0}var v=function(e){return H(e)};class l{e;t;n;middlewares=[];constructor(e,t,n){this.method=e;this.handler=t;this.methodName=n;this.handler=t,this.methodName=n,this.method=e}run(e){if(v(this.handler)){const t=new this.handler;return t[this.methodName].bind(t)()}else return this.handler()}middleware(e){return this.middlewares=e,this}}class K{constructor(...e){return new l(...e)}}class m{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){class t extends m{constructor(){super(...arguments)}routes={"/":{list:this.get(e,"list"),create:this.post(e,"create")},"/:id":{show:this.get(e,"show"),update:this.put(e,"update"),delete:this.delete(e,"delete")}}}return t}file(e,t){return new K("GET",e,t)}}class g{e;middlewares=[];handler;constructor(e,t){this.viewPath=e;if(!t)this.handler=()=>({});else if(typeof t==="function")this.handler=t;else{const[n,r]=t,o=new n,s=o[r].bind(o);this.handler=(u)=>{return s()}}}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class O{e;children;middlewares=[];handler=()=>({});constructor(e,t,n){this.viewPath=e;if(typeof t==="function")this.handler=t,this.children=class extends y{routes=n??{}};else if(Array.isArray(t)){const[r,o]=t,s=new r,u=s[o].bind(s);this.handler=(a)=>{let d=a;return d=s.requests[o]?new s.requests[o](a.rawRequest,a.params):d,u(a)},this.children=class extends y{routes=n??{}}}else this.children=class extends y{routes=t},this.handler=()=>({})}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class y{middlewares=[];routes={};view(e,t){return new g(e,t)}layout(e,t,n){return new O(e,t,n)}}var ee="GEMI_REQUEST_BREAKER_ERROR";class i extends Error{constructor(){super(...arguments)}kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class h extends i{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 D} from"async_hooks";class R{e;t;n;constructor(e,t,n={}){this.name=e;this.value=t;this.options=n}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 f=new D;class I{e;cookies=new Set;headers=new Headers;prefetchedResources=new Map;prefetchPromiseQueue=new Set;user=null;constructor(e){this.req=e}setCookie(e,t,n={}){this.cookies.add(new R(e,t,n))}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 p{static getStore(){return f.getStore()}static setRequest(e){f.getStore().req=e}static run(e,t){return f.run(new I(e),t)}}var G=function(e){const[t,n]=e.match(/\d+|\D+/g)??[];if(!t||!n)return 0;const r=parseInt(t);switch(n){case"B":return r;case"KB":return r*1024;case"MB":return r*1024*1024;case"GB":return r*1024*1024*1024;case"TB":return r*1024*1024*1024*1024;default:return 0}},_=function(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}},N=function(e){const[t,n]=e.split(":");switch(t){case"required":return(r)=>{if(r instanceof Blob)return r.size>0;return r!==null&&r!==void 0&&r?.length>0};case"password":return(r)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(r)};case"number":return(r)=>{if(typeof r!=="number")return!1;return!isNaN(r)};case"min":return(r)=>{return r?.length>=parseInt(n)};case"max":return(r)=>{return r?.length<=parseInt(n)};case"email":return(r)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)};case"file":return(r)=>{return r instanceof Blob};case"fileType":return(r)=>{if(r instanceof Blob){const o=_(n);return r.type.startsWith(o)}};case"fileSize":return(r)=>{if(r instanceof Blob){const o=G(n);return r.size<=o}};default:return()=>!0}};class w{e;constructor(e){this.data=e}get(e){return this.data[e]}set(e,t){this.data[e]=t}has(e){return this.data[e]!==void 0}toJSON(){return this.data}}class M{rawRequest;headers;cookies;search;schema={};params;ctx=p.getStore();constructor(e,t){if(!e){const o=p.getStore().req;this.params=o.params,this.rawRequest=o.rawRequest}else this.params=t,this.rawRequest=e;this.headers=this.rawRequest.headers;const n=this.rawRequest.headers.get("Cookie"),r=new Map;if(n){const o=n.split(";");for(let s of o){const[u,a]=s.split("=");r.set(u.trim(),a.trim())}}if(this.rawRequest.method==="GET"){const o=new URL(this.rawRequest.url),s=Object.fromEntries(o.searchParams.entries());this.search=new w(s)}this.cookies=r}refine(e){return{}}async parseBody(){const e=new w({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){const t=await this.rawRequest.json();for(let[n,r]of Object.entries(t))e.set(n,r)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){const t=await this.rawRequest.formData();for(let[n,r]of t)e.set(n,r)}if(this.rawRequest.headers.get("Content-Type")?.startsWith("multipart/form-data")){const t=await this.rawRequest.formData();for(let[n,r]of t)if(e.has(n)){const o=e.get(n);if(Array.isArray(o))o.push(r),e.set(n,o);else e.set(n,[o,r])}else e.set(n,r)}return e}validateInput(e){const t={};for(let[n,r]of Object.entries(this.schema))for(let[o,s]of Object.entries(r)){const u=N(o);let a=s,d=!1;if(typeof s==="function")a=s(e.get(n)),d=typeof a==="undefined";else d=u(e.get(n));if(d)continue;if(!t[n])t[n]=[];if(o==="required"){t[n]=[String(a)];break}else t[n].push(String(a))}for(let[n,r]of Object.entries(this.refine(e.toJSON())??{})){if(!t[n])t[n]=[];t[n]=[...t[n]??[],r]}if(Object.keys(t).length>0)throw new h(t);else return e}async input(){return this.validateInput(await this.parseBody())}async safeInput(){const e=await this.parseBody();try{return this.validateInput(e),{isValid:!0,errors:{},input:e}}catch(t){if(!(t instanceof h))throw t;return{isValid:!1,errors:t.errors,input:e}}}async terminate(e){throw"not implemented"}}class c{e;constructor(e){this.routePath=e}async run(e,...t){return{}}}function B(e){const t=e.headers.get("cookie");if(!t)return new Map;const n=new Map,r=t.split(";");for(let o of r){const[s,u]=o.split("=");n.set(s.trim(),u)}return n}class q{aliases={}}import{AsyncLocalStorage as j} from"async_hooks";var b=new j;class x{static getStore=()=>b.getStore()}class E extends i{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 A extends i{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 P extends i{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 S extends c{constructor(){super(...arguments)}async run(e){const t=p.getStore(),n=t.req.cookies.get("access_token");if(!n)throw new P;let r=t.user;if(!r){const o=await x.getStore().authenticationServiceProvider.adapter.findSession({token:n,userAgent:t.req.headers.get("User-Agent")});if(!o)throw new P;r=o?.user,t.setUser(r)}return{}}}class V extends i{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 $ extends c{constructor(){super(...arguments)}async run(e,t=1000){const n=e.headers.get("x-forwarded-for"),r=x.getStore().rateLimiterServiceContainer.service.driver,o=r.consume.call(r,n,this.routePath);if(console.log({result:o,limit:t}),o>t)throw new V;return{}}}class k{policiesList={};constructor(){const e=this.register();for(let t of e){const n=new t;this.policiesList[t.name]=n}}register(){return[]}}class L{all(e,t){return!0}}class U{dictionary={};supportedLocales=[];defaultLocale="en-US";async init(){}detectLocale(e){return this.defaultLocale}}export{B as getCookies,y as ViewRouter,h as ValidationError,C as ResourceController,i as RequestBreakerError,$ as RateLimitMiddleware,k as PoliciesServiceProvider,L as Policies,q as MiddlewareServiceProvider,c as Middleware,A as InsufficientPermissionsError,U as I18nServiceProvider,M as HttpRequest,T as Controller,E as AuthorizationError,S as AuthenticationMiddleware,P as AuthenticationError,m as ApiRouter};export{T as a,H as b,m as c,y as d,ee as e,i as f,h as g,p as h,M as i,q as j,b as k,x as l,E as m,A as n,k as o,U as p};
@@ -1,20 +1,23 @@
1
1
  import { Cookie, type CreateCookieOptions } from "./Cookie";
2
2
  import { HttpRequest } from "./HttpRequest";
3
3
  declare class Store {
4
+ req: HttpRequest;
4
5
  cookies: Set<Cookie>;
5
6
  headers: Headers;
7
+ prefetchedResources: Map<string, Record<string, any>>;
8
+ prefetchPromiseQueue: Set<() => Promise<any>>;
6
9
  user: any;
7
- req: HttpRequest | null;
8
- constructor();
10
+ constructor(req: HttpRequest);
9
11
  setCookie(name: string, value: string, options?: CreateCookieOptions): void;
10
12
  setHeaders(name: string, value: string): void;
11
13
  setUser(user: any): void;
12
14
  setRequest(req: HttpRequest<any, any>): void;
15
+ destroy(): void;
13
16
  }
14
17
  export declare class RequestContext {
15
18
  static getStore(): Store;
16
19
  static setRequest(req: HttpRequest<any, any>): void;
17
- static run<T>(fn: () => T): Promise<T>;
20
+ static run<T>(httpRequest: HttpRequest, fn: () => T): T;
18
21
  }
19
22
  export {};
20
23
  //# sourceMappingURL=requestContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../http/requestContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,cAAM,KAAK;IACT,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACjC,OAAO,EAAE,OAAO,CAAiB;IACjC,IAAI,EAAE,GAAG,CAAQ;IACjB,GAAG,EAAE,WAAW,GAAG,IAAI,CAAQ;;IAM/B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;IAIxE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAItC,OAAO,CAAC,IAAI,EAAE,GAAG;IAIjB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;CAGtC;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ;IAIf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;WAI/B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAG7C"}
1
+ {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../http/requestContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,cAAM,KAAK;IAOU,GAAG,EAAE,WAAW;IANnC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACjC,OAAO,EAAE,OAAO,CAAiB;IACjC,mBAAmB,mCAA0C;IAC7D,oBAAoB,YAAiB,OAAO,CAAC,GAAG,CAAC,EAAI;IACrD,IAAI,EAAE,GAAG,CAAQ;gBAEE,GAAG,EAAE,WAAW;IAEnC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;IAIxE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAItC,OAAO,CAAC,IAAI,EAAE,GAAG;IAIjB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IAIrC,OAAO;CAOR;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ;IAIf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;CAGxD"}
@@ -6,6 +6,11 @@ import { I18nServiceProvider } from "../http/I18nServiceProvider";
6
6
  import { I18nServiceContainer } from "../http/I18nServiceContainer";
7
7
  import { FileStorageServiceContainer } from "../services/file-storage/FileStorageServiceContainer";
8
8
  import { FileStorageServiceProvider } from "../services/file-storage/FileStorageServiceProvider";
9
+ import { ApiRouterServiceContainer } from "../services/router/ApiRouterServiceContainer";
10
+ import { ApiRouterServiceProvider } from "../services/router/ApiRouterServiceProvider";
11
+ import { MiddlewareServiceContainer } from "../services/middleware/MiddlewareServiceContainer";
12
+ import { RateLimiterServiceContainer } from "../services/rate-limiter/RateLimiterServiceContainer";
13
+ import { RateLimiterServiceProvider } from "../services";
9
14
  export declare class Kernel {
10
15
  protected emailServiceProvider: typeof EmailServiceProvider;
11
16
  protected authenticationServiceProvider: typeof AuthenticationServiceProvider;
@@ -13,21 +18,27 @@ export declare class Kernel {
13
18
  protected policiesServiceProvider: typeof PoliciesServiceProvider;
14
19
  protected i18nServiceProvider: typeof I18nServiceProvider;
15
20
  protected fileStorageServiceProvider: typeof FileStorageServiceProvider;
21
+ protected apiRouterServiceProvider: typeof ApiRouterServiceProvider;
22
+ protected rateLimiterServiceProvider: typeof RateLimiterServiceProvider;
16
23
  services: {
17
24
  emailServiceProvider: EmailServiceProvider;
18
25
  authenticationServiceProvider: AuthenticationServiceProvider;
19
- middlewareServiceProvider: MiddlewareServiceProvider;
20
26
  policiesServiceProvider: PoliciesServiceProvider;
21
27
  i18nServiceContainer: I18nServiceContainer;
22
28
  fileStorageServiceContainer: FileStorageServiceContainer;
29
+ apiRouterServiceContainer: ApiRouterServiceContainer;
30
+ middlewareServiceContainer: MiddlewareServiceContainer;
31
+ rateLimiterServiceContainer: RateLimiterServiceContainer;
23
32
  };
24
33
  getServices: () => {
25
34
  emailServiceProvider: EmailServiceProvider;
26
35
  authenticationServiceProvider: AuthenticationServiceProvider;
27
- middlewareServiceProvider: MiddlewareServiceProvider;
28
36
  policiesServiceProvider: PoliciesServiceProvider;
29
37
  i18nServiceContainer: I18nServiceContainer;
30
38
  fileStorageServiceContainer: FileStorageServiceContainer;
39
+ apiRouterServiceContainer: ApiRouterServiceContainer;
40
+ middlewareServiceContainer: MiddlewareServiceContainer;
41
+ rateLimiterServiceContainer: RateLimiterServiceContainer;
31
42
  };
32
43
  static getContext: () => import("./context").KernelContextValue;
33
44
  run<T>(cb: () => T): T;
@@ -1 +1 @@
1
- {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AAEjG,qBAAa,MAAM;IACjB,SAAS,CAAC,oBAAoB,8BAAwB;IACtD,SAAS,CAAC,6BAA6B,uCAAiC;IACxE,SAAS,CAAC,yBAAyB,mCAA6B;IAChE,SAAS,CAAC,uBAAuB,iCAA2B;IAC5D,SAAS,CAAC,mBAAmB,6BAAuB;IACpD,SAAS,CAAC,0BAA0B,oCAA8B;IAElE,QAAQ,EAAE;QACR,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,6BAA6B,EAAE,6BAA6B,CAAC;QAC7D,yBAAyB,EAAE,yBAAyB,CAAC;QACrD,uBAAuB,EAAE,uBAAuB,CAAC;QACjD,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,2BAA2B,EAAE,2BAA2B,CAAC;KAC1D,CAAC;IAEF,WAAW;8BARa,oBAAoB;uCACX,6BAA6B;mCACjC,yBAAyB;iCAC3B,uBAAuB;8BAC1B,oBAAoB;qCACb,2BAA2B;MAmBxD;IAEF,MAAM,CAAC,UAAU,+CAAkC;IAEnD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;CAInB"}
1
+ {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,MAAM;IACjB,SAAS,CAAC,oBAAoB,8BAAwB;IACtD,SAAS,CAAC,6BAA6B,uCAAiC;IACxE,SAAS,CAAC,yBAAyB,mCAA6B;IAChE,SAAS,CAAC,uBAAuB,iCAA2B;IAC5D,SAAS,CAAC,mBAAmB,6BAAuB;IACpD,SAAS,CAAC,0BAA0B,oCAA8B;IAClE,SAAS,CAAC,wBAAwB,kCAA4B;IAC9D,SAAS,CAAC,0BAA0B,oCAA8B;IAElE,QAAQ,EAAE;QACR,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,6BAA6B,EAAE,6BAA6B,CAAC;QAC7D,uBAAuB,EAAE,uBAAuB,CAAC;QACjD,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,2BAA2B,EAAE,2BAA2B,CAAC;QACzD,yBAAyB,EAAE,yBAAyB,CAAC;QACrD,0BAA0B,EAAE,0BAA0B,CAAC;QACvD,2BAA2B,EAAE,2BAA2B,CAAC;KAC1D,CAAC;IAEF,WAAW;8BAVa,oBAAoB;uCACX,6BAA6B;iCACnC,uBAAuB;8BAC1B,oBAAoB;qCACb,2BAA2B;mCAC7B,yBAAyB;oCACxB,0BAA0B;qCACzB,2BAA2B;MA2BxD;IAEF,MAAM,CAAC,UAAU,+CAAkC;IAEnD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;CAInB"}
@@ -2,16 +2,20 @@ import { AsyncLocalStorage } from "async_hooks";
2
2
  import { EmailServiceProvider } from "../email/EmailServiceProvider";
3
3
  import { AuthenticationServiceProvider } from "../auth/AuthenticationServiceProvider";
4
4
  import { PoliciesServiceProvider } from "../http/PoliciesServiceProvider";
5
- import { MiddlewareServiceProvider } from "../http";
6
5
  import { I18nServiceContainer } from "../http/I18nServiceContainer";
7
6
  import { FileStorageServiceContainer } from "../services/file-storage/FileStorageServiceContainer";
7
+ import { ApiRouterServiceContainer } from "../services/router/ApiRouterServiceContainer";
8
+ import { MiddlewareServiceContainer } from "../services/middleware/MiddlewareServiceContainer";
9
+ import { RateLimiterServiceContainer } from "../services/rate-limiter/RateLimiterServiceContainer";
8
10
  export interface KernelContextValue {
9
11
  emailServiceProvider: EmailServiceProvider;
10
12
  authenticationServiceProvider: AuthenticationServiceProvider;
11
- middlewareServiceProvider: MiddlewareServiceProvider;
12
13
  policiesServiceProvider: PoliciesServiceProvider;
13
14
  i18nServiceContainer: I18nServiceContainer;
14
15
  fileStorageServiceContainer: FileStorageServiceContainer;
16
+ apiRouterServiceContainer: ApiRouterServiceContainer;
17
+ middlewareServiceContainer: MiddlewareServiceContainer;
18
+ rateLimiterServiceContainer: RateLimiterServiceContainer;
15
19
  }
16
20
  export declare const kernelContext: AsyncLocalStorage<KernelContextValue>;
17
21
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../kernel/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AAEnG,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,6BAA6B,EAAE,6BAA6B,CAAC;IAC7D,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,2BAA2B,EAAE,2BAA2B,CAAC;CAC1D;AAED,eAAO,MAAM,aAAa,uCAA8C,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../kernel/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AAEnG,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,6BAA6B,EAAE,6BAA6B,CAAC;IAC7D,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,2BAA2B,EAAE,2BAA2B,CAAC;CAC1D;AAED,eAAO,MAAM,aAAa,uCAA8C,CAAC"}