@digitaldefiance/node-express-suite 3.11.32 → 3.12.0

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 (146) hide show
  1. package/README.md +858 -0
  2. package/package.json +1 -1
  3. package/src/controllers/openapi.d.ts +67 -0
  4. package/src/controllers/openapi.d.ts.map +1 -0
  5. package/src/controllers/openapi.js +89 -0
  6. package/src/controllers/openapi.js.map +1 -0
  7. package/src/decorators/auth.d.ts +128 -0
  8. package/src/decorators/auth.d.ts.map +1 -0
  9. package/src/decorators/auth.js +230 -0
  10. package/src/decorators/auth.js.map +1 -0
  11. package/src/decorators/base-controller.d.ts +144 -6
  12. package/src/decorators/base-controller.d.ts.map +1 -1
  13. package/src/decorators/base-controller.js +487 -31
  14. package/src/decorators/base-controller.js.map +1 -1
  15. package/src/decorators/controller.d.ts +63 -7
  16. package/src/decorators/controller.d.ts.map +1 -1
  17. package/src/decorators/controller.js +70 -39
  18. package/src/decorators/controller.js.map +1 -1
  19. package/src/decorators/handler-args.d.ts +68 -0
  20. package/src/decorators/handler-args.d.ts.map +1 -0
  21. package/src/decorators/handler-args.js +83 -0
  22. package/src/decorators/handler-args.js.map +1 -0
  23. package/src/decorators/http-methods.d.ts +143 -0
  24. package/src/decorators/http-methods.d.ts.map +1 -0
  25. package/src/decorators/http-methods.js +265 -0
  26. package/src/decorators/http-methods.js.map +1 -0
  27. package/src/decorators/index.d.ts +22 -0
  28. package/src/decorators/index.d.ts.map +1 -1
  29. package/src/decorators/index.js +56 -0
  30. package/src/decorators/index.js.map +1 -1
  31. package/src/decorators/lifecycle.d.ts +248 -0
  32. package/src/decorators/lifecycle.d.ts.map +1 -0
  33. package/src/decorators/lifecycle.js +301 -0
  34. package/src/decorators/lifecycle.js.map +1 -0
  35. package/src/decorators/metadata-collector.d.ts +175 -0
  36. package/src/decorators/metadata-collector.d.ts.map +1 -0
  37. package/src/decorators/metadata-collector.js +272 -0
  38. package/src/decorators/metadata-collector.js.map +1 -0
  39. package/src/decorators/metadata-keys.d.ts +121 -0
  40. package/src/decorators/metadata-keys.d.ts.map +1 -0
  41. package/src/decorators/metadata-keys.js +116 -0
  42. package/src/decorators/metadata-keys.js.map +1 -0
  43. package/src/decorators/middleware.d.ts +181 -0
  44. package/src/decorators/middleware.d.ts.map +1 -0
  45. package/src/decorators/middleware.js +400 -0
  46. package/src/decorators/middleware.js.map +1 -0
  47. package/src/decorators/openapi-params.d.ts +192 -0
  48. package/src/decorators/openapi-params.d.ts.map +1 -0
  49. package/src/decorators/openapi-params.js +332 -0
  50. package/src/decorators/openapi-params.js.map +1 -0
  51. package/src/decorators/openapi.d.ts +201 -0
  52. package/src/decorators/openapi.d.ts.map +1 -0
  53. package/src/decorators/openapi.js +334 -0
  54. package/src/decorators/openapi.js.map +1 -0
  55. package/src/decorators/params.d.ts +217 -0
  56. package/src/decorators/params.d.ts.map +1 -0
  57. package/src/decorators/params.js +323 -0
  58. package/src/decorators/params.js.map +1 -0
  59. package/src/decorators/response.d.ts +200 -0
  60. package/src/decorators/response.d.ts.map +1 -0
  61. package/src/decorators/response.js +315 -0
  62. package/src/decorators/response.js.map +1 -0
  63. package/src/decorators/schema.d.ts +99 -0
  64. package/src/decorators/schema.d.ts.map +1 -0
  65. package/src/decorators/schema.js +329 -0
  66. package/src/decorators/schema.js.map +1 -0
  67. package/src/decorators/transaction.d.ts +69 -0
  68. package/src/decorators/transaction.d.ts.map +1 -0
  69. package/src/decorators/transaction.js +80 -0
  70. package/src/decorators/transaction.js.map +1 -0
  71. package/src/decorators/validation.d.ts +188 -0
  72. package/src/decorators/validation.d.ts.map +1 -0
  73. package/src/decorators/validation.js +269 -0
  74. package/src/decorators/validation.js.map +1 -0
  75. package/src/decorators/zod-validation.d.ts +164 -4
  76. package/src/decorators/zod-validation.d.ts.map +1 -1
  77. package/src/decorators/zod-validation.js +692 -13
  78. package/src/decorators/zod-validation.js.map +1 -1
  79. package/src/index.d.ts +1 -0
  80. package/src/index.d.ts.map +1 -1
  81. package/src/index.js +1 -0
  82. package/src/index.js.map +1 -1
  83. package/src/interfaces/openApi/decoratorOptions.d.ts +760 -0
  84. package/src/interfaces/openApi/decoratorOptions.d.ts.map +1 -0
  85. package/src/interfaces/openApi/decoratorOptions.js +734 -0
  86. package/src/interfaces/openApi/decoratorOptions.js.map +1 -0
  87. package/src/interfaces/openApi/index.d.ts +1 -0
  88. package/src/interfaces/openApi/index.d.ts.map +1 -1
  89. package/src/interfaces/openApi/index.js +23 -0
  90. package/src/interfaces/openApi/index.js.map +1 -1
  91. package/src/interfaces/openApi/parameter.d.ts +2 -0
  92. package/src/interfaces/openApi/parameter.d.ts.map +1 -1
  93. package/src/interfaces/openApi/parameter.js +3 -1
  94. package/src/interfaces/openApi/parameter.js.map +1 -1
  95. package/src/interfaces/openApi/parameterSchema.d.ts +2 -0
  96. package/src/interfaces/openApi/parameterSchema.d.ts.map +1 -1
  97. package/src/interfaces/openApi/parameterSchema.js +3 -0
  98. package/src/interfaces/openApi/parameterSchema.js.map +1 -1
  99. package/src/openapi/builder.d.ts +249 -0
  100. package/src/openapi/builder.d.ts.map +1 -0
  101. package/src/openapi/builder.js +352 -0
  102. package/src/openapi/builder.js.map +1 -0
  103. package/src/openapi/controller.d.ts +153 -0
  104. package/src/openapi/controller.d.ts.map +1 -0
  105. package/src/openapi/controller.js +331 -0
  106. package/src/openapi/controller.js.map +1 -0
  107. package/src/openapi/index.d.ts +12 -0
  108. package/src/openapi/index.d.ts.map +1 -0
  109. package/src/openapi/index.js +20 -0
  110. package/src/openapi/index.js.map +1 -0
  111. package/src/openapi/markdown-generator.d.ts +52 -0
  112. package/src/openapi/markdown-generator.d.ts.map +1 -0
  113. package/src/openapi/markdown-generator.js +569 -0
  114. package/src/openapi/markdown-generator.js.map +1 -0
  115. package/src/openapi/middleware/index.d.ts +9 -0
  116. package/src/openapi/middleware/index.d.ts.map +1 -0
  117. package/src/openapi/middleware/index.js +15 -0
  118. package/src/openapi/middleware/index.js.map +1 -0
  119. package/src/openapi/middleware/redoc.d.ts +314 -0
  120. package/src/openapi/middleware/redoc.d.ts.map +1 -0
  121. package/src/openapi/middleware/redoc.js +181 -0
  122. package/src/openapi/middleware/redoc.js.map +1 -0
  123. package/src/openapi/middleware/swagger-ui.d.ts +123 -0
  124. package/src/openapi/middleware/swagger-ui.d.ts.map +1 -0
  125. package/src/openapi/middleware/swagger-ui.js +227 -0
  126. package/src/openapi/middleware/swagger-ui.js.map +1 -0
  127. package/src/openapi/schemas.d.ts +170 -0
  128. package/src/openapi/schemas.d.ts.map +1 -0
  129. package/src/openapi/schemas.js +340 -0
  130. package/src/openapi/schemas.js.map +1 -0
  131. package/src/registry/controller-registry.d.ts +78 -0
  132. package/src/registry/controller-registry.d.ts.map +1 -0
  133. package/src/registry/controller-registry.js +86 -0
  134. package/src/registry/controller-registry.js.map +1 -0
  135. package/src/registry/index.d.ts +2 -0
  136. package/src/registry/index.d.ts.map +1 -1
  137. package/src/registry/index.js +3 -1
  138. package/src/registry/index.js.map +1 -1
  139. package/src/routers/api.d.ts +2 -1
  140. package/src/routers/api.d.ts.map +1 -1
  141. package/src/routers/api.js +7 -1
  142. package/src/routers/api.js.map +1 -1
  143. package/src/types.d.ts +1 -0
  144. package/src/types.d.ts.map +1 -1
  145. package/src/types.js +1 -0
  146. package/src/types.js.map +1 -1
