@hazeljs/core 0.2.0-beta.1

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 (194) hide show
  1. package/README.md +522 -0
  2. package/dist/__tests__/container.test.d.ts +2 -0
  3. package/dist/__tests__/container.test.d.ts.map +1 -0
  4. package/dist/__tests__/container.test.js +454 -0
  5. package/dist/__tests__/decorators.test.d.ts +2 -0
  6. package/dist/__tests__/decorators.test.d.ts.map +1 -0
  7. package/dist/__tests__/decorators.test.js +693 -0
  8. package/dist/__tests__/errors/http.error.test.d.ts +2 -0
  9. package/dist/__tests__/errors/http.error.test.d.ts.map +1 -0
  10. package/dist/__tests__/errors/http.error.test.js +117 -0
  11. package/dist/__tests__/filters/exception-filter.test.d.ts +2 -0
  12. package/dist/__tests__/filters/exception-filter.test.d.ts.map +1 -0
  13. package/dist/__tests__/filters/exception-filter.test.js +135 -0
  14. package/dist/__tests__/filters/http-exception.filter.test.d.ts +2 -0
  15. package/dist/__tests__/filters/http-exception.filter.test.d.ts.map +1 -0
  16. package/dist/__tests__/filters/http-exception.filter.test.js +119 -0
  17. package/dist/__tests__/hazel-app.test.d.ts +2 -0
  18. package/dist/__tests__/hazel-app.test.d.ts.map +1 -0
  19. package/dist/__tests__/hazel-app.test.js +682 -0
  20. package/dist/__tests__/hazel-module.test.d.ts +2 -0
  21. package/dist/__tests__/hazel-module.test.d.ts.map +1 -0
  22. package/dist/__tests__/hazel-module.test.js +408 -0
  23. package/dist/__tests__/hazel-response.test.d.ts +2 -0
  24. package/dist/__tests__/hazel-response.test.d.ts.map +1 -0
  25. package/dist/__tests__/hazel-response.test.js +138 -0
  26. package/dist/__tests__/health.test.d.ts +2 -0
  27. package/dist/__tests__/health.test.d.ts.map +1 -0
  28. package/dist/__tests__/health.test.js +147 -0
  29. package/dist/__tests__/index.test.d.ts +2 -0
  30. package/dist/__tests__/index.test.d.ts.map +1 -0
  31. package/dist/__tests__/index.test.js +239 -0
  32. package/dist/__tests__/interceptors/interceptor.test.d.ts +2 -0
  33. package/dist/__tests__/interceptors/interceptor.test.d.ts.map +1 -0
  34. package/dist/__tests__/interceptors/interceptor.test.js +166 -0
  35. package/dist/__tests__/logger.test.d.ts +2 -0
  36. package/dist/__tests__/logger.test.d.ts.map +1 -0
  37. package/dist/__tests__/logger.test.js +141 -0
  38. package/dist/__tests__/middleware/cors.test.d.ts +2 -0
  39. package/dist/__tests__/middleware/cors.test.d.ts.map +1 -0
  40. package/dist/__tests__/middleware/cors.test.js +129 -0
  41. package/dist/__tests__/middleware/csrf.test.d.ts +2 -0
  42. package/dist/__tests__/middleware/csrf.test.d.ts.map +1 -0
  43. package/dist/__tests__/middleware/csrf.test.js +247 -0
  44. package/dist/__tests__/middleware/global-middleware.test.d.ts +2 -0
  45. package/dist/__tests__/middleware/global-middleware.test.d.ts.map +1 -0
  46. package/dist/__tests__/middleware/global-middleware.test.js +259 -0
  47. package/dist/__tests__/middleware/rate-limit.test.d.ts +2 -0
  48. package/dist/__tests__/middleware/rate-limit.test.d.ts.map +1 -0
  49. package/dist/__tests__/middleware/rate-limit.test.js +264 -0
  50. package/dist/__tests__/middleware/security-headers.test.d.ts +2 -0
  51. package/dist/__tests__/middleware/security-headers.test.d.ts.map +1 -0
  52. package/dist/__tests__/middleware/security-headers.test.js +229 -0
  53. package/dist/__tests__/middleware/timeout.test.d.ts +2 -0
  54. package/dist/__tests__/middleware/timeout.test.d.ts.map +1 -0
  55. package/dist/__tests__/middleware/timeout.test.js +132 -0
  56. package/dist/__tests__/middleware.test.d.ts +2 -0
  57. package/dist/__tests__/middleware.test.d.ts.map +1 -0
  58. package/dist/__tests__/middleware.test.js +180 -0
  59. package/dist/__tests__/pipes/pipe.test.d.ts +2 -0
  60. package/dist/__tests__/pipes/pipe.test.d.ts.map +1 -0
  61. package/dist/__tests__/pipes/pipe.test.js +245 -0
  62. package/dist/__tests__/pipes/validation.pipe.test.d.ts +2 -0
  63. package/dist/__tests__/pipes/validation.pipe.test.d.ts.map +1 -0
  64. package/dist/__tests__/pipes/validation.pipe.test.js +297 -0
  65. package/dist/__tests__/request-parser.test.d.ts +2 -0
  66. package/dist/__tests__/request-parser.test.d.ts.map +1 -0
  67. package/dist/__tests__/request-parser.test.js +182 -0
  68. package/dist/__tests__/router.test.d.ts +2 -0
  69. package/dist/__tests__/router.test.d.ts.map +1 -0
  70. package/dist/__tests__/router.test.js +680 -0
  71. package/dist/__tests__/routing/route-matcher.test.d.ts +2 -0
  72. package/dist/__tests__/routing/route-matcher.test.d.ts.map +1 -0
  73. package/dist/__tests__/routing/route-matcher.test.js +219 -0
  74. package/dist/__tests__/routing/version.decorator.test.d.ts +2 -0
  75. package/dist/__tests__/routing/version.decorator.test.d.ts.map +1 -0
  76. package/dist/__tests__/routing/version.decorator.test.js +298 -0
  77. package/dist/__tests__/service.test.d.ts +2 -0
  78. package/dist/__tests__/service.test.d.ts.map +1 -0
  79. package/dist/__tests__/service.test.js +121 -0
  80. package/dist/__tests__/shutdown.test.d.ts +2 -0
  81. package/dist/__tests__/shutdown.test.d.ts.map +1 -0
  82. package/dist/__tests__/shutdown.test.js +250 -0
  83. package/dist/__tests__/testing/testing.module.test.d.ts +2 -0
  84. package/dist/__tests__/testing/testing.module.test.d.ts.map +1 -0
  85. package/dist/__tests__/testing/testing.module.test.js +370 -0
  86. package/dist/__tests__/upload/file-upload.test.d.ts +2 -0
  87. package/dist/__tests__/upload/file-upload.test.d.ts.map +1 -0
  88. package/dist/__tests__/upload/file-upload.test.js +498 -0
  89. package/dist/__tests__/utils/sanitize.test.d.ts +2 -0
  90. package/dist/__tests__/utils/sanitize.test.d.ts.map +1 -0
  91. package/dist/__tests__/utils/sanitize.test.js +291 -0
  92. package/dist/__tests__/validator.test.d.ts +2 -0
  93. package/dist/__tests__/validator.test.d.ts.map +1 -0
  94. package/dist/__tests__/validator.test.js +300 -0
  95. package/dist/container.d.ts +80 -0
  96. package/dist/container.d.ts.map +1 -0
  97. package/dist/container.js +271 -0
  98. package/dist/decorators.d.ts +92 -0
  99. package/dist/decorators.d.ts.map +1 -0
  100. package/dist/decorators.js +343 -0
  101. package/dist/errors/http.error.d.ts +31 -0
  102. package/dist/errors/http.error.d.ts.map +1 -0
  103. package/dist/errors/http.error.js +62 -0
  104. package/dist/filters/exception-filter.d.ts +39 -0
  105. package/dist/filters/exception-filter.d.ts.map +1 -0
  106. package/dist/filters/exception-filter.js +38 -0
  107. package/dist/filters/http-exception.filter.d.ts +9 -0
  108. package/dist/filters/http-exception.filter.d.ts.map +1 -0
  109. package/dist/filters/http-exception.filter.js +42 -0
  110. package/dist/hazel-app.d.ts +78 -0
  111. package/dist/hazel-app.d.ts.map +1 -0
  112. package/dist/hazel-app.js +453 -0
  113. package/dist/hazel-module.d.ts +20 -0
  114. package/dist/hazel-module.d.ts.map +1 -0
  115. package/dist/hazel-module.js +109 -0
  116. package/dist/hazel-response.d.ts +20 -0
  117. package/dist/hazel-response.d.ts.map +1 -0
  118. package/dist/hazel-response.js +68 -0
  119. package/dist/health.d.ts +73 -0
  120. package/dist/health.d.ts.map +1 -0
  121. package/dist/health.js +174 -0
  122. package/dist/index.d.ts +41 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +140 -0
  125. package/dist/interceptors/interceptor.d.ts +22 -0
  126. package/dist/interceptors/interceptor.d.ts.map +1 -0
  127. package/dist/interceptors/interceptor.js +46 -0
  128. package/dist/logger.d.ts +8 -0
  129. package/dist/logger.d.ts.map +1 -0
  130. package/dist/logger.js +238 -0
  131. package/dist/middleware/cors.middleware.d.ts +44 -0
  132. package/dist/middleware/cors.middleware.d.ts.map +1 -0
  133. package/dist/middleware/cors.middleware.js +118 -0
  134. package/dist/middleware/csrf.middleware.d.ts +82 -0
  135. package/dist/middleware/csrf.middleware.d.ts.map +1 -0
  136. package/dist/middleware/csrf.middleware.js +183 -0
  137. package/dist/middleware/global-middleware.d.ts +111 -0
  138. package/dist/middleware/global-middleware.d.ts.map +1 -0
  139. package/dist/middleware/global-middleware.js +179 -0
  140. package/dist/middleware/rate-limit.middleware.d.ts +73 -0
  141. package/dist/middleware/rate-limit.middleware.d.ts.map +1 -0
  142. package/dist/middleware/rate-limit.middleware.js +124 -0
  143. package/dist/middleware/security-headers.middleware.d.ts +76 -0
  144. package/dist/middleware/security-headers.middleware.d.ts.map +1 -0
  145. package/dist/middleware/security-headers.middleware.js +123 -0
  146. package/dist/middleware/timeout.middleware.d.ts +25 -0
  147. package/dist/middleware/timeout.middleware.d.ts.map +1 -0
  148. package/dist/middleware/timeout.middleware.js +74 -0
  149. package/dist/middleware.d.ts +13 -0
  150. package/dist/middleware.d.ts.map +1 -0
  151. package/dist/middleware.js +47 -0
  152. package/dist/pipes/pipe.d.ts +50 -0
  153. package/dist/pipes/pipe.d.ts.map +1 -0
  154. package/dist/pipes/pipe.js +96 -0
  155. package/dist/pipes/validation.pipe.d.ts +6 -0
  156. package/dist/pipes/validation.pipe.d.ts.map +1 -0
  157. package/dist/pipes/validation.pipe.js +61 -0
  158. package/dist/request-context.d.ts +17 -0
  159. package/dist/request-context.d.ts.map +1 -0
  160. package/dist/request-context.js +2 -0
  161. package/dist/request-parser.d.ts +7 -0
  162. package/dist/request-parser.d.ts.map +1 -0
  163. package/dist/request-parser.js +60 -0
  164. package/dist/router.d.ts +33 -0
  165. package/dist/router.d.ts.map +1 -0
  166. package/dist/router.js +426 -0
  167. package/dist/routing/route-matcher.d.ts +39 -0
  168. package/dist/routing/route-matcher.d.ts.map +1 -0
  169. package/dist/routing/route-matcher.js +93 -0
  170. package/dist/routing/version.decorator.d.ts +36 -0
  171. package/dist/routing/version.decorator.d.ts.map +1 -0
  172. package/dist/routing/version.decorator.js +89 -0
  173. package/dist/service.d.ts +9 -0
  174. package/dist/service.d.ts.map +1 -0
  175. package/dist/service.js +39 -0
  176. package/dist/shutdown.d.ts +32 -0
  177. package/dist/shutdown.d.ts.map +1 -0
  178. package/dist/shutdown.js +109 -0
  179. package/dist/testing/testing.module.d.ts +83 -0
  180. package/dist/testing/testing.module.d.ts.map +1 -0
  181. package/dist/testing/testing.module.js +164 -0
  182. package/dist/types.d.ts +76 -0
  183. package/dist/types.d.ts.map +1 -0
  184. package/dist/types.js +2 -0
  185. package/dist/upload/file-upload.d.ts +75 -0
  186. package/dist/upload/file-upload.d.ts.map +1 -0
  187. package/dist/upload/file-upload.js +261 -0
  188. package/dist/utils/sanitize.d.ts +45 -0
  189. package/dist/utils/sanitize.d.ts.map +1 -0
  190. package/dist/utils/sanitize.js +165 -0
  191. package/dist/validator.d.ts +7 -0
  192. package/dist/validator.d.ts.map +1 -0
  193. package/dist/validator.js +119 -0
  194. package/package.json +65 -0
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Container = exports.Scope = void 0;
7
+ require("reflect-metadata");
8
+ const logger_1 = __importDefault(require("./logger"));
9
+ var Scope;
10
+ (function (Scope) {
11
+ Scope["SINGLETON"] = "singleton";
12
+ Scope["TRANSIENT"] = "transient";
13
+ Scope["REQUEST"] = "request";
14
+ })(Scope || (exports.Scope = Scope = {}));
15
+ class Container {
16
+ // Note: resolutionStack is used per-resolve chain via parameter threading, not shared state
17
+ constructor() {
18
+ this.providers = new Map();
19
+ this.requestScopedProviders = new Map();
20
+ logger_1.default.info('Container initialized');
21
+ }
22
+ static getInstance() {
23
+ if (!Container.instance) {
24
+ Container.instance = new Container();
25
+ }
26
+ return Container.instance;
27
+ }
28
+ /**
29
+ * Create a new container instance (for testing)
30
+ */
31
+ static createTestInstance() {
32
+ return new Container();
33
+ }
34
+ /**
35
+ * Register a provider with the container
36
+ */
37
+ register(token, provider, scope = Scope.SINGLETON) {
38
+ const tokenName = this.getTokenName(token);
39
+ logger_1.default.info(`Registering provider: ${tokenName} with scope: ${scope}`);
40
+ if (this.isProvider(provider)) {
41
+ this.registerProvider(provider);
42
+ }
43
+ else {
44
+ this.providers.set(token, {
45
+ instance: provider,
46
+ scope,
47
+ });
48
+ }
49
+ }
50
+ /**
51
+ * Register a provider configuration
52
+ */
53
+ registerProvider(provider) {
54
+ const tokenName = this.getTokenName(provider.token);
55
+ logger_1.default.debug(`Registering provider configuration: ${tokenName}`);
56
+ const scope = provider.scope || Scope.SINGLETON;
57
+ const metadata = { scope };
58
+ if (provider.useValue !== undefined) {
59
+ metadata.instance = provider.useValue;
60
+ }
61
+ else if (provider.useFactory) {
62
+ metadata.factory = (requestId) => {
63
+ const deps = (provider.inject || []).map((dep) => this.resolve(dep, requestId));
64
+ return provider.useFactory(...deps);
65
+ };
66
+ }
67
+ else if (provider.useClass) {
68
+ metadata.factory = (requestId) => this.createInstance(provider.useClass, requestId);
69
+ }
70
+ this.providers.set(provider.token, metadata);
71
+ }
72
+ /**
73
+ * Resolve a dependency from the container
74
+ */
75
+ resolve(token, requestId, resolutionStack) {
76
+ if (!token) {
77
+ if (logger_1.default.isDebugEnabled()) {
78
+ logger_1.default.debug('No token provided for resolution');
79
+ }
80
+ return undefined;
81
+ }
82
+ if (logger_1.default.isDebugEnabled()) {
83
+ const tokenName = this.getTokenName(token);
84
+ logger_1.default.debug(`Resolving dependency: ${tokenName}`);
85
+ }
86
+ // Check if provider is registered
87
+ const metadata = this.providers.get(token);
88
+ if (metadata) {
89
+ return this.resolveFromMetadata(token, metadata, requestId, resolutionStack);
90
+ }
91
+ // If token is a class, try to auto-resolve
92
+ if (typeof token === 'function' && token.prototype) {
93
+ return this.autoResolve(token, requestId, resolutionStack);
94
+ }
95
+ if (logger_1.default.isDebugEnabled()) {
96
+ logger_1.default.warn(`No provider found for token: ${this.getTokenName(token)}`);
97
+ }
98
+ return undefined;
99
+ }
100
+ /**
101
+ * Resolve from provider metadata
102
+ */
103
+ resolveFromMetadata(token, metadata, requestId, resolutionStack) {
104
+ const tokenName = this.getTokenName(token);
105
+ // Use per-chain resolution stack to detect circular deps (thread-safe)
106
+ const stack = resolutionStack || new Set();
107
+ if (stack.has(token)) {
108
+ const chain = Array.from(stack).map(t => this.getTokenName(t));
109
+ chain.push(tokenName);
110
+ throw new Error(`Circular dependency detected: ${chain.join(' → ')}`);
111
+ }
112
+ stack.add(token);
113
+ try {
114
+ // Handle different scopes
115
+ switch (metadata.scope) {
116
+ case Scope.SINGLETON:
117
+ if (metadata.instance !== undefined) {
118
+ return metadata.instance;
119
+ }
120
+ if (metadata.isResolving) {
121
+ // Another resolve is already creating this singleton — wait would deadlock in sync, so error
122
+ throw new Error(`Singleton ${tokenName} is already being resolved (possible async race)`);
123
+ }
124
+ if (metadata.factory) {
125
+ metadata.isResolving = true;
126
+ try {
127
+ const result = metadata.factory(requestId);
128
+ metadata.instance = result;
129
+ return metadata.instance;
130
+ }
131
+ finally {
132
+ metadata.isResolving = false;
133
+ }
134
+ }
135
+ break;
136
+ case Scope.TRANSIENT:
137
+ if (metadata.factory) {
138
+ return metadata.factory(requestId);
139
+ }
140
+ break;
141
+ case Scope.REQUEST:
142
+ if (!requestId) {
143
+ throw new Error(`Request scope requires requestId for: ${tokenName}`);
144
+ }
145
+ return this.resolveRequestScoped(token, metadata, requestId);
146
+ }
147
+ return undefined;
148
+ }
149
+ finally {
150
+ stack.delete(token);
151
+ }
152
+ }
153
+ /**
154
+ * Resolve request-scoped provider
155
+ */
156
+ resolveRequestScoped(token, metadata, requestId) {
157
+ let requestProviders = this.requestScopedProviders.get(requestId);
158
+ if (!requestProviders) {
159
+ requestProviders = new Map();
160
+ this.requestScopedProviders.set(requestId, requestProviders);
161
+ }
162
+ if (requestProviders.has(token)) {
163
+ return requestProviders.get(token);
164
+ }
165
+ if (metadata.factory) {
166
+ const instance = metadata.factory(requestId);
167
+ requestProviders.set(token, instance);
168
+ return instance;
169
+ }
170
+ return undefined;
171
+ }
172
+ /**
173
+ * Auto-resolve a class without explicit registration
174
+ */
175
+ autoResolve(token, requestId, resolutionStack) {
176
+ if (logger_1.default.isDebugEnabled()) {
177
+ logger_1.default.debug(`Auto-resolving: ${token.name}`);
178
+ }
179
+ // Check if already registered
180
+ if (this.providers.has(token)) {
181
+ return this.resolve(token, requestId, resolutionStack);
182
+ }
183
+ // Get scope from metadata
184
+ const scope = Reflect.getMetadata('hazel:scope', token) || Scope.SINGLETON;
185
+ // Create factory for the class
186
+ const factory = (reqId) => this.createInstance(token, reqId, resolutionStack);
187
+ this.providers.set(token, { scope, factory });
188
+ return this.resolve(token, requestId, resolutionStack);
189
+ }
190
+ /**
191
+ * Create instance of a class with dependency injection
192
+ */
193
+ createInstance(token, requestId, resolutionStack) {
194
+ // Get constructor parameters
195
+ const params = Reflect.getMetadata('design:paramtypes', token) || [];
196
+ if (logger_1.default.isDebugEnabled()) {
197
+ logger_1.default.debug(`Constructor parameters: ${params.map((p) => p?.name || 'undefined').join(', ')}`);
198
+ }
199
+ // Get injection tokens if specified
200
+ const injectionTokens = Reflect.getMetadata('hazel:inject', token) || [];
201
+ // Resolve dependencies
202
+ const dependencies = params.map((param, index) => {
203
+ const injectionToken = injectionTokens[index];
204
+ const tokenToResolve = injectionToken || param;
205
+ if (!tokenToResolve) {
206
+ if (logger_1.default.isDebugEnabled()) {
207
+ logger_1.default.debug('Undefined parameter type found');
208
+ }
209
+ return undefined;
210
+ }
211
+ if (logger_1.default.isDebugEnabled()) {
212
+ logger_1.default.debug(`Resolving dependency for: ${this.getTokenName(tokenToResolve)}`);
213
+ }
214
+ return this.resolve(tokenToResolve, requestId, resolutionStack);
215
+ });
216
+ // Create instance with dependencies
217
+ const instance = new token(...dependencies);
218
+ if (logger_1.default.isDebugEnabled()) {
219
+ logger_1.default.info(`Created instance of: ${this.getTokenName(token)}`);
220
+ }
221
+ return instance;
222
+ }
223
+ /**
224
+ * Clear request-scoped providers for a specific request
225
+ */
226
+ clearRequestScope(requestId) {
227
+ if (logger_1.default.isDebugEnabled()) {
228
+ logger_1.default.debug(`Clearing request scope: ${requestId}`);
229
+ }
230
+ this.requestScopedProviders.delete(requestId);
231
+ }
232
+ /**
233
+ * Clear all providers
234
+ */
235
+ clear() {
236
+ logger_1.default.info('Clearing container');
237
+ this.providers.clear();
238
+ this.requestScopedProviders.clear();
239
+ }
240
+ /**
241
+ * Check if a token is registered
242
+ */
243
+ has(token) {
244
+ return this.providers.has(token);
245
+ }
246
+ /**
247
+ * Get all registered tokens
248
+ */
249
+ getTokens() {
250
+ return Array.from(this.providers.keys());
251
+ }
252
+ /**
253
+ * Helper to get token name for logging
254
+ */
255
+ getTokenName(token) {
256
+ if (typeof token === 'string')
257
+ return token;
258
+ if (typeof token === 'symbol')
259
+ return token.toString();
260
+ if (typeof token === 'function')
261
+ return token.name;
262
+ return 'unknown';
263
+ }
264
+ /**
265
+ * Type guard to check if value is a Provider
266
+ */
267
+ isProvider(value) {
268
+ return typeof value === 'object' && value !== null && 'token' in value;
269
+ }
270
+ }
271
+ exports.Container = Container;
@@ -0,0 +1,92 @@
1
+ import 'reflect-metadata';
2
+ import { Type } from './types';
3
+ import { PipeTransform, PipeMetadata } from './pipes/pipe';
4
+ import { Interceptor, InterceptorMetadata } from './interceptors/interceptor';
5
+ import { HazelApp } from './hazel-app';
6
+ export interface ControllerMetadata {
7
+ path: string;
8
+ interceptors?: InterceptorMetadata[];
9
+ }
10
+ export interface RouteMetadata {
11
+ path: string;
12
+ method: string;
13
+ handler: string | symbol;
14
+ middlewares?: Type<unknown>[];
15
+ pipes?: PipeMetadata[];
16
+ }
17
+ export interface ControllerOptions {
18
+ path: string;
19
+ version?: string;
20
+ }
21
+ export interface RouteOptions {
22
+ path?: string;
23
+ middlewares?: Type<unknown>[];
24
+ pipes?: PipeMetadata[];
25
+ interceptors?: InterceptorMetadata[];
26
+ }
27
+ export interface ServiceOptions {
28
+ scope?: 'singleton' | 'transient' | 'request';
29
+ }
30
+ export interface InjectableOptions {
31
+ scope?: 'singleton' | 'transient' | 'request';
32
+ }
33
+ export interface RepositoryOptions {
34
+ model: string;
35
+ }
36
+ export interface OnModuleInit {
37
+ onModuleInit(): Promise<void>;
38
+ }
39
+ export interface OnModuleDestroy {
40
+ onModuleDestroy(): Promise<void>;
41
+ }
42
+ export interface ExecutionContext {
43
+ switchToHttp(): {
44
+ getRequest(): unknown;
45
+ getResponse(): unknown;
46
+ };
47
+ }
48
+ export interface CanActivate {
49
+ canActivate(context: ExecutionContext): Promise<boolean> | boolean;
50
+ }
51
+ export { HazelModule, Module } from './hazel-module';
52
+ export declare function Controller(options: ControllerOptions | string): ClassDecorator;
53
+ export declare function Injectable(options?: InjectableOptions): ClassDecorator;
54
+ export declare function Get(options?: {
55
+ path?: string;
56
+ } | string): MethodDecorator;
57
+ export declare function Post(options?: {
58
+ path?: string;
59
+ } | string): MethodDecorator;
60
+ export declare function Put(options?: {
61
+ path?: string;
62
+ } | string): MethodDecorator;
63
+ export declare function Delete(options?: {
64
+ path?: string;
65
+ } | string): MethodDecorator;
66
+ export declare function Patch(options?: {
67
+ path?: string;
68
+ } | string): MethodDecorator;
69
+ export declare function Inject(token?: string | symbol | Type<unknown>): ParameterDecorator;
70
+ export declare function Service(options?: ServiceOptions): ClassDecorator;
71
+ export declare function Body(dtoType?: Type<unknown>): ParameterDecorator;
72
+ export declare function Request(): ParameterDecorator;
73
+ export declare function Param(paramName: string, pipe?: Type<PipeTransform>): ParameterDecorator;
74
+ export declare function Query(paramName?: string, pipe?: Type<PipeTransform>): ParameterDecorator;
75
+ export declare function UsePipes(...pipes: (Type<PipeTransform> | PipeMetadata)[]): ClassDecorator & MethodDecorator;
76
+ export declare function UseInterceptors(...interceptors: (Type<Interceptor> | InterceptorMetadata)[]): ClassDecorator & MethodDecorator;
77
+ export declare function UseGuards(...guards: Type<CanActivate>[]): ClassDecorator & MethodDecorator;
78
+ export declare function AITask(options: {
79
+ name: string;
80
+ prompt: string;
81
+ provider: string;
82
+ model: string;
83
+ outputType: string;
84
+ }): MethodDecorator;
85
+ export declare function Req(): ParameterDecorator;
86
+ export declare function Headers(headerName?: string): ParameterDecorator;
87
+ export declare function HttpCode(statusCode: number): MethodDecorator;
88
+ export declare function Header(name: string, value: string): MethodDecorator;
89
+ export declare function Redirect(url: string, statusCode?: number): MethodDecorator;
90
+ export declare function Res(): ParameterDecorator;
91
+ export { HazelApp };
92
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}