@asenajs/asena 0.3.3 → 0.4.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.
- package/README.md +165 -140
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/adapter/AsenaAdapter.d.ts +19 -3
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +2 -2
- package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
- package/dist/lib/adapter/types/RouteParams.d.ts +3 -0
- package/dist/lib/adapter/types/ServeOptions.d.ts +2 -2
- package/dist/lib/adapter/types/index.d.ts +4 -4
- package/dist/lib/adapter/types/index.js +4 -4
- package/dist/lib/adapter/types/index.js.map +1 -1
- package/dist/lib/ioc/CircularDependencyDetector.d.ts +49 -0
- package/dist/lib/ioc/CircularDependencyDetector.js +69 -0
- package/dist/lib/ioc/CircularDependencyDetector.js.map +1 -0
- package/dist/lib/ioc/Container.d.ts +9 -0
- package/dist/lib/ioc/Container.js +42 -11
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/ioc/CoreContainer.d.ts +78 -0
- package/dist/lib/ioc/CoreContainer.js +135 -0
- package/dist/lib/ioc/CoreContainer.js.map +1 -0
- package/dist/lib/ioc/IocEngine.d.ts +16 -6
- package/dist/lib/ioc/IocEngine.js +35 -7
- package/dist/lib/ioc/IocEngine.js.map +1 -1
- package/dist/lib/ioc/component/index.d.ts +1 -1
- package/dist/lib/ioc/component/index.js +1 -1
- package/dist/lib/ioc/component/index.js.map +1 -1
- package/dist/lib/ioc/constants/ComponentConstants.d.ts +27 -18
- package/dist/lib/ioc/constants/ComponentConstants.js +34 -20
- package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
- package/dist/lib/ioc/decorators/CoreService.d.ts +8 -0
- package/dist/lib/ioc/decorators/CoreService.js +27 -0
- package/dist/lib/ioc/decorators/CoreService.js.map +1 -0
- package/dist/lib/ioc/decorators/index.d.ts +1 -0
- package/dist/lib/ioc/decorators/index.js +2 -0
- package/dist/lib/ioc/decorators/index.js.map +1 -0
- package/dist/lib/ioc/index.d.ts +5 -0
- package/dist/lib/ioc/index.js +5 -0
- package/dist/lib/ioc/index.js.map +1 -1
- package/dist/lib/ioc/types/CoreBootstrapPhase.d.ts +15 -0
- package/dist/lib/ioc/types/CoreBootstrapPhase.js +17 -0
- package/dist/lib/ioc/types/CoreBootstrapPhase.js.map +1 -0
- package/dist/lib/ioc/types/ICoreService.d.ts +9 -0
- package/dist/lib/ioc/types/ICoreService.js +2 -0
- package/dist/lib/ioc/types/ICoreService.js.map +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +18 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js +23 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -0
- package/dist/lib/ioc/types/decorators/ControllerParams.d.ts +1 -1
- package/dist/lib/ioc/types/index.d.ts +3 -0
- package/dist/lib/ioc/types/index.js +3 -0
- package/dist/lib/ioc/types/index.js.map +1 -1
- package/dist/lib/server/AsenaServer.d.ts +85 -14
- package/dist/lib/server/AsenaServer.js +169 -61
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/AsenaServerFactory.d.ts +26 -0
- package/dist/lib/server/AsenaServerFactory.js +58 -0
- package/dist/lib/server/AsenaServerFactory.js.map +1 -0
- package/dist/lib/server/config/AsenaConfig.d.ts +91 -18
- package/dist/lib/server/decorators/Override.js +1 -1
- package/dist/lib/server/decorators/Override.js.map +1 -1
- package/dist/lib/server/decorators/components/Config.d.ts +1 -1
- package/dist/lib/server/decorators/components/Config.js +1 -1
- package/dist/lib/server/decorators/components/Config.js.map +1 -1
- package/dist/lib/server/decorators/components/Controller.d.ts +1 -1
- package/dist/lib/server/decorators/components/Controller.js +2 -2
- package/dist/lib/server/decorators/components/Controller.js.map +1 -1
- package/dist/lib/server/decorators/components/Middleware.js +2 -2
- package/dist/lib/server/decorators/components/Middleware.js.map +1 -1
- package/dist/lib/server/decorators/components/Schedule.d.ts +1 -1
- package/dist/lib/server/decorators/components/Schedule.js +2 -2
- package/dist/lib/server/decorators/components/Schedule.js.map +1 -1
- package/dist/lib/server/decorators/components/WebSocket.d.ts +1 -1
- package/dist/lib/server/decorators/components/WebSocket.js +2 -2
- package/dist/lib/server/decorators/components/WebSocket.js.map +1 -1
- package/dist/lib/server/decorators/index.d.ts +2 -0
- package/dist/lib/server/decorators/index.js +2 -0
- package/dist/lib/server/decorators/index.js.map +1 -1
- package/dist/lib/server/index.d.ts +2 -0
- package/dist/lib/server/index.js +2 -0
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/src/services/PrepareConfigService.d.ts +9 -5
- package/dist/lib/server/src/services/PrepareConfigService.js +32 -7
- package/dist/lib/server/src/services/PrepareConfigService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareMiddlewareService.d.ts +8 -5
- package/dist/lib/server/src/services/PrepareMiddlewareService.js +28 -7
- package/dist/lib/server/src/services/PrepareMiddlewareService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareStaticServeConfigService.d.ts +8 -5
- package/dist/lib/server/src/services/PrepareStaticServeConfigService.js +27 -6
- package/dist/lib/server/src/services/PrepareStaticServeConfigService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareValidatorService.d.ts +8 -5
- package/dist/lib/server/src/services/PrepareValidatorService.js +27 -6
- package/dist/lib/server/src/services/PrepareValidatorService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareWebsocketService.d.ts +8 -5
- package/dist/lib/server/src/services/PrepareWebsocketService.js +28 -9
- package/dist/lib/server/src/services/PrepareWebsocketService.js.map +1 -1
- package/dist/lib/server/web/decorators/http.base.d.ts +1 -1
- package/dist/lib/server/web/decorators/http.base.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Connect.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Delete.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Get.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Head.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Options.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Patch.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Post.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Put.d.ts +1 -1
- package/dist/lib/server/web/decorators/methods/Trace.d.ts +1 -1
- package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.d.ts +1 -1
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.js.map +1 -1
- package/dist/lib/server/web/websocket/index.d.ts +1 -1
- package/dist/lib/server/web/websocket/index.js +1 -1
- package/dist/lib/server/web/websocket/index.js.map +1 -1
- package/dist/lib/utils/patternMatcher.d.ts +41 -0
- package/dist/lib/utils/patternMatcher.js +99 -0
- package/dist/lib/utils/patternMatcher.js.map +1 -0
- package/dist/lib/utils/typedMetadata.d.ts +3 -3
- package/dist/lib/utils/typedMetadata.js.map +1 -1
- package/package.json +12 -7
- package/dist/lib/server/src/PrepareService.d.ts +0 -8
- package/dist/lib/server/src/PrepareService.js +0 -9
- package/dist/lib/server/src/PrepareService.js.map +0 -1
|
@@ -2,10 +2,19 @@ import type { Class } from '../server/types';
|
|
|
2
2
|
import type { ComponentType, ContainerService } from './types';
|
|
3
3
|
export declare class Container {
|
|
4
4
|
private _services;
|
|
5
|
+
private circularDetector;
|
|
5
6
|
constructor(services?: {
|
|
6
7
|
[key: string]: ContainerService | ContainerService[];
|
|
7
8
|
});
|
|
8
9
|
register(key: string, Class: Class, singleton: boolean): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* @description Register an already-created instance directly
|
|
12
|
+
* Useful for external dependencies like Logger, Adapter
|
|
13
|
+
* @param {string} key - Service identifier
|
|
14
|
+
* @param {T} instance - Pre-created instance
|
|
15
|
+
* @returns {Promise<void>}
|
|
16
|
+
*/
|
|
17
|
+
registerInstance<T>(key: string, instance: T): Promise<void>;
|
|
9
18
|
resolve<T>(key: string): Promise<(T | T[]) | null>;
|
|
10
19
|
resolveStrategy<T>(key: string): Promise<T[] | null>;
|
|
11
20
|
/**
|
|
@@ -1,33 +1,60 @@
|
|
|
1
1
|
import { ComponentConstants } from './constants';
|
|
2
2
|
import { getOwnTypedMetadata, getTypedMetadata } from '../utils/typedMetadata';
|
|
3
|
+
import { CircularDependencyDetector } from './CircularDependencyDetector';
|
|
3
4
|
export class Container {
|
|
4
5
|
_services = {};
|
|
6
|
+
circularDetector = new CircularDependencyDetector();
|
|
5
7
|
constructor(services) {
|
|
6
8
|
this._services = services || {};
|
|
7
9
|
}
|
|
8
10
|
async register(key, Class, singleton) {
|
|
9
11
|
if (this._services[key]) {
|
|
10
12
|
if (Array.isArray(this._services[key])) {
|
|
11
|
-
this._services[key].push({ Class, instance: singleton ?
|
|
13
|
+
this._services[key].push({ Class, instance: singleton ? await this.prepareInstance(Class) : null, singleton });
|
|
12
14
|
return;
|
|
13
15
|
}
|
|
14
16
|
this._services[key] = [
|
|
15
17
|
this._services[key],
|
|
16
|
-
{ Class, instance: singleton ?
|
|
18
|
+
{ Class, instance: singleton ? await this.prepareInstance(Class) : null, singleton },
|
|
17
19
|
];
|
|
18
20
|
return;
|
|
19
21
|
}
|
|
20
|
-
this._services[key] = { Class, instance: singleton ?
|
|
22
|
+
this._services[key] = { Class, instance: singleton ? await this.prepareInstance(Class) : null, singleton };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @description Register an already-created instance directly
|
|
26
|
+
* Useful for external dependencies like Logger, Adapter
|
|
27
|
+
* @param {string} key - Service identifier
|
|
28
|
+
* @param {T} instance - Pre-created instance
|
|
29
|
+
* @returns {Promise<void>}
|
|
30
|
+
*/
|
|
31
|
+
async registerInstance(key, instance) {
|
|
32
|
+
if (this._services[key]) {
|
|
33
|
+
throw new Error(`Service '${key}' is already registered`);
|
|
34
|
+
}
|
|
35
|
+
this._services[key] = {
|
|
36
|
+
Class: instance.constructor,
|
|
37
|
+
instance: instance,
|
|
38
|
+
singleton: true,
|
|
39
|
+
};
|
|
21
40
|
}
|
|
22
41
|
async resolve(key) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
42
|
+
// Check circular dependency
|
|
43
|
+
this.circularDetector.checkCircular(key);
|
|
44
|
+
this.circularDetector.push(key);
|
|
45
|
+
try {
|
|
46
|
+
const service = this._services[key];
|
|
47
|
+
if (!service) {
|
|
48
|
+
throw new Error(key + ' is not registered');
|
|
49
|
+
}
|
|
50
|
+
if (Array.isArray(service)) {
|
|
51
|
+
return await this.resolveMultipleContainerService(service);
|
|
52
|
+
}
|
|
53
|
+
return await this.resolveContainerService(service);
|
|
26
54
|
}
|
|
27
|
-
|
|
28
|
-
|
|
55
|
+
finally {
|
|
56
|
+
this.circularDetector.pop(key);
|
|
29
57
|
}
|
|
30
|
-
return await this.resolveContainerService(service);
|
|
31
58
|
}
|
|
32
59
|
resolveStrategy(key) {
|
|
33
60
|
return this.resolve(key);
|
|
@@ -149,8 +176,10 @@ export class Container {
|
|
|
149
176
|
const deps = getOwnTypedMetadata(ComponentConstants.DependencyKey, classInChain);
|
|
150
177
|
if (!deps)
|
|
151
178
|
continue;
|
|
179
|
+
let property;
|
|
152
180
|
for (const [k, name] of Object.entries(deps)) {
|
|
153
|
-
|
|
181
|
+
property = Object.getOwnPropertyDescriptor(newInstance, k);
|
|
182
|
+
if (property && property.value !== undefined)
|
|
154
183
|
continue;
|
|
155
184
|
const instance = await this.resolve(name);
|
|
156
185
|
if (instance === null) {
|
|
@@ -173,7 +202,9 @@ export class Container {
|
|
|
173
202
|
getPrototypeChain(Class) {
|
|
174
203
|
const chain = [];
|
|
175
204
|
let currentClass = Class;
|
|
176
|
-
while (currentClass &&
|
|
205
|
+
while (currentClass &&
|
|
206
|
+
currentClass !== Object.prototype &&
|
|
207
|
+
(currentClass.name === 'IocEngine' || !currentClass.toString().includes('[native code]'))) {
|
|
177
208
|
chain.push(currentClass);
|
|
178
209
|
currentClass = Object.getPrototypeOf(currentClass);
|
|
179
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/ioc/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/ioc/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Container } from './Container';
|
|
2
|
+
import type { AsenaAdapter } from '../adapter';
|
|
3
|
+
import type { ServerLogger } from '../logger';
|
|
4
|
+
import { CoreBootstrapPhase } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* @description CoreContainer manages framework-level services
|
|
7
|
+
* Handles the bootstrap sequence for core services and user components
|
|
8
|
+
*/
|
|
9
|
+
export declare class CoreContainer {
|
|
10
|
+
private readonly _container;
|
|
11
|
+
private _initialized;
|
|
12
|
+
private _phase;
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* @description Bootstrap core framework services
|
|
16
|
+
* Executes Phase 1-5: System-level services
|
|
17
|
+
* @param {AsenaAdapter} adapter - HTTP adapter instance
|
|
18
|
+
* @param {ServerLogger} logger - Logger instance
|
|
19
|
+
* @returns {Promise<void>}
|
|
20
|
+
*/
|
|
21
|
+
bootstrap(adapter: AsenaAdapter<any, any>, logger: ServerLogger): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* @description Resolve a service from container
|
|
24
|
+
* @param {string} key - Service identifier
|
|
25
|
+
* @returns {Promise<T>}
|
|
26
|
+
*/
|
|
27
|
+
resolve<T>(key: string): Promise<T>;
|
|
28
|
+
/**
|
|
29
|
+
* @description Update current phase (called by AsenaServer)
|
|
30
|
+
* @param {CoreBootstrapPhase} phase - New phase
|
|
31
|
+
* @returns {void}
|
|
32
|
+
*/
|
|
33
|
+
setPhase(phase: CoreBootstrapPhase): void;
|
|
34
|
+
/**
|
|
35
|
+
* @description Phase 1: Register Container itself
|
|
36
|
+
* @returns {Promise<void>}
|
|
37
|
+
*/
|
|
38
|
+
private registerContainer;
|
|
39
|
+
/**
|
|
40
|
+
* @description Phase 2: Register Logger instance
|
|
41
|
+
* @param {ServerLogger} logger - Logger instance
|
|
42
|
+
* @returns {Promise<void>}
|
|
43
|
+
*/
|
|
44
|
+
private registerLogger;
|
|
45
|
+
/**
|
|
46
|
+
* @description Phase 3: Register IocEngine
|
|
47
|
+
* IocEngine will inject Container automatically
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
|
+
*/
|
|
50
|
+
private registerIocEngine;
|
|
51
|
+
/**
|
|
52
|
+
* @description Phase 4: Register HTTP Adapter
|
|
53
|
+
* @param {AsenaAdapter} adapter - HTTP adapter instance
|
|
54
|
+
* @returns {Promise<void>}
|
|
55
|
+
*/
|
|
56
|
+
private registerAdapters;
|
|
57
|
+
/**
|
|
58
|
+
* @description Phase 5: Register all Prepare Services
|
|
59
|
+
* They will inject Container and Logger automatically
|
|
60
|
+
* @returns {Promise<void>}
|
|
61
|
+
*/
|
|
62
|
+
private registerPrepareServices;
|
|
63
|
+
/**
|
|
64
|
+
* @description Get container instance
|
|
65
|
+
* @returns {Container}
|
|
66
|
+
*/
|
|
67
|
+
get container(): Container;
|
|
68
|
+
/**
|
|
69
|
+
* @description Get current bootstrap phase
|
|
70
|
+
* @returns {CoreBootstrapPhase}
|
|
71
|
+
*/
|
|
72
|
+
get currentPhase(): CoreBootstrapPhase;
|
|
73
|
+
/**
|
|
74
|
+
* @description Check if CoreContainer is initialized
|
|
75
|
+
* @returns {boolean}
|
|
76
|
+
*/
|
|
77
|
+
get isInitialized(): boolean;
|
|
78
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Container } from './Container';
|
|
2
|
+
import { IocEngine } from './IocEngine';
|
|
3
|
+
import { CoreBootstrapPhase, ICoreServiceNames } from './types';
|
|
4
|
+
import { PrepareMiddlewareService } from '../server/src/services/PrepareMiddlewareService';
|
|
5
|
+
import { PrepareConfigService } from '../server/src/services/PrepareConfigService';
|
|
6
|
+
import { PrepareWebsocketService } from '../server/src/services/PrepareWebsocketService';
|
|
7
|
+
import { PrepareValidatorService } from '../server/src/services/PrepareValidatorService';
|
|
8
|
+
import { PrepareStaticServeConfigService } from '../server/src/services/PrepareStaticServeConfigService';
|
|
9
|
+
/**
|
|
10
|
+
* @description CoreContainer manages framework-level services
|
|
11
|
+
* Handles the bootstrap sequence for core services and user components
|
|
12
|
+
*/
|
|
13
|
+
export class CoreContainer {
|
|
14
|
+
_container;
|
|
15
|
+
_initialized = false;
|
|
16
|
+
_phase;
|
|
17
|
+
constructor() {
|
|
18
|
+
this._container = new Container();
|
|
19
|
+
this._phase = CoreBootstrapPhase.CONTAINER_INIT;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @description Bootstrap core framework services
|
|
23
|
+
* Executes Phase 1-5: System-level services
|
|
24
|
+
* @param {AsenaAdapter} adapter - HTTP adapter instance
|
|
25
|
+
* @param {ServerLogger} logger - Logger instance
|
|
26
|
+
* @returns {Promise<void>}
|
|
27
|
+
*/
|
|
28
|
+
async bootstrap(adapter, logger) {
|
|
29
|
+
if (this._initialized) {
|
|
30
|
+
throw new Error('CoreContainer already initialized');
|
|
31
|
+
}
|
|
32
|
+
// Phase 1: Container self-registration
|
|
33
|
+
await this.registerContainer();
|
|
34
|
+
// Phase 2: Logger registration
|
|
35
|
+
await this.registerLogger(logger);
|
|
36
|
+
// Phase 3: IocEngine registration
|
|
37
|
+
await this.registerIocEngine();
|
|
38
|
+
// Phase 4: Adapter registration
|
|
39
|
+
await this.registerAdapters(adapter);
|
|
40
|
+
// Phase 5: Prepare Services registration
|
|
41
|
+
await this.registerPrepareServices();
|
|
42
|
+
this._initialized = true;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @description Resolve a service from container
|
|
46
|
+
* @param {string} key - Service identifier
|
|
47
|
+
* @returns {Promise<T>}
|
|
48
|
+
*/
|
|
49
|
+
async resolve(key) {
|
|
50
|
+
return (await this._container.resolve(key));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @description Update current phase (called by AsenaServer)
|
|
54
|
+
* @param {CoreBootstrapPhase} phase - New phase
|
|
55
|
+
* @returns {void}
|
|
56
|
+
*/
|
|
57
|
+
setPhase(phase) {
|
|
58
|
+
this._phase = phase;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @description Phase 1: Register Container itself
|
|
62
|
+
* @returns {Promise<void>}
|
|
63
|
+
*/
|
|
64
|
+
async registerContainer() {
|
|
65
|
+
await this._container.registerInstance(ICoreServiceNames.CONTAINER, this._container);
|
|
66
|
+
this._phase = CoreBootstrapPhase.LOGGER_INIT;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @description Phase 2: Register Logger instance
|
|
70
|
+
* @param {ServerLogger} logger - Logger instance
|
|
71
|
+
* @returns {Promise<void>}
|
|
72
|
+
*/
|
|
73
|
+
async registerLogger(logger) {
|
|
74
|
+
await this._container.registerInstance(ICoreServiceNames.SERVER_LOGGER, logger);
|
|
75
|
+
this._phase = CoreBootstrapPhase.IOC_ENGINE_INIT;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @description Phase 3: Register IocEngine
|
|
79
|
+
* IocEngine will inject Container automatically
|
|
80
|
+
* @returns {Promise<void>}
|
|
81
|
+
*/
|
|
82
|
+
async registerIocEngine() {
|
|
83
|
+
await this._container.register(ICoreServiceNames.IOC_ENGINE, IocEngine, true);
|
|
84
|
+
this._phase = CoreBootstrapPhase.HTTP_ADAPTER_INIT;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description Phase 4: Register HTTP Adapter
|
|
88
|
+
* @param {AsenaAdapter} adapter - HTTP adapter instance
|
|
89
|
+
* @returns {Promise<void>}
|
|
90
|
+
*/
|
|
91
|
+
async registerAdapters(adapter) {
|
|
92
|
+
await this._container.registerInstance(ICoreServiceNames.ASENA_ADAPTER, adapter);
|
|
93
|
+
this._phase = CoreBootstrapPhase.PREPARE_SERVICES_INIT;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @description Phase 5: Register all Prepare Services
|
|
97
|
+
* They will inject Container and Logger automatically
|
|
98
|
+
* @returns {Promise<void>}
|
|
99
|
+
*/
|
|
100
|
+
async registerPrepareServices() {
|
|
101
|
+
const services = [
|
|
102
|
+
{ name: ICoreServiceNames.PREPARE_MIDDLEWARE_SERVICE, Class: PrepareMiddlewareService },
|
|
103
|
+
{ name: ICoreServiceNames.PREPARE_CONFIG_SERVICE, Class: PrepareConfigService },
|
|
104
|
+
{ name: ICoreServiceNames.PREPARE_WEBSOCKET_SERVICE, Class: PrepareWebsocketService },
|
|
105
|
+
{ name: ICoreServiceNames.PREPARE_VALIDATOR_SERVICE, Class: PrepareValidatorService },
|
|
106
|
+
{ name: ICoreServiceNames.PREPARE_STATIC_SERVE_CONFIG_SERVICE, Class: PrepareStaticServeConfigService },
|
|
107
|
+
];
|
|
108
|
+
for (const service of services) {
|
|
109
|
+
await this._container.register(service.name, service.Class, true);
|
|
110
|
+
}
|
|
111
|
+
this._phase = CoreBootstrapPhase.USER_COMPONENTS_SCAN;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @description Get container instance
|
|
115
|
+
* @returns {Container}
|
|
116
|
+
*/
|
|
117
|
+
get container() {
|
|
118
|
+
return this._container;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* @description Get current bootstrap phase
|
|
122
|
+
* @returns {CoreBootstrapPhase}
|
|
123
|
+
*/
|
|
124
|
+
get currentPhase() {
|
|
125
|
+
return this._phase;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @description Check if CoreContainer is initialized
|
|
129
|
+
* @returns {boolean}
|
|
130
|
+
*/
|
|
131
|
+
get isInitialized() {
|
|
132
|
+
return this._initialized;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=CoreContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoreContainer.js","sourceRoot":"","sources":["../../../lib/ioc/CoreContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { Container } from './Container';
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { type ICoreService, type InjectableComponent, type IocConfig } from './types';
|
|
2
|
+
import type { Container } from './Container';
|
|
3
|
+
/**
|
|
4
|
+
* @description IoC Engine - Manages component registration and dependency injection
|
|
5
|
+
* Core service that handles automatic component discovery and registration
|
|
6
|
+
*/
|
|
7
|
+
export declare class IocEngine implements ICoreService {
|
|
8
|
+
serviceName: string;
|
|
9
|
+
private _container;
|
|
5
10
|
private injectables;
|
|
6
|
-
private
|
|
7
|
-
|
|
11
|
+
private config?;
|
|
12
|
+
/**
|
|
13
|
+
* @description Set IoC configuration
|
|
14
|
+
* @param {IocConfig} config - IoC configuration object
|
|
15
|
+
* @returns {void}
|
|
16
|
+
*/
|
|
17
|
+
setConfig(config?: IocConfig): void;
|
|
8
18
|
searchAndRegister(components?: InjectableComponent[]): Promise<void>;
|
|
9
19
|
private loadComponents;
|
|
10
20
|
private validateAndRegisterComponents;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { ICoreServiceNames, } from './types';
|
|
2
11
|
import { getAllFiles } from './helper/fileHelper';
|
|
3
12
|
import * as path from 'node:path';
|
|
4
13
|
import { ComponentConstants } from './constants';
|
|
@@ -6,13 +15,24 @@ import * as process from 'node:process';
|
|
|
6
15
|
import * as console from 'node:console';
|
|
7
16
|
import { getStrategyClass } from './helper/iocHelper';
|
|
8
17
|
import { getOwnTypedMetadata, getTypedMetadata } from '../utils/typedMetadata';
|
|
9
|
-
import { Scope } from './component';
|
|
10
|
-
|
|
18
|
+
import { Inject, Scope } from './component';
|
|
19
|
+
import { CoreService } from './decorators';
|
|
20
|
+
import { CircularDependencyError } from './CircularDependencyDetector';
|
|
21
|
+
/**
|
|
22
|
+
* @description IoC Engine - Manages component registration and dependency injection
|
|
23
|
+
* Core service that handles automatic component discovery and registration
|
|
24
|
+
*/
|
|
25
|
+
let IocEngine = class IocEngine {
|
|
26
|
+
serviceName = 'IocEngine';
|
|
11
27
|
_container;
|
|
12
28
|
injectables = [];
|
|
13
29
|
config;
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
/**
|
|
31
|
+
* @description Set IoC configuration
|
|
32
|
+
* @param {IocConfig} config - IoC configuration object
|
|
33
|
+
* @returns {void}
|
|
34
|
+
*/
|
|
35
|
+
setConfig(config) {
|
|
16
36
|
this.config = config;
|
|
17
37
|
}
|
|
18
38
|
async searchAndRegister(components) {
|
|
@@ -129,7 +149,7 @@ export class IocEngine {
|
|
|
129
149
|
}
|
|
130
150
|
if (visitedCount !== inDegree.size) {
|
|
131
151
|
const cycle = this.findCycle(adjacencyList);
|
|
132
|
-
throw new
|
|
152
|
+
throw new CircularDependencyError(`Circular dependency detected: ${cycle.join(' -> ')}`);
|
|
133
153
|
}
|
|
134
154
|
return sorted.reverse();
|
|
135
155
|
}
|
|
@@ -228,5 +248,13 @@ export class IocEngine {
|
|
|
228
248
|
get container() {
|
|
229
249
|
return this._container;
|
|
230
250
|
}
|
|
231
|
-
}
|
|
251
|
+
};
|
|
252
|
+
__decorate([
|
|
253
|
+
Inject('Container'),
|
|
254
|
+
__metadata("design:type", Function)
|
|
255
|
+
], IocEngine.prototype, "_container", void 0);
|
|
256
|
+
IocEngine = __decorate([
|
|
257
|
+
CoreService(ICoreServiceNames.IOC_ENGINE)
|
|
258
|
+
], IocEngine);
|
|
259
|
+
export { IocEngine };
|
|
232
260
|
//# sourceMappingURL=IocEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IocEngine.js","sourceRoot":"","sources":["../../../lib/ioc/IocEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IocEngine.js","sourceRoot":"","sources":["../../../lib/ioc/IocEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './decorators';
|
|
2
|
-
export * from
|
|
2
|
+
export * from './Scope';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/ioc/component/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/ioc/component/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @description Component constants used in the IOC (Inversion of Control) container.
|
|
3
|
+
* All keys are Symbols to prevent naming collisions and external manipulation.
|
|
3
4
|
*/
|
|
4
|
-
export declare
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
IOCObjectKey
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
export declare class ComponentConstants {
|
|
6
|
+
static readonly NameKey: unique symbol;
|
|
7
|
+
static readonly TypeKey: unique symbol;
|
|
8
|
+
static readonly ScopeKey: unique symbol;
|
|
9
|
+
static readonly PathKey: unique symbol;
|
|
10
|
+
static readonly InterfaceKey: unique symbol;
|
|
11
|
+
static readonly DependencyKey: unique symbol;
|
|
12
|
+
static readonly SoftDependencyKey: unique symbol;
|
|
13
|
+
static readonly StrategyKey: unique symbol;
|
|
14
|
+
static readonly ExpressionKey: unique symbol;
|
|
15
|
+
static readonly PostConstructKey: unique symbol;
|
|
16
|
+
static readonly OverrideKey: unique symbol;
|
|
17
|
+
static readonly IOCObjectKey: unique symbol;
|
|
18
|
+
static readonly CronKey: unique symbol;
|
|
19
|
+
static readonly ControllerConfigKey: unique symbol;
|
|
20
|
+
static readonly RouteKey: unique symbol;
|
|
21
|
+
static readonly MiddlewaresKey: unique symbol;
|
|
22
|
+
static readonly ValidatorKey: unique symbol;
|
|
23
|
+
static readonly MethodKey: unique symbol;
|
|
24
|
+
static readonly RoutePathKey: unique symbol;
|
|
25
|
+
static readonly RouteMiddlewaresKey: unique symbol;
|
|
26
|
+
static readonly RouteValidatorKey: unique symbol;
|
|
27
|
+
static readonly WebSocketPathKey: unique symbol;
|
|
28
|
+
static readonly WebSocketMiddlewaresKey: unique symbol;
|
|
29
|
+
static readonly StaticServeRootKey: unique symbol;
|
|
21
30
|
}
|
|
@@ -1,23 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @description Component constants used in the IOC (Inversion of Control) container.
|
|
3
|
+
* All keys are Symbols to prevent naming collisions and external manipulation.
|
|
3
4
|
*/
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
export class ComponentConstants {
|
|
6
|
+
// Component metadata keys - Symbol based for uniqueness
|
|
7
|
+
static NameKey = Symbol('component:name');
|
|
8
|
+
static TypeKey = Symbol('component:type');
|
|
9
|
+
static ScopeKey = Symbol('component:scope');
|
|
10
|
+
static PathKey = Symbol('component:path');
|
|
11
|
+
static InterfaceKey = Symbol('component:interface');
|
|
12
|
+
static DependencyKey = Symbol('component:dependency');
|
|
13
|
+
static SoftDependencyKey = Symbol('component:softDependency');
|
|
14
|
+
static StrategyKey = Symbol('component:strategy');
|
|
15
|
+
static ExpressionKey = Symbol('component:expression');
|
|
16
|
+
static PostConstructKey = Symbol('component:postConstruct');
|
|
17
|
+
static OverrideKey = Symbol('component:override');
|
|
18
|
+
static IOCObjectKey = Symbol('component:iocObject');
|
|
19
|
+
static CronKey = Symbol('component:cron');
|
|
20
|
+
// Controller specific
|
|
21
|
+
static ControllerConfigKey = Symbol('controller:config');
|
|
22
|
+
static RouteKey = Symbol('controller:route');
|
|
23
|
+
// Middleware specific
|
|
24
|
+
static MiddlewaresKey = Symbol('middleware:middlewares');
|
|
25
|
+
static ValidatorKey = Symbol('middleware:validator');
|
|
26
|
+
// Route specific
|
|
27
|
+
static MethodKey = Symbol('route:method');
|
|
28
|
+
static RoutePathKey = Symbol('route:path');
|
|
29
|
+
static RouteMiddlewaresKey = Symbol('route:middlewares');
|
|
30
|
+
static RouteValidatorKey = Symbol('route:validator');
|
|
31
|
+
// WebSocket specific
|
|
32
|
+
static WebSocketPathKey = Symbol('websocket:path');
|
|
33
|
+
static WebSocketMiddlewaresKey = Symbol('websocket:middlewares');
|
|
34
|
+
// Static Serve specific
|
|
35
|
+
static StaticServeRootKey = Symbol('staticServe:root');
|
|
36
|
+
}
|
|
23
37
|
//# sourceMappingURL=ComponentConstants.js.map
|