@@ -9,8 +9,9 @@ import { ValidationChain } from 'express-validator';
9
9
  import 'reflect-metadata';
10
10
  import { z } from 'zod';
11
11
  import { IConstants } from '../interfaces';
12
- export declare const CONTROLLER_METADATA: unique symbol;
13
- export declare const ROUTES_METADATA: unique symbol;
12
+ import { ApiControllerOptions } from '../interfaces/openApi/decoratorOptions';
13
+ export { CONTROLLER_METADATA, OPENAPI_CONTROLLER_METADATA, ROUTES_METADATA, } from './metadata-keys';
14
+ export type { ApiControllerOptions } from '../interfaces/openApi/decoratorOptions';
14
15
  export type ValidationContext<TConstants extends IConstants = IConstants> = {
15
16
  constants: TConstants;
16
17
  };
@@ -30,14 +31,69 @@ export interface RouteMetadata<TLanguage extends CoreLanguageCode = CoreLanguage
30
31
  handlerName: string;
31
32
  options: RouteOptions<TLanguage>;
32
33
  }
34
+ /**
35
+ * Controller metadata structure stored by @Controller and @ApiController decorators.
36
+ */
37
+ export interface ControllerMetadata {
38
+ /** Base path for all routes in this controller */
39
+ basePath: string;
40
+ /** Optional controller name (defaults to class name) */
41
+ name?: string;
42
+ }
43
+ /**
44
+ * OpenAPI controller metadata structure stored by @ApiController decorator.
45
+ */
46
+ export interface OpenApiControllerMetadata {
47
+ /** Tags to apply to all routes in this controller */
48
+ tags?: string[];
49
+ /** Description of the controller for OpenAPI documentation */
50
+ description?: string;
51
+ /** Whether all routes in this controller are deprecated */
52
+ deprecated?: boolean;
53
+ }
54
+ /**
55
+ * Basic controller decorator for defining route base path.
56
+ * Use @ApiController for OpenAPI-enabled controllers.
57
+ *
58
+ * @param basePath - Base path for all routes in this controller
59
+ * @returns Class decorator function
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * @Controller('/api/users')
64
+ * class UserController {
65
+ * @Get('/:id')
66
+ * getUser() {}
67
+ * }
68
+ * ```
69
+ */
33
70
  export declare function Controller(basePath?: string): <T extends {
34
71
  new (...args: any[]): {};
35
72
  }>(constructor: T) => T;
