@asenajs/asena 0.1.18 → 0.1.19
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 +75 -64
- package/dist/index.d.ts +1 -10
- package/dist/index.js +1 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/adapter/AsenaAdapter.d.ts +46 -53
- package/dist/lib/adapter/AsenaAdapter.js +22 -11
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/AsenaContext.d.ts +67 -57
- package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +58 -34
- package/dist/lib/adapter/AsenaWebsocketAdapter.js +43 -12
- package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
- package/dist/lib/adapter/hono/HonoAdapter.d.ts +28 -0
- package/dist/lib/adapter/{defaultAdapter/DefaultAdapter.js → hono/HonoAdapter.js} +57 -35
- package/dist/lib/adapter/hono/HonoAdapter.js.map +1 -0
- package/dist/lib/adapter/{defaultAdapter/DefaultContextWrapper.d.ts → hono/HonoContextWrapper.d.ts} +4 -4
- package/dist/lib/adapter/{defaultAdapter/DefaultContextWrapper.js → hono/HonoContextWrapper.js} +6 -6
- package/dist/lib/adapter/hono/HonoContextWrapper.js.map +1 -0
- package/dist/lib/adapter/{defaultAdapter/DefaultWebsocketAdapter.d.ts → hono/HonoWebsocketAdapter.d.ts} +9 -5
- package/dist/lib/adapter/{defaultAdapter/DefaultWebsocketAdapter.js → hono/HonoWebsocketAdapter.js} +34 -24
- package/dist/lib/adapter/hono/HonoWebsocketAdapter.js.map +1 -0
- package/dist/lib/adapter/hono/defaults/ConfigService.d.ts +4 -0
- package/dist/lib/adapter/hono/defaults/ConfigService.js +3 -0
- package/dist/lib/adapter/hono/defaults/ConfigService.js.map +1 -0
- package/dist/lib/adapter/hono/defaults/Context.js +2 -0
- package/dist/lib/adapter/hono/defaults/Context.js.map +1 -0
- package/dist/lib/adapter/hono/defaults/MiddlewareService.d.ts +5 -0
- package/dist/lib/adapter/hono/defaults/MiddlewareService.js +4 -0
- package/dist/lib/adapter/hono/defaults/MiddlewareService.js.map +1 -0
- package/dist/lib/adapter/hono/defaults/ValidationService.d.ts +10 -0
- package/dist/lib/adapter/hono/defaults/ValidationService.js +3 -0
- package/dist/lib/adapter/hono/defaults/ValidationService.js.map +1 -0
- package/dist/lib/adapter/hono/defaults/index.d.ts +4 -0
- package/dist/lib/adapter/hono/defaults/index.js +5 -0
- package/dist/lib/adapter/hono/defaults/index.js.map +1 -0
- package/dist/lib/adapter/hono/index.d.ts +6 -0
- package/dist/lib/adapter/hono/index.js +7 -0
- package/dist/lib/adapter/hono/index.js.map +1 -0
- package/dist/lib/adapter/hono/types/HonoHandler.d.ts +5 -0
- package/dist/lib/adapter/hono/types/HonoHandler.js +2 -0
- package/dist/lib/adapter/hono/types/HonoHandler.js.map +1 -0
- package/dist/lib/adapter/hono/types/index.d.ts +2 -0
- package/dist/lib/adapter/hono/types/index.js +3 -0
- package/dist/lib/adapter/hono/types/index.js.map +1 -0
- package/dist/lib/adapter/hono/utils/createHonoAdapter.d.ts +3 -0
- package/dist/lib/adapter/hono/utils/createHonoAdapter.js +6 -0
- package/dist/lib/adapter/hono/utils/createHonoAdapter.js.map +1 -0
- package/dist/lib/adapter/hono/utils/middlewareParser.d.ts +4 -0
- package/dist/lib/adapter/hono/utils/middlewareParser.js +15 -0
- package/dist/lib/adapter/hono/utils/middlewareParser.js.map +1 -0
- package/dist/lib/adapter/index.d.ts +1 -0
- package/dist/lib/adapter/index.js +1 -0
- package/dist/lib/adapter/index.js.map +1 -1
- package/dist/lib/adapter/types/AsenaHandler.d.ts +2 -0
- package/dist/lib/adapter/types/AsenaHandler.js +2 -0
- package/dist/lib/adapter/types/AsenaHandler.js.map +1 -0
- package/dist/lib/adapter/types/AsenaMiddlewareHandler.d.ts +2 -0
- package/dist/lib/adapter/types/AsenaMiddlewareHandler.js +2 -0
- package/dist/lib/adapter/types/AsenaMiddlewareHandler.js.map +1 -0
- package/dist/lib/adapter/types/ErrorHandler.d.ts +2 -0
- package/dist/lib/adapter/types/ErrorHandler.js +2 -0
- package/dist/lib/adapter/types/ErrorHandler.js.map +1 -0
- package/dist/lib/adapter/types/RouteParams.d.ts +7 -4
- package/dist/lib/adapter/types/ServeOptions.d.ts +7 -0
- package/dist/lib/adapter/types/ServeOptions.js +2 -0
- package/dist/lib/adapter/types/ServeOptions.js.map +1 -0
- package/dist/lib/adapter/types/WebSocketRegistry.d.ts +5 -4
- package/dist/lib/adapter/types/WebsocketAdapterParams.d.ts +1 -1
- package/dist/lib/adapter/types/index.d.ts +3 -0
- package/dist/lib/adapter/types/index.js +3 -0
- package/dist/lib/adapter/types/index.js.map +1 -1
- package/dist/lib/ioc/Container.d.ts +7 -3
- package/dist/lib/ioc/Container.js +68 -72
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/ioc/IocEngine.d.ts +2 -2
- package/dist/lib/ioc/IocEngine.js +15 -15
- package/dist/lib/ioc/IocEngine.js.map +1 -1
- package/dist/lib/ioc/component/componentUtils.d.ts +1 -1
- package/dist/lib/ioc/component/componentUtils.js +16 -12
- package/dist/lib/ioc/component/componentUtils.js.map +1 -1
- package/dist/lib/{server/decorators/components → ioc/component/decorators}/Component.d.ts +1 -1
- package/dist/lib/{server/decorators/components → ioc/component/decorators}/Component.js +2 -2
- package/dist/lib/ioc/component/decorators/Component.js.map +1 -0
- package/dist/lib/ioc/component/decorators/Implements.js +2 -2
- package/dist/lib/ioc/component/decorators/Implements.js.map +1 -1
- package/dist/lib/ioc/component/decorators/Inject.d.ts +1 -1
- package/dist/lib/ioc/component/decorators/Inject.js +6 -7
- package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
- package/dist/lib/ioc/component/decorators/PostConstruct.d.ts +6 -0
- package/dist/lib/ioc/component/decorators/PostConstruct.js +17 -0
- package/dist/lib/ioc/component/decorators/PostConstruct.js.map +1 -0
- package/dist/lib/ioc/component/decorators/Strategy.js +6 -6
- package/dist/lib/ioc/component/decorators/Strategy.js.map +1 -1
- package/dist/lib/ioc/component/decorators/index.d.ts +1 -0
- package/dist/lib/ioc/component/decorators/index.js +1 -0
- package/dist/lib/ioc/component/decorators/index.js.map +1 -1
- package/dist/lib/ioc/component/index.d.ts +1 -0
- package/dist/lib/ioc/component/index.js +2 -0
- package/dist/lib/ioc/component/index.js.map +1 -0
- package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -2
- package/dist/lib/ioc/constants/ComponentConstants.js +3 -1
- package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
- package/dist/lib/ioc/helper/fileHelper.d.ts +1 -1
- package/dist/lib/ioc/helper/fileHelper.js +9 -3
- package/dist/lib/ioc/helper/fileHelper.js.map +1 -1
- package/dist/lib/ioc/helper/iocHelper.d.ts +2 -3
- package/dist/lib/ioc/helper/iocHelper.js +4 -2
- package/dist/lib/ioc/helper/iocHelper.js.map +1 -1
- package/dist/lib/ioc/types/{Component.d.ts → InjectableComponent.d.ts} +4 -4
- package/dist/lib/ioc/types/InjectableComponent.js +2 -0
- package/dist/lib/ioc/types/InjectableComponent.js.map +1 -0
- package/dist/lib/ioc/types/IocConfig.d.ts +1 -0
- package/dist/lib/ioc/types/decorators/ComponentParams.d.ts +1 -1
- package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -2
- package/dist/lib/ioc/types/decorators/ComponentType.js +1 -1
- package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
- package/dist/lib/ioc/types/decorators/ControllerParams.d.ts +4 -3
- package/dist/lib/ioc/types/decorators/MiddlewareParams.d.ts +1 -1
- package/dist/lib/ioc/types/index.d.ts +1 -1
- package/dist/lib/ioc/types/index.js +1 -1
- package/dist/lib/ioc/types/index.js.map +1 -1
- package/dist/lib/{services/logger → logger}/DefaultLogger.d.ts +1 -1
- package/dist/lib/logger/DefaultLogger.js.map +1 -0
- package/dist/lib/{services/types → logger}/Logger.js.map +1 -1
- package/dist/lib/logger/index.d.ts +2 -0
- package/dist/lib/logger/index.js +3 -0
- package/dist/lib/logger/index.js.map +1 -0
- package/dist/lib/server/AsenaServer.d.ts +15 -14
- package/dist/lib/server/AsenaServer.js +125 -113
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/config/AsenaConfig.d.ts +43 -0
- package/dist/lib/server/config/AsenaConfig.js +2 -0
- package/dist/lib/server/config/AsenaConfig.js.map +1 -0
- package/dist/lib/server/decorators/Override.d.ts +4 -4
- package/dist/lib/server/decorators/Override.js +11 -7
- package/dist/lib/server/decorators/Override.js.map +1 -1
- package/dist/lib/server/decorators/components/Config.d.ts +10 -0
- package/dist/lib/server/decorators/components/Config.js +14 -0
- package/dist/lib/server/decorators/components/Config.js.map +1 -0
- package/dist/lib/server/decorators/components/Controller.js +4 -4
- package/dist/lib/server/decorators/components/Controller.js.map +1 -1
- package/dist/lib/server/decorators/components/Middleware.d.ts +1 -1
- package/dist/lib/server/decorators/components/Middleware.js +19 -9
- package/dist/lib/server/decorators/components/Middleware.js.map +1 -1
- package/dist/lib/server/decorators/components/Schedule.d.ts +2 -2
- package/dist/lib/server/decorators/components/Schedule.js +7 -7
- package/dist/lib/server/decorators/components/Schedule.js.map +1 -1
- package/dist/lib/server/decorators/components/Service.d.ts +1 -1
- package/dist/lib/server/decorators/components/Service.js +2 -2
- package/dist/lib/server/decorators/components/Service.js.map +1 -1
- package/dist/lib/server/decorators/components/WebSocket.js +4 -4
- package/dist/lib/server/decorators/components/WebSocket.js.map +1 -1
- package/dist/lib/server/decorators/components/index.d.ts +1 -2
- package/dist/lib/server/decorators/components/index.js +1 -2
- package/dist/lib/server/decorators/components/index.js.map +1 -1
- package/dist/lib/server/decorators/index.d.ts +2 -1
- package/dist/lib/server/decorators/index.js +2 -1
- package/dist/lib/server/decorators/index.js.map +1 -1
- package/dist/lib/server/index.d.ts +1 -0
- package/dist/lib/server/index.js +1 -0
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/types/Class.d.ts +0 -3
- package/dist/lib/server/web/decorators/http.base.d.ts +4 -0
- package/dist/lib/server/web/decorators/http.base.js +35 -0
- package/dist/lib/server/web/decorators/http.base.js.map +1 -0
- package/dist/lib/server/web/decorators/index.d.ts +4 -0
- package/dist/lib/server/web/decorators/index.js +5 -0
- package/dist/lib/server/web/decorators/index.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Connect.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Connect.js +12 -0
- package/dist/lib/server/web/decorators/methods/Connect.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Delete.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Delete.js +12 -0
- package/dist/lib/server/web/decorators/methods/Delete.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Get.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Get.js +12 -0
- package/dist/lib/server/web/decorators/methods/Get.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Head.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Head.js +12 -0
- package/dist/lib/server/web/decorators/methods/Head.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Options.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Options.js +12 -0
- package/dist/lib/server/web/decorators/methods/Options.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Patch.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Patch.js +12 -0
- package/dist/lib/server/web/decorators/methods/Patch.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Post.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Post.js +12 -0
- package/dist/lib/server/web/decorators/methods/Post.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Put.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Put.js +12 -0
- package/dist/lib/server/web/decorators/methods/Put.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Trace.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/Trace.js +12 -0
- package/dist/lib/server/web/decorators/methods/Trace.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/index.d.ts +9 -0
- package/dist/lib/server/web/decorators/methods/index.js +10 -0
- package/dist/lib/server/web/decorators/methods/index.js.map +1 -0
- package/dist/lib/server/web/helper/middlewareHelper.d.ts +7 -1
- package/dist/lib/server/web/helper/middlewareHelper.js +11 -5
- package/dist/lib/server/web/helper/middlewareHelper.js.map +1 -1
- package/dist/lib/server/web/http/HttpStatus.d.ts +69 -67
- package/dist/lib/server/web/http/HttpStatus.js +69 -68
- package/dist/lib/server/web/http/HttpStatus.js.map +1 -1
- package/dist/lib/server/web/middleware/AsenaMiddlewareService.d.ts +8 -10
- package/dist/lib/server/web/middleware/AsenaMiddlewareService.js +1 -4
- package/dist/lib/server/web/middleware/AsenaMiddlewareService.js.map +1 -1
- package/dist/lib/server/web/middleware/AsenaValidationService.d.ts +15 -16
- package/dist/lib/server/web/middleware/AsenaValidationService.js +1 -8
- package/dist/lib/server/web/middleware/AsenaValidationService.js.map +1 -1
- package/dist/lib/server/web/types/ApiParams.d.ts +73 -0
- package/dist/lib/server/web/types/ApiParams.js +2 -0
- package/dist/lib/server/web/types/ApiParams.js.map +1 -0
- package/dist/lib/server/web/types/BaseMiddleware.d.ts +50 -5
- package/dist/lib/server/web/types/BaseMiddleware.js +1 -1
- package/dist/lib/server/web/types/BaseMiddleware.js.map +1 -1
- package/dist/lib/server/web/types/index.d.ts +1 -1
- package/dist/lib/server/web/types/index.js +1 -1
- package/dist/lib/server/web/types/index.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaSocket.js +1 -0
- package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.d.ts +39 -0
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.js +40 -0
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaWebSocketService.js +4 -4
- package/dist/lib/server/web/websocket/AsenaWebSocketService.js.map +1 -1
- package/dist/lib/utils/typedMetadata.d.ts +2 -0
- package/dist/lib/utils/typedMetadata.js +13 -0
- package/dist/lib/utils/typedMetadata.js.map +1 -0
- package/package.json +53 -5
- package/dist/lib/adapter/defaultAdapter/DefaultAdapter.d.ts +0 -26
- package/dist/lib/adapter/defaultAdapter/DefaultAdapter.js.map +0 -1
- package/dist/lib/adapter/defaultAdapter/DefaultContextWrapper.js.map +0 -1
- package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.js.map +0 -1
- package/dist/lib/adapter/defaultAdapter/index.d.ts +0 -3
- package/dist/lib/adapter/defaultAdapter/index.js +0 -4
- package/dist/lib/adapter/defaultAdapter/index.js.map +0 -1
- package/dist/lib/adapter/defaultAdapter/types/Defaultcontext.js +0 -2
- package/dist/lib/adapter/defaultAdapter/types/Defaultcontext.js.map +0 -1
- package/dist/lib/adapter/defaultAdapter/types/Handler.d.ts +0 -4
- package/dist/lib/adapter/defaultAdapter/types/Handler.js +0 -2
- package/dist/lib/adapter/defaultAdapter/types/Handler.js.map +0 -1
- package/dist/lib/adapter/defaultAdapter/types/index.d.ts +0 -2
- package/dist/lib/adapter/defaultAdapter/types/index.js +0 -3
- package/dist/lib/adapter/defaultAdapter/types/index.js.map +0 -1
- package/dist/lib/ioc/types/Component.js +0 -2
- package/dist/lib/ioc/types/Component.js.map +0 -1
- package/dist/lib/server/decorators/components/Component.js.map +0 -1
- package/dist/lib/server/decorators/components/ServerService.d.ts +0 -9
- package/dist/lib/server/decorators/components/ServerService.js +0 -13
- package/dist/lib/server/decorators/components/ServerService.js.map +0 -1
- package/dist/lib/server/web/api/apiHandler.d.ts +0 -55
- package/dist/lib/server/web/api/apiHandler.js +0 -107
- package/dist/lib/server/web/api/apiHandler.js.map +0 -1
- package/dist/lib/server/web/api/index.d.ts +0 -1
- package/dist/lib/server/web/api/index.js +0 -2
- package/dist/lib/server/web/api/index.js.map +0 -1
- package/dist/lib/server/web/types/ApiHandler.d.ts +0 -22
- package/dist/lib/server/web/types/ApiHandler.js +0 -2
- package/dist/lib/server/web/types/ApiHandler.js.map +0 -1
- package/dist/lib/services/index.d.ts +0 -3
- package/dist/lib/services/index.js +0 -4
- package/dist/lib/services/index.js.map +0 -1
- package/dist/lib/services/logger/DefaultLogger.js.map +0 -1
- package/dist/lib/services/serverService/AsenaService.d.ts +0 -7
- package/dist/lib/services/serverService/AsenaService.js +0 -7
- package/dist/lib/services/serverService/AsenaService.js.map +0 -1
- package/dist/lib/services/types/index.d.ts +0 -2
- package/dist/lib/services/types/index.js +0 -3
- package/dist/lib/services/types/index.js.map +0 -1
- /package/dist/lib/adapter/{defaultAdapter/types/Defaultcontext.d.ts → hono/defaults/Context.d.ts} +0 -0
- /package/dist/lib/{services/logger → logger}/DefaultLogger.js +0 -0
- /package/dist/lib/{services/types → logger}/Logger.d.ts +0 -0
- /package/dist/lib/{services/types → logger}/Logger.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getMetadata } from 'reflect-metadata/no-conflict';
|
|
2
1
|
import { ComponentConstants } from './constants';
|
|
2
|
+
import { getTypedMetadata } from '../utils/typedMetadata';
|
|
3
3
|
export class Container {
|
|
4
4
|
_services = {};
|
|
5
5
|
constructor(services) {
|
|
@@ -19,90 +19,91 @@ export class Container {
|
|
|
19
19
|
}
|
|
20
20
|
this._services[key] = { Class, instance: singleton ? this.prepareInstance(Class) : null, singleton };
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
// Todo: return error
|
|
22
|
+
async resolve(key) {
|
|
24
23
|
const service = this._services[key];
|
|
25
24
|
if (!service) {
|
|
26
|
-
|
|
25
|
+
throw new Error(key + ' is not registered');
|
|
27
26
|
}
|
|
28
27
|
if (Array.isArray(service)) {
|
|
29
|
-
return
|
|
30
|
-
if (!containerService.singleton) {
|
|
31
|
-
return this.prepareInstance(containerService.Class);
|
|
32
|
-
}
|
|
33
|
-
if (!containerService.instance) {
|
|
34
|
-
throw new Error('instance cannot be null');
|
|
35
|
-
}
|
|
36
|
-
return containerService.instance;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
if (!service.singleton) {
|
|
40
|
-
return this.prepareInstance(service.Class);
|
|
28
|
+
return await this.resolveMultipleContainerService(service);
|
|
41
29
|
}
|
|
42
|
-
return service
|
|
30
|
+
return await this.resolveContainerService(service);
|
|
43
31
|
}
|
|
44
|
-
|
|
45
|
-
return this.
|
|
32
|
+
resolveStrategy(key) {
|
|
33
|
+
return this.resolve(key);
|
|
46
34
|
}
|
|
47
35
|
/**
|
|
48
36
|
* @typeOfComponent is the type of the component
|
|
49
37
|
*
|
|
50
38
|
* */
|
|
51
|
-
|
|
52
|
-
const
|
|
39
|
+
async resolveAll(typeOfComponent) {
|
|
40
|
+
const matchingServices = this.filterServices(typeOfComponent);
|
|
41
|
+
if (!matchingServices.length) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const instances = [];
|
|
45
|
+
for (const containerService of matchingServices) {
|
|
46
|
+
if (Array.isArray(containerService)) {
|
|
47
|
+
instances.push(await this.resolveMultipleContainerService(containerService));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
instances.push(await this.resolveContainerService(containerService));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return instances;
|
|
54
|
+
}
|
|
55
|
+
filterServices(typeOfComponent) {
|
|
56
|
+
return Object.entries(this._services)
|
|
53
57
|
.filter(([, value]) => {
|
|
54
58
|
if (Array.isArray(value)) {
|
|
55
59
|
// check every element in the array is the same type
|
|
56
60
|
return value.every((service) => {
|
|
57
|
-
return
|
|
61
|
+
return getTypedMetadata(typeOfComponent, service.Class);
|
|
58
62
|
});
|
|
59
63
|
}
|
|
60
|
-
return
|
|
64
|
+
return getTypedMetadata(typeOfComponent, value.Class);
|
|
61
65
|
})
|
|
62
66
|
.map(([, value]) => value);
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
}
|
|
68
|
+
async resolveContainerService(containerService) {
|
|
69
|
+
if (!containerService.singleton) {
|
|
70
|
+
return await this.prepareInstance(containerService.Class);
|
|
65
71
|
}
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
if (Array.isArray(containerService)) {
|
|
69
|
-
return containerService.map((_service) => {
|
|
70
|
-
if (!_service.singleton) {
|
|
71
|
-
return this.prepareInstance(_service.Class);
|
|
72
|
-
}
|
|
73
|
-
if (!_service.instance) {
|
|
74
|
-
throw new Error('instance cannot be null');
|
|
75
|
-
}
|
|
76
|
-
return _service.instance;
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
if (!containerService.singleton) {
|
|
80
|
-
return this.prepareInstance(containerService.Class);
|
|
81
|
-
}
|
|
82
|
-
if (!containerService.instance) {
|
|
83
|
-
throw new Error('instance cannot be null');
|
|
84
|
-
}
|
|
85
|
-
return containerService.instance;
|
|
86
|
-
});
|
|
72
|
+
if (!containerService.instance) {
|
|
73
|
+
throw new Error('instance cannot be null');
|
|
87
74
|
}
|
|
88
|
-
return
|
|
75
|
+
return containerService.instance;
|
|
76
|
+
}
|
|
77
|
+
async resolveMultipleContainerService(containerService) {
|
|
78
|
+
return Promise.all(containerService.map(async (_service) => this.resolveContainerService(_service)));
|
|
89
79
|
}
|
|
90
|
-
prepareInstance(Class) {
|
|
80
|
+
async prepareInstance(Class) {
|
|
91
81
|
const newInstance = new Class();
|
|
92
|
-
this.injectDependencies(newInstance, Class); // dependency injection
|
|
93
|
-
this.injectStrategies(newInstance, Class); // strategy injection
|
|
82
|
+
await this.injectDependencies(newInstance, Class); // dependency injection
|
|
83
|
+
await this.injectStrategies(newInstance, Class); // strategy injection
|
|
84
|
+
await this.executePostConstructs(newInstance, Class); // post construct
|
|
94
85
|
return newInstance;
|
|
95
86
|
}
|
|
96
|
-
|
|
97
|
-
|
|
87
|
+
async executePostConstructs(newInstance, Class) {
|
|
88
|
+
const postConstructs = getTypedMetadata(ComponentConstants.PostConstructKey, Class);
|
|
89
|
+
if (!postConstructs) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
for (const postConstruct of postConstructs) {
|
|
93
|
+
await newInstance[postConstruct]();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async injectStrategies(newInstance, Class) {
|
|
97
|
+
const strategyList = getTypedMetadata(ComponentConstants.StrategyKey, Class);
|
|
98
|
+
for (const [propertyKey, interfaceName] of Object.entries(strategyList)) {
|
|
98
99
|
if (!interfaceName) {
|
|
99
100
|
continue;
|
|
100
101
|
}
|
|
101
102
|
if (typeof interfaceName !== 'string') {
|
|
102
103
|
throw new Error('interfaceName must be a string');
|
|
103
104
|
}
|
|
104
|
-
const strategy = this.
|
|
105
|
-
const expression =
|
|
105
|
+
const strategy = await this.resolveStrategy(interfaceName);
|
|
106
|
+
const expression = getTypedMetadata(ComponentConstants.ExpressionKey, Class);
|
|
106
107
|
Object.defineProperty(newInstance, propertyKey, {
|
|
107
108
|
get() {
|
|
108
109
|
return expression && expression[propertyKey] ? strategy.map((s) => expression[propertyKey](s)) : strategy;
|
|
@@ -112,29 +113,24 @@ export class Container {
|
|
|
112
113
|
});
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
|
-
injectDependencies(newInstance, Class) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const instance = this.
|
|
116
|
+
async injectDependencies(newInstance, Class) {
|
|
117
|
+
const deps = getTypedMetadata(ComponentConstants.DependencyKey, Class);
|
|
118
|
+
for (const [k, name] of Object.entries(deps)) {
|
|
119
|
+
const instance = await this.resolve(name);
|
|
119
120
|
if (instance === null) {
|
|
120
|
-
throw new Error('Instance cant be null ' +
|
|
121
|
+
throw new Error('Instance cant be null ' + name);
|
|
121
122
|
}
|
|
122
123
|
if (Array.isArray(instance) && instance.length < 1) {
|
|
123
124
|
throw new Error('instance error cannot be null');
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
},
|
|
134
|
-
enumerable: true,
|
|
135
|
-
configurable: true,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
126
|
+
const expression = getTypedMetadata(ComponentConstants.ExpressionKey, Class);
|
|
127
|
+
Object.defineProperty(newInstance, k, {
|
|
128
|
+
get: () => {
|
|
129
|
+
return expression && expression[k] ? expression[k](instance) : instance;
|
|
130
|
+
},
|
|
131
|
+
enumerable: true,
|
|
132
|
+
configurable: true,
|
|
133
|
+
});
|
|
138
134
|
}
|
|
139
135
|
}
|
|
140
136
|
get services() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/ioc/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/ioc/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InjectableComponent, IocConfig } from './types';
|
|
2
2
|
import { Container } from './Container';
|
|
3
3
|
export declare class IocEngine {
|
|
4
4
|
private readonly _container;
|
|
5
5
|
private injectables;
|
|
6
6
|
private readonly config;
|
|
7
7
|
constructor(config?: IocConfig);
|
|
8
|
-
searchAndRegister(components?:
|
|
8
|
+
searchAndRegister(components?: InjectableComponent[]): Promise<void>;
|
|
9
9
|
private loadComponents;
|
|
10
10
|
private validateAndRegisterComponents;
|
|
11
11
|
private register;
|
|
@@ -2,11 +2,11 @@ import { Scope } from './types';
|
|
|
2
2
|
import { Container } from './Container';
|
|
3
3
|
import { getAllFiles } from './helper/fileHelper';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
|
-
import { getMetadata } from 'reflect-metadata/no-conflict';
|
|
6
5
|
import { ComponentConstants } from './constants';
|
|
7
6
|
import * as process from 'node:process';
|
|
8
7
|
import * as console from 'node:console';
|
|
9
8
|
import { getStrategyClass } from './helper/iocHelper';
|
|
9
|
+
import { getTypedMetadata } from '../utils/typedMetadata';
|
|
10
10
|
export class IocEngine {
|
|
11
11
|
_container;
|
|
12
12
|
injectables = [];
|
|
@@ -42,10 +42,10 @@ export class IocEngine {
|
|
|
42
42
|
}
|
|
43
43
|
register(injectables) {
|
|
44
44
|
for (const injectable of injectables) {
|
|
45
|
-
const name =
|
|
46
|
-
const isSingleton =
|
|
45
|
+
const name = getTypedMetadata(ComponentConstants.NameKey, injectable) || injectable.name;
|
|
46
|
+
const isSingleton = getTypedMetadata(ComponentConstants.ScopeKey, injectable) === Scope.SINGLETON;
|
|
47
47
|
this._container.register(name, injectable, isSingleton);
|
|
48
|
-
const _interface =
|
|
48
|
+
const _interface = getTypedMetadata(ComponentConstants.InterfaceKey, injectable);
|
|
49
49
|
if (_interface) {
|
|
50
50
|
this._container.register(_interface, injectable, isSingleton);
|
|
51
51
|
}
|
|
@@ -80,7 +80,7 @@ export class IocEngine {
|
|
|
80
80
|
}
|
|
81
81
|
isValidComponent(component) {
|
|
82
82
|
try {
|
|
83
|
-
return !!
|
|
83
|
+
return !!getTypedMetadata(ComponentConstants.IOCObjectKey, component);
|
|
84
84
|
}
|
|
85
85
|
catch {
|
|
86
86
|
return false;
|
|
@@ -88,7 +88,7 @@ export class IocEngine {
|
|
|
88
88
|
}
|
|
89
89
|
createComponentObject(component) {
|
|
90
90
|
try {
|
|
91
|
-
const _interface =
|
|
91
|
+
const _interface = getTypedMetadata(ComponentConstants.InterfaceKey, component);
|
|
92
92
|
return {
|
|
93
93
|
Class: component,
|
|
94
94
|
interface: _interface,
|
|
@@ -136,19 +136,18 @@ export class IocEngine {
|
|
|
136
136
|
// eslint-disable-next-line max-params
|
|
137
137
|
initializeGraph(classes, injectables, inDegree, adjacencyList, nameToClass) {
|
|
138
138
|
classes.forEach((cls) => {
|
|
139
|
-
const name = cls.name;
|
|
139
|
+
const name = getTypedMetadata(ComponentConstants.NameKey, cls) || cls.name;
|
|
140
140
|
nameToClass.set(name, cls);
|
|
141
141
|
inDegree.set(name, 0);
|
|
142
142
|
adjacencyList.set(name, []);
|
|
143
143
|
});
|
|
144
144
|
classes.forEach((cls) => {
|
|
145
|
-
const name = cls.name;
|
|
145
|
+
const name = getTypedMetadata(ComponentConstants.NameKey, cls) || cls.name;
|
|
146
146
|
const dependencies = [...this.getDependencies(cls), ...this.getStrategyDependencies(cls, injectables)];
|
|
147
147
|
dependencies.forEach((dep) => {
|
|
148
148
|
if (dep) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
inDegree.set(depName, (inDegree.get(depName) || 0) + 1);
|
|
149
|
+
adjacencyList.get(name)?.push(dep);
|
|
150
|
+
inDegree.set(dep, (inDegree.get(dep) || 0) + 1);
|
|
152
151
|
}
|
|
153
152
|
});
|
|
154
153
|
});
|
|
@@ -186,13 +185,14 @@ export class IocEngine {
|
|
|
186
185
|
}
|
|
187
186
|
getDependencies(component) {
|
|
188
187
|
try {
|
|
189
|
-
const directDependencies = Object.values(
|
|
188
|
+
const directDependencies = Object.values(getTypedMetadata(ComponentConstants.DependencyKey, component) || {});
|
|
189
|
+
const softDependencies = Object.values(getTypedMetadata(ComponentConstants.SoftDependencyKey, component) || {});
|
|
190
190
|
const parentClass = Object.getPrototypeOf(component);
|
|
191
191
|
if (parentClass && parentClass !== Object.prototype) {
|
|
192
192
|
const parentDependencies = this.getDependencies(parentClass);
|
|
193
|
-
return [...new Set([...directDependencies, ...parentDependencies])];
|
|
193
|
+
return [...new Set([...directDependencies, ...parentDependencies, ...softDependencies])];
|
|
194
194
|
}
|
|
195
|
-
return directDependencies;
|
|
195
|
+
return [...new Set(...directDependencies, ...softDependencies)];
|
|
196
196
|
}
|
|
197
197
|
catch {
|
|
198
198
|
return [];
|
|
@@ -200,7 +200,7 @@ export class IocEngine {
|
|
|
200
200
|
}
|
|
201
201
|
getStrategyDependencies(component, injectables) {
|
|
202
202
|
try {
|
|
203
|
-
const strategyMeta =
|
|
203
|
+
const strategyMeta = getTypedMetadata(ComponentConstants.StrategyKey, component);
|
|
204
204
|
const directStrategies = getStrategyClass(strategyMeta, injectables);
|
|
205
205
|
const parentClass = Object.getPrototypeOf(component);
|
|
206
206
|
if (parentClass && parentClass !== Object.prototype) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IocEngine.js","sourceRoot":"","sources":["../../../lib/ioc/IocEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"IocEngine.js","sourceRoot":"","sources":["../../../lib/ioc/IocEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ComponentParams, ComponentType } from '../types';
|
|
2
2
|
export declare const defineComponent: <T extends ComponentParams>(componentType: ComponentType, params: T | string, extra?: (target: Function) => void) => ClassDecorator;
|
|
@@ -1,26 +1,30 @@
|
|
|
1
|
-
import { Scope } from '../types';
|
|
2
|
-
import { defineMetadata, getMetadata } from 'reflect-metadata/no-conflict';
|
|
1
|
+
import { ComponentType, Scope, } from '../types';
|
|
3
2
|
import { ComponentConstants } from '../constants';
|
|
3
|
+
import { defineTypedMetadata, getTypedMetadata } from '../../utils/typedMetadata';
|
|
4
4
|
export const defineComponent = (componentType, params, extra) => {
|
|
5
5
|
return (target) => {
|
|
6
|
-
const { scope = Scope.SINGLETON, name = target.name } = paramsGenerator(params);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const { scope = Scope.SINGLETON, name = target.name } = paramsGenerator(params, componentType);
|
|
7
|
+
defineTypedMetadata(componentType, true, target);
|
|
8
|
+
defineTypedMetadata(ComponentConstants.IOCObjectKey, true, target);
|
|
9
|
+
defineTypedMetadata(ComponentConstants.ScopeKey, scope, target);
|
|
10
|
+
defineTypedMetadata(ComponentConstants.NameKey, name, target);
|
|
11
11
|
if (extra) {
|
|
12
12
|
extra(target);
|
|
13
13
|
}
|
|
14
|
-
if (
|
|
15
|
-
|
|
14
|
+
if (getTypedMetadata(ComponentConstants.DependencyKey, target) === undefined) {
|
|
15
|
+
defineTypedMetadata(ComponentConstants.DependencyKey, {}, target);
|
|
16
16
|
}
|
|
17
|
-
if (
|
|
18
|
-
|
|
17
|
+
if (getTypedMetadata(ComponentConstants.StrategyKey, target) === undefined) {
|
|
18
|
+
defineTypedMetadata(ComponentConstants.StrategyKey, {}, target);
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
|
-
const paramsGenerator = (params) => {
|
|
22
|
+
const paramsGenerator = (params, componentType) => {
|
|
23
23
|
const defaultParam = { name: undefined, scope: undefined };
|
|
24
|
+
if (typeof params === 'string' &&
|
|
25
|
+
(componentType === ComponentType.CONTROLLER || componentType === ComponentType.WEBSOCKET)) {
|
|
26
|
+
return defaultParam;
|
|
27
|
+
}
|
|
24
28
|
return typeof params === 'string' ? { name: params } : params || defaultParam;
|
|
25
29
|
};
|
|
26
30
|
//# sourceMappingURL=componentUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../../../lib/ioc/component/componentUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../../../lib/ioc/component/componentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAEb,KAAK,GAGN,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,aAA4B,EAC5B,MAAkB,EAClB,KAAkC,EAClB,EAAE;IAClB,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE/F,mBAAmB,CAAU,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE1D,mBAAmB,CAAU,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5E,mBAAmB,CAAQ,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEvE,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEtE,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,gBAAgB,CAAe,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3F,mBAAmB,CAAe,kBAAkB,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,gBAAgB,CAAa,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YACvF,mBAAmB,CAAa,kBAAkB,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,MAAgC,EAChC,aAA4B,EACK,EAAE;IACnC,MAAM,YAAY,GAAoC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAE5F,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,aAAa,KAAK,aAAa,CAAC,UAAU,IAAI,aAAa,KAAK,aAAa,CAAC,SAAS,CAAC,EACzF,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC;AAChF,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ComponentType } from
|
|
2
|
-
import { defineComponent } from
|
|
1
|
+
import { ComponentType } from '../../types';
|
|
2
|
+
import { defineComponent } from '../componentUtils';
|
|
3
3
|
/**
|
|
4
4
|
* Decorator for defining a generic Component.
|
|
5
5
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAiC,EAAkB,EAAE;IAC7E,OAAO,eAAe,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineMetadata } from 'reflect-metadata/no-conflict';
|
|
2
1
|
import { ComponentConstants } from '../../constants';
|
|
2
|
+
import { defineTypedMetadata } from '../../../utils/typedMetadata';
|
|
3
3
|
/**
|
|
4
4
|
* A class decorator that adds metadata to the target class.
|
|
5
5
|
*
|
|
@@ -8,7 +8,7 @@ import { ComponentConstants } from '../../constants';
|
|
|
8
8
|
*/
|
|
9
9
|
export function Implements(implement) {
|
|
10
10
|
return (target) => {
|
|
11
|
-
|
|
11
|
+
defineTypedMetadata(ComponentConstants.InterfaceKey, implement, target);
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=Implements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Implements.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Implements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Implements.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Implements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,mBAAmB,CAAS,kBAAkB,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -6,4 +6,4 @@ import type { Class } from '../../../server/types';
|
|
|
6
6
|
* @param expression - The expression to evaluate on the injected class.
|
|
7
7
|
* @returns {PropertyDecorator} - The property decorator function.
|
|
8
8
|
*/
|
|
9
|
-
export declare const Inject: (Injection: Class, expression?: (injectedClass: any) => any) => PropertyDecorator;
|
|
9
|
+
export declare const Inject: (Injection: Class | string, expression?: (injectedClass: any) => any) => PropertyDecorator;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineMetadata, getMetadata } from 'reflect-metadata/no-conflict';
|
|
2
1
|
import { ComponentConstants } from '../../constants';
|
|
2
|
+
import { defineTypedMetadata, getTypedMetadata } from '../../../utils/typedMetadata';
|
|
3
3
|
/**
|
|
4
4
|
* Property decorator to inject a dependency.
|
|
5
5
|
*
|
|
@@ -9,18 +9,17 @@ import { ComponentConstants } from '../../constants';
|
|
|
9
9
|
*/
|
|
10
10
|
export const Inject = (Injection, expression) => {
|
|
11
11
|
return (target, propertyKey) => {
|
|
12
|
-
const dependencies =
|
|
13
|
-
defineMetadata('design:type', Injection, target, propertyKey);
|
|
12
|
+
const dependencies = getTypedMetadata(ComponentConstants.DependencyKey, target.constructor) || {};
|
|
14
13
|
if (!dependencies[propertyKey]) {
|
|
15
|
-
dependencies[propertyKey] = Injection;
|
|
14
|
+
dependencies[propertyKey] = typeof Injection === 'string' ? Injection : Injection.name;
|
|
16
15
|
}
|
|
17
|
-
|
|
16
|
+
defineTypedMetadata(ComponentConstants.DependencyKey, dependencies, target.constructor);
|
|
18
17
|
if (expression) {
|
|
19
|
-
const expressions =
|
|
18
|
+
const expressions = getTypedMetadata(ComponentConstants.ExpressionKey, target.constructor) || {};
|
|
20
19
|
if (!expressions[propertyKey]) {
|
|
21
20
|
expressions[propertyKey] = expression;
|
|
22
21
|
}
|
|
23
|
-
|
|
22
|
+
defineTypedMetadata(ComponentConstants.ExpressionKey, expressions, target.constructor);
|
|
24
23
|
}
|
|
25
24
|
};
|
|
26
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Inject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Inject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,SAAyB,EAAE,UAAwC,EAAqB,EAAE;IAC/G,OAAO,CAAC,MAAc,EAAE,WAAmB,EAAQ,EAAE;QACnD,MAAM,YAAY,GAChB,gBAAgB,CAAe,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE7F,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;QACzF,CAAC;QAED,mBAAmB,CAAe,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEtG,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,WAAW,GACf,gBAAgB,CAAc,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE5F,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;YACxC,CAAC;YAED,mBAAmB,CAAc,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ComponentConstants } from '../../constants';
|
|
2
|
+
import { defineTypedMetadata, getTypedMetadata } from '../../../utils/typedMetadata';
|
|
3
|
+
/**
|
|
4
|
+
* A decorator that marks a method to be called after the component's construction.
|
|
5
|
+
*
|
|
6
|
+
* @returns {PropertyDecorator} The property decorator function.
|
|
7
|
+
*/
|
|
8
|
+
export const PostConstruct = () => {
|
|
9
|
+
return (target, propertyKey) => {
|
|
10
|
+
const postConstructs = getTypedMetadata(ComponentConstants.PostConstructKey, target.constructor) || [];
|
|
11
|
+
if (!postConstructs.includes(propertyKey)) {
|
|
12
|
+
postConstructs.push(propertyKey);
|
|
13
|
+
}
|
|
14
|
+
defineTypedMetadata(ComponentConstants.PostConstructKey, postConstructs, target.constructor);
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=PostConstruct.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostConstruct.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/PostConstruct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAsB,EAAE;IACnD,OAAO,CAAC,MAAc,EAAE,WAAmB,EAAQ,EAAE;QACnD,MAAM,cAAc,GAClB,gBAAgB,CAAW,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE5F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,mBAAmB,CAAW,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzG,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineMetadata, getMetadata } from 'reflect-metadata/no-conflict';
|
|
2
1
|
import { ComponentConstants } from '../../constants';
|
|
2
|
+
import { defineTypedMetadata, getTypedMetadata } from '../../../utils/typedMetadata';
|
|
3
3
|
/**
|
|
4
4
|
* Property decorator to define a strategy.
|
|
5
5
|
*
|
|
@@ -9,20 +9,20 @@ import { ComponentConstants } from '../../constants';
|
|
|
9
9
|
*/
|
|
10
10
|
export const Strategy = (Injection, expression) => {
|
|
11
11
|
return (target, propertyKey) => {
|
|
12
|
-
const strategies =
|
|
13
|
-
|
|
12
|
+
const strategies = getTypedMetadata(ComponentConstants.StrategyKey, target.constructor) || {};
|
|
13
|
+
defineTypedMetadata('design:type', Injection, target, propertyKey);
|
|
14
14
|
const injectionName = typeof Injection === 'string' ? Injection : Injection.name;
|
|
15
15
|
if (!strategies[propertyKey]) {
|
|
16
16
|
strategies[propertyKey] = injectionName;
|
|
17
17
|
}
|
|
18
18
|
if (expression) {
|
|
19
|
-
const expressions =
|
|
19
|
+
const expressions = getTypedMetadata(ComponentConstants.ExpressionKey, target.constructor) || {};
|
|
20
20
|
if (!expressions[propertyKey]) {
|
|
21
21
|
expressions[propertyKey] = expression;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
defineTypedMetadata(ComponentConstants.ExpressionKey, expressions, target.constructor);
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
defineTypedMetadata(ComponentConstants.StrategyKey, strategies, target.constructor);
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
28
|
//# sourceMappingURL=Strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Strategy.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Strategy.js","sourceRoot":"","sources":["../../../../../lib/ioc/component/decorators/Strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAyB,EAAE,UAAmC,EAAqB,EAAE;IAC5G,OAAO,CAAC,MAAc,EAAE,WAAmB,EAAE,EAAE;QAC7C,MAAM,UAAU,GACd,gBAAgB,CAAa,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEzF,mBAAmB,CAAiB,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAEnF,MAAM,aAAa,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;QAEjF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;QAC1C,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,WAAW,GACf,gBAAgB,CAAc,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE5F,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;YACxC,CAAC;YAED,mBAAmB,CAAc,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACtG,CAAC;QAED,mBAAmB,CAAa,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAClG,CAAC,CAAC;AACJ,CAAC,CAAC"}
|