@asapjs/router 1.0.0-alpha.4 → 1.0.0-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/decorator/AutoInject.d.ts +25 -0
  2. package/dist/decorator/AutoInject.d.ts.map +1 -0
  3. package/dist/decorator/AutoInject.js +34 -0
  4. package/dist/decorator/AutoInject.js.map +1 -0
  5. package/dist/decorator/ErrorPayload.d.ts +5 -0
  6. package/dist/decorator/ErrorPayload.d.ts.map +1 -0
  7. package/dist/decorator/ErrorPayload.js +17 -0
  8. package/dist/decorator/ErrorPayload.js.map +1 -0
  9. package/dist/decorator/ResponsePayload.d.ts +20 -0
  10. package/dist/decorator/ResponsePayload.d.ts.map +1 -0
  11. package/dist/decorator/ResponsePayload.js +32 -0
  12. package/dist/decorator/ResponsePayload.js.map +1 -0
  13. package/dist/decorator/index.d.ts +8 -2
  14. package/dist/decorator/index.d.ts.map +1 -1
  15. package/dist/decorator/index.js +11 -3
  16. package/dist/decorator/index.js.map +1 -1
  17. package/dist/express/router.d.ts +13 -3
  18. package/dist/express/router.d.ts.map +1 -1
  19. package/dist/express/router.js +252 -101
  20. package/dist/express/router.js.map +1 -1
  21. package/dist/index.d.ts +11 -6
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +20 -12
  24. package/dist/index.js.map +1 -1
  25. package/dist/middleware/errorHandler.d.ts +2 -2
  26. package/dist/middleware/errorHandler.d.ts.map +1 -1
  27. package/dist/middleware/errorHandler.js +11 -3
  28. package/dist/middleware/errorHandler.js.map +1 -1
  29. package/dist/plugin.d.ts +1 -1
  30. package/dist/plugin.d.ts.map +1 -1
  31. package/dist/plugin.js +23 -11
  32. package/dist/plugin.js.map +1 -1
  33. package/dist/router/index.d.ts.map +1 -1
  34. package/dist/router/index.js +23 -8
  35. package/dist/router/index.js.map +1 -1
  36. package/dist/swagger/index.d.ts +15 -1
  37. package/dist/swagger/index.d.ts.map +1 -1
  38. package/dist/swagger/index.js +147 -22
  39. package/dist/swagger/index.js.map +1 -1
  40. package/dist/utils/collectMiddlewareErrors.d.ts +14 -0
  41. package/dist/utils/collectMiddlewareErrors.d.ts.map +1 -0
  42. package/dist/utils/collectMiddlewareErrors.js +31 -0
  43. package/dist/utils/collectMiddlewareErrors.js.map +1 -0
  44. package/dist/utils/defineConfig.d.ts +49 -0
  45. package/dist/utils/defineConfig.d.ts.map +1 -0
  46. package/dist/utils/defineConfig.js +28 -0
  47. package/dist/utils/defineConfig.js.map +1 -0
  48. package/dist/utils/defineMiddleware.d.ts +6 -0
  49. package/dist/utils/defineMiddleware.d.ts.map +1 -0
  50. package/dist/utils/defineMiddleware.js +43 -0
  51. package/dist/utils/defineMiddleware.js.map +1 -0
  52. package/dist/utils/registeredMiddlewares.d.ts +4 -0
  53. package/dist/utils/registeredMiddlewares.d.ts.map +1 -0
  54. package/dist/utils/registeredMiddlewares.js +12 -0
  55. package/dist/utils/registeredMiddlewares.js.map +1 -0
  56. package/dist/utils/wrapper.d.ts +15 -7
  57. package/dist/utils/wrapper.d.ts.map +1 -1
  58. package/dist/utils/wrapper.js +84 -17
  59. package/dist/utils/wrapper.js.map +1 -1
  60. package/package.json +15 -13
  61. package/dist/middleware/jwtVerification.d.ts +0 -11
  62. package/dist/middleware/jwtVerification.d.ts.map +0 -1
  63. package/dist/middleware/jwtVerification.js +0 -38
  64. package/dist/middleware/jwtVerification.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import 'reflect-metadata';