36
- export declare function Get<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteOptions<TLanguage>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
37
- export declare function Post<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteOptions<TLanguage>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
38
- export declare function Put<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteOptions<TLanguage>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
39
- export declare function Delete<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteOptions<TLanguage>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
40
- export declare function Patch<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteOptions<TLanguage>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
73
+ /**
74
+ * Enhanced controller decorator with OpenAPI support.
75
+ * Registers the controller with both base path and OpenAPI metadata.
76
+ *
77
+ * @param basePath - Base path for all routes in this controller
78
+ * @param options - Optional OpenAPI configuration (tags, description, deprecated, name)
79
+ * @returns Class decorator function
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * @ApiController('/api/users', {
84
+ * tags: ['Users'],
85
+ * description: 'User management endpoints',
86
+ * })
87
+ * class UserController {
88
+ * @Get('/:id')
89
+ * getUser() {}
90
+ * }
91
+ * ```
92
+ */
93
+ export declare function ApiController(basePath?: string, options?: ApiControllerOptions): <T extends {
94
+ new (...args: any[]): {};
95
+ }>(constructor: T) => T;
96
+ export { Delete, Get, Patch, Post, Put } from './http-methods';
41
97
  export declare function Auth(_cryptoAuth?: boolean): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
42
98
  export declare function Validate<TLanguage extends CoreLanguageCode = CoreLanguageCode>(_validation: ValidationChain[] | ((lang: TLanguage) => ValidationChain[])): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
43
99
  //# sourceMappingURL=controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/controller.ts"],"names":[],"mappings":"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"}
@@ -5,58 +5,89 @@
5
5
  * @module decorators/controller
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.ROUTES_METADATA = exports.CONTROLLER_METADATA = void 0;
8
+ exports.Put = exports.Post = exports.Patch = exports.Get = exports.Delete = exports.ROUTES_METADATA = exports.OPENAPI_CONTROLLER_METADATA = exports.CONTROLLER_METADATA = void 0;
9
9
  exports.Controller = Controller;
