@ooneex/middleware 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- var d=function(e,t,r,o){var i=arguments.length,s=i<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,r):o,n;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")s=Reflect.decorate(e,t,r,o);else for(var p=e.length-1;p>=0;p--)if(n=e[p])s=(i<3?n(s):i>3?n(t,r,s):n(t,r))||s;return i>3&&s&&Object.defineProperty(t,r,s),s},l=(e,t)=>(r,o)=>t(r,o,e),h=(e,t)=>{if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(e,t)};import{AppEnv as m}from"@ooneex/app-env";import{inject as y,injectable as C}from"@ooneex/container";var c=["GET","HEAD","PUT","PATCH","POST","DELETE"],g=["Content-Type","Authorization"];class a{env;origins;methods;headers;exposedHeaders;credentials;maxAge;constructor(e){this.env=e;let t=this.env.CORS_ORIGINS??"*";this.origins=t==="*"?"*":t.split(",").map((r)=>r.trim()),this.methods=this.env.CORS_METHODS?.split(",").map((r)=>r.trim())??c,this.headers=this.env.CORS_HEADERS?.split(",").map((r)=>r.trim())??g,this.exposedHeaders=this.env.CORS_EXPOSED_HEADERS?.split(",").map((r)=>r.trim())??[],this.credentials=this.env.CORS_CREDENTIALS==="true",this.maxAge=Number(this.env.CORS_MAX_AGE??86400)}handler=async(e)=>{let t=e.header.get("Origin");if(!t)return e;if(!this.isOriginAllowed(t))return e;let r=this.origins==="*"?"*":t;if(e.response.header.setAccessControlAllowOrigin(r).setAccessControlAllowMethods(this.methods).setAccessControlAllowHeaders(this.headers).setAccessControlAllowCredentials(this.credentials),this.exposedHeaders.length>0)e.response.header.set("Access-Control-Expose-Headers",this.exposedHeaders.join(", "));if(e.method==="OPTIONS")e.response.header.set("Access-Control-Max-Age",String(this.maxAge)),e.response.json({},204);return e};isOriginAllowed(e){if(this.origins==="*")return!0;return this.origins.includes(e)}}a=d([C(),l(0,y(m)),h("design:paramtypes",[typeof m==="undefined"?Object:m])],a);import{container as T,EContainerScope as A}from"@ooneex/container";var f={middleware:(e=A.Singleton)=>{return(t)=>{T.add(t,e)}}};export{f as decorator,a as CorsMiddleware};
2
+ var l=function(e,t,r,s){var i=arguments.length,o=i<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,r):s,n;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")o=Reflect.decorate(e,t,r,s);else for(var d=e.length-1;d>=0;d--)if(n=e[d])o=(i<3?n(o):i>3?n(t,r,o):n(t,r))||o;return i>3&&o&&Object.defineProperty(t,r,o),o},h=(e,t)=>(r,s)=>t(r,s,e),m=(e,t)=>{if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(e,t)};import{AppEnv as y}from"@ooneex/app-env";import{inject as g}from"@ooneex/container";import{container as C,EContainerScope as c}from"@ooneex/container";var p={middleware:(e=c.Singleton)=>{return(t)=>{C.add(t,e)}}};var T=["GET","HEAD","PUT","PATCH","POST","DELETE"],A=["Content-Type","Authorization"];class a{env;origins;methods;headers;exposedHeaders;credentials;maxAge;constructor(e){this.env=e;let t=this.env.CORS_ORIGINS??"*";this.origins=t==="*"?"*":t.split(",").map((r)=>r.trim()),this.methods=this.env.CORS_METHODS?.split(",").map((r)=>r.trim())??T,this.headers=this.env.CORS_HEADERS?.split(",").map((r)=>r.trim())??A,this.exposedHeaders=this.env.CORS_EXPOSED_HEADERS?.split(",").map((r)=>r.trim())??[],this.credentials=this.env.CORS_CREDENTIALS==="true",this.maxAge=Number(this.env.CORS_MAX_AGE??86400)}handler=async(e)=>{let t=e.header.get("Origin");if(!t)return e;if(!this.isOriginAllowed(t))return e;let r=this.origins==="*"?"*":t;if(e.response.header.setAccessControlAllowOrigin(r).setAccessControlAllowMethods(this.methods).setAccessControlAllowHeaders(this.headers).setAccessControlAllowCredentials(this.credentials),this.exposedHeaders.length>0)e.response.header.set("Access-Control-Expose-Headers",this.exposedHeaders.join(", "));if(e.method==="OPTIONS")e.response.header.set("Access-Control-Max-Age",String(this.maxAge)),e.response.json({},204);return e};isOriginAllowed(e){if(this.origins==="*")return!0;return this.origins.includes(e)}}a=l([p.middleware(),h(0,g(y)),m("design:paramtypes",[typeof y==="undefined"?Object:y])],a);export{p as decorator,a as CorsMiddleware};
3
3
 