2
+ import type { Request } from 'express';
3
+ export declare const AUTO_INJECT_METADATA_KEY = "response:autoInject";
4
+ export interface AutoInjectEntry {
5
+ key: string;
6
+ factory: (req: Request) => any;
7
+ }
8
+ /**
9
+ * Marks a field in a Global Response DTO as auto-injected.
10
+ * The factory function receives the Express Request and returns the value to inject.
11
+ *
12
+ * @example
13
+ * class GlobalResponseDto extends ExtendableDto {
14
+ * @TypeIs.INT({ comment: '응답 시각' })
15
+ * @AutoInject(() => Date.now())
16
+ * timestamp: number;
17
+ *
18
+ * @TypeIs.STRING({ comment: '요청 ID' })
19
+ * @AutoInject((req) => req.headers['x-request-id'] || uuid())
20
+ * requestId: string;
21
+ * }
22
+ */
23
+ export declare function AutoInject(factory: (req: Request) => any): PropertyDecorator;
24
+ export declare function getAutoInjectEntries(DtoClass: new () => any): AutoInjectEntry[];
25
+ //# sourceMappingURL=AutoInject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoInject.d.ts","sourceRoot":"","sources":["../../src/decorator/AutoInject.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,iBAAiB,CAQ5E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,eAAe,EAAE,CAE/E"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUTO_INJECT_METADATA_KEY = void 0;
4
+ exports.AutoInject = AutoInject;
5
+ exports.getAutoInjectEntries = getAutoInjectEntries;
6
+ require("reflect-metadata");
7
+ exports.AUTO_INJECT_METADATA_KEY = 'response:autoInject';
8
+ /**
9
+ * Marks a field in a Global Response DTO as auto-injected.
10
+ * The factory function receives the Express Request and returns the value to inject.
11
+ *
12
+ * @example
13
+ * class GlobalResponseDto extends ExtendableDto {
14
+ * @TypeIs.INT({ comment: '응답 시각' })
15
+ * @AutoInject(() => Date.now())
16
+ * timestamp: number;
17
+ *
18
+ * @TypeIs.STRING({ comment: '요청 ID' })
19
+ * @AutoInject((req) => req.headers['x-request-id'] || uuid())
20
+ * requestId: string;
21
+ * }
22
+ */
23
+ function AutoInject(factory) {
24
+ return (target, propertyKey) => {
25
+ const key = String(propertyKey);
26
+ const existing = Reflect.getMetadata(exports.AUTO_INJECT_METADATA_KEY, target.constructor) || [];
27
+ existing.push({ key, factory });
28
+ Reflect.defineMetadata(exports.AUTO_INJECT_METADATA_KEY, existing, target.constructor);
29
+ };
30
+ }
31
+ function getAutoInjectEntries(DtoClass) {
32
+ return Reflect.getMetadata(exports.AUTO_INJECT_METADATA_KEY, DtoClass) || [];
33
+ }
34
+ //# sourceMappingURL=AutoInject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoInject.js","sourceRoot":"","sources":["../../src/decorator/AutoInject.ts"],"names":[],"mappings":";;;AAyBA,gCAQC;AAED,oDAEC;AArCD,4BAA0B;AAGb,QAAA,wBAAwB,GAAG,qBAAqB,CAAC;AAO9D;;;;;;;;;;;;;;GAcG;AACH,SAAgB,UAAU,CAAC,OAA8B;IACxD,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,QAAQ,GACb,OAAO,CAAC,WAAW,CAAC,gCAAwB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,gCAAwB,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAChF,CAAC,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAAC,QAAuB;IAC3D,OAAO,OAAO,CAAC,WAAW,CAAC,gCAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import 'reflect-metadata';
2
+ export declare const ERROR_PAYLOAD_METADATA_KEY = "response:errorPayloadKey";
3
+ export declare function ErrorPayload(): PropertyDecorator;
4
+ export declare function getErrorPayloadKey(DtoClass: new () => any): string | undefined;
5
+ //# sourceMappingURL=ErrorPayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorPayload.d.ts","sourceRoot":"","sources":["../../src/decorator/ErrorPayload.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,eAAO,MAAM,0BAA0B,6BAA6B,CAAC;AAErE,wBAAgB,YAAY,IAAI,iBAAiB,CAKhD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,MAAM,GAAG,SAAS,CAE9E"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ERROR_PAYLOAD_METADATA_KEY = void 0;
4
+ exports.ErrorPayload = ErrorPayload;
5
+ exports.getErrorPayloadKey = getErrorPayloadKey;
6
+ require("reflect-metadata");
7
+ exports.ERROR_PAYLOAD_METADATA_KEY = 'response:errorPayloadKey';
8
+ function ErrorPayload() {
9
+ return (target, propertyKey) => {
10
+ const key = String(propertyKey);
11
+ Reflect.defineMetadata(exports.ERROR_PAYLOAD_METADATA_KEY, key, target.constructor);
12
+ };
13
+ }
14
+ function getErrorPayloadKey(DtoClass) {
15
+ return Reflect.getMetadata(exports.ERROR_PAYLOAD_METADATA_KEY, DtoClass);
16
+ }
17
+ //# sourceMappingURL=ErrorPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorPayload.js","sourceRoot":"","sources":["../../src/decorator/ErrorPayload.ts"],"names":[],"mappings":";;;AAIA,oCAKC;AAED,gDAEC;AAbD,4BAA0B;AAEb,QAAA,0BAA0B,GAAG,0BAA0B,CAAC;AAErE,SAAgB,YAAY;IAC3B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,kCAA0B,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7E,CAAC,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAuB;IACzD,OAAO,OAAO,CAAC,WAAW,CAAC,kCAA0B,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import 'reflect-metadata';
2
+ export declare const RESPONSE_PAYLOAD_METADATA_KEY = "response:payloadKey";
3
+ /**
4
+ * Marks a field in a Global Response DTO as the slot where each route's response DTO will be placed.
5
+ * If no field is marked with @ResponsePayload(), the Global DTO operates in "spread" mode:
6
+ * the route DTO's fields are merged at the top level using OpenAPI allOf.
7
+ *
8
+ * @example
9
+ * class DefaultResponseDto extends ExtendableDto {
10
+ * @TypeIs.INT()
11
+ * @AutoInject(() => Date.now())
12
+ * timestamp: number;
13
+ *
14
+ * @ResponsePayload()
15
+ * result: any; // route DTO goes here
16
+ * }
17
+ */
18
+ export declare function ResponsePayload(): PropertyDecorator;
19
+ export declare function getResponsePayloadKey(DtoClass: new () => any): string | undefined;
20
+ //# sourceMappingURL=ResponsePayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsePayload.d.ts","sourceRoot":"","sources":["../../src/decorator/ResponsePayload.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAKnD;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,MAAM,GAAG,SAAS,CAEjF"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RESPONSE_PAYLOAD_METADATA_KEY = void 0;
4
+ exports.ResponsePayload = ResponsePayload;
5
+ exports.getResponsePayloadKey = getResponsePayloadKey;
6
+ require("reflect-metadata");
7
+ exports.RESPONSE_PAYLOAD_METADATA_KEY = 'response:payloadKey';
8
+ /**
9
+ * Marks a field in a Global Response DTO as the slot where each route's response DTO will be placed.
10
+ * If no field is marked with @ResponsePayload(), the Global DTO operates in "spread" mode:
11
+ * the route DTO's fields are merged at the top level using OpenAPI allOf.
12
+ *
13
+ * @example
14
+ * class DefaultResponseDto extends ExtendableDto {
15
+ * @TypeIs.INT()
16
+ * @AutoInject(() => Date.now())
17
+ * timestamp: number;
18
+ *
19
+ * @ResponsePayload()
20
+ * result: any; // route DTO goes here
21
+ * }
22
+ */
23
+ function ResponsePayload() {
24
+ return (target, propertyKey) => {
25
+ const key = String(propertyKey);
26
+ Reflect.defineMetadata(exports.RESPONSE_PAYLOAD_METADATA_KEY, key, target.constructor);
27
+ };
28
+ }
29
+ function getResponsePayloadKey(DtoClass) {
30
+ return Reflect.getMetadata(exports.RESPONSE_PAYLOAD_METADATA_KEY, DtoClass);
31
+ }
32
+ //# sourceMappingURL=ResponsePayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsePayload.js","sourceRoot":"","sources":["../../src/decorator/ResponsePayload.ts"],"names":[],"mappings":";;;AAmBA,0CAKC;AAED,sDAEC;AA5BD,4BAA0B;AAEb,QAAA,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,SAAgB,eAAe;IAC9B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,qCAA6B,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAChF,CAAC,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,QAAuB;IAC5D,OAAO,OAAO,CAAC,WAAW,CAAC,qCAA6B,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC"}
@@ -1,6 +1,12 @@
1
- import RouterController, { IPreference } from '../express/router';
2
1
  import { ErrorCreator } from '@asapjs/error';
