@lerianstudio/sindarian-server 1.0.0-beta.2 → 1.0.0-beta.20
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/README.md +52 -18
- package/dist/constants/keys.d.ts +1 -0
- package/dist/constants/keys.d.ts.map +1 -1
- package/dist/constants/keys.js +2 -1
- package/dist/constants/keys.js.map +1 -1
- package/dist/controllers/decorators/body-decorator.d.ts +12 -16
- package/dist/controllers/decorators/body-decorator.d.ts.map +1 -1
- package/dist/controllers/decorators/body-decorator.js +52 -58
- package/dist/controllers/decorators/body-decorator.js.map +1 -1
- package/dist/controllers/decorators/controller-decorator.d.ts +5 -4
- package/dist/controllers/decorators/controller-decorator.d.ts.map +1 -1
- package/dist/controllers/decorators/controller-decorator.js +29 -22
- package/dist/controllers/decorators/controller-decorator.js.map +1 -1
- package/dist/controllers/decorators/param-decorator.d.ts +4 -9
- package/dist/controllers/decorators/param-decorator.d.ts.map +1 -1
- package/dist/controllers/decorators/param-decorator.js +33 -29
- package/dist/controllers/decorators/param-decorator.js.map +1 -1
- package/dist/controllers/decorators/query-decorator.d.ts +11 -15
- package/dist/controllers/decorators/query-decorator.d.ts.map +1 -1
- package/dist/controllers/decorators/query-decorator.js +24 -38
- package/dist/controllers/decorators/query-decorator.js.map +1 -1
- package/dist/controllers/decorators/request-decorator.d.ts +8 -12
- package/dist/controllers/decorators/request-decorator.d.ts.map +1 -1
- package/dist/controllers/decorators/request-decorator.js +21 -17
- package/dist/controllers/decorators/request-decorator.js.map +1 -1
- package/dist/controllers/decorators/route-decorator.d.ts +12 -1
- package/dist/controllers/decorators/route-decorator.d.ts.map +1 -1
- package/dist/controllers/decorators/route-decorator.js +24 -16
- package/dist/controllers/decorators/route-decorator.js.map +1 -1
- package/dist/dependency-injection/container.d.ts +4 -3
- package/dist/dependency-injection/container.d.ts.map +1 -1
- package/dist/dependency-injection/container.js +14 -3
- package/dist/dependency-injection/container.js.map +1 -1
- package/dist/exceptions/api-exception.d.ts +4 -7
- package/dist/exceptions/api-exception.d.ts.map +1 -1
- package/dist/exceptions/api-exception.js +8 -4
- package/dist/exceptions/api-exception.js.map +1 -1
- package/dist/exceptions/base-exception-filter.d.ts.map +1 -1
- package/dist/exceptions/base-exception-filter.js +10 -3
- package/dist/exceptions/base-exception-filter.js.map +1 -1
- package/dist/exceptions/decorators/use-filters-decorator.d.ts +12 -1
- package/dist/exceptions/decorators/use-filters-decorator.d.ts.map +1 -1
- package/dist/exceptions/decorators/use-filters-decorator.js +34 -3
- package/dist/exceptions/decorators/use-filters-decorator.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptor/decorators/use-interceptor-decorator.d.ts +10 -3
- package/dist/interceptor/decorators/use-interceptor-decorator.d.ts.map +1 -1
- package/dist/interceptor/decorators/use-interceptor-decorator.js +60 -22
- package/dist/interceptor/decorators/use-interceptor-decorator.js.map +1 -1
- package/dist/modules/module-decorator.d.ts +2 -2
- package/dist/modules/module-decorator.d.ts.map +1 -1
- package/dist/modules/module-decorator.js +7 -13
- package/dist/modules/module-decorator.js.map +1 -1
- package/dist/pipes/decorators/index.d.ts +2 -0
- package/dist/pipes/decorators/index.d.ts.map +1 -0
- package/dist/pipes/decorators/index.js +6 -0
- package/dist/pipes/decorators/index.js.map +1 -0
- package/dist/pipes/decorators/use-pipes.d.ts +19 -0
- package/dist/pipes/decorators/use-pipes.d.ts.map +1 -0
- package/dist/pipes/decorators/use-pipes.js +118 -0
- package/dist/pipes/decorators/use-pipes.js.map +1 -0
- package/dist/pipes/index.d.ts +3 -0
- package/dist/pipes/index.d.ts.map +1 -0
- package/dist/pipes/index.js +18 -0
- package/dist/pipes/index.js.map +1 -0
- package/dist/pipes/pipe-transform.d.ts +46 -0
- package/dist/pipes/pipe-transform.d.ts.map +1 -0
- package/dist/pipes/pipe-transform.js +3 -0
- package/dist/pipes/pipe-transform.js.map +1 -0
- package/dist/server/server-factory.d.ts +25 -0
- package/dist/server/server-factory.d.ts.map +1 -1
- package/dist/server/server-factory.js +98 -33
- package/dist/server/server-factory.js.map +1 -1
- package/dist/services/http-service.d.ts +2 -2
- package/dist/services/http-service.d.ts.map +1 -1
- package/dist/services/http-service.js.map +1 -1
- package/dist/services/pipes.d.ts +2 -0
- package/dist/services/pipes.d.ts.map +1 -0
- package/dist/services/pipes.js +5 -0
- package/dist/services/pipes.js.map +1 -0
- package/dist/utils/routes/route-specificity.d.ts +40 -0
- package/dist/utils/routes/route-specificity.d.ts.map +1 -0
- package/dist/utils/routes/route-specificity.js +89 -0
- package/dist/utils/routes/route-specificity.js.map +1 -0
- package/dist/utils/url/url-match.d.ts.map +1 -1
- package/dist/utils/url/url-match.js +16 -2
- package/dist/utils/url/url-match.js.map +1 -1
- package/dist/zod/create-zod-dto.d.ts +16 -0
- package/dist/zod/create-zod-dto.d.ts.map +1 -0
- package/dist/zod/create-zod-dto.js +14 -0
- package/dist/zod/create-zod-dto.js.map +1 -0
- package/dist/zod/index.d.ts +3 -0
- package/dist/zod/index.d.ts.map +1 -0
- package/dist/zod/index.js +8 -0
- package/dist/zod/index.js.map +1 -0
- package/dist/zod/zod-validation-pipe.d.ts +5 -0
- package/dist/zod/zod-validation-pipe.d.ts.map +1 -0
- package/dist/zod/zod-validation-pipe.js +35 -0
- package/dist/zod/zod-validation-pipe.js.map +1 -0
- package/package.json +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-filters-decorator.js","sourceRoot":"","sources":["../../../src/exceptions/decorators/use-filters-decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-filters-decorator.js","sourceRoot":"","sources":["../../../src/exceptions/decorators/use-filters-decorator.ts"],"names":[],"mappings":";;;AA0DA,gCASC;AAnED,2CAA6C;AAS7C,MAAa,aAAa;IACxB,MAAM,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAU,EAAE,MAAM,CAAC,CAAA;QAC3D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;QAC9B,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAoB,EAAE,MAAc;QACxD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAE5C,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CACpE,CAAA;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAoB,EAAE,MAAc;QACrD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAE5C,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAC1B,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,SAAoB,EACpB,MAAgD;QAEhD,iEAAiE;QACjE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC,QAAQ,CAAkB,MAAM,CAAC,CAAA;QACpD,CAAC;QACD,oEAAoE;QACpE,OAAO,SAAS,CAAC,QAAQ,CAAkB,MAAM,CAAC,WAAkB,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CACpB,SAAoB,EACpB,MAAgD;QAEhD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;CACF;AA/CD,sCA+CC;AAED,SAAgB,UAAU,CAAC,OAAgB;IACzC,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,eAAe,GACnB,OAAO,CAAC,cAAc,CAAC,iBAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QAElD,MAAM,cAAc,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC,CAAA;QAEvD,OAAO,CAAC,cAAc,CAAC,iBAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;IAC5D,CAAC,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,9 +8,12 @@ export * from './logger';
|
|
|
8
8
|
export * from './controllers';
|
|
9
9
|
export * from './dependency-injection';
|
|
10
10
|
export * from './modules';
|
|
11
|
+
export * from './pipes';
|
|
11
12
|
export * from './server';
|
|
13
|
+
export * from './zod';
|
|
12
14
|
export { REQUEST } from './services/request';
|
|
13
15
|
export { APP_INTERCEPTOR } from './services/interceptor';
|
|
14
16
|
export { APP_FILTER } from './services/filters';
|
|
17
|
+
export { APP_PIPE } from './services/pipes';
|
|
15
18
|
export { FetchModuleOptions, HttpService } from './services/http-service';
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAA;AAEzB,cAAc,aAAa,CAAA;AAC3B,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAA;AAEzB,cAAc,aAAa,CAAA;AAC3B,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AAGrB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.HttpService = exports.APP_FILTER = exports.APP_INTERCEPTOR = exports.REQUEST = void 0;
|
|
19
|
+
exports.HttpService = exports.APP_PIPE = exports.APP_FILTER = exports.APP_INTERCEPTOR = exports.REQUEST = void 0;
|
|
20
20
|
require("reflect-metadata");
|
|
21
21
|
__exportStar(require("./constants"), exports);
|
|
22
22
|
__exportStar(require("./utils/apply-decorators"), exports);
|
|
@@ -27,7 +27,9 @@ __exportStar(require("./logger"), exports);
|
|
|
27
27
|
__exportStar(require("./controllers"), exports);
|
|
28
28
|
__exportStar(require("./dependency-injection"), exports);
|
|
29
29
|
__exportStar(require("./modules"), exports);
|
|
30
|
+
__exportStar(require("./pipes"), exports);
|
|
30
31
|
__exportStar(require("./server"), exports);
|
|
32
|
+
__exportStar(require("./zod"), exports);
|
|
31
33
|
// Services
|
|
32
34
|
var request_1 = require("./services/request");
|
|
33
35
|
Object.defineProperty(exports, "REQUEST", { enumerable: true, get: function () { return request_1.REQUEST; } });
|
|
@@ -35,6 +37,8 @@ var interceptor_1 = require("./services/interceptor");
|
|
|
35
37
|
Object.defineProperty(exports, "APP_INTERCEPTOR", { enumerable: true, get: function () { return interceptor_1.APP_INTERCEPTOR; } });
|
|
36
38
|
var filters_1 = require("./services/filters");
|
|
37
39
|
Object.defineProperty(exports, "APP_FILTER", { enumerable: true, get: function () { return filters_1.APP_FILTER; } });
|
|
40
|
+
var pipes_1 = require("./services/pipes");
|
|
41
|
+
Object.defineProperty(exports, "APP_PIPE", { enumerable: true, get: function () { return pipes_1.APP_PIPE; } });
|
|
38
42
|
var http_service_1 = require("./services/http-service");
|
|
39
43
|
Object.defineProperty(exports, "HttpService", { enumerable: true, get: function () { return http_service_1.HttpService; } });
|
|
40
44
|
//# 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":";AAAA,0DAA0D;AAC1D,sEAAsE;;;;;;;;;;;;;;;;;AAEtE,4BAAyB;AAEzB,8CAA2B;AAC3B,2DAAwC;AACxC,4CAAyB;AACzB,+CAA4B;AAC5B,gDAA6B;AAC7B,2CAAwB;AACxB,gDAA6B;AAC7B,yDAAsC;AACtC,4CAAyB;AACzB,2CAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D,sEAAsE;;;;;;;;;;;;;;;;;AAEtE,4BAAyB;AAEzB,8CAA2B;AAC3B,2DAAwC;AACxC,4CAAyB;AACzB,+CAA4B;AAC5B,gDAA6B;AAC7B,2CAAwB;AACxB,gDAA6B;AAC7B,yDAAsC;AACtC,4CAAyB;AACzB,0CAAuB;AACvB,2CAAwB;AACxB,wCAAqB;AAErB,WAAW;AACX,8CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,sDAAwD;AAA/C,8GAAA,eAAe,OAAA;AACxB,8CAA+C;AAAtC,qGAAA,UAAU,OAAA;AACnB,0CAA2C;AAAlC,iGAAA,QAAQ,OAAA;AACjB,wDAAyE;AAA5C,2GAAA,WAAW,OAAA"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { Interceptor } from '../interceptor';
|
|
2
2
|
import { ExecutionContext } from '../../context/execution-context';
|
|
3
3
|
import { Class } from '../../types/class';
|
|
4
|
-
|
|
5
|
-
export type InterceptorMetadata =
|
|
6
|
-
|
|
4
|
+
import type { Container } from '../../dependency-injection';
|
|
5
|
+
export type InterceptorMetadata = {
|
|
6
|
+
interceptors: (Interceptor | Class<Interceptor>)[];
|
|
7
|
+
};
|
|
8
|
+
export declare class InterceptorHandler {
|
|
9
|
+
static getMetadata(target: object): InterceptorMetadata;
|
|
10
|
+
static register(container: Container, target: object): Promise<void>;
|
|
11
|
+
static fetch(container: Container, target: object): Promise<Interceptor[]>;
|
|
12
|
+
static execute(executionContext: ExecutionContext, middlewares: Interceptor[], action: () => Promise<any>): Promise<any>;
|
|
13
|
+
}
|
|
7
14
|
export declare function UseInterceptors(...interceptors: (Interceptor | Class<Interceptor>)[]): ClassDecorator;
|
|
8
15
|
//# sourceMappingURL=use-interceptor-decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-interceptor-decorator.d.ts","sourceRoot":"","sources":["../../../src/interceptor/decorators/use-interceptor-decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"use-interceptor-decorator.d.ts","sourceRoot":"","sources":["../../../src/interceptor/decorators/use-interceptor-decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAA;CACnD,CAAA;AAED,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB;WAQ1C,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;WAoB7C,KAAK,CAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;WAmBZ,OAAO,CAClB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EAAE,EAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;CA2B7B;AAED,wBAAgB,eAAe,CAC7B,GAAG,YAAY,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,GACpD,cAAc,CAUhB"}
|
|
@@ -1,34 +1,72 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.interceptorHandler = interceptorHandler;
|
|
3
|
+
exports.InterceptorHandler = void 0;
|
|
5
4
|
exports.UseInterceptors = UseInterceptors;
|
|
6
5
|
const keys_1 = require("../../constants/keys");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
class InterceptorHandler {
|
|
7
|
+
static getMetadata(target) {
|
|
8
|
+
const metadata = Reflect.getOwnMetadata(keys_1.INTERCEPTOR_KEY, target);
|
|
9
|
+
if (metadata) {
|
|
10
|
+
return { interceptors: metadata };
|
|
11
|
+
}
|
|
12
|
+
return { interceptors: [] };
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
static async register(container, target) {
|
|
15
|
+
const metadata = InterceptorHandler.getMetadata(target);
|
|
16
|
+
if (!metadata || metadata.interceptors.length === 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
metadata.interceptors.forEach((interceptor) => {
|
|
20
|
+
// If it's a class constructor (function), register it in the container
|
|
21
|
+
if (typeof interceptor === 'function') {
|
|
22
|
+
if (!container.isBound(interceptor)) {
|
|
23
|
+
container.bind(interceptor).toSelf().inSingletonScope();
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
else {
|
|
27
|
+
// If it's an instance, bind it to its constructor class as a constant value
|
|
28
|
+
container.bind(interceptor.constructor).toConstantValue(interceptor);
|
|
24
29
|
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
static async fetch(container, target) {
|
|
33
|
+
const metadata = InterceptorHandler.getMetadata(target);
|
|
34
|
+
if (metadata && metadata.interceptors.length > 0) {
|
|
35
|
+
return await Promise.all(metadata.interceptors.map((interceptor) => {
|
|
36
|
+
// If it's a class constructor (function), resolve from container
|
|
37
|
+
if (typeof interceptor === 'function') {
|
|
38
|
+
return container.getAsync(interceptor);
|
|
39
|
+
}
|
|
40
|
+
// If it's an instance, resolve from container using its constructor
|
|
41
|
+
return container.getAsync(interceptor.constructor);
|
|
42
|
+
}));
|
|
25
43
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
static async execute(executionContext, middlewares, action) {
|
|
47
|
+
if (middlewares.length === 0) {
|
|
48
|
+
return await action();
|
|
49
|
+
}
|
|
50
|
+
let i = 0;
|
|
51
|
+
const next = {
|
|
52
|
+
handle: async () => {
|
|
53
|
+
if (i >= middlewares.length) {
|
|
54
|
+
return await action();
|
|
55
|
+
}
|
|
56
|
+
const layer = middlewares[i++];
|
|
57
|
+
try {
|
|
58
|
+
return await layer.intercept(executionContext, next);
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return await next.handle();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
return await next.handle();
|
|
67
|
+
}
|
|
31
68
|
}
|
|
69
|
+
exports.InterceptorHandler = InterceptorHandler;
|
|
32
70
|
function UseInterceptors(...interceptors) {
|
|
33
71
|
return (target) => {
|
|
34
72
|
const existingInterceptors = Reflect.getOwnMetadata(keys_1.INTERCEPTOR_KEY, target) || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-interceptor-decorator.js","sourceRoot":"","sources":["../../../src/interceptor/decorators/use-interceptor-decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-interceptor-decorator.js","sourceRoot":"","sources":["../../../src/interceptor/decorators/use-interceptor-decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ResolutionContext } from 'inversify';
|
|
2
2
|
import { Class, Constructor } from '../types/class';
|
|
3
3
|
import { Scope } from '../constants/scopes';
|
|
4
|
-
import {
|
|
4
|
+
import { RouteMetadata } from '../controllers/decorators/route-decorator';
|
|
5
5
|
export type InjectionToken<T = any> = symbol | string | Constructor<T>;
|
|
6
6
|
type Provider = {
|
|
7
7
|
provide: InjectionToken;
|
|
@@ -15,7 +15,7 @@ export type ModuleOptions = {
|
|
|
15
15
|
controllers?: Class[];
|
|
16
16
|
providers?: Provider[];
|
|
17
17
|
};
|
|
18
|
-
export type ModuleMetadata =
|
|
18
|
+
export type ModuleMetadata = RouteMetadata & {
|
|
19
19
|
controller: Class;
|
|
20
20
|
};
|
|
21
21
|
export declare function moduleHandler(target: Function, visited?: Set<Function>): ModuleMetadata[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-decorator.d.ts","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AASlD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"module-decorator.d.ts","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AASlD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAK1C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AAIxE,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEtE,KAAK,QAAQ,GACT;IACE,OAAO,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/D,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GACD,KAAK,CAAA;AAET,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,KAAK,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,UAAU,EAAE,KAAK,CAAA;CAClB,CAAA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,QAAQ,EAChB,OAAO,GAAE,GAAG,CAAC,QAAQ,CAAa,GACjC,cAAc,EAAE,CAmClB;AAED,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CA+C9D"}
|
|
@@ -8,6 +8,8 @@ const scopes_1 = require("../constants/scopes");
|
|
|
8
8
|
const controller_decorator_1 = require("../controllers/decorators/controller-decorator");
|
|
9
9
|
const use_interceptor_decorator_1 = require("../interceptor/decorators/use-interceptor-decorator");
|
|
10
10
|
const logger_1 = require("../logger/logger");
|
|
11
|
+
const use_pipes_1 = require("../pipes/decorators/use-pipes");
|
|
12
|
+
const use_filters_decorator_1 = require("../exceptions/decorators/use-filters-decorator");
|
|
11
13
|
function moduleHandler(target, visited = new Set()) {
|
|
12
14
|
// Prevent infinite recursion by tracking visited modules
|
|
13
15
|
if (visited.has(target)) {
|
|
@@ -24,7 +26,7 @@ function moduleHandler(target, visited = new Set()) {
|
|
|
24
26
|
}
|
|
25
27
|
if (controllers) {
|
|
26
28
|
for (const controller of controllers) {
|
|
27
|
-
const controllerRoutes =
|
|
29
|
+
const controllerRoutes = controller_decorator_1.ControllerHandler.getRoutes(controller).map((route) => ({
|
|
28
30
|
...route,
|
|
29
31
|
controller
|
|
30
32
|
}));
|
|
@@ -51,18 +53,10 @@ function Module(options) {
|
|
|
51
53
|
controllers.forEach((controller) => {
|
|
52
54
|
// Bind the controller
|
|
53
55
|
container.bind(controller).to(controller).inSingletonScope();
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (typeof interceptor === 'function') {
|
|
59
|
-
container.bind(interceptor).toSelf().inSingletonScope();
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// If it's an instance, bind it to its constructor class as a constant value
|
|
63
|
-
container.bind(interceptor.constructor).toConstantValue(interceptor);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
56
|
+
// Bind other related decorators
|
|
57
|
+
use_interceptor_decorator_1.InterceptorHandler.register(container, controller);
|
|
58
|
+
use_pipes_1.PipeHandler.register(container, controller);
|
|
59
|
+
use_filters_decorator_1.FilterHandler.register(container, controller);
|
|
66
60
|
});
|
|
67
61
|
}
|
|
68
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-decorator.js","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":";;AAyCA,
|
|
1
|
+
{"version":3,"file":"module-decorator.js","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pipes/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UsePipes = void 0;
|
|
4
|
+
var use_pipes_1 = require("./use-pipes");
|
|
5
|
+
Object.defineProperty(exports, "UsePipes", { enumerable: true, get: function () { return use_pipes_1.UsePipes; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pipes/decorators/index.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAA7B,qGAAA,QAAQ,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PipeTransform } from '../pipe-transform';
|
|
2
|
+
import { Class } from '../../types/class';
|
|
3
|
+
import { RouteContext } from '../../controllers/decorators/route-decorator';
|
|
4
|
+
import { Container } from '../../dependency-injection';
|
|
5
|
+
type PipeMetadata = {
|
|
6
|
+
pipes: (Class<PipeTransform> | PipeTransform)[];
|
|
7
|
+
};
|
|
8
|
+
export declare class PipeHandler {
|
|
9
|
+
static getClassMetadata(target: object): PipeMetadata | undefined;
|
|
10
|
+
static getMethodMetadata(target: object, propertyKey: string | symbol): PipeMetadata | undefined;
|
|
11
|
+
static register(container: Container, target: Class): void;
|
|
12
|
+
static fetch(container: Container, target: object, methodName: string | symbol): Promise<PipeTransform[]>;
|
|
13
|
+
static execute(target: object, propertyKey: string | symbol, pipes: PipeTransform[], args: RouteContext[]): Promise<any[]>;
|
|
14
|
+
private static _fetch;
|
|
15
|
+
private static _register;
|
|
16
|
+
}
|
|
17
|
+
export declare function UsePipes(...pipes: (Class<PipeTransform> | PipeTransform)[]): (target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => void;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=use-pipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-pipes.d.ts","sourceRoot":"","sources":["../../../src/pipes/decorators/use-pipes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EACL,YAAY,EAEb,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,EAAE,CAAA;CAChD,CAAA;AAED,qBAAa,WAAW;IACtB,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjE,MAAM,CAAC,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,YAAY,GAAG,SAAS;IAgB3B,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK;WA4BtC,KAAK,CAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,aAAa,EAAE,CAAC;WA2Bd,OAAO,CAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,KAAK,EAAE,aAAa,EAAE,EACtB,IAAI,EAAE,YAAY,EAAE,GACnB,OAAO,CAAC,GAAG,EAAE,CAAC;mBAmCI,MAAM;mBAUN,SAAS;CAc/B;AAED,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,EAAE,IAEvE,QAAQ,GAAG,EACX,cAAc,MAAM,GAAG,MAAM,EAC7B,aAAa,kBAAkB,UA0BlC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PipeHandler = void 0;
|
|
4
|
+
exports.UsePipes = UsePipes;
|
|
5
|
+
const keys_1 = require("../../constants/keys");
|
|
6
|
+
const get_class_methods_1 = require("../../utils/class/get-class-methods");
|
|
7
|
+
const route_decorator_1 = require("../../controllers/decorators/route-decorator");
|
|
8
|
+
class PipeHandler {
|
|
9
|
+
static getClassMetadata(target) {
|
|
10
|
+
return Reflect.getOwnMetadata(keys_1.PIPE_KEY, target);
|
|
11
|
+
}
|
|
12
|
+
static getMethodMetadata(target, propertyKey) {
|
|
13
|
+
// First check if metadata exists directly on the target (method-level decorator)
|
|
14
|
+
let metadata = Reflect.getOwnMetadata(keys_1.PIPE_KEY, target, propertyKey);
|
|
15
|
+
// If not found, check on the constructor prototype (class-level decorator)
|
|
16
|
+
if (!metadata && target.constructor) {
|
|
17
|
+
metadata = Reflect.getOwnMetadata(keys_1.PIPE_KEY, target.constructor.prototype, propertyKey);
|
|
18
|
+
}
|
|
19
|
+
return metadata;
|
|
20
|
+
}
|
|
21
|
+
static register(container, target) {
|
|
22
|
+
const metadata = PipeHandler.getClassMetadata(target);
|
|
23
|
+
if (metadata && metadata?.pipes?.length !== 0) {
|
|
24
|
+
const { pipes } = metadata;
|
|
25
|
+
pipes.forEach((pipe) => {
|
|
26
|
+
PipeHandler._register(container, pipe);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Register methods pipes
|
|
30
|
+
const methodNames = (0, get_class_methods_1.getClassMethods)(target);
|
|
31
|
+
methodNames.forEach((methodName) => {
|
|
32
|
+
const methodMetadata = Reflect.getOwnMetadata(keys_1.PIPE_KEY, target.prototype, methodName);
|
|
33
|
+
if (methodMetadata) {
|
|
34
|
+
methodMetadata.pipes.forEach((pipe) => {
|
|
35
|
+
PipeHandler._register(container, pipe);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
static async fetch(container, target, methodName) {
|
|
41
|
+
const pipes = [];
|
|
42
|
+
const metadata = PipeHandler.getClassMetadata(target.constructor);
|
|
43
|
+
if (metadata && metadata.pipes.length > 0) {
|
|
44
|
+
pipes.push(...(await Promise.all(metadata.pipes.map((pipe) => PipeHandler._fetch(container, pipe)))));
|
|
45
|
+
}
|
|
46
|
+
const methodMetadata = PipeHandler.getMethodMetadata(target, methodName);
|
|
47
|
+
if (methodMetadata) {
|
|
48
|
+
pipes.push(...(await Promise.all(methodMetadata.pipes.map((pipe) => PipeHandler._fetch(container, pipe)))));
|
|
49
|
+
}
|
|
50
|
+
return pipes;
|
|
51
|
+
}
|
|
52
|
+
static async execute(target, propertyKey, pipes, args) {
|
|
53
|
+
const metadata = route_decorator_1.RouteHandler.getMetadata(target.constructor, propertyKey);
|
|
54
|
+
if (pipes.length === 0) {
|
|
55
|
+
return args.map((arg) => arg.parameter);
|
|
56
|
+
}
|
|
57
|
+
// Get paramTypes from route metadata (which contains the method parameter types)
|
|
58
|
+
const paramTypes = metadata?.paramTypes || [];
|
|
59
|
+
const pipedArgs = await Promise.all(args.map(async (arg) => {
|
|
60
|
+
// Get the parameter type for this argument - prefer arg.paramType over paramTypes array
|
|
61
|
+
const metatype = arg.paramType || paramTypes[arg.parameterIndex];
|
|
62
|
+
// Process through pipes (pipes parameter contains resolved instances)
|
|
63
|
+
let result = arg.parameter;
|
|
64
|
+
for (const pipe of pipes) {
|
|
65
|
+
result = await pipe.transform(result, {
|
|
66
|
+
type: arg.type || 'custom',
|
|
67
|
+
metatype: metatype,
|
|
68
|
+
data: arg.parameter
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
...arg,
|
|
73
|
+
parameter: result
|
|
74
|
+
};
|
|
75
|
+
}));
|
|
76
|
+
return pipedArgs.map((arg) => arg.parameter);
|
|
77
|
+
}
|
|
78
|
+
static async _fetch(container, pipe) {
|
|
79
|
+
if (typeof pipe === 'function') {
|
|
80
|
+
return container.getAsync(pipe);
|
|
81
|
+
}
|
|
82
|
+
return container.getAsync(pipe.constructor);
|
|
83
|
+
}
|
|
84
|
+
static async _register(container, pipe) {
|
|
85
|
+
// If it's a class constructor (function), register it in the container
|
|
86
|
+
if (typeof pipe === 'function') {
|
|
87
|
+
if (!container.isBound(pipe)) {
|
|
88
|
+
container.bind(pipe).toSelf().inSingletonScope();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// If it's an instance, bind it to its constructor class as a constant value
|
|
93
|
+
container.bind(pipe.constructor).toConstantValue(pipe);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.PipeHandler = PipeHandler;
|
|
98
|
+
function UsePipes(...pipes) {
|
|
99
|
+
return (target, propertyKey, descriptor) => {
|
|
100
|
+
if (descriptor && propertyKey) {
|
|
101
|
+
// Method decorator
|
|
102
|
+
Reflect.defineMetadata(keys_1.PIPE_KEY, { pipes }, target, propertyKey);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Class decorator
|
|
107
|
+
const methodNames = (0, get_class_methods_1.getClassMethods)(target);
|
|
108
|
+
// Store class-level pipes metadata
|
|
109
|
+
Reflect.defineMetadata(keys_1.PIPE_KEY, { pipes, paramTypes: [] }, target);
|
|
110
|
+
// Process each method and store its paramTypes
|
|
111
|
+
methodNames.forEach((methodName) => {
|
|
112
|
+
// Store method-specific metadata with class pipes and method paramTypes
|
|
113
|
+
Reflect.defineMetadata(keys_1.PIPE_KEY, { pipes }, target.prototype, methodName);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=use-pipes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-pipes.js","sourceRoot":"","sources":["../../../src/pipes/decorators/use-pipes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipes/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./decorators"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Class } from '../types/class';
|
|
2
|
+
/**
|
|
3
|
+
* @publicApi
|
|
4
|
+
*/
|
|
5
|
+
export type Paramtype = 'body' | 'query' | 'param' | 'custom';
|
|
6
|
+
export type Transform<T = any> = (value: T, metadata: ArgumentMetadata) => any;
|
|
7
|
+
/**
|
|
8
|
+
* Interface describing a pipe implementation's `transform()` method metadata argument.
|
|
9
|
+
*
|
|
10
|
+
* @see [Pipes](https://docs.nestjs.com/pipes)
|
|
11
|
+
*
|
|
12
|
+
* @publicApi
|
|
13
|
+
*/
|
|
14
|
+
export interface ArgumentMetadata {
|
|
15
|
+
/**
|
|
16
|
+
* Indicates whether argument is a body, query, param, or custom parameter
|
|
17
|
+
*/
|
|
18
|
+
readonly type: Paramtype;
|
|
19
|
+
/**
|
|
20
|
+
* Underlying base type (e.g., `String`) of the parameter, based on the type
|
|
21
|
+
* definition in the route handler.
|
|
22
|
+
*/
|
|
23
|
+
readonly metatype?: Class<any> | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* String passed as an argument to the decorator.
|
|
26
|
+
* Example: `@Body('userId')` would yield `userId`
|
|
27
|
+
*/
|
|
28
|
+
readonly data?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Interface describing implementation of a pipe.
|
|
32
|
+
*
|
|
33
|
+
* @see [Pipes](https://docs.nestjs.com/pipes)
|
|
34
|
+
*
|
|
35
|
+
* @publicApi
|
|
36
|
+
*/
|
|
37
|
+
export interface PipeTransform<T = any, R = any> {
|
|
38
|
+
/**
|
|
39
|
+
* Method to implement a custom pipe. Called with two parameters
|
|
40
|
+
*
|
|
41
|
+
* @param value argument before it is received by route handler method
|
|
42
|
+
* @param metadata contains metadata about the value
|
|
43
|
+
*/
|
|
44
|
+
transform(value: T, metadata: ArgumentMetadata): R;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=pipe-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-transform.d.ts","sourceRoot":"","sources":["../../src/pipes/pipe-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE7D,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,KAAK,GAAG,CAAA;AAE9E;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAC1C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IAC7C;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAA;CACnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-transform.js","sourceRoot":"","sources":["../../src/pipes/pipe-transform.ts"],"names":[],"mappings":""}
|
|
@@ -5,6 +5,8 @@ import { ModuleMetadata } from '../modules/module-decorator';
|
|
|
5
5
|
import { Class } from '../types/class';
|
|
6
6
|
import { NextRequest } from 'next/server';
|
|
7
7
|
import { LoggerService } from '../logger/logger-service';
|
|
8
|
+
import { PipeTransform } from '../pipes/pipe-transform';
|
|
9
|
+
import { GetOptions, OptionalGetOptions } from 'inversify';
|
|
8
10
|
export type ServerFactoryOptions = {
|
|
9
11
|
logger?: LoggerService | boolean;
|
|
10
12
|
};
|
|
@@ -12,6 +14,7 @@ export declare class ServerFactory {
|
|
|
12
14
|
private globalPrefix;
|
|
13
15
|
private globalFilters;
|
|
14
16
|
private globalInterceptors;
|
|
17
|
+
private globalPipes;
|
|
15
18
|
private readonly module;
|
|
16
19
|
private readonly container;
|
|
17
20
|
private readonly routes;
|
|
@@ -24,6 +27,21 @@ export declare class ServerFactory {
|
|
|
24
27
|
setGlobalPrefix(prefix: string): void;
|
|
25
28
|
useGlobalFilters(...filters: ExceptionFilter[]): void;
|
|
26
29
|
useGlobalInterceptors(...interceptors: Interceptor[]): void;
|
|
30
|
+
useGlobalPipes(...pipes: PipeTransform[]): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get a service synchronously
|
|
33
|
+
* @param service - The service to get
|
|
34
|
+
* @param options - The options for getting the service
|
|
35
|
+
* @returns The service instance
|
|
36
|
+
*/
|
|
37
|
+
get<T>(service: Class<T>, options?: OptionalGetOptions): T;
|
|
38
|
+
/**
|
|
39
|
+
* Get a service asynchronously
|
|
40
|
+
* @param service - The service to get
|
|
41
|
+
* @param options - The options for getting the service
|
|
42
|
+
* @returns A promise that resolves to the service instance
|
|
43
|
+
*/
|
|
44
|
+
getAsync<T>(service: Class<T>, options?: GetOptions): Promise<T>;
|
|
27
45
|
/**
|
|
28
46
|
* Handle a request
|
|
29
47
|
* @param request - The request to handle
|
|
@@ -50,5 +68,12 @@ export declare class ServerFactory {
|
|
|
50
68
|
private _fetchInterceptors;
|
|
51
69
|
private _fetchHandler;
|
|
52
70
|
private _fetchExceptionFilters;
|
|
71
|
+
/**
|
|
72
|
+
* Fetch the pipes for a controller method
|
|
73
|
+
* @param controller
|
|
74
|
+
* @param methodName
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
private _fetchPipes;
|
|
53
78
|
}
|
|
54
79
|
//# sourceMappingURL=server-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../../src/server/server-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../../src/server/server-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAiB,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAI1E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAIvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAKtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAE1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAA;CACjC,CAAA;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,WAAW,CAAsB;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE;WAQ3D,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAgBlE;;;OAGG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,gBAAgB,CAAC,GAAG,OAAO,EAAE,eAAe,EAAE;IAI9C,qBAAqB,CAAC,GAAG,YAAY,EAAE,WAAW,EAAE;IAIpD,cAAc,CAAC,GAAG,KAAK,EAAE,aAAa,EAAE;IAI/C;;;;;OAKG;IACI,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,CAAC;IAIjE;;;;;OAKG;IACI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvE;;;;;OAKG;IACU,OAAO,CAClB,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE;IAgFtC,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;YAiBL,kBAAkB;IAwBhC,OAAO,CAAC,aAAa;YAiBP,sBAAsB;IAqBpC;;;;;OAKG;YACW,WAAW;CAyB1B"}
|