@hazeljs/core 0.2.0-rc.2 → 0.2.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/hazel-module.test.d.ts.map +1 -1
- package/dist/__tests__/hazel-module.test.js +93 -0
- package/dist/decorators.d.ts +7 -0
- package/dist/decorators.d.ts.map +1 -1
- package/dist/hazel-app.d.ts +13 -2
- package/dist/hazel-app.d.ts.map +1 -1
- package/dist/hazel-app.js +34 -24
- package/dist/hazel-module.d.ts +16 -0
- package/dist/hazel-module.d.ts.map +1 -1
- package/dist/hazel-module.js +47 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazel-module.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/hazel-module.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hazel-module.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/hazel-module.test.ts"],"names":[],"mappings":"AAQA,OAAO,kBAAkB,CAAC"}
|
|
@@ -103,6 +103,99 @@ describe('HazelModule', () => {
|
|
|
103
103
|
expect(metadata?.providers).toEqual([]);
|
|
104
104
|
});
|
|
105
105
|
});
|
|
106
|
+
describe('collectControllersFromModule', () => {
|
|
107
|
+
it('should collect controllers from a module', () => {
|
|
108
|
+
class Ctrl1 {
|
|
109
|
+
}
|
|
110
|
+
class Ctrl2 {
|
|
111
|
+
}
|
|
112
|
+
let TestModule = class TestModule {
|
|
113
|
+
};
|
|
114
|
+
TestModule = __decorate([
|
|
115
|
+
(0, hazel_module_1.HazelModule)({
|
|
116
|
+
controllers: [Ctrl1, Ctrl2],
|
|
117
|
+
})
|
|
118
|
+
], TestModule);
|
|
119
|
+
const controllers = (0, hazel_module_1.collectControllersFromModule)(TestModule);
|
|
120
|
+
expect(controllers).toHaveLength(2);
|
|
121
|
+
expect(controllers).toContain(Ctrl1);
|
|
122
|
+
expect(controllers).toContain(Ctrl2);
|
|
123
|
+
});
|
|
124
|
+
it('should collect controllers from imported modules', () => {
|
|
125
|
+
class ChildCtrl {
|
|
126
|
+
}
|
|
127
|
+
let ChildModule = class ChildModule {
|
|
128
|
+
};
|
|
129
|
+
ChildModule = __decorate([
|
|
130
|
+
(0, hazel_module_1.HazelModule)({
|
|
131
|
+
controllers: [ChildCtrl],
|
|
132
|
+
})
|
|
133
|
+
], ChildModule);
|
|
134
|
+
let ParentModule = class ParentModule {
|
|
135
|
+
};
|
|
136
|
+
ParentModule = __decorate([
|
|
137
|
+
(0, hazel_module_1.HazelModule)({
|
|
138
|
+
imports: [ChildModule],
|
|
139
|
+
controllers: [],
|
|
140
|
+
})
|
|
141
|
+
], ParentModule);
|
|
142
|
+
const controllers = (0, hazel_module_1.collectControllersFromModule)(ParentModule);
|
|
143
|
+
expect(controllers).toHaveLength(1);
|
|
144
|
+
expect(controllers).toContain(ChildCtrl);
|
|
145
|
+
});
|
|
146
|
+
it('should avoid duplicates when same module is imported multiple times', () => {
|
|
147
|
+
class Ctrl {
|
|
148
|
+
}
|
|
149
|
+
let ChildModule = class ChildModule {
|
|
150
|
+
};
|
|
151
|
+
ChildModule = __decorate([
|
|
152
|
+
(0, hazel_module_1.HazelModule)({
|
|
153
|
+
controllers: [Ctrl],
|
|
154
|
+
})
|
|
155
|
+
], ChildModule);
|
|
156
|
+
let ParentModule = class ParentModule {
|
|
157
|
+
};
|
|
158
|
+
ParentModule = __decorate([
|
|
159
|
+
(0, hazel_module_1.HazelModule)({
|
|
160
|
+
imports: [ChildModule, ChildModule],
|
|
161
|
+
controllers: [],
|
|
162
|
+
})
|
|
163
|
+
], ParentModule);
|
|
164
|
+
const controllers = (0, hazel_module_1.collectControllersFromModule)(ParentModule);
|
|
165
|
+
expect(controllers).toHaveLength(1);
|
|
166
|
+
expect(controllers).toContain(Ctrl);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('collectModulesFromModule', () => {
|
|
170
|
+
it('should collect modules from the tree', () => {
|
|
171
|
+
let ChildModule = class ChildModule {
|
|
172
|
+
};
|
|
173
|
+
ChildModule = __decorate([
|
|
174
|
+
(0, hazel_module_1.HazelModule)({})
|
|
175
|
+
], ChildModule);
|
|
176
|
+
let ParentModule = class ParentModule {
|
|
177
|
+
};
|
|
178
|
+
ParentModule = __decorate([
|
|
179
|
+
(0, hazel_module_1.HazelModule)({
|
|
180
|
+
imports: [ChildModule],
|
|
181
|
+
})
|
|
182
|
+
], ParentModule);
|
|
183
|
+
const modules = (0, hazel_module_1.collectModulesFromModule)(ParentModule);
|
|
184
|
+
expect(modules).toHaveLength(2);
|
|
185
|
+
expect(modules.map((m) => m.name)).toContain('ParentModule');
|
|
186
|
+
expect(modules.map((m) => m.name)).toContain('ChildModule');
|
|
187
|
+
});
|
|
188
|
+
it('should mark dynamic modules', () => {
|
|
189
|
+
let StaticModule = class StaticModule {
|
|
190
|
+
};
|
|
191
|
+
StaticModule = __decorate([
|
|
192
|
+
(0, hazel_module_1.HazelModule)({})
|
|
193
|
+
], StaticModule);
|
|
194
|
+
const modules = (0, hazel_module_1.collectModulesFromModule)(StaticModule);
|
|
195
|
+
expect(modules).toHaveLength(1);
|
|
196
|
+
expect(modules[0].isDynamic).toBe(false);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
106
199
|
describe('HazelModuleInstance', () => {
|
|
107
200
|
describe('initialization', () => {
|
|
108
201
|
it('should initialize module without metadata', () => {
|
package/dist/decorators.d.ts
CHANGED
|
@@ -42,6 +42,13 @@ export interface OnModuleInit {
|
|
|
42
42
|
export interface OnModuleDestroy {
|
|
43
43
|
onModuleDestroy(): Promise<void>;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Lifecycle hook invoked after the HTTP server is listening.
|
|
47
|
+
* Use to attach WebSocket gateways, connect to external services, etc.
|
|
48
|
+
*/
|
|
49
|
+
export interface OnApplicationBootstrap {
|
|
50
|
+
onApplicationBootstrap(app: HazelApp): Promise<void> | void;
|
|
51
|
+
}
|
|
45
52
|
export interface ExecutionContext {
|
|
46
53
|
switchToHttp(): {
|
|
47
54
|
getRequest(): unknown;
|
package/dist/decorators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/hazel-app.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Type } from './types';
|
|
2
2
|
import { Container } from './container';
|
|
3
3
|
import { Router } from './router';
|
|
4
|
-
import { IncomingMessage, ServerResponse } from 'http';
|
|
4
|
+
import { Server, IncomingMessage, ServerResponse } from 'http';
|
|
5
5
|
import 'reflect-metadata';
|
|
6
6
|
import { Request, Response, RequestContext } from './types';
|
|
7
7
|
import { ShutdownManager } from './shutdown';
|
|
@@ -29,7 +29,8 @@ export declare class HazelApp {
|
|
|
29
29
|
private proxyHandlers;
|
|
30
30
|
constructor(moduleType: Type<unknown>);
|
|
31
31
|
private initialize;
|
|
32
|
-
|
|
32
|
+
/** Get the root module type (for inspector and tooling) */
|
|
33
|
+
getModuleType(): Type<unknown>;
|
|
33
34
|
register<T>(component: Type<T>): HazelApp;
|
|
34
35
|
get(path: string, ...handlers: Array<(req: Request, res: Response) => void>): HazelApp;
|
|
35
36
|
post(path: string, ...handlers: Array<(req: Request, res: Response) => void>): HazelApp;
|
|
@@ -37,6 +38,11 @@ export declare class HazelApp {
|
|
|
37
38
|
delete(path: string, ...handlers: Array<(req: Request, res: Response) => void>): HazelApp;
|
|
38
39
|
listen(port: number): Promise<void>;
|
|
39
40
|
private handleRoute;
|
|
41
|
+
/**
|
|
42
|
+
* Run all OnApplicationBootstrap handlers (e.g. attach WebSocket gateways).
|
|
43
|
+
* Called automatically after the HTTP server starts listening.
|
|
44
|
+
*/
|
|
45
|
+
private runApplicationBootstrap;
|
|
40
46
|
close(): Promise<void>;
|
|
41
47
|
/**
|
|
42
48
|
* Register a custom shutdown handler
|
|
@@ -80,6 +86,11 @@ export declare class HazelApp {
|
|
|
80
86
|
*/
|
|
81
87
|
getShutdownManager(): ShutdownManager;
|
|
82
88
|
getContainer(): Container;
|
|
89
|
+
/**
|
|
90
|
+
* Get the HTTP server (available after listen() resolves).
|
|
91
|
+
* Use to attach WebSocket gateways (e.g. RealtimeGateway.attachToServer(server)).
|
|
92
|
+
*/
|
|
93
|
+
getServer(): Server | null;
|
|
83
94
|
getRouter(): Router;
|
|
84
95
|
/**
|
|
85
96
|
* Add an early HTTP handler (runs before body parsing, for GraphQL etc.)
|
package/dist/hazel-app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazel-app.d.ts","sourceRoot":"","sources":["../src/hazel-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,
|
|
1
|
+
{"version":3,"file":"hazel-app.d.ts","sourceRoot":"","sources":["../src/hazel-app.ts"],"names":[],"mappings":"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"}
|
package/dist/hazel-app.js
CHANGED
|
@@ -17,7 +17,6 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
17
17
|
const shutdown_1 = require("./shutdown");
|
|
18
18
|
const health_1 = require("./health");
|
|
19
19
|
const timeout_middleware_1 = require("./middleware/timeout.middleware");
|
|
20
|
-
const MODULE_METADATA_KEY = 'hazel:module';
|
|
21
20
|
class HttpResponse {
|
|
22
21
|
constructor(res) {
|
|
23
22
|
this.res = res;
|
|
@@ -86,11 +85,7 @@ class HazelApp {
|
|
|
86
85
|
}
|
|
87
86
|
initialize() {
|
|
88
87
|
logger_1.default.debug('Initializing module:', { moduleName: this.moduleType.name });
|
|
89
|
-
const
|
|
90
|
-
logger_1.default.debug('Module metadata:', metadata);
|
|
91
|
-
// Collect all controllers from the module tree (root + imports, recursively)
|
|
92
|
-
const allControllers = this.collectControllers(this.moduleType);
|
|
93
|
-
// Register all controllers with the router
|
|
88
|
+
const allControllers = (0, hazel_module_1.collectControllersFromModule)(this.moduleType);
|
|
94
89
|
if (allControllers.length > 0) {
|
|
95
90
|
logger_1.default.debug('Registering controllers:', {
|
|
96
91
|
controllers: allControllers.map((c) => c.name),
|
|
@@ -100,23 +95,9 @@ class HazelApp {
|
|
|
100
95
|
});
|
|
101
96
|
}
|
|
102
97
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
visited.add(moduleRef);
|
|
107
|
-
const metadata = (0, hazel_module_1.getModuleMetadata)(moduleRef) || {};
|
|
108
|
-
const controllers = [];
|
|
109
|
-
// Collect from imported modules first
|
|
110
|
-
if (metadata.imports) {
|
|
111
|
-
for (const importedModule of metadata.imports) {
|
|
112
|
-
controllers.push(...this.collectControllers(importedModule, visited));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Then collect from this module
|
|
116
|
-
if (metadata.controllers) {
|
|
117
|
-
controllers.push(...metadata.controllers);
|
|
118
|
-
}
|
|
119
|
-
return controllers;
|
|
98
|
+
/** Get the root module type (for inspector and tooling) */
|
|
99
|
+
getModuleType() {
|
|
100
|
+
return this.moduleType;
|
|
120
101
|
}
|
|
121
102
|
register(component) {
|
|
122
103
|
const instance = new component();
|
|
@@ -336,7 +317,7 @@ class HazelApp {
|
|
|
336
317
|
}));
|
|
337
318
|
}
|
|
338
319
|
});
|
|
339
|
-
this.server.listen(port, () => {
|
|
320
|
+
this.server.listen(port, async () => {
|
|
340
321
|
const localIp = getLocalIp();
|
|
341
322
|
logger_1.default.info(chalk_1.default.green.bold('Server listening on:'));
|
|
342
323
|
logger_1.default.info('');
|
|
@@ -348,6 +329,8 @@ class HazelApp {
|
|
|
348
329
|
logger_1.default.info(chalk_1.default.gray(` → /ready - Readiness probe`));
|
|
349
330
|
logger_1.default.info(chalk_1.default.gray(` → /startup - Startup probe`));
|
|
350
331
|
logger_1.default.info('');
|
|
332
|
+
// Run OnApplicationBootstrap handlers (e.g. attach WebSocket gateways)
|
|
333
|
+
await this.runApplicationBootstrap();
|
|
351
334
|
// Setup graceful shutdown
|
|
352
335
|
this.shutdownManager.setupSignalHandlers();
|
|
353
336
|
// Register server shutdown handler
|
|
@@ -417,6 +400,26 @@ class HazelApp {
|
|
|
417
400
|
}));
|
|
418
401
|
}
|
|
419
402
|
}
|
|
403
|
+
/**
|
|
404
|
+
* Run all OnApplicationBootstrap handlers (e.g. attach WebSocket gateways).
|
|
405
|
+
* Called automatically after the HTTP server starts listening.
|
|
406
|
+
*/
|
|
407
|
+
async runApplicationBootstrap() {
|
|
408
|
+
const tokens = this.container.getTokens();
|
|
409
|
+
for (const token of tokens) {
|
|
410
|
+
if (typeof token !== 'function' || !token.prototype)
|
|
411
|
+
continue;
|
|
412
|
+
try {
|
|
413
|
+
const instance = this.container.resolve(token);
|
|
414
|
+
if (instance && typeof instance.onApplicationBootstrap === 'function') {
|
|
415
|
+
await instance.onApplicationBootstrap(this);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
// Skip request-scoped or unresolvable providers
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
420
423
|
async close() {
|
|
421
424
|
if (this.server) {
|
|
422
425
|
return new Promise((resolve, reject) => {
|
|
@@ -483,6 +486,13 @@ class HazelApp {
|
|
|
483
486
|
getContainer() {
|
|
484
487
|
return this.container;
|
|
485
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* Get the HTTP server (available after listen() resolves).
|
|
491
|
+
* Use to attach WebSocket gateways (e.g. RealtimeGateway.attachToServer(server)).
|
|
492
|
+
*/
|
|
493
|
+
getServer() {
|
|
494
|
+
return this.server;
|
|
495
|
+
}
|
|
486
496
|
getRouter() {
|
|
487
497
|
return this.router;
|
|
488
498
|
}
|
package/dist/hazel-module.d.ts
CHANGED
|
@@ -19,6 +19,22 @@ export interface ModuleOptions {
|
|
|
19
19
|
export declare function HazelModule(options: ModuleOptions): ClassDecorator;
|
|
20
20
|
export declare const Module: typeof HazelModule;
|
|
21
21
|
export declare function getModuleMetadata(target: object): ModuleOptions | undefined;
|
|
22
|
+
/** Module ref for inspection (name + whether it's a dynamic module) */
|
|
23
|
+
export interface ModuleRef {
|
|
24
|
+
moduleType: Type<unknown> | DynamicModule;
|
|
25
|
+
name: string;
|
|
26
|
+
isDynamic: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Recursively collect all modules from the module tree.
|
|
30
|
+
* Useful for inspection, debugging, and tooling.
|
|
31
|
+
*/
|
|
32
|
+
export declare function collectModulesFromModule(moduleRef: Type<unknown> | DynamicModule, visited?: Set<Type<unknown> | DynamicModule>): ModuleRef[];
|
|
33
|
+
/**
|
|
34
|
+
* Recursively collect all controller classes from the module tree.
|
|
35
|
+
* Used by HazelApp for route registration and by inspector/tooling.
|
|
36
|
+
*/
|
|
37
|
+
export declare function collectControllersFromModule(moduleRef: Type<unknown> | DynamicModule, visited?: Set<Type<unknown> | DynamicModule>): Type<unknown>[];
|
|
22
38
|
export declare class HazelModuleInstance {
|
|
23
39
|
private readonly moduleType;
|
|
24
40
|
private container;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazel-module.d.ts","sourceRoot":"","sources":["../src/hazel-module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAS,MAAM,aAAa,CAAC;AAM/C,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAIlE;AAGD,eAAO,MAAM,MAAM,oBAAc,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAa3E;AAED,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,SAAS,CAAY;gBAEA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa;IAOtE,OAAO,CAAC,UAAU;IA6GlB,YAAY,IAAI,SAAS;CAG1B"}
|
|
1
|
+
{"version":3,"file":"hazel-module.d.ts","sourceRoot":"","sources":["../src/hazel-module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAS,MAAM,aAAa,CAAC;AAM/C,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAIlE;AAGD,eAAO,MAAM,MAAM,oBAAc,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAa3E;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,EACxC,OAAO,qCAA2C,GACjD,SAAS,EAAE,CAkBb;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,EACxC,OAAO,qCAA2C,GACjD,IAAI,CAAC,OAAO,CAAC,EAAE,CAuBjB;AAED,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,SAAS,CAAY;gBAEA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa;IAOtE,OAAO,CAAC,UAAU;IA6GlB,YAAY,IAAI,SAAS;CAG1B"}
|
package/dist/hazel-module.js
CHANGED
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.HazelModuleInstance = exports.Module = void 0;
|
|
7
7
|
exports.HazelModule = HazelModule;
|
|
8
8
|
exports.getModuleMetadata = getModuleMetadata;
|
|
9
|
+
exports.collectModulesFromModule = collectModulesFromModule;
|
|
10
|
+
exports.collectControllersFromModule = collectControllersFromModule;
|
|
9
11
|
require("reflect-metadata");
|
|
10
12
|
const container_1 = require("./container");
|
|
11
13
|
const logger_1 = __importDefault(require("./logger"));
|
|
@@ -33,6 +35,51 @@ function getModuleMetadata(target) {
|
|
|
33
35
|
}
|
|
34
36
|
return undefined;
|
|
35
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Recursively collect all modules from the module tree.
|
|
40
|
+
* Useful for inspection, debugging, and tooling.
|
|
41
|
+
*/
|
|
42
|
+
function collectModulesFromModule(moduleRef, visited = new Set()) {
|
|
43
|
+
if (visited.has(moduleRef))
|
|
44
|
+
return [];
|
|
45
|
+
visited.add(moduleRef);
|
|
46
|
+
const metadata = getModuleMetadata(moduleRef);
|
|
47
|
+
const moduleType = moduleRef.module ?? moduleRef;
|
|
48
|
+
const name = moduleType?.name ?? 'DynamicModule';
|
|
49
|
+
const isDynamic = !!moduleRef.module;
|
|
50
|
+
const results = [{ moduleType: moduleRef, name, isDynamic }];
|
|
51
|
+
if (metadata?.imports) {
|
|
52
|
+
for (const imported of metadata.imports) {
|
|
53
|
+
results.push(...collectModulesFromModule(imported, visited));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Recursively collect all controller classes from the module tree.
|
|
60
|
+
* Used by HazelApp for route registration and by inspector/tooling.
|
|
61
|
+
*/
|
|
62
|
+
function collectControllersFromModule(moduleRef, visited = new Set()) {
|
|
63
|
+
if (visited.has(moduleRef))
|
|
64
|
+
return [];
|
|
65
|
+
visited.add(moduleRef);
|
|
66
|
+
const metadata = getModuleMetadata(moduleRef) || {};
|
|
67
|
+
const controllers = [];
|
|
68
|
+
if (metadata.imports) {
|
|
69
|
+
for (const imported of metadata.imports) {
|
|
70
|
+
controllers.push(...collectControllersFromModule(imported, visited));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (metadata.controllers) {
|
|
74
|
+
for (const ctrl of metadata.controllers) {
|
|
75
|
+
const cls = ctrl.useClass ?? ctrl;
|
|
76
|
+
if (cls && typeof cls === 'function') {
|
|
77
|
+
controllers.push(cls);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return controllers;
|
|
82
|
+
}
|
|
36
83
|
class HazelModuleInstance {
|
|
37
84
|
constructor(moduleType) {
|
|
38
85
|
this.moduleType = moduleType;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import 'reflect-metadata';
|
|
6
6
|
export { HazelApp, type EarlyHttpHandler, type ProxyHandler } from './hazel-app';
|
|
7
|
-
export { HazelModule, Module, HazelModuleInstance, getModuleMetadata } from './hazel-module';
|
|
8
|
-
export type { ModuleOptions, DynamicModule } from './hazel-module';
|
|
7
|
+
export { HazelModule, Module, HazelModuleInstance, getModuleMetadata, collectModulesFromModule, collectControllersFromModule, } from './hazel-module';
|
|
8
|
+
export type { ModuleOptions, DynamicModule, ModuleRef } from './hazel-module';
|
|
9
9
|
export { ShutdownManager } from './shutdown';
|
|
10
10
|
export type { ShutdownHandler } from './shutdown';
|
|
11
11
|
export { HealthCheckManager, BuiltInHealthChecks } from './health';
|
|
12
12
|
export type { HealthCheck, HealthCheckResult, HealthStatus } from './health';
|
|
13
13
|
export { TimeoutMiddleware } from './middleware/timeout.middleware';
|
|
14
14
|
export type { TimeoutOptions } from './middleware/timeout.middleware';
|
|
15
|
-
export { Controller, Injectable, Service, Get, Post, Put, Delete, Patch, Body, Param, Query, Req, Res, Ip, Host, Headers, HttpCode, Header, Redirect, Inject, UsePipes, UseInterceptors, UseGuards, Public, SkipAuth, AITask, Timeout, Optional, Session, Retry, ApiTags, ApiOperation, SetMetadata, getMetadata, createParamDecorator, CUSTOM_METADATA_PREFIX, type ControllerMetadata, type RouteMetadata, type ControllerOptions, type RouteOptions, type ServiceOptions, type InjectableOptions, type RepositoryOptions, type OnModuleInit, type OnModuleDestroy, type ExecutionContext, type CanActivate, type RetryDecoratorOptions, type ApiOperationOptions, type ParamDecoratorContext, } from './decorators';
|
|
15
|
+
export { Controller, Injectable, Service, Get, Post, Put, Delete, Patch, Body, Param, Query, Req, Res, Ip, Host, Headers, HttpCode, Header, Redirect, Inject, UsePipes, UseInterceptors, UseGuards, Public, SkipAuth, AITask, Timeout, Optional, Session, Retry, ApiTags, ApiOperation, SetMetadata, getMetadata, createParamDecorator, CUSTOM_METADATA_PREFIX, type ControllerMetadata, type RouteMetadata, type ControllerOptions, type RouteOptions, type ServiceOptions, type InjectableOptions, type RepositoryOptions, type OnModuleInit, type OnModuleDestroy, type OnApplicationBootstrap, type ExecutionContext, type CanActivate, type RetryDecoratorOptions, type ApiOperationOptions, type ParamDecoratorContext, } from './decorators';
|
|
16
16
|
export { Container, Scope, type InjectionToken, type Provider } from './container';
|
|
17
17
|
export type { Type, Request, Response, RequestContext, ValidationSchema } from './types';
|
|
18
18
|
export { HttpError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, InternalServerError, HttpException, BadRequestException, UnauthorizedException, ForbiddenException, NotFoundException, ConflictException, InternalServerErrorException, RequestTimeoutError, } from './errors/http.error';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
10
|
+
exports.HttpError = exports.Scope = exports.Container = exports.CUSTOM_METADATA_PREFIX = exports.createParamDecorator = exports.getMetadata = exports.SetMetadata = exports.ApiOperation = exports.ApiTags = exports.Retry = exports.Session = exports.Optional = exports.Timeout = exports.AITask = exports.SkipAuth = exports.Public = exports.UseGuards = exports.UseInterceptors = exports.UsePipes = exports.Inject = exports.Redirect = exports.Header = exports.HttpCode = exports.Headers = exports.Host = exports.Ip = exports.Res = exports.Req = exports.Query = exports.Param = exports.Body = exports.Patch = exports.Delete = exports.Put = exports.Post = exports.Get = exports.Service = exports.Injectable = exports.Controller = exports.TimeoutMiddleware = exports.BuiltInHealthChecks = exports.HealthCheckManager = exports.ShutdownManager = exports.collectControllersFromModule = exports.collectModulesFromModule = exports.getModuleMetadata = exports.HazelModuleInstance = exports.Module = exports.HazelModule = exports.HazelApp = void 0;
|
|
11
|
+
exports.sanitizeSql = exports.sanitizeEmail = exports.sanitizeUrl = exports.sanitizeString = exports.sanitizeHtml = exports.RequestParser = exports.Router = exports.Validator = exports.default = exports.logger = exports.UploadedFiles = exports.UploadedFile = exports.FileUploadInterceptor = exports.CsrfMiddleware = exports.RateLimitMiddleware = exports.SecurityHeadersMiddleware = exports.LoggerMiddleware = exports.CorsMiddleware = exports.GlobalMiddlewareManager = exports.extractVersion = exports.matchVersion = exports.getVersionMetadata = exports.VersioningType = exports.Version = exports.RouteMatcher = exports.TestingModuleBuilder = exports.TestingModule = exports.Test = exports.HttpExceptionFilter = exports.getFilterExceptions = exports.Catch = exports.ArgumentsHostImpl = exports.RetryInterceptor = exports.ValidationPipe = exports.ParseIntPipe = exports.ValidationError = exports.RequestTimeoutError = exports.InternalServerErrorException = exports.ConflictException = exports.NotFoundException = exports.ForbiddenException = exports.UnauthorizedException = exports.BadRequestException = exports.HttpException = exports.InternalServerError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = void 0;
|
|
12
|
+
exports.escapeHtml = exports.sanitizeObject = void 0;
|
|
12
13
|
// Import reflect-metadata to enable decorator metadata
|
|
13
14
|
// Users don't need to import this manually
|
|
14
15
|
require("reflect-metadata");
|
|
@@ -20,6 +21,8 @@ Object.defineProperty(exports, "HazelModule", { enumerable: true, get: function
|
|
|
20
21
|
Object.defineProperty(exports, "Module", { enumerable: true, get: function () { return hazel_module_1.Module; } });
|
|
21
22
|
Object.defineProperty(exports, "HazelModuleInstance", { enumerable: true, get: function () { return hazel_module_1.HazelModuleInstance; } });
|
|
22
23
|
Object.defineProperty(exports, "getModuleMetadata", { enumerable: true, get: function () { return hazel_module_1.getModuleMetadata; } });
|
|
24
|
+
Object.defineProperty(exports, "collectModulesFromModule", { enumerable: true, get: function () { return hazel_module_1.collectModulesFromModule; } });
|
|
25
|
+
Object.defineProperty(exports, "collectControllersFromModule", { enumerable: true, get: function () { return hazel_module_1.collectControllersFromModule; } });
|
|
23
26
|
// Shutdown & Health
|
|
24
27
|
var shutdown_1 = require("./shutdown");
|
|
25
28
|
Object.defineProperty(exports, "ShutdownManager", { enumerable: true, get: function () { return shutdown_1.ShutdownManager; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hazeljs/core",
|
|
3
|
-
"version": "0.2.0-rc.
|
|
3
|
+
"version": "0.2.0-rc.5",
|
|
4
4
|
"description": "Core HazelJS framework - Dependency injection, routing, decorators, and base functionality",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"url": "https://github.com/hazeljs/hazel-js/issues"
|
|
64
64
|
},
|
|
65
65
|
"homepage": "https://hazeljs.com",
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "84ad3db0f24f75a9d55c6eec5997849fed3aa00e"
|
|
67
67
|
}
|