3
- export interface IOptions extends Omit<IPreference, 'path' | 'excute'> {
2
+ import RouterController, { IPreference } from '../express/router';
3
+ export { AutoInject, getAutoInjectEntries } from './AutoInject';
4
+ export type { AutoInjectEntry } from './AutoInject';
5
+ export { ResponsePayload, getResponsePayloadKey } from './ResponsePayload';
6
+ export { ErrorPayload, getErrorPayloadKey } from './ErrorPayload';
7
+ export interface GlobalRouteOptions {
8
+ }
9
+ export interface IOptions extends Omit<IPreference, 'path' | 'excute'>, GlobalRouteOptions {
4
10
  errors?: ErrorCreator[];
5
11
  }
6
12
  export declare function Get(path: string, options: IOptions): (target: InstanceType<typeof RouterController>, propertyKey: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorator/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC;IACpE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAkBD,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAfxB,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UAiBpF;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAnBzB,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UAqBpF;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAvBxB,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UAyBpF;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YA3B3B,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UA6BpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,gBAAgB,EAAE,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGlE,MAAM,WAAW,kBAAkB;CAAG;AAEtC,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,kBAAkB;IACxF,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAiBD,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAdxB,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UAgBpF;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAlBzB,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UAoBpF;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAtBxB,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UAwBpF;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YA1B3B,YAAY,CAAC,OAAO,gBAAgB,CAAC,eAAe,MAAM,UA4BpF"}
@@ -1,18 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getErrorPayloadKey = exports.ErrorPayload = exports.getResponsePayloadKey = exports.ResponsePayload = exports.getAutoInjectEntries = exports.AutoInject = void 0;
3
4
  exports.Get = Get;
4
5
  exports.Post = Post;
5
6
  exports.Put = Put;
6
7
  exports.Delete = Delete;
8
+ var AutoInject_1 = require("./AutoInject");
9
+ Object.defineProperty(exports, "AutoInject", { enumerable: true, get: function () { return AutoInject_1.AutoInject; } });
10
+ Object.defineProperty(exports, "getAutoInjectEntries", { enumerable: true, get: function () { return AutoInject_1.getAutoInjectEntries; } });
11
+ var ResponsePayload_1 = require("./ResponsePayload");
12
+ Object.defineProperty(exports, "ResponsePayload", { enumerable: true, get: function () { return ResponsePayload_1.ResponsePayload; } });
13
+ Object.defineProperty(exports, "getResponsePayloadKey", { enumerable: true, get: function () { return ResponsePayload_1.getResponsePayloadKey; } });
14
+ var ErrorPayload_1 = require("./ErrorPayload");
15
+ Object.defineProperty(exports, "ErrorPayload", { enumerable: true, get: function () { return ErrorPayload_1.ErrorPayload; } });
16
+ Object.defineProperty(exports, "getErrorPayloadKey", { enumerable: true, get: function () { return ErrorPayload_1.getErrorPayloadKey; } });
7
17
  function Route(path, method, options) {
8
18
  return function (target, propertyKey) {
9
19
  if (!target.routes) {
10
20
  target.routes = [];
11
21
  }
12
22
  target.routes.push(Object.assign(Object.assign({ method,
13
- path }, options), {
14
- // Don't try to access the method here. Just save the method name.
15
- methodName: propertyKey }));
23
+ path }, options), { methodName: propertyKey }));
16
24
  };