10
- exports.Get = Get;
11
- exports.Post = Post;
12
- exports.Put = Put;
13
- exports.Delete = Delete;
14
- exports.Patch = Patch;
10
+ exports.ApiController = ApiController;
15
11
  exports.Auth = Auth;
16
12
  exports.Validate = Validate;
17
13
  require("reflect-metadata");
18
- // Metadata keys for storing decorator information
19
- exports.CONTROLLER_METADATA = Symbol('controller');
20
- exports.ROUTES_METADATA = Symbol('routes');
21
- // Controller decorator
14
+ const metadata_keys_1 = require("./metadata-keys");
15
+ // Re-export metadata keys for backward compatibility
16
+ var metadata_keys_2 = require("./metadata-keys");
17
+ Object.defineProperty(exports, "CONTROLLER_METADATA", { enumerable: true, get: function () { return metadata_keys_2.CONTROLLER_METADATA; } });
18
+ Object.defineProperty(exports, "OPENAPI_CONTROLLER_METADATA", { enumerable: true, get: function () { return metadata_keys_2.OPENAPI_CONTROLLER_METADATA; } });
19
+ Object.defineProperty(exports, "ROUTES_METADATA", { enumerable: true, get: function () { return metadata_keys_2.ROUTES_METADATA; } });
20
+ /**
21
+ * Basic controller decorator for defining route base path.
22
+ * Use @ApiController for OpenAPI-enabled controllers.
23
+ *
24
+ * @param basePath - Base path for all routes in this controller
25
+ * @returns Class decorator function
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * @Controller('/api/users')
30
+ * class UserController {
31
+ * @Get('/:id')
32
+ * getUser() {}
33
+ * }
34
+ * ```
35
+ */
22
36
  function Controller(basePath = '') {
23
37
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
24
38
  return function (constructor) {
25
- Reflect.defineMetadata(exports.CONTROLLER_METADATA, { basePath }, constructor);
39
+ const metadata = { basePath };
40
+ Reflect.defineMetadata(metadata_keys_1.CONTROLLER_METADATA, metadata, constructor);
26
41
  return constructor;
27
42
  };
28
43
  }
29
- // HTTP method decorators
30
- function Get(path, options = {}) {
31
- return createRouteDecorator('get', path, options);
32
- }
33
- function Post(path, options = {}) {
34
- return createRouteDecorator('post', path, options);
35
- }
36
- function Put(path, options = {}) {
37
- return createRouteDecorator('put', path, options);
38
- }
39
- function Delete(path, options = {}) {
40
- return createRouteDecorator('delete', path, options);
41
- }
42
- function Patch(path, options = {}) {
43
- return createRouteDecorator('patch', path, options);
44
- }
45
- // Helper to create route decorators
46
- function createRouteDecorator(method, path, options) {
47
- return function (target, propertyKey, descriptor) {
48
- const existingRoutes = Reflect.getMetadata(exports.ROUTES_METADATA, target.constructor) || [];
49
- const route = {
50
- method,
51
- path,
52
- handlerName: propertyKey,
53
- options: options,
44
+ /**
45
+ * Enhanced controller decorator with OpenAPI support.
46
+ * Registers the controller with both base path and OpenAPI metadata.
47
+ *
48
+ * @param basePath - Base path for all routes in this controller
49
+ * @param options - Optional OpenAPI configuration (tags, description, deprecated, name)
50
+ * @returns Class decorator function
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * @ApiController('/api/users', {
55
+ * tags: ['Users'],
56
+ * description: 'User management endpoints',
57
+ * })
58
+ * class UserController {
59
+ * @Get('/:id')
60
+ * getUser() {}
61
+ * }
62
+ * ```
63
+ */
64
+ function ApiController(basePath = '', options = {}) {
65
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
66
+ return function (constructor) {
67
+ // Store base controller metadata (basePath and optional name)
68
+ const controllerMetadata = {
69
+ basePath,
70
+ name: options.name ?? constructor.name,
54
71
  };
55
- existingRoutes.push(route);
56
- Reflect.defineMetadata(exports.ROUTES_METADATA, existingRoutes, target.constructor);
57
- return descriptor;
72
+ Reflect.defineMetadata(metadata_keys_1.CONTROLLER_METADATA, controllerMetadata, constructor);
73
+ // Store OpenAPI-specific controller metadata
74
+ const openApiMetadata = {
75
+ tags: options.tags,
76
+ description: options.description,
77
+ deprecated: options.deprecated,
78
+ };
79
+ Reflect.defineMetadata(metadata_keys_1.OPENAPI_CONTROLLER_METADATA, openApiMetadata, constructor);
80
+ return constructor;
58
81
  };
59
82
  }
83
+ // Re-export enhanced HTTP method decorators from http-methods.ts
84
+ // These provide OpenAPI metadata support while maintaining backward compatibility
85
+ var http_methods_1 = require("./http-methods");
86
+ Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return http_methods_1.Delete; } });
87
+ Object.defineProperty(exports, "Get", { enumerable: true, get: function () { return http_methods_1.Get; } });
88
+ Object.defineProperty(exports, "Patch", { enumerable: true, get: function () { return http_methods_1.Patch; } });
89
+ Object.defineProperty(exports, "Post", { enumerable: true, get: function () { return http_methods_1.Post; } });
90
+ Object.defineProperty(exports, "Put", { enumerable: true, get: function () { return http_methods_1.Put; } });
60
91
  // Convenience decorators