4
- //# debugId=E6271FBABA94044B64756E2164756E21
4
+ //# debugId=79F9D9A42C4D907264756E2164756E21
package/dist/index.js.map CHANGED
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["src/CorsMiddleware.ts", "src/decorators.ts"],
4
4
  "sourcesContent": [
5
- "import { AppEnv } from \"@ooneex/app-env\";\nimport { inject, injectable } from \"@ooneex/container\";\nimport type { ContextConfigType, ContextType } from \"@ooneex/controller\";\nimport type { HttpMethodType } from \"@ooneex/types\";\nimport type { IMiddleware } from \"./types\";\n\nconst defaultMethods: HttpMethodType[] = [\"GET\", \"HEAD\", \"PUT\", \"PATCH\", \"POST\", \"DELETE\"];\nconst defaultHeaders: string[] = [\"Content-Type\", \"Authorization\"];\n\n@injectable()\nexport class CorsMiddleware<T extends ContextConfigType = ContextConfigType> implements IMiddleware<T> {\n private readonly origins: string[] | \"*\";\n private readonly methods: HttpMethodType[];\n private readonly headers: string[];\n private readonly exposedHeaders: string[];\n private readonly credentials: boolean;\n private readonly maxAge: number;\n\n constructor(@inject(AppEnv) private readonly env: AppEnv) {\n const origins = this.env.CORS_ORIGINS ?? \"*\";\n this.origins = origins === \"*\" ? \"*\" : origins.split(\",\").map((o) => o.trim());\n this.methods = (this.env.CORS_METHODS?.split(\",\").map((m) => m.trim()) as HttpMethodType[]) ?? defaultMethods;\n this.headers = this.env.CORS_HEADERS?.split(\",\").map((h) => h.trim()) ?? defaultHeaders;\n this.exposedHeaders = this.env.CORS_EXPOSED_HEADERS?.split(\",\").map((h) => h.trim()) ?? [];\n this.credentials = this.env.CORS_CREDENTIALS === \"true\";\n this.maxAge = Number(this.env.CORS_MAX_AGE ?? 86400);\n }\n\n public handler = async (context: ContextType<T>): Promise<ContextType<T>> => {\n const origin = context.header.get(\"Origin\");\n\n if (!origin) {\n return context;\n }\n\n if (!this.isOriginAllowed(origin)) {\n return context;\n }\n\n const allowedOrigin = this.origins === \"*\" ? \"*\" : origin;\n\n context.response.header\n .setAccessControlAllowOrigin(allowedOrigin)\n .setAccessControlAllowMethods(this.methods)\n .setAccessControlAllowHeaders(this.headers)\n .setAccessControlAllowCredentials(this.credentials);\n\n if (this.exposedHeaders.length > 0) {\n context.response.header.set(\"Access-Control-Expose-Headers\", this.exposedHeaders.join(\", \"));\n }\n\n if (context.method === \"OPTIONS\") {\n context.response.header.set(\"Access-Control-Max-Age\", String(this.maxAge));\n context.response.json({}, 204);\n }\n\n return context;\n };\n\n private isOriginAllowed(origin: string): boolean {\n if (this.origins === \"*\") {\n return true;\n }\n\n return this.origins.includes(origin);\n }\n}\n",
5
+ "import { AppEnv } from \"@ooneex/app-env\";\nimport { inject } from \"@ooneex/container\";\nimport type { ContextConfigType, ContextType } from \"@ooneex/controller\";\nimport type { HttpMethodType } from \"@ooneex/types\";\nimport { decorator } from \"./decorators\";\nimport type { IMiddleware } from \"./types\";\n\nconst defaultMethods: HttpMethodType[] = [\"GET\", \"HEAD\", \"PUT\", \"PATCH\", \"POST\", \"DELETE\"];\nconst defaultHeaders: string[] = [\"Content-Type\", \"Authorization\"];\n\n@decorator.middleware()\nexport class CorsMiddleware<T extends ContextConfigType = ContextConfigType> implements IMiddleware<T> {\n private readonly origins: string[] | \"*\";\n private readonly methods: HttpMethodType[];\n private readonly headers: string[];\n private readonly exposedHeaders: string[];\n private readonly credentials: boolean;\n private readonly maxAge: number;\n\n constructor(@inject(AppEnv) private readonly env: AppEnv) {\n const origins = this.env.CORS_ORIGINS ?? \"*\";\n this.origins = origins === \"*\" ? \"*\" : origins.split(\",\").map((o) => o.trim());\n this.methods = (this.env.CORS_METHODS?.split(\",\").map((m) => m.trim()) as HttpMethodType[]) ?? defaultMethods;\n this.headers = this.env.CORS_HEADERS?.split(\",\").map((h) => h.trim()) ?? defaultHeaders;\n this.exposedHeaders = this.env.CORS_EXPOSED_HEADERS?.split(\",\").map((h) => h.trim()) ?? [];\n this.credentials = this.env.CORS_CREDENTIALS === \"true\";\n this.maxAge = Number(this.env.CORS_MAX_AGE ?? 86400);\n }\n\n public handler = async (context: ContextType<T>): Promise<ContextType<T>> => {\n const origin = context.header.get(\"Origin\");\n\n if (!origin) {\n return context;\n }\n\n if (!this.isOriginAllowed(origin)) {\n return context;\n }\n\n const allowedOrigin = this.origins === \"*\" ? \"*\" : origin;\n\n context.response.header\n .setAccessControlAllowOrigin(allowedOrigin)\n .setAccessControlAllowMethods(this.methods)\n .setAccessControlAllowHeaders(this.headers)\n .setAccessControlAllowCredentials(this.credentials);\n\n if (this.exposedHeaders.length > 0) {\n context.response.header.set(\"Access-Control-Expose-Headers\", this.exposedHeaders.join(\", \"));\n }\n\n if (context.method === \"OPTIONS\") {\n context.response.header.set(\"Access-Control-Max-Age\", String(this.maxAge));\n context.response.json({}, 204);\n }\n\n return context;\n };\n\n private isOriginAllowed(origin: string): boolean {\n if (this.origins === \"*\") {\n return true;\n }\n\n return this.origins.includes(origin);\n }\n}\n",
6
6
  "import { container, EContainerScope } from \"@ooneex/container\";\nimport type { MiddlewareClassType, SocketMiddlewareClassType } from \"./types\";\n\nexport const decorator = {\n middleware: (scope: EContainerScope = EContainerScope.Singleton) => {\n return (target: MiddlewareClassType | SocketMiddlewareClassType): void => {\n container.add(target, scope);\n };\n },\n};\n"
7
7
  ],
8
- "mappings": ";8cAAA,iBAAS,wBACT,iBAAS,gBAAQ,0BAKjB,IAAM,EAAmC,CAAC,MAAO,OAAQ,MAAO,QAAS,OAAQ,QAAQ,EACnF,EAA2B,CAAC,eAAgB,eAAe,EAG1D,MAAM,CAA0F,CAQxD,IAP5B,QACA,QACA,QACA,eACA,YACA,OAEjB,WAAW,CAAkC,EAAa,CAAb,WAC3C,IAAM,EAAU,KAAK,IAAI,cAAgB,IACzC,KAAK,QAAU,IAAY,IAAM,IAAM,EAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,EAC7E,KAAK,QAAW,KAAK,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,GAA0B,EAC/F,KAAK,QAAU,KAAK,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,GAAK,EACzE,KAAK,eAAiB,KAAK,IAAI,sBAAsB,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,GAAK,CAAC,EACzF,KAAK,YAAc,KAAK,IAAI,mBAAqB,OACjD,KAAK,OAAS,OAAO,KAAK,IAAI,cAAgB,KAAK,EAG9C,QAAU,MAAO,IAAqD,CAC3E,IAAM,EAAS,EAAQ,OAAO,IAAI,QAAQ,EAE1C,GAAI,CAAC,EACH,OAAO,EAGT,GAAI,CAAC,KAAK,gBAAgB,CAAM,EAC9B,OAAO,EAGT,IAAM,EAAgB,KAAK,UAAY,IAAM,IAAM,EAQnD,GANA,EAAQ,SAAS,OACd,4BAA4B,CAAa,EACzC,6BAA6B,KAAK,OAAO,EACzC,6BAA6B,KAAK,OAAO,EACzC,iCAAiC,KAAK,WAAW,EAEhD,KAAK,eAAe,OAAS,EAC/B,EAAQ,SAAS,OAAO,IAAI,gCAAiC,KAAK,eAAe,KAAK,IAAI,CAAC,EAG7F,GAAI,EAAQ,SAAW,UACrB,EAAQ,SAAS,OAAO,IAAI,yBAA0B,OAAO,KAAK,MAAM,CAAC,EACzE,EAAQ,SAAS,KAAK,CAAC,EAAG,GAAG,EAG/B,OAAO,GAGD,eAAe,CAAC,EAAyB,CAC/C,GAAI,KAAK,UAAY,IACnB,MAAO,GAGT,OAAO,KAAK,QAAQ,SAAS,CAAM,EAEvC,CAxDa,EAAN,GADN,EAAW,EASG,MAAO,CAAM,GARrB,0DAAM,GCVb,oBAAS,qBAAW,0BAGb,IAAM,EAAY,CACvB,WAAY,CAAC,EAAyB,EAAgB,YAAc,CAClE,MAAO,CAAC,IAAkE,CACxE,EAAU,IAAI,EAAQ,CAAK,GAGjC",
9
- "debugId": "E6271FBABA94044B64756E2164756E21",
8
+ "mappings": ";8cAAA,iBAAS,wBACT,iBAAS,0BCDT,oBAAS,qBAAW,0BAGb,IAAM,EAAY,CACvB,WAAY,CAAC,EAAyB,EAAgB,YAAc,CAClE,MAAO,CAAC,IAAkE,CACxE,EAAU,IAAI,EAAQ,CAAK,GAGjC,EDFA,IAAM,EAAmC,CAAC,MAAO,OAAQ,MAAO,QAAS,OAAQ,QAAQ,EACnF,EAA2B,CAAC,eAAgB,eAAe,EAG1D,MAAM,CAA0F,CAQxD,IAP5B,QACA,QACA,QACA,eACA,YACA,OAEjB,WAAW,CAAkC,EAAa,CAAb,WAC3C,IAAM,EAAU,KAAK,IAAI,cAAgB,IACzC,KAAK,QAAU,IAAY,IAAM,IAAM,EAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,EAC7E,KAAK,QAAW,KAAK,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,GAA0B,EAC/F,KAAK,QAAU,KAAK,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,GAAK,EACzE,KAAK,eAAiB,KAAK,IAAI,sBAAsB,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,GAAK,CAAC,EACzF,KAAK,YAAc,KAAK,IAAI,mBAAqB,OACjD,KAAK,OAAS,OAAO,KAAK,IAAI,cAAgB,KAAK,EAG9C,QAAU,MAAO,IAAqD,CAC3E,IAAM,EAAS,EAAQ,OAAO,IAAI,QAAQ,EAE1C,GAAI,CAAC,EACH,OAAO,EAGT,GAAI,CAAC,KAAK,gBAAgB,CAAM,EAC9B,OAAO,EAGT,IAAM,EAAgB,KAAK,UAAY,IAAM,IAAM,EAQnD,GANA,EAAQ,SAAS,OACd,4BAA4B,CAAa,EACzC,6BAA6B,KAAK,OAAO,EACzC,6BAA6B,KAAK,OAAO,EACzC,iCAAiC,KAAK,WAAW,EAEhD,KAAK,eAAe,OAAS,EAC/B,EAAQ,SAAS,OAAO,IAAI,gCAAiC,KAAK,eAAe,KAAK,IAAI,CAAC,EAG7F,GAAI,EAAQ,SAAW,UACrB,EAAQ,SAAS,OAAO,IAAI,yBAA0B,OAAO,KAAK,MAAM,CAAC,EACzE,EAAQ,SAAS,KAAK,CAAC,EAAG,GAAG,EAG/B,OAAO,GAGD,eAAe,CAAC,EAAyB,CAC/C,GAAI,KAAK,UAAY,IACnB,MAAO,GAGT,OAAO,KAAK,QAAQ,SAAS,CAAM,EAEvC,CAxDa,EAAN,GADN,EAAU,WAAW,EASP,MAAO,CAAM,GARrB,0DAAM",
9
+ "debugId": "79F9D9A42C4D907264756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ooneex/middleware",
3
3
  "description": "Middleware pipeline framework with decorator-based registration for processing HTTP requests, responses, and WebSocket events in sequence",
4
- "version": "1.2.2",
4
+ "version": "1.2.3",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -32,7 +32,7 @@
32
32
  "@ooneex/container": "1.1.2"
33
33
  },
34
34
  "devDependencies": {
35
- "@ooneex/controller": "1.2.2",
35
+ "@ooneex/controller": "1.3.0",
36
36
  "@ooneex/types": "1.1.2",
37
37
  "@ooneex/socket": "1.2.2"
38
38
  },