17
25
  }
18
26
  function Get(path, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorator/index.ts"],"names":[],"mappings":";;AAuBA,kBAEC;AAED,oBAEC;AAED,kBAEC;AAED,wBAEC;AA9BD,SAAS,KAAK,CAAC,IAAY,EAAE,MAAkB,EAAE,OAAiB;IAChE,OAAO,UAAU,MAA6C,EAAE,WAAmB;QACjF,IAAI,CAAE,MAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAc,CAAC,MAAM,GAAG,EAAE,CAAC;QAC9B,CAAC;QAEA,MAAc,CAAC,MAAM,CAAC,IAAI,+BACzB,MAAM;YACN,IAAI,IACD,OAAO;YACV,kEAAkE;YAClE,UAAU,EAAE,WAAW,IACvB,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,GAAG,CAAC,IAAY,EAAE,OAAiB;IACjD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,IAAI,CAAC,IAAY,EAAE,OAAiB;IAClD,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,GAAG,CAAC,IAAY,EAAE,OAAiB;IACjD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,MAAM,CAAC,IAAY,EAAE,OAAiB;IACpD,OAAO,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorator/index.ts"],"names":[],"mappings":";;;AA8BA,kBAEC;AAED,oBAEC;AAED,kBAEC;AAED,wBAEC;AAzCD,2CAAgE;AAAvD,wGAAA,UAAU,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAEzC,qDAA2E;AAAlE,kHAAA,eAAe,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAC/C,+CAAkE;AAAzD,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AASzC,SAAS,KAAK,CAAC,IAAY,EAAE,MAAkB,EAAE,OAAiB;IAChE,OAAO,UAAU,MAA6C,EAAE,WAAmB;QACjF,IAAI,CAAE,MAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAc,CAAC,MAAM,GAAG,EAAE,CAAC;QAC9B,CAAC;QAEA,MAAc,CAAC,MAAM,CAAC,IAAI,+BACzB,MAAM;YACN,IAAI,IACD,OAAO,KACV,UAAU,EAAE,WAAW,IACvB,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,GAAG,CAAC,IAAY,EAAE,OAAiB;IACjD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,IAAI,CAAC,IAAY,EAAE,OAAiB;IAClD,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,GAAG,CAAC,IAAY,EAAE,OAAiB;IACjD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,MAAM,CAAC,IAAY,EAAE,OAAiB;IACpD,OAAO,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -1,14 +1,18 @@
1
+ import { type ErrorCreator } from '@asapjs/error';
2
+ import { type DtoOrTypeIs } from '@asapjs/types';
1
3
  import { Router as ExpressRouter } from 'express';
2
- import { DtoOrTypeIs } from '@asapjs/types';
3
- import { ErrorCreator } from '@asapjs/error';
4
4
  type BodyContentType = 'application/json' | 'multipart/form-data';
5
+ export interface RouteExample {
6
+ name: string;
7
+ summary?: string;
8
+ value: unknown;
9
+ }
5
10
  export interface IPreference {
6
11
  path: string;
7
12
  title?: string;
8
13
  description?: string;
9
14
  deprecated?: boolean;
10
15
  summary?: string;
11
- auth?: boolean;
12
16
  body?: DtoOrTypeIs;
13
17
  bodyContentType?: BodyContentType;
14
18
  query?: DtoOrTypeIs;
@@ -16,6 +20,8 @@ export interface IPreference {
16
20
  errors?: ErrorCreator[];
17
21
  middleware?: any[];
18
22
  excute: any;
23
+ requestExamples?: RouteExample[];
24
+ responseExamples?: RouteExample[];
19
25
  }
20
26
  export type MethodType = 'get' | 'post' | 'put' | 'delete';
21
27
  export interface IDecoratorPreference extends IPreference {
@@ -24,11 +30,15 @@ export interface IDecoratorPreference extends IPreference {
24
30
  }
25
31
  export default class RouterController {
26
32
  basePath: string;
33
+ responseDto?: (new () => any) | null;
27
34
  expressRouter: ExpressRouter;
28
35
  constructor();
29
36
  protected registerRoutes(): void;
30
37
  private generateRequestBody;
31
38
  private generateResponseBody;
39
+ private getEffectiveResponseDto;
40
+ private getResponseSchemaSuffix;
41
+ private buildGlobalResponseSchema;
32
42
  private generateDtoScheme;
33
43
  private generateTypeScheme;
34
44
  private generateErrorSchemes;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/express/router.ts"],"names":[],"mappings":"AAAA,OAAU,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,WAAW,EAA0B,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAC;AAS7D,KAAK,eAAe,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAClE,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACxD,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB;AAUD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAC7B,QAAQ,SAAO;IAEf,aAAa,EAAE,aAAa,CAAC;;IAMpC,SAAS,CAAC,cAAc;IAaxB,OAAO,CAAC,mBAAmB,CAOxB;IAEH,OAAO,CAAC,oBAAoB,CASzB;IAEH,OAAO,CAAC,iBAAiB,CAmBvB;IAEF,OAAO,CAAC,kBAAkB,CAkBxB;IAEF,OAAO,CAAC,oBAAoB,CAuE1B;IAEF,OAAO,CAAC,0BAA0B,CA2IhC;IAEK,MAAM,GAAI,QAAQ,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,MAAM,SAAS,WAAW,UA+BlF;IAEK,MAAM;uBAjC4D,WAAW;wBAAX,WAAW;uBAAX,WAAW;0BAAX,WAAW;MAsClF;CACF;AAED,UAAU,aAAa,CAAC,CAAC;IACxB,QAAQ,CAAC,CAAC;CACV;AAED,KAAK,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,KAAK,oBAAoB,GACtB;IACA,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,GAAG,CAAC;CACT,GACD,SAAS,GACT,IAAI,CAAC;AAER,KAAK,cAAc,GAAG,MAAM,oBAAoB,CAAC;AAyBjD,eAAO,MAAM,WAAW,QApBlB,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,cAClB,qBAAqB,YACvB,OAAO,KACb,cAiB2C,CAAC;AACjD,eAAO,MAAM,YAAY,QArBnB,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,cAClB,qBAAqB,YACvB,OAAO,KACb,cAkB6C,CAAC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/express/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAqD,MAAM,eAAe,CAAC;AACpG,OAAU,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAYrD,KAAK,eAAe,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAElE,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACxD,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB;AAUD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAC7B,QAAQ,SAAO;IACf,WAAW,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC;IAErC,aAAa,EAAE,aAAa,CAAC;;IAMpC,SAAS,CAAC,cAAc;IAaxB,OAAO,CAAC,mBAAmB,CAgBzB;IAEF,OAAO,CAAC,oBAAoB,CAkB1B;IAEF,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,iBAAiB,CAuBvB;IAEF,OAAO,CAAC,kBAAkB,CAiBxB;IAEF,OAAO,CAAC,oBAAoB,CAuH1B;IAEF,OAAO,CAAC,0BAA0B,CAkJhC;IAEK,MAAM,GAAI,QAAQ,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,MAAM,SAAS,WAAW,UAmDlF;IAEK,MAAM;uBArD4D,WAAW;wBAAX,WAAW;uBAAX,WAAW;0BAAX,WAAW;MA0DlF;CACF;AAED,UAAU,aAAa,CAAC,CAAC;IACxB,QAAQ,CAAC,CAAC;CACV;AAED,KAAK,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,KAAK,oBAAoB,GACtB;IACA,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,GAAG,CAAC;CACT,GACD,SAAS,GACT,IAAI,CAAC;AAER,KAAK,cAAc,GAAG,MAAM,oBAAoB,CAAC;AAyBjD,eAAO,MAAM,WAAW,QApBlB,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,cAClB,qBAAqB,YACvB,OAAO,KACb,cAiB2C,CAAC;AACjD,eAAO,MAAM,YAAY,QArBnB,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,cAClB,qBAAqB,YACvB,OAAO,KACb,cAkB6C,CAAC"}