61
92
  function Auth(_cryptoAuth = false) {
62
93
  return function (target, propertyKey, descriptor) {
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/controller.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAkDH,gCAMC;AAGD,kBAKC;AAED,oBAKC;AAED,kBAKC;AAED,wBAKC;AAED,sBAKC;AAiCD,oBASC;AAED,4BAWC;AA9ID,4BAA0B;AAI1B,kDAAkD;AACrC,QAAA,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC3C,QAAA,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAsChD,uBAAuB;AACvB,SAAgB,UAAU,CAAC,WAAmB,EAAE;IAC9C,mEAAmE;IACnE,OAAO,UAAkD,WAAc;QACrE,OAAO,CAAC,cAAc,CAAC,2BAAmB,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED,yBAAyB;AACzB,SAAgB,GAAG,CACjB,IAAY,EACZ,UAAmC,EAAE;IAErC,OAAO,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,IAAI,CAClB,IAAY,EACZ,UAAmC,EAAE;IAErC,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,GAAG,CACjB,IAAY,EACZ,UAAmC,EAAE;IAErC,OAAO,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,MAAM,CACpB,IAAY,EACZ,UAAmC,EAAE;IAErC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,KAAK,CACnB,IAAY,EACZ,UAAmC,EAAE;IAErC,OAAO,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,oCAAoC;AACpC,SAAS,oBAAoB,CAG3B,MAAmD,EACnD,IAAY,EACZ,OAAgC;IAEhC,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B;QAE9B,MAAM,cAAc,GAClB,OAAO,CAAC,WAAW,CAAC,uBAAe,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEjE,MAAM,KAAK,GAAoC;YAC7C,MAAM;YACN,IAAI;YACJ,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,OAAyC;SACnD,CAAC;QAEF,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,CAAC,cAAc,CAAC,uBAAe,EAAE,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAE5E,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,yBAAyB;AACzB,SAAgB,IAAI,CAAC,cAAuB,KAAK;IAC/C,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B;QAE9B,+CAA+C;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CACtB,WAAyE;IAEzE,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B;QAE9B,+CAA+C;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/controller.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAkGH,gCAOC;AAsBD,sCA+BC;AAOD,oBASC;AAED,4BAWC;AAtLD,4BAA0B;AAI1B,mDAGyB;AAEzB,qDAAqD;AACrD,iDAIyB;AAHvB,oHAAA,mBAAmB,OAAA;AACnB,4HAAA,2BAA2B,OAAA;AAC3B,gHAAA,eAAe,OAAA;AAgEjB;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,UAAU,CAAC,WAAmB,EAAE;IAC9C,mEAAmE;IACnE,OAAO,UAAkD,WAAc;QACrE,MAAM,QAAQ,GAAuB,EAAE,QAAQ,EAAE,CAAC;QAClD,OAAO,CAAC,cAAc,CAAC,mCAAmB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,aAAa,CAC3B,WAAmB,EAAE,EACrB,UAAgC,EAAE;IAElC,mEAAmE;IACnE,OAAO,UAAkD,WAAc;QACrE,8DAA8D;QAC9D,MAAM,kBAAkB,GAAuB;YAC7C,QAAQ;YACR,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;SACvC,CAAC;QACF,OAAO,CAAC,cAAc,CACpB,mCAAmB,EACnB,kBAAkB,EAClB,WAAW,CACZ,CAAC;QAEF,6CAA6C;QAC7C,MAAM,eAAe,GAA8B;YACjD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,OAAO,CAAC,cAAc,CACpB,2CAA2B,EAC3B,eAAe,EACf,WAAW,CACZ,CAAC;QAEF,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,kFAAkF;AAClF,+CAA+D;AAAtD,sGAAA,MAAM,OAAA;AAAE,mGAAA,GAAG,OAAA;AAAE,qGAAA,KAAK,OAAA;AAAE,oGAAA,IAAI,OAAA;AAAE,mGAAA,GAAG,OAAA;AAEtC,yBAAyB;AACzB,SAAgB,IAAI,CAAC,cAAuB,KAAK;IAC/C,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B;QAE9B,+CAA+C;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CACtB,WAAyE;IAEzE,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B;QAE9B,+CAA+C;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @fileoverview Handler arguments decorator for Express Suite.
3
+ * Provides @HandlerArgs decorator for passing additional arguments to handler methods.
4
+ * @module decorators/handler-args
5
+ */
6
+ import 'reflect-metadata';
7
+ /**
8
+ * Metadata stored for handler arguments.
9
+ */
10
+ export interface HandlerArgsMetadata {
11
+ /**
12
+ * Additional arguments to pass to the handler method.
13
+ */
14
+ args: unknown[];
15
+ }
16
+ /**
17
+ * Decorator that specifies additional arguments to pass to a route handler method.
18
+ * These arguments are passed to the handler after the standard request parameter.
19
+ *
20
+ * @param args - Additional arguments to pass to the handler
21
+ * @returns Method decorator
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * @ApiController('/api/items')
26
+ * class ItemController {
27
+ * // Pass a configuration object to the handler
28
+ * @HandlerArgs({ maxItems: 100 })
29
+ * @Get('/')
30
+ * listItems(req: Request, config: { maxItems: number }) {
31
+ * // config.maxItems === 100
32
+ * }
33
+ *
34
+ * // Pass multiple arguments
35
+ * @HandlerArgs('prefix', 42, { option: true })
36
+ * @Post('/')
37
+ * createItem(req: Request, prefix: string, count: number, options: { option: boolean }) {
38
+ * // prefix === 'prefix', count === 42, options.option === true
39
+ * }
40
+ * }
41
+ * ```
42
+ */
43
+ export declare function HandlerArgs(...args: unknown[]): MethodDecorator;
44
+ /**
45
+ * Gets handler args metadata for a method.
46
+ *
47
+ * @param target - The class constructor
48
+ * @param propertyKey - The method name
49
+ * @returns Handler args metadata or undefined if not set
50
+ */
51
+ export declare function getHandlerArgsMetadata(target: object, propertyKey: string | symbol): HandlerArgsMetadata | undefined;
52
+ /**
53
+ * Gets the handler arguments array for a method.
54
+ *
55
+ * @param target - The class constructor
56
+ * @param propertyKey - The method name
57
+ * @returns Array of handler arguments or empty array if not set
58
+ */
59
+ export declare function getHandlerArgs(target: object, propertyKey: string | symbol): unknown[];
60
+ /**
61
+ * Checks if a method has handler args defined.
62
+ *
63
+ * @param target - The class constructor
64
+ * @param propertyKey - The method name
65
+ * @returns True if the method has handler args
66
+ */
67
+ export declare function hasHandlerArgs(target: object, propertyKey: string | symbol): boolean;
68
+ //# sourceMappingURL=handler-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-args.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/handler-args.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kBAAkB,CAAC;AAI1B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,eAAe,CAmB/D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,mBAAmB,GAAG,SAAS,CAMjC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,OAAO,EAAE,CAGX;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,OAAO,CAGT"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Handler arguments decorator for Express Suite.
4
+ * Provides @HandlerArgs decorator for passing additional arguments to handler methods.
5
+ * @module decorators/handler-args
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.HandlerArgs = HandlerArgs;
9
+ exports.getHandlerArgsMetadata = getHandlerArgsMetadata;
10
+ exports.getHandlerArgs = getHandlerArgs;
11
+ exports.hasHandlerArgs = hasHandlerArgs;
12
+ require("reflect-metadata");
13
+ const metadata_keys_1 = require("./metadata-keys");
14
+ const metadata_collector_1 = require("./metadata-collector");
15
+ /**
16
+ * Decorator that specifies additional arguments to pass to a route handler method.
17
+ * These arguments are passed to the handler after the standard request parameter.
18
+ *
19
+ * @param args - Additional arguments to pass to the handler
20
+ * @returns Method decorator
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * @ApiController('/api/items')
25
+ * class ItemController {
26
+ * // Pass a configuration object to the handler
27
+ * @HandlerArgs({ maxItems: 100 })
28
+ * @Get('/')
29
+ * listItems(req: Request, config: { maxItems: number }) {
30
+ * // config.maxItems === 100
31
+ * }
32
+ *
33
+ * // Pass multiple arguments
34
+ * @HandlerArgs('prefix', 42, { option: true })
35
+ * @Post('/')
36
+ * createItem(req: Request, prefix: string, count: number, options: { option: boolean }) {
37
+ * // prefix === 'prefix', count === 42, options.option === true
38
+ * }
39
+ * }
40
+ * ```
41
+ */
42
+ function HandlerArgs(...args) {
43
+ return function (target, propertyKey, descriptor) {
44
+ const metadata = {
45
+ args,
46
+ };
47
+ (0, metadata_collector_1.setMetadata)(metadata_keys_1.HANDLER_ARGS_METADATA, metadata, target.constructor, propertyKey);
48
+ return descriptor;
49
+ };
50
+ }
51
+ /**
52
+ * Gets handler args metadata for a method.
53
+ *
54
+ * @param target - The class constructor
55
+ * @param propertyKey - The method name
56
+ * @returns Handler args metadata or undefined if not set
57
+ */
58
+ function getHandlerArgsMetadata(target, propertyKey) {
59
+ return (0, metadata_collector_1.getMetadata)(metadata_keys_1.HANDLER_ARGS_METADATA, target, propertyKey);
60
+ }
61
+ /**
62
+ * Gets the handler arguments array for a method.
63
+ *
64
+ * @param target - The class constructor
65
+ * @param propertyKey - The method name
66
+ * @returns Array of handler arguments or empty array if not set
67
+ */
68
+ function getHandlerArgs(target, propertyKey) {
69
+ const metadata = getHandlerArgsMetadata(target, propertyKey);
70
+ return metadata?.args ?? [];
71
+ }
72
+ /**
73
+ * Checks if a method has handler args defined.
74
+ *
75
+ * @param target - The class constructor
76
+ * @param propertyKey - The method name
77
+ * @returns True if the method has handler args
78
+ */
79
+ function hasHandlerArgs(target, propertyKey) {
80
+ const metadata = getHandlerArgsMetadata(target, propertyKey);
81
+ return metadata !== undefined && metadata.args.length > 0;
82
+ }
83
+ //# sourceMappingURL=handler-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-args.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/handler-args.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA2CH,kCAmBC;AASD,wDASC;AASD,wCAMC;AASD,wCAMC;AA5GD,4BAA0B;AAC1B,mDAAwD;AACxD,6DAAgE;AAYhE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,WAAW,CAAC,GAAG,IAAe;IAC5C,OAAO,UACL,MAAc,EACd,WAA4B,EAC5B,UAA8B;QAE9B,MAAM,QAAQ,GAAwB;YACpC,IAAI;SACL,CAAC;QAEF,IAAA,gCAAW,EACT,qCAAqB,EACrB,QAAQ,EACR,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,MAAc,EACd,WAA4B;IAE5B,OAAO,IAAA,gCAAW,EAChB,qCAAqB,EACrB,MAAM,EACN,WAAW,CACZ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,MAAc,EACd,WAA4B;IAE5B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7D,OAAO,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,MAAc,EACd,WAA4B;IAE5B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7D,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * @fileoverview Enhanced HTTP method decorators with OpenAPI support.
3
+ * Provides @Get, @Post, @Put, @Delete, @Patch decorators with inline OpenAPI metadata.
4
+ * @module decorators/http-methods
5
+ */
6
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
7
+ import 'reflect-metadata';
8
+ import { RouteDecoratorOptions } from '../interfaces/openApi/decoratorOptions';
9
+ /**
10
+ * Route metadata structure stored by HTTP method decorators.
11
+ */
12
+ export interface EnhancedRouteMetadata<TLanguage extends CoreLanguageCode = CoreLanguageCode> {
13
+ /** HTTP method */
14
+ method: 'get' | 'post' | 'put' | 'delete' | 'patch';
15
+ /** Route path */
16
+ path: string;
17
+ /** Handler method name */
18
+ handlerName: string;
19
+ /** Route options including validation, middleware, auth, etc. */
20
+ options: RouteDecoratorOptions<TLanguage>;
21
+ }
22
+ /**
23
+ * GET method decorator with OpenAPI support.
24
+ * Registers a GET route handler with optional OpenAPI metadata.
25
+ *
26
+ * @param path - Route path (e.g., '/users/:id')
27
+ * @param options - Route options including validation, auth, and OpenAPI metadata
28
+ * @returns Method decorator
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * @ApiController('/api/users')
33
+ * class UserController {
34
+ * @Get('/:id', {
35
+ * summary: 'Get user by ID',
36
+ * tags: ['Users'],
37
+ * auth: true,
38
+ * })
39
+ * async getUser(@Param('id') id: string) {
40
+ * return this.userService.findById(id);
41
+ * }
42
+ * }
43
+ * ```
44
+ */
45
+ export declare function Get<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteDecoratorOptions<TLanguage>): MethodDecorator;
46
+ /**
47
+ * POST method decorator with OpenAPI support.
48
+ * Registers a POST route handler with optional OpenAPI metadata.
49
+ *
50
+ * @param path - Route path (e.g., '/users')
51
+ * @param options - Route options including validation, auth, and OpenAPI metadata
52
+ * @returns Method decorator
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * @ApiController('/api/users')
57
+ * class UserController {
58
+ * @Post('/', {
59
+ * summary: 'Create a new user',
60
+ * tags: ['Users'],
61
+ * schema: createUserSchema,
62
+ * })
63
+ * async createUser(@Body() data: CreateUserDto) {
64
+ * return this.userService.create(data);
65
+ * }
66
+ * }
67
+ * ```
68
+ */
69
+ export declare function Post<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteDecoratorOptions<TLanguage>): MethodDecorator;
70
+ /**
71
+ * PUT method decorator with OpenAPI support.
72
+ * Registers a PUT route handler with optional OpenAPI metadata.
73
+ *
74
+ * @param path - Route path (e.g., '/users/:id')
75
+ * @param options - Route options including validation, auth, and OpenAPI metadata
76
+ * @returns Method decorator
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * @ApiController('/api/users')
81
+ * class UserController {
82
+ * @Put('/:id', {
83
+ * summary: 'Update user',
84
+ * tags: ['Users'],
85
+ * auth: true,
86
+ * })
87
+ * async updateUser(@Param('id') id: string, @Body() data: UpdateUserDto) {
88
+ * return this.userService.update(id, data);
89
+ * }
90
+ * }
91
+ * ```
92
+ */
93
+ export declare function Put<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteDecoratorOptions<TLanguage>): MethodDecorator;
94
+ /**
95
+ * DELETE method decorator with OpenAPI support.
96
+ * Registers a DELETE route handler with optional OpenAPI metadata.
97
+ *
98
+ * @param path - Route path (e.g., '/users/:id')
99
+ * @param options - Route options including validation, auth, and OpenAPI metadata
100
+ * @returns Method decorator
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * @ApiController('/api/users')
105
+ * class UserController {
106
+ * @Delete('/:id', {
107
+ * summary: 'Delete user',
108
+ * tags: ['Users'],
109
+ * auth: true,
110
+ * })
111
+ * async deleteUser(@Param('id') id: string) {
112
+ * return this.userService.delete(id);
113
+ * }
114
+ * }
115
+ * ```
116
+ */
117
+ export declare function Delete<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteDecoratorOptions<TLanguage>): MethodDecorator;
118
+ /**
119
+ * PATCH method decorator with OpenAPI support.
120
+ * Registers a PATCH route handler with optional OpenAPI metadata.
121
+ *
122
+ * @param path - Route path (e.g., '/users/:id')
123
+ * @param options - Route options including validation, auth, and OpenAPI metadata
124
+ * @returns Method decorator
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * @ApiController('/api/users')
129
+ * class UserController {
130
+ * @Patch('/:id', {
131
+ * summary: 'Partially update user',
132
+ * tags: ['Users'],
133
+ * auth: true,
134
+ * })
135
+ * async patchUser(@Param('id') id: string, @Body() data: PatchUserDto) {
136
+ * return this.userService.patch(id, data);
137
+ * }
138
+ * }
139
+ * ```
140
+ */
141
+ export declare function Patch<TLanguage extends CoreLanguageCode = CoreLanguageCode>(path: string, options?: RouteDecoratorOptions<TLanguage>): MethodDecorator;
142
+ export type { RouteDecoratorOptions } from '../interfaces/openApi/decoratorOptions';
143
+ //# sourceMappingURL=http-methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-methods.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/decorators/http-methods.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAK/E;;GAEG;AACH,MAAM,WAAW,qBAAqB,CACpC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IAErD,kBAAkB;IAClB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpD,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC3C;AA8JD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,GAAG,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EACvE,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,CAAC,SAAS,CAAM,GAC7C,eAAe,CAEjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,IAAI,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EACxE,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,CAAC,SAAS,CAAM,GAC7C,eAAe,CAEjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,GAAG,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EACvE,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,CAAC,SAAS,CAAM,GAC7C,eAAe,CAEjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EAC1E,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,CAAC,SAAS,CAAM,GAC7C,eAAe,CAEjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EACzE,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,CAAC,SAAS,CAAM,GAC7C,eAAe,CAEjB;AAGD,YAAY,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC"}