cqrs-boilerplate-code 1.0.20 → 1.0.22

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.d.ts CHANGED
@@ -33,3 +33,7 @@ export * from './middleware/auth-middleware/auth.middleware';
33
33
  export { AUTH_MIDDLEWARE_OPTIONS } from './middleware/auth-middleware/auth.middleware';
34
34
  export { AuthMiddlewareOptions } from './middleware/auth-middleware/auth.middleware';
35
35
  export * from './middleware/auth-middleware/jwt-validator';
36
+ export * from './middleware/async-middleware/async-storage.middleware';
37
+ export * from './middleware/async-middleware/async-storage.service';
38
+ export * from './middleware/utils/http-response.formatter';
39
+ export * from './middleware/utils/http-response.interceptor';
package/dist/index.js CHANGED
@@ -50,4 +50,8 @@ __exportStar(require("./middleware/auth-middleware/auth.middleware"), exports);
50
50
  var auth_middleware_1 = require("./middleware/auth-middleware/auth.middleware");
51
51
  Object.defineProperty(exports, "AUTH_MIDDLEWARE_OPTIONS", { enumerable: true, get: function () { return auth_middleware_1.AUTH_MIDDLEWARE_OPTIONS; } });
52
52
  __exportStar(require("./middleware/auth-middleware/jwt-validator"), exports);
53
+ __exportStar(require("./middleware/async-middleware/async-storage.middleware"), exports);
54
+ __exportStar(require("./middleware/async-middleware/async-storage.service"), exports);
55
+ __exportStar(require("./middleware/utils/http-response.formatter"), exports);
56
+ __exportStar(require("./middleware/utils/http-response.interceptor"), exports);
53
57
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,sEAAmD;AAGnD,wFAAqE;AACrE,qFAAkE;AAClE,kFAA+D;AAC/D,2FAAwE;AACxE,mFAAgE;AAChE,yFAAsE;AACtE,mFAAgE;AAChE,6FAA0E;AAC1E,sFAAmE;AACnE,0FAAuE;AACvE,oFAAiE;AACjE,oEAAiD;AAGjD,4FAAyE;AACzE,8FAA2E;AAC3E,oEAAiD;AAGjD,wEAAqD;AACrD,qEAAkD;AAClD,sEAAmD;AAGnD,qEAAkD;AAClD,yEAAsD;AACtD,sEAAmD;AACnD,mEAAgD;AAGhD,0EAAuD;AACvD,oEAAiD;AACjD,kEAA+C;AAC/C,oEAAiD;AAGjD,sEAAmD;AACnD,0EAAuD;AACvD,yEAAsD;AACtD,0EAAuD;AAGvD,+EAA4D;AAC5D,gFAAsF;AAA7E,0HAAA,uBAAuB,OAAA;AAEhC,6EAA0D","sourcesContent":["\nexport * from './core-common/constant/app.constant'\n\n// Error Exports\nexport * from './core-common/error/custom-error/already-exists.error'\nexport * from './core-common/error/custom-error/bad-request.error'\nexport * from './core-common/error/custom-error/conflict.error'\nexport * from './core-common/error/custom-error/custom-validation-error'\nexport * from './core-common/error/custom-error/forbidden.error'\nexport * from './core-common/error/custom-error/internal-server.error'\nexport * from './core-common/error/custom-error/not-found.error'\nexport * from './core-common/error/custom-error/service-unavailable.error'\nexport * from './core-common/error/custom-error/unauthorized.error'\nexport * from './core-common/error/custom-error/unprocess-entity.error'\nexport * from './core-common/error/custom-error/validation.error'\nexport * from './core-common/error/generic.error'\n\n// Model Exports\nexport * from './core-common/response-model/generic-error-response.model'\nexport * from './core-common/response-model/generic-success-response.model'\nexport * from './core-common/result-model/result'\n\n// Logger Exports\nexport * from './core-common/logger/logger.interface'\nexport * from './core-common/logger/logger.module'\nexport * from './core-common/logger/logger.service'\n\n// Module Exports\nexport * from './common-infra/common-infra.module'\nexport * from './common-infra/database/typeorm.config'\nexport * from './core-common/constant/app.constant'\nexport * from './core-common/core-common.module'\n\n// HTTP Exports\nexport * from './common-infra/http/http-module.options'\nexport * from './common-infra/http/http.constant'\nexport * from './common-infra/http/http.module'\nexport * from './common-infra/http/https.service'\n\n// Socket.IO Exports\nexport * from './common-infra/socket.io/interfaces'\nexport * from './common-infra/socket.io/socket.gateway'\nexport * from './common-infra/socket.io/socket.module'\nexport * from './common-infra/socket.io/socket.options'\n\n// Middleware Exports\nexport * from './middleware/auth-middleware/auth.middleware'\nexport { AUTH_MIDDLEWARE_OPTIONS } from './middleware/auth-middleware/auth.middleware'\nexport { AuthMiddlewareOptions } from './middleware/auth-middleware/auth.middleware'\nexport * from './middleware/auth-middleware/jwt-validator'"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,sEAAmD;AAGnD,wFAAqE;AACrE,qFAAkE;AAClE,kFAA+D;AAC/D,2FAAwE;AACxE,mFAAgE;AAChE,yFAAsE;AACtE,mFAAgE;AAChE,6FAA0E;AAC1E,sFAAmE;AACnE,0FAAuE;AACvE,oFAAiE;AACjE,oEAAiD;AAGjD,4FAAyE;AACzE,8FAA2E;AAC3E,oEAAiD;AAGjD,wEAAqD;AACrD,qEAAkD;AAClD,sEAAmD;AAGnD,qEAAkD;AAClD,yEAAsD;AACtD,sEAAmD;AACnD,mEAAgD;AAGhD,0EAAuD;AACvD,oEAAiD;AACjD,kEAA+C;AAC/C,oEAAiD;AAGjD,sEAAmD;AACnD,0EAAuD;AACvD,yEAAsD;AACtD,0EAAuD;AAGvD,+EAA4D;AAC5D,gFAAsF;AAA7E,0HAAA,uBAAuB,OAAA;AAEhC,6EAA0D;AAG1D,yFAAsE;AACtE,sFAAmE;AAGnE,6EAA0D;AAC1D,+EAA4D","sourcesContent":["\nexport * from './core-common/constant/app.constant'\n\n// Error Exports\nexport * from './core-common/error/custom-error/already-exists.error'\nexport * from './core-common/error/custom-error/bad-request.error'\nexport * from './core-common/error/custom-error/conflict.error'\nexport * from './core-common/error/custom-error/custom-validation-error'\nexport * from './core-common/error/custom-error/forbidden.error'\nexport * from './core-common/error/custom-error/internal-server.error'\nexport * from './core-common/error/custom-error/not-found.error'\nexport * from './core-common/error/custom-error/service-unavailable.error'\nexport * from './core-common/error/custom-error/unauthorized.error'\nexport * from './core-common/error/custom-error/unprocess-entity.error'\nexport * from './core-common/error/custom-error/validation.error'\nexport * from './core-common/error/generic.error'\n\n// Model Exports\nexport * from './core-common/response-model/generic-error-response.model'\nexport * from './core-common/response-model/generic-success-response.model'\nexport * from './core-common/result-model/result'\n\n// Logger Exports\nexport * from './core-common/logger/logger.interface'\nexport * from './core-common/logger/logger.module'\nexport * from './core-common/logger/logger.service'\n\n// Module Exports\nexport * from './common-infra/common-infra.module'\nexport * from './common-infra/database/typeorm.config'\nexport * from './core-common/constant/app.constant'\nexport * from './core-common/core-common.module'\n\n// HTTP Exports\nexport * from './common-infra/http/http-module.options'\nexport * from './common-infra/http/http.constant'\nexport * from './common-infra/http/http.module'\nexport * from './common-infra/http/https.service'\n\n// Socket.IO Exports\nexport * from './common-infra/socket.io/interfaces'\nexport * from './common-infra/socket.io/socket.gateway'\nexport * from './common-infra/socket.io/socket.module'\nexport * from './common-infra/socket.io/socket.options'\n\n// Middleware Exports\nexport * from './middleware/auth-middleware/auth.middleware'\nexport { AUTH_MIDDLEWARE_OPTIONS } from './middleware/auth-middleware/auth.middleware'\nexport { AuthMiddlewareOptions } from './middleware/auth-middleware/auth.middleware'\nexport * from './middleware/auth-middleware/jwt-validator'\n\n// Async Storage Middleware Exports\nexport * from './middleware/async-middleware/async-storage.middleware'\nexport * from './middleware/async-middleware/async-storage.service'\n\n// Http Formatter Exports\nexport * from './middleware/utils/http-response.formatter'\nexport * from './middleware/utils/http-response.interceptor'"]}
@@ -0,0 +1,8 @@
1
+ import { NestMiddleware } from "@nestjs/common";
2
+ import { Request, Response, NextFunction } from "express";
3
+ export declare class AsyncStorageMiddleware implements NestMiddleware {
4
+ private static readonly storage;
5
+ static get<T = unknown>(key: string): T | undefined;
6
+ static set(key: string, value: unknown): void;
7
+ use(req: Request, _res: Response, next: NextFunction): void;
8
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var AsyncStorageMiddleware_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AsyncStorageMiddleware = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const async_hooks_1 = require("async_hooks");
13
+ let AsyncStorageMiddleware = class AsyncStorageMiddleware {
14
+ static { AsyncStorageMiddleware_1 = this; }
15
+ static storage = new async_hooks_1.AsyncLocalStorage();
16
+ static get(key) {
17
+ return this.storage.getStore()?.get(key);
18
+ }
19
+ static set(key, value) {
20
+ this.storage.getStore()?.set(key, value);
21
+ }
22
+ use(req, _res, next) {
23
+ const store = new Map();
24
+ store.set("request", req);
25
+ AsyncStorageMiddleware_1.storage.run(store, next);
26
+ }
27
+ };
28
+ exports.AsyncStorageMiddleware = AsyncStorageMiddleware;
29
+ exports.AsyncStorageMiddleware = AsyncStorageMiddleware = AsyncStorageMiddleware_1 = __decorate([
30
+ (0, common_1.Injectable)()
31
+ ], AsyncStorageMiddleware);
32
+ //# sourceMappingURL=async-storage.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-storage.middleware.js","sourceRoot":"","sources":["../../../src/middleware/async-middleware/async-storage.middleware.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA4D;AAC5D,6CAAgD;AAIzC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;;IACvB,MAAM,CAAU,OAAO,GAC3B,IAAI,+BAAiB,EAAwB,CAAC;IAElD,MAAM,CAAC,GAAG,CAAc,GAAW;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,GAAG,CAAkB,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;QAChD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE1B,wBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;;AAjBQ,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;GACA,sBAAsB,CAkBlC","sourcesContent":["import { Injectable, NestMiddleware } from \"@nestjs/common\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport { Request, Response, NextFunction } from \"express\";\n\n@Injectable()\nexport class AsyncStorageMiddleware implements NestMiddleware {\n private static readonly storage =\n new AsyncLocalStorage<Map<string, unknown>>();\n\n static get<T = unknown>(key: string): T | undefined {\n return this.storage.getStore()?.get(key) as T | undefined;\n }\n\n static set(key: string, value: unknown): void {\n this.storage.getStore()?.set(key, value);\n }\n\n use(req: Request, _res: Response, next: NextFunction): void {\n const store = new Map<string, unknown>();\n store.set(\"request\", req);\n\n AsyncStorageMiddleware.storage.run(store, next);\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare class AsyncStorageService {
2
+ get<T = unknown>(key: string): T | undefined;
3
+ set(key: string, value: unknown): void;
4
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AsyncStorageService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const async_storage_middleware_1 = require("./async-storage.middleware");
12
+ let AsyncStorageService = class AsyncStorageService {
13
+ get(key) {
14
+ return async_storage_middleware_1.AsyncStorageMiddleware.get(key);
15
+ }
16
+ set(key, value) {
17
+ async_storage_middleware_1.AsyncStorageMiddleware.set(key, value);
18
+ }
19
+ };
20
+ exports.AsyncStorageService = AsyncStorageService;
21
+ exports.AsyncStorageService = AsyncStorageService = __decorate([
22
+ (0, common_1.Injectable)()
23
+ ], AsyncStorageService);
24
+ //# sourceMappingURL=async-storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-storage.service.js","sourceRoot":"","sources":["../../../src/middleware/async-middleware/async-storage.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,yEAAoE;AAG7D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC5B,GAAG,CAAc,GAAW;QACxB,OAAO,iDAAsB,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAc;QAC3B,iDAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;CACJ,CAAA;AARY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CAQ/B","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { AsyncStorageMiddleware } from \"./async-storage.middleware\";\n\n@Injectable()\nexport class AsyncStorageService {\n get<T = unknown>(key: string): T | undefined {\n return AsyncStorageMiddleware.get<T>(key);\n }\n\n set(key: string, value: unknown): void {\n AsyncStorageMiddleware.set(key, value);\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { NestMiddleware } from "@nestjs/common";
2
+ import { Request, Response, NextFunction } from "express";
3
+ export declare class AsyncStorageMiddleware implements NestMiddleware {
4
+ private static storage;
5
+ static get(key: string): any;
6
+ static set(key: string, value: any): void;
7
+ use(req: Request, _res: Response, next: NextFunction): void;
8
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var AsyncStorageMiddleware_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AsyncStorageMiddleware = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const async_hooks_1 = require("async_hooks");
13
+ let AsyncStorageMiddleware = class AsyncStorageMiddleware {
14
+ static { AsyncStorageMiddleware_1 = this; }
15
+ static storage = new async_hooks_1.AsyncLocalStorage();
16
+ static get(key) {
17
+ const store = AsyncStorageMiddleware_1.storage.getStore();
18
+ return store?.get(key);
19
+ }
20
+ static set(key, value) {
21
+ const store = AsyncStorageMiddleware_1.storage.getStore();
22
+ if (store) {
23
+ store.set(key, value);
24
+ }
25
+ }
26
+ use(req, _res, next) {
27
+ const store = new Map();
28
+ store.set("request", req);
29
+ AsyncStorageMiddleware_1.storage.run(store, () => {
30
+ next();
31
+ });
32
+ }
33
+ };
34
+ exports.AsyncStorageMiddleware = AsyncStorageMiddleware;
35
+ exports.AsyncStorageMiddleware = AsyncStorageMiddleware = AsyncStorageMiddleware_1 = __decorate([
36
+ (0, common_1.Injectable)()
37
+ ], AsyncStorageMiddleware);
38
+ //# sourceMappingURL=async-storage.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-storage.middleware.js","sourceRoot":"","sources":["../../src/middleware/async-storage.middleware.ts"],"names":[],"mappings":";;;;;;;;;;AACA,2CAA4D;AAC5D,6CAAgD;AAIzC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;;IACzB,MAAM,CAAC,OAAO,GAAG,IAAI,+BAAiB,EAAoB,CAAC;IAEnE,MAAM,CAAC,GAAG,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,wBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxD,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU;QAChC,MAAM,KAAK,GAAG,wBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;QAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAe,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1B,wBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE;YAC7C,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;;AArBU,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;GACA,sBAAsB,CAsBlC","sourcesContent":["// async-storage.middleware.ts\nimport { Injectable, NestMiddleware } from \"@nestjs/common\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport { Request, Response, NextFunction } from \"express\";\n\n@Injectable()\nexport class AsyncStorageMiddleware implements NestMiddleware {\n private static storage = new AsyncLocalStorage<Map<string, any>>();\n\n static get(key: string): any {\n const store = AsyncStorageMiddleware.storage.getStore();\n return store?.get(key);\n }\n\n static set(key: string, value: any): void {\n const store = AsyncStorageMiddleware.storage.getStore();\n if (store) {\n store.set(key, value);\n }\n }\n\n use(req: Request, _res: Response, next: NextFunction) {\n const store = new Map<string, any>();\n store.set(\"request\", req);\n AsyncStorageMiddleware.storage.run(store, () => {\n next();\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../../src/middleware/auth-middleware/auth.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AAGX,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AASlE,IAAM,cAAc,GAApB,MAAM,cAAc;IAGF;IAFrB,YAEqB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAC/C,CAAC;IAEL,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;QACtD,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAuB,CAAC;QAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,IAAI,QAAQ;gBAAE,OAAO,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,8BAAqB,CAAC,8BAA8B,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,EAAE,CAAC;IACX,CAAC;CACJ,CAAA;AAvBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGJ,WAAA,IAAA,eAAM,EAAC,+BAAuB,CAAC,CAAA;;GAF3B,cAAc,CAuB1B","sourcesContent":["import {\n Inject,\n Injectable,\n NestMiddleware,\n UnauthorizedException,\n} from \"@nestjs/common\";\nimport { NextFunction} from \"express\";\n\nexport const AUTH_MIDDLEWARE_OPTIONS = Symbol(\"AUTH_MIDDLEWARE_OPTIONS\");\n\nexport interface AuthMiddlewareOptions {\n headerName?: string;\n validate?: (token: string, req: Request) => boolean | Promise<boolean>;\n optional?: boolean;\n}\n\n@Injectable()\nexport class AuthMiddleware implements NestMiddleware {\n constructor(\n @Inject(AUTH_MIDDLEWARE_OPTIONS)\n private readonly options: AuthMiddlewareOptions,\n ) { }\n\n async use(req: Request, _res: Response, next: NextFunction) {\n const { headerName = \"authorization\", validate, optional } = this.options;\n const authHeader = req.headers[headerName] as string | undefined;\n\n if (!authHeader) {\n if (optional) return next();\n throw new UnauthorizedException(\"Authorization header missing\");\n }\n\n const token = authHeader.replace(\"Bearer \", \"\");\n\n if (validate && !(await validate(token, req))) {\n throw new UnauthorizedException();\n }\n\n next();\n }\n}\n"]}
1
+ {"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../../src/middleware/auth-middleware/auth.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AAGX,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AASlE,IAAM,cAAc,GAApB,MAAM,cAAc;IAGF;IAFrB,YAEqB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAC/C,CAAC;IAEL,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;QACtD,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAuB,CAAC;QAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,IAAI,QAAQ;gBAAE,OAAO,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,8BAAqB,CAAC,8BAA8B,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC;CACJ,CAAA;AApBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGJ,WAAA,IAAA,eAAM,EAAC,+BAAuB,CAAC,CAAA;;GAF3B,cAAc,CAoB1B","sourcesContent":["import {\n Inject,\n Injectable,\n NestMiddleware,\n UnauthorizedException,\n} from \"@nestjs/common\";\nimport { NextFunction} from \"express\";\n\nexport const AUTH_MIDDLEWARE_OPTIONS = Symbol(\"AUTH_MIDDLEWARE_OPTIONS\");\n\nexport interface AuthMiddlewareOptions {\n headerName?: string;\n validate?: (token: string, req: Request) => boolean | Promise<boolean>;\n optional?: boolean;\n}\n\n@Injectable()\nexport class AuthMiddleware implements NestMiddleware {\n constructor(\n @Inject(AUTH_MIDDLEWARE_OPTIONS)\n private readonly options: AuthMiddlewareOptions,\n ) { }\n\n async use(req: Request, _res: Response, next: NextFunction) {\n const { headerName = \"authorization\", validate, optional } = this.options;\n const authHeader = req.headers[headerName] as string | undefined;\n\n if (!authHeader) {\n if (optional) return next();\n throw new UnauthorizedException(\"Authorization header missing\");\n }\n const token = authHeader.replace(\"Bearer \", \"\");\n if (validate && !(await validate(token, req))) {\n throw new UnauthorizedException();\n }\n next();\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { ArgumentsHost, ExceptionFilter } from "@nestjs/common";
2
+ import { Response } from "express";
3
+ export declare class GlobalExceptionHandler implements ExceptionFilter {
4
+ catch(exception: unknown, host: ArgumentsHost): Response<any, Record<string, any>>;
5
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.GlobalExceptionHandler = void 0;
10
+ const validation_error_1 = require("../../core-common/error/custom-error/validation.error");
11
+ const generic_error_1 = require("../../core-common/error/generic.error");
12
+ const result_1 = require("../../core-common/result-model/result");
13
+ const common_1 = require("@nestjs/common");
14
+ let GlobalExceptionHandler = class GlobalExceptionHandler {
15
+ catch(exception, host) {
16
+ const response = host.switchToHttp().getResponse();
17
+ if (exception instanceof result_1.Result) {
18
+ const statusCode = exception.error?.statusCode ?? common_1.HttpStatus.INTERNAL_SERVER_ERROR;
19
+ const payload = {
20
+ statusCode,
21
+ success: false,
22
+ error: {
23
+ code: exception.error?.code ?? "ERROR",
24
+ message: exception.error?.message ?? "An error occurred",
25
+ },
26
+ timestamp: exception.timestamp ?? new Date().toISOString(),
27
+ };
28
+ if (exception.data !== undefined && exception.data !== null) {
29
+ payload.data = exception.data;
30
+ }
31
+ return response.status(statusCode).json(payload);
32
+ }
33
+ if (exception instanceof generic_error_1.GenericError) {
34
+ return response.status(exception.statusCode).json({
35
+ statusCode: exception.statusCode,
36
+ success: false,
37
+ error: {
38
+ code: exception.code,
39
+ message: exception.message,
40
+ },
41
+ timestamp: new Date().toISOString(),
42
+ });
43
+ }
44
+ if (exception instanceof common_1.HttpException) {
45
+ const status = exception.getStatus();
46
+ const res = exception.getResponse();
47
+ const isValidationPipeError = exception.stack?.includes("ValidationPipe");
48
+ if (isValidationPipeError) {
49
+ const validationErrors = new validation_error_1.ValidationError("validation_error", "Validation failed");
50
+ return response.status(validationErrors.statusCode).json({
51
+ success: false,
52
+ error: {
53
+ code: validationErrors.code,
54
+ message: validationErrors.message,
55
+ validationError: validationErrors,
56
+ },
57
+ timestamp: new Date().toISOString(),
58
+ });
59
+ }
60
+ return response.status(status).json({
61
+ statusCode: status,
62
+ success: false,
63
+ error: {
64
+ code: "HTTP_EXCEPTION",
65
+ message: typeof res === "string"
66
+ ? res
67
+ : (res.message ?? exception.message),
68
+ },
69
+ timestamp: new Date().toISOString(),
70
+ });
71
+ }
72
+ if (exception instanceof Error) {
73
+ return response.status(common_1.HttpStatus.INTERNAL_SERVER_ERROR).json({
74
+ statusCode: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
75
+ success: false,
76
+ error: {
77
+ code: exception.name,
78
+ message: exception.message,
79
+ },
80
+ timestamp: new Date().toISOString(),
81
+ });
82
+ }
83
+ return response.status(common_1.HttpStatus.INTERNAL_SERVER_ERROR).json({
84
+ statusCode: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
85
+ success: false,
86
+ error: {
87
+ code: "UNKNOWN_ERROR",
88
+ message: "Internal server error",
89
+ },
90
+ timestamp: new Date().toISOString(),
91
+ });
92
+ }
93
+ };
94
+ exports.GlobalExceptionHandler = GlobalExceptionHandler;
95
+ exports.GlobalExceptionHandler = GlobalExceptionHandler = __decorate([
96
+ (0, common_1.Catch)()
97
+ ], GlobalExceptionHandler);
98
+ //# sourceMappingURL=global-exeception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-exeception.filter.js","sourceRoot":"","sources":["../../../src/middleware/filter/global-exeception.filter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ValidationError } from \"@core-common/error/custom-error/validation.error\";\nimport { GenericError } from \"@core-common/error/generic.error\";\nimport { Result } from \"@core-common/result-model/result\";\nimport {\n ArgumentsHost,\n Catch,\n ExceptionFilter,\n HttpException,\n HttpStatus,\n} from \"@nestjs/common\";\nimport { Response } from \"express\";\n\n/**\n * Handles and processes exceptions, providing standardized error responses.\n * This global exception handler can be used to catch and respond to exceptions thrown\n * during HTTP requests and format responses accordingly.\n */\n\n@Catch()\nexport class GlobalExceptionHandler implements ExceptionFilter {\n catch(exception: unknown, host: ArgumentsHost) {\n const response = host.switchToHttp().getResponse<Response>();\n\n /* 1️⃣ Domain Result (highest priority) */\n if (exception instanceof Result) {\n const statusCode =\n exception.error?.statusCode ?? HttpStatus.INTERNAL_SERVER_ERROR;\n\n const payload: any = {\n statusCode,\n success: false,\n error: {\n code: exception.error?.code ?? \"ERROR\",\n message: exception.error?.message ?? \"An error occurred\",\n },\n timestamp: exception.timestamp ?? new Date().toISOString(),\n };\n\n if (exception.data !== undefined && exception.data !== null) {\n payload.data = exception.data;\n }\n\n return response.status(statusCode).json(payload);\n }\n\n /* 2️⃣ Custom domain errors */\n if (exception instanceof GenericError) {\n return response.status(exception.statusCode).json({\n statusCode: exception.statusCode,\n success: false,\n error: {\n code: exception.code,\n message: exception.message,\n },\n timestamp: new Date().toISOString(),\n });\n }\n\n /* 3️⃣ NestJS HTTP exceptions */\n if (exception instanceof HttpException) {\n const status = exception.getStatus();\n const res = exception.getResponse();\n\n const isValidationPipeError = exception.stack?.includes(\"ValidationPipe\");\n\n if (isValidationPipeError) {\n const validationErrors = new ValidationError(\"validation_error\", \"Validation failed\");\n return response.status(validationErrors.statusCode).json({\n success: false,\n error: {\n code: validationErrors.code,\n message: validationErrors.message,\n validationError: validationErrors,\n },\n timestamp: new Date().toISOString(),\n });\n }\n\n return response.status(status).json({\n statusCode: status,\n success: false,\n error: {\n code: \"HTTP_EXCEPTION\",\n message:\n typeof res === \"string\"\n ? res\n : ((res as any).message ?? exception.message),\n },\n timestamp: new Date().toISOString(),\n });\n }\n\n /* 4️⃣ Native JS errors (TypeError, Error, etc.) */\n if (exception instanceof Error) {\n return response.status(HttpStatus.INTERNAL_SERVER_ERROR).json({\n statusCode: HttpStatus.INTERNAL_SERVER_ERROR,\n success: false,\n error: {\n code: exception.name,\n message: exception.message,\n },\n timestamp: new Date().toISOString(),\n });\n }\n\n /* 5️⃣ Truly unknown (non-Error throwables) */\n return response.status(HttpStatus.INTERNAL_SERVER_ERROR).json({\n statusCode: HttpStatus.INTERNAL_SERVER_ERROR,\n success: false,\n error: {\n code: \"UNKNOWN_ERROR\",\n message: \"Internal server error\",\n },\n timestamp: new Date().toISOString(),\n });\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { GenericErrorResponse } from "@core-common/response-model/generic-error-response.model";
2
+ import { GenericSuccessResponse } from "@core-common/response-model/generic-success-response.model";
3
+ export declare class HttpResponseFormatter {
4
+ getStandardApiResponse(statusCode: number, responseData: any): GenericSuccessResponse<any> | GenericErrorResponse | any;
5
+ private getSuccessResponse;
6
+ private isSuccessfulResult;
7
+ private isFailedResult;
8
+ private getFailureResponse;
9
+ private getStatusCode;
10
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HttpResponseFormatter = void 0;
10
+ const already_exists_error_1 = require("../../core-common/error/custom-error/already-exists.error");
11
+ const bad_request_error_1 = require("../../core-common/error/custom-error/bad-request.error");
12
+ const conflict_error_1 = require("../../core-common/error/custom-error/conflict.error");
13
+ const forbidden_error_1 = require("../../core-common/error/custom-error/forbidden.error");
14
+ const internal_server_error_1 = require("../../core-common/error/custom-error/internal-server.error");
15
+ const not_found_error_1 = require("../../core-common/error/custom-error/not-found.error");
16
+ const service_unavailable_error_1 = require("../../core-common/error/custom-error/service-unavailable.error");
17
+ const unauthorized_error_1 = require("../../core-common/error/custom-error/unauthorized.error");
18
+ const unprocess_entity_error_1 = require("../../core-common/error/custom-error/unprocess-entity.error");
19
+ const validation_error_1 = require("../../core-common/error/custom-error/validation.error");
20
+ const generic_error_1 = require("../../core-common/error/generic.error");
21
+ const generic_error_response_model_1 = require("../../core-common/response-model/generic-error-response.model");
22
+ const generic_success_response_model_1 = require("../../core-common/response-model/generic-success-response.model");
23
+ const result_1 = require("../../core-common/result-model/result");
24
+ const common_1 = require("@nestjs/common");
25
+ let HttpResponseFormatter = class HttpResponseFormatter {
26
+ getStandardApiResponse(statusCode, responseData) {
27
+ if (this.isSuccessfulResult(responseData)) {
28
+ return this.getSuccessResponse(responseData, statusCode);
29
+ }
30
+ if (this.isFailedResult(responseData)) {
31
+ return this.getFailureResponse(responseData);
32
+ }
33
+ return responseData;
34
+ }
35
+ getSuccessResponse(responseData, statusCode) {
36
+ const response = new generic_success_response_model_1.GenericSuccessResponse();
37
+ response.initialize(responseData, statusCode);
38
+ return response;
39
+ }
40
+ isSuccessfulResult(responseData) {
41
+ return responseData instanceof result_1.Result && responseData.success === true;
42
+ }
43
+ isFailedResult(responseData) {
44
+ return responseData instanceof result_1.Result && responseData.success === false;
45
+ }
46
+ getFailureResponse(result) {
47
+ const statusCode = this.getStatusCode(result.error);
48
+ const response = new generic_error_response_model_1.GenericErrorResponse();
49
+ response.initialize(result, statusCode);
50
+ return response;
51
+ }
52
+ getStatusCode(error) {
53
+ if (error instanceof bad_request_error_1.BadRequestError) {
54
+ return common_1.HttpStatus.BAD_REQUEST;
55
+ }
56
+ if (error instanceof unauthorized_error_1.UnauthorizedError) {
57
+ return common_1.HttpStatus.UNAUTHORIZED;
58
+ }
59
+ if (error instanceof forbidden_error_1.ForbiddenError) {
60
+ return common_1.HttpStatus.FORBIDDEN;
61
+ }
62
+ if (error instanceof not_found_error_1.NotFoundError) {
63
+ return common_1.HttpStatus.NOT_FOUND;
64
+ }
65
+ if (error instanceof already_exists_error_1.AlreadyExistsError ||
66
+ error instanceof conflict_error_1.ConflictError) {
67
+ return common_1.HttpStatus.CONFLICT;
68
+ }
69
+ if (error instanceof validation_error_1.ValidationError ||
70
+ error instanceof unprocess_entity_error_1.UnprocessableEntityError) {
71
+ return common_1.HttpStatus.UNPROCESSABLE_ENTITY;
72
+ }
73
+ if (error instanceof service_unavailable_error_1.ServiceUnavailableError) {
74
+ return common_1.HttpStatus.SERVICE_UNAVAILABLE;
75
+ }
76
+ if (error instanceof internal_server_error_1.InternalServerError) {
77
+ return common_1.HttpStatus.INTERNAL_SERVER_ERROR;
78
+ }
79
+ if (error instanceof generic_error_1.GenericError) {
80
+ return error.statusCode;
81
+ }
82
+ return common_1.HttpStatus.INTERNAL_SERVER_ERROR;
83
+ }
84
+ };
85
+ exports.HttpResponseFormatter = HttpResponseFormatter;
86
+ exports.HttpResponseFormatter = HttpResponseFormatter = __decorate([
87
+ (0, common_1.Injectable)()
88
+ ], HttpResponseFormatter);
89
+ //# sourceMappingURL=http-response.formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-response.formatter.js","sourceRoot":"","sources":["../../../src/middleware/utils/http-response.formatter.ts"],"names":[],"mappings":"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","sourcesContent":["import { AlreadyExistsError } from \"@core-common/error/custom-error/already-exists.error\";\nimport { BadRequestError } from \"@core-common/error/custom-error/bad-request.error\";\nimport { ConflictError } from \"@core-common/error/custom-error/conflict.error\";\nimport { ForbiddenError } from \"@core-common/error/custom-error/forbidden.error\";\nimport { InternalServerError } from \"@core-common/error/custom-error/internal-server.error\";\nimport { NotFoundError } from \"@core-common/error/custom-error/not-found.error\";\nimport { ServiceUnavailableError } from \"@core-common/error/custom-error/service-unavailable.error\";\nimport { UnauthorizedError } from \"@core-common/error/custom-error/unauthorized.error\";\nimport { UnprocessableEntityError } from \"@core-common/error/custom-error/unprocess-entity.error\";\nimport { ValidationError } from \"@core-common/error/custom-error/validation.error\";\nimport { GenericError } from \"@core-common/error/generic.error\";\nimport { GenericErrorResponse } from \"@core-common/response-model/generic-error-response.model\";\nimport { GenericSuccessResponse } from \"@core-common/response-model/generic-success-response.model\";\nimport { Result } from \"@core-common/result-model/result\";\nimport { HttpStatus, Injectable } from \"@nestjs/common\";\n\n@Injectable()\nexport class HttpResponseFormatter {\n /**\n * Returns a standard formatted ApiSuccessResponse or ApiErrorResponse\n */\n public getStandardApiResponse(\n statusCode: number,\n responseData: any,\n ): GenericSuccessResponse<any> | GenericErrorResponse | any {\n if (this.isSuccessfulResult(responseData)) {\n return this.getSuccessResponse(responseData, statusCode);\n }\n\n if (this.isFailedResult(responseData)) {\n return this.getFailureResponse(responseData);\n }\n\n return responseData;\n }\n\n private getSuccessResponse(\n responseData: Result<any>,\n statusCode: number,\n ): GenericSuccessResponse<any> {\n const response = new GenericSuccessResponse();\n response.initialize(responseData, statusCode);\n return response;\n }\n\n private isSuccessfulResult(responseData: any): boolean {\n return responseData instanceof Result && responseData.success === true;\n }\n\n private isFailedResult(responseData: any): boolean {\n return responseData instanceof Result && responseData.success === false;\n }\n\n private getFailureResponse(result: Result<any>): GenericErrorResponse {\n const statusCode = this.getStatusCode(result.error);\n const response = new GenericErrorResponse();\n response.initialize(result, statusCode);\n return response;\n }\n\n private getStatusCode(error: GenericError): number {\n if (error instanceof BadRequestError) {\n return HttpStatus.BAD_REQUEST;\n }\n\n if (error instanceof UnauthorizedError) {\n return HttpStatus.UNAUTHORIZED;\n }\n\n if (error instanceof ForbiddenError) {\n return HttpStatus.FORBIDDEN;\n }\n\n if (error instanceof NotFoundError) {\n return HttpStatus.NOT_FOUND;\n }\n\n if (\n error instanceof AlreadyExistsError ||\n error instanceof ConflictError\n ) {\n return HttpStatus.CONFLICT;\n }\n\n if (\n error instanceof ValidationError ||\n error instanceof UnprocessableEntityError\n ) {\n return HttpStatus.UNPROCESSABLE_ENTITY;\n }\n\n if (error instanceof ServiceUnavailableError) {\n return HttpStatus.SERVICE_UNAVAILABLE;\n }\n\n if (error instanceof InternalServerError) {\n return HttpStatus.INTERNAL_SERVER_ERROR;\n }\n\n if (error instanceof GenericError) {\n return error.statusCode;\n }\n\n return HttpStatus.INTERNAL_SERVER_ERROR;\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
2
+ import { Observable } from "rxjs";
3
+ import { HttpResponseFormatter } from "./http-response.formatter";
4
+ export declare class HttpResponseInterceptor implements NestInterceptor {
5
+ private readonly formatter;
6
+ constructor(formatter: HttpResponseFormatter);
7
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
8
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HttpResponseInterceptor = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const rxjs_1 = require("rxjs");
15
+ const http_response_formatter_1 = require("./http-response.formatter");
16
+ let HttpResponseInterceptor = class HttpResponseInterceptor {
17
+ formatter;
18
+ constructor(formatter) {
19
+ this.formatter = formatter;
20
+ }
21
+ intercept(context, next) {
22
+ const res = context.switchToHttp().getResponse();
23
+ return next.handle().pipe((0, rxjs_1.map)((data) => this.formatter.getStandardApiResponse(res.statusCode, data)));
24
+ }
25
+ };
26
+ exports.HttpResponseInterceptor = HttpResponseInterceptor;
27
+ exports.HttpResponseInterceptor = HttpResponseInterceptor = __decorate([
28
+ (0, common_1.Injectable)(),
29
+ __metadata("design:paramtypes", [http_response_formatter_1.HttpResponseFormatter])
30
+ ], HttpResponseInterceptor);
31
+ //# sourceMappingURL=http-response.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-response.interceptor.js","sourceRoot":"","sources":["../../../src/middleware/utils/http-response.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,+BAAuC;AACvC,uEAAkE;AAG3D,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAEX;IADrB,YACqB,SAAgC;QAAhC,cAAS,GAAT,SAAS,CAAuB;IACjD,CAAC;IAEL,SAAS,CACL,OAAyB,EACzB,IAAiB;QAEjB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACrB,IAAA,UAAG,EAAC,CAAC,IAAI,EAAE,EAAE,CACT,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACjC,GAAG,CAAC,UAAU,EACd,IAAI,CACP,CACJ,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AAnBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAGuB,+CAAqB;GAF5C,uBAAuB,CAmBnC","sourcesContent":["import {\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { Observable, map } from \"rxjs\";\nimport { HttpResponseFormatter } from \"./http-response.formatter\";\n\n@Injectable()\nexport class HttpResponseInterceptor implements NestInterceptor {\n constructor(\n private readonly formatter: HttpResponseFormatter,\n ) { }\n\n intercept(\n context: ExecutionContext,\n next: CallHandler,\n ): Observable<any> {\n const res = context.switchToHttp().getResponse();\n return next.handle().pipe(\n map((data) =>\n this.formatter.getStandardApiResponse(\n res.statusCode,\n data,\n ),\n ),\n );\n }\n}\n"]}