@tsed/di 7.0.0-beta.1 → 7.0.0-beta.12
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/lib/cjs/constants/{index.js → constants.js} +1 -1
- package/lib/cjs/constants/constants.js.map +1 -0
- package/lib/cjs/decorators/constant.js +1 -1
- package/lib/cjs/decorators/constant.js.map +1 -1
- package/lib/cjs/decorators/controller.js.map +1 -1
- package/lib/cjs/decorators/inject.js +27 -2
- package/lib/cjs/decorators/inject.js.map +1 -1
- package/lib/cjs/decorators/injectable.js +0 -2
- package/lib/cjs/decorators/injectable.js.map +1 -1
- package/lib/cjs/decorators/intercept.js +20 -12
- package/lib/cjs/decorators/intercept.js.map +1 -1
- package/lib/cjs/decorators/module.js +4 -3
- package/lib/cjs/decorators/module.js.map +1 -1
- package/lib/cjs/decorators/opts.js +1 -1
- package/lib/cjs/decorators/opts.js.map +1 -1
- package/lib/cjs/decorators/useOpts.js +1 -1
- package/lib/cjs/decorators/useOpts.js.map +1 -1
- package/lib/cjs/decorators/value.js +1 -1
- package/lib/cjs/decorators/value.js.map +1 -1
- package/lib/cjs/domain/Container.js.map +1 -1
- package/lib/cjs/domain/DIContext.js.map +1 -1
- package/lib/cjs/domain/Provider.js.map +1 -1
- package/lib/cjs/errors/InjectionError.js.map +1 -1
- package/lib/cjs/index.js +55 -17
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces/DIConfigurationOptions.js.map +1 -1
- package/lib/cjs/interfaces/ProviderOpts.js +3 -0
- package/lib/cjs/interfaces/ProviderOpts.js.map +1 -0
- package/lib/cjs/interfaces/RegistrySettings.js.map +1 -1
- package/lib/cjs/interfaces/{IProvider.js → TokenRoute.js} +1 -1
- package/lib/cjs/interfaces/TokenRoute.js.map +1 -0
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/registries/GlobalProviders.js +4 -4
- package/lib/cjs/registries/GlobalProviders.js.map +1 -1
- package/lib/cjs/registries/ProviderRegistry.js +7 -6
- package/lib/cjs/registries/ProviderRegistry.js.map +1 -1
- package/lib/cjs/services/DIConfiguration.js +7 -0
- package/lib/cjs/services/DIConfiguration.js.map +1 -1
- package/lib/cjs/services/DITest.js +8 -0
- package/lib/cjs/services/DITest.js.map +1 -1
- package/lib/cjs/services/InjectorService.js +65 -57
- package/lib/cjs/services/InjectorService.js.map +1 -1
- package/lib/cjs/utils/getConfiguration.js +11 -2
- package/lib/cjs/utils/getConfiguration.js.map +1 -1
- package/lib/cjs/utils/resolveControllers.js +47 -0
- package/lib/cjs/utils/resolveControllers.js.map +1 -0
- package/lib/cjs/utils/runInContext.js +19 -0
- package/lib/cjs/utils/runInContext.js.map +1 -0
- package/lib/esm/constants/{index.js → constants.js} +1 -1
- package/lib/esm/constants/constants.js.map +1 -0
- package/lib/esm/decorators/configuration.js +1 -1
- package/lib/esm/decorators/constant.js +2 -2
- package/lib/esm/decorators/constant.js.map +1 -1
- package/lib/esm/decorators/controller.js +1 -1
- package/lib/esm/decorators/controller.js.map +1 -1
- package/lib/esm/decorators/inject.js +25 -1
- package/lib/esm/decorators/inject.js.map +1 -1
- package/lib/esm/decorators/injectable.js +1 -3
- package/lib/esm/decorators/injectable.js.map +1 -1
- package/lib/esm/decorators/intercept.js +21 -13
- package/lib/esm/decorators/intercept.js.map +1 -1
- package/lib/esm/decorators/interceptor.js +2 -2
- package/lib/esm/decorators/lazyInject.js +1 -1
- package/lib/esm/decorators/module.js +4 -3
- package/lib/esm/decorators/module.js.map +1 -1
- package/lib/esm/decorators/opts.js +4 -4
- package/lib/esm/decorators/opts.js.map +1 -1
- package/lib/esm/decorators/overrideProvider.js +1 -1
- package/lib/esm/decorators/scope.js +1 -1
- package/lib/esm/decorators/service.js +1 -1
- package/lib/esm/decorators/useOpts.js +1 -1
- package/lib/esm/decorators/useOpts.js.map +1 -1
- package/lib/esm/decorators/value.js +2 -2
- package/lib/esm/decorators/value.js.map +1 -1
- package/lib/esm/domain/Container.js +2 -2
- package/lib/esm/domain/Container.js.map +1 -1
- package/lib/esm/domain/DIContext.js +2 -2
- package/lib/esm/domain/DIContext.js.map +1 -1
- package/lib/esm/domain/Provider.js +2 -2
- package/lib/esm/domain/Provider.js.map +1 -1
- package/lib/esm/errors/InjectionError.js +1 -1
- package/lib/esm/errors/InjectionError.js.map +1 -1
- package/lib/esm/index.js +55 -17
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interfaces/DIConfigurationOptions.js.map +1 -1
- package/lib/esm/interfaces/ProviderOpts.js +2 -0
- package/lib/esm/interfaces/ProviderOpts.js.map +1 -0
- package/lib/esm/interfaces/RegistrySettings.js.map +1 -1
- package/lib/esm/interfaces/TokenRoute.js +2 -0
- package/lib/esm/interfaces/TokenRoute.js.map +1 -0
- package/lib/esm/package.json +3 -0
- package/lib/esm/registries/GlobalProviders.js +2 -2
- package/lib/esm/registries/GlobalProviders.js.map +1 -1
- package/lib/esm/registries/ProviderRegistry.js +5 -4
- package/lib/esm/registries/ProviderRegistry.js.map +1 -1
- package/lib/esm/services/DIConfiguration.js +7 -0
- package/lib/esm/services/DIConfiguration.js.map +1 -1
- package/lib/esm/services/DILogger.js +2 -2
- package/lib/esm/services/DITest.js +12 -4
- package/lib/esm/services/DITest.js.map +1 -1
- package/lib/esm/services/InjectorService.js +47 -39
- package/lib/esm/services/InjectorService.js.map +1 -1
- package/lib/esm/utils/createContainer.js +2 -2
- package/lib/esm/utils/getConfiguration.js +10 -2
- package/lib/esm/utils/getConfiguration.js.map +1 -1
- package/lib/esm/utils/resolveControllers.js +42 -0
- package/lib/esm/utils/resolveControllers.js.map +1 -0
- package/lib/esm/utils/runInContext.js +13 -0
- package/lib/esm/utils/runInContext.js.map +1 -0
- package/lib/types/constants/{index.d.ts → constants.d.ts} +0 -0
- package/lib/types/decorators/controller.d.ts +2 -2
- package/lib/types/decorators/inject.d.ts +15 -0
- package/lib/types/decorators/injectable.d.ts +2 -4
- package/lib/types/decorators/intercept.d.ts +2 -2
- package/lib/types/decorators/module.d.ts +3 -2
- package/lib/types/domain/Container.d.ts +3 -3
- package/lib/types/domain/DIContext.d.ts +0 -6
- package/lib/types/domain/Provider.d.ts +4 -6
- package/lib/types/errors/InjectionError.d.ts +1 -1
- package/lib/types/index.d.ts +49 -11
- package/lib/types/interfaces/DIConfigurationOptions.d.ts +4 -0
- package/lib/types/interfaces/{IProvider.d.ts → ProviderOpts.d.ts} +5 -4
- package/lib/types/interfaces/RegistrySettings.d.ts +1 -1
- package/lib/types/interfaces/TokenRoute.d.ts +5 -0
- package/lib/types/registries/GlobalProviders.d.ts +6 -4
- package/lib/types/registries/ProviderRegistry.d.ts +4 -4
- package/lib/types/services/DIConfiguration.d.ts +6 -2
- package/lib/types/services/DITest.d.ts +2 -0
- package/lib/types/services/InjectorService.d.ts +17 -18
- package/lib/types/utils/getConfiguration.d.ts +1 -0
- package/lib/types/utils/resolveControllers.d.ts +12 -0
- package/lib/types/utils/runInContext.d.ts +6 -0
- package/package.json +28 -10
- package/readme.md +39 -42
- package/tsconfig.compile.esm.json +1 -0
- package/lib/cjs/constants/index.js.map +0 -1
- package/lib/cjs/decorators/index.js +0 -19
- package/lib/cjs/decorators/index.js.map +0 -1
- package/lib/cjs/domain/index.js +0 -12
- package/lib/cjs/domain/index.js.map +0 -1
- package/lib/cjs/interfaces/IProvider.js.map +0 -1
- package/lib/cjs/interfaces/index.js +0 -18
- package/lib/cjs/interfaces/index.js.map +0 -1
- package/lib/cjs/utils/data/Test1.js +0 -8
- package/lib/cjs/utils/data/Test1.js.map +0 -1
- package/lib/cjs/utils/data/Test2.js +0 -8
- package/lib/cjs/utils/data/Test2.js.map +0 -1
- package/lib/esm/constants/index.js.map +0 -1
- package/lib/esm/decorators/index.js +0 -16
- package/lib/esm/decorators/index.js.map +0 -1
- package/lib/esm/domain/index.js +0 -9
- package/lib/esm/domain/index.js.map +0 -1
- package/lib/esm/interfaces/IProvider.js +0 -2
- package/lib/esm/interfaces/IProvider.js.map +0 -1
- package/lib/esm/interfaces/index.js +0 -15
- package/lib/esm/interfaces/index.js.map +0 -1
- package/lib/esm/utils/data/Test1.js +0 -4
- package/lib/esm/utils/data/Test1.js.map +0 -1
- package/lib/esm/utils/data/Test2.js +0 -4
- package/lib/esm/utils/data/Test2.js.map +0 -1
- package/lib/types/decorators/index.d.ts +0 -15
- package/lib/types/domain/index.d.ts +0 -8
- package/lib/types/interfaces/index.d.ts +0 -14
- package/lib/types/utils/data/Test1.d.ts +0 -3
- package/lib/types/utils/data/Test2.d.ts +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalProviders.js","sourceRoot":"","sources":["../../../src/registries/GlobalProviders.ts"],"names":[],"mappings":";;;;;AAAA,qCAAkD;AAClD,iDAA4C;AAC5C,yDAAoD;
|
|
1
|
+
{"version":3,"file":"GlobalProviders.js","sourceRoot":"","sources":["../../../src/registries/GlobalProviders.ts"],"names":[],"mappings":"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","sourcesContent":["import {getClassOrSymbol, Type} from \"@tsed/core\";\nimport {Provider} from \"../domain/Provider\";\nimport {ProviderType} from \"../domain/ProviderType\";\nimport type {InjectorService} from \"../services/InjectorService\";\nimport {ResolvedInvokeOptions} from \"../interfaces/ResolvedInvokeOptions\";\nimport {TokenProvider} from \"../interfaces/TokenProvider\";\nimport {RegistrySettings} from \"../interfaces/RegistrySettings\";\nimport {ProviderOpts} from \"../interfaces/ProviderOpts\";\n\nexport class GlobalProviderRegistry extends Map<TokenProvider, Provider> {\n #settings: Map<string, RegistrySettings> = new Map();\n\n /**\n * The get() method returns a specified element from a Map object.\n * @param key Required. The key of the element to return from the Map object.\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n */\n get(key: TokenProvider): Provider | undefined {\n return super.get(getClassOrSymbol(key));\n }\n\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n * @param key\n * @returns {boolean}\n */\n has(key: TokenProvider): boolean {\n return super.has(getClassOrSymbol(key));\n }\n\n /**\n * The set() method adds or updates an element with a specified key and value to a Map object.\n * @param key Required. The key of the element to add to the Map object.\n * @param metadata Required. The value of the element to add to the Map object.\n */\n set(key: TokenProvider, metadata: Provider): this {\n super.set(getClassOrSymbol(key), metadata);\n\n return this;\n }\n\n /**\n *\n * @param target\n * @param options\n */\n merge(target: TokenProvider, options: Partial<ProviderOpts>): void {\n const meta = this.createIfNotExists(target, options);\n\n Object.keys(options).forEach((key) => {\n meta[key] = (options as any)[key];\n });\n\n this.set(target, meta);\n }\n\n /**\n * The delete() method removes the specified element from a Map object.\n * @param key Required. The key of the element to remove from the Map object.\n * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.\n */\n delete(key: TokenProvider): boolean {\n return super.delete(getClassOrSymbol(key));\n }\n\n createRegistry(type: string, model: Type<Provider>, options: Partial<RegistrySettings> = {}) {\n const defaultOptions = this.getRegistrySettings(type);\n\n options = Object.assign(defaultOptions, {\n ...options,\n model\n });\n\n this.#settings.set(type, options);\n\n return this;\n }\n\n onInvoke(provider: Provider, locals: Map<TokenProvider, any>, options: ResolvedInvokeOptions & {injector: InjectorService}) {\n const settings = this.#settings.get(provider.type);\n\n if (settings?.onInvoke) {\n settings.onInvoke(provider, locals, options);\n }\n }\n\n getRegistrySettings(target: string | TokenProvider): RegistrySettings {\n let type: string = \"provider\";\n\n if (typeof target === \"string\") {\n type = target;\n } else {\n const provider = this.get(target);\n if (provider) {\n type = provider.type;\n }\n }\n\n return (\n this.#settings.get(type) || {\n model: Provider\n }\n );\n }\n\n createRegisterFn(type: string) {\n return (provider: any | ProviderOpts, instance?: any): void => {\n // istanbul ignore next\n if (!provider.provide) {\n provider = {\n provide: provider\n };\n }\n\n provider = Object.assign({instance}, provider, {type});\n this.merge(provider.provide, provider);\n };\n }\n\n /**\n *\n * @param key\n * @param options\n */\n protected createIfNotExists(key: TokenProvider, options: Partial<ProviderOpts>): Provider {\n const type = options.type || ProviderType.PROVIDER;\n\n if (!this.has(key)) {\n const {model = Provider} = this.#settings.get(type) || {};\n\n const item = new model(key, options);\n\n this.set(key, item);\n }\n\n return this.get(key)!;\n }\n}\n\n/**\n *\n * @type {GlobalProviders}\n */\n// tslint:disable-next-line: variable-name\nexport const GlobalProviders = new GlobalProviderRegistry();\n"]}
|
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerController = exports.registerValue = exports.registerProvider = void 0;
|
|
4
4
|
const Provider_1 = require("../domain/Provider");
|
|
5
|
-
const
|
|
5
|
+
const ProviderScope_1 = require("../domain/ProviderScope");
|
|
6
|
+
const ProviderType_1 = require("../domain/ProviderType");
|
|
6
7
|
const GlobalProviders_1 = require("./GlobalProviders");
|
|
7
8
|
/**
|
|
8
9
|
*
|
|
9
10
|
*/
|
|
10
|
-
GlobalProviders_1.GlobalProviders.createRegistry(
|
|
11
|
+
GlobalProviders_1.GlobalProviders.createRegistry(ProviderType_1.ProviderType.CONTROLLER, Provider_1.Provider);
|
|
11
12
|
/**
|
|
12
13
|
* Register a provider configuration.
|
|
13
|
-
* @param {
|
|
14
|
+
* @param {ProviderOpts<any>} provider
|
|
14
15
|
*/
|
|
15
16
|
function registerProvider(provider) {
|
|
16
17
|
if (!provider.provide) {
|
|
@@ -47,9 +48,9 @@ const registerValue = (provider, value) => {
|
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
50
|
provider = Object.assign({
|
|
50
|
-
scope:
|
|
51
|
+
scope: ProviderScope_1.ProviderScope.SINGLETON,
|
|
51
52
|
useValue: value
|
|
52
|
-
}, provider, { type:
|
|
53
|
+
}, provider, { type: ProviderType_1.ProviderType.VALUE });
|
|
53
54
|
GlobalProviders_1.GlobalProviders.merge(provider.provide, provider);
|
|
54
55
|
};
|
|
55
56
|
exports.registerValue = registerValue;
|
|
@@ -81,5 +82,5 @@ exports.registerValue = registerValue;
|
|
|
81
82
|
*
|
|
82
83
|
* @param provider Provider configuration.
|
|
83
84
|
*/
|
|
84
|
-
exports.registerController = GlobalProviders_1.GlobalProviders.createRegisterFn(
|
|
85
|
+
exports.registerController = GlobalProviders_1.GlobalProviders.createRegisterFn(ProviderType_1.ProviderType.CONTROLLER);
|
|
85
86
|
//# sourceMappingURL=ProviderRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../src/registries/ProviderRegistry.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;
|
|
1
|
+
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../src/registries/ProviderRegistry.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,2DAAsD;AACtD,yDAAoD;AAEpD,uDAAkD;AAElD;;GAEG;AACH,iCAAe,CAAC,cAAc,CAAC,2BAAY,CAAC,UAAU,EAAE,mBAAQ,CAAC,CAAC;AAElE;;;GAGG;AACH,SAAgB,gBAAgB,CAAa,QAAqC;IAChF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IAED,iCAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAND,4CAMC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,MAAM,aAAa,GAAG,CAAC,QAAiC,EAAE,KAAW,EAAQ,EAAE;IACpF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QACrB,QAAQ,GAAG;YACT,OAAO,EAAE,QAAQ;SAClB,CAAC;KACH;IAED,QAAQ,GAAG,MAAM,CAAC,MAAM,CACtB;QACE,KAAK,EAAE,6BAAa,CAAC,SAAS;QAC9B,QAAQ,EAAE,KAAK;KAChB,EACD,QAAQ,EACR,EAAC,IAAI,EAAE,2BAAY,CAAC,KAAK,EAAC,CAC3B,CAAC;IACF,iCAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAhBW,QAAA,aAAa,iBAgBxB;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACU,QAAA,kBAAkB,GAAG,iCAAe,CAAC,gBAAgB,CAAC,2BAAY,CAAC,UAAU,CAAC,CAAC","sourcesContent":["import {Provider} from \"../domain/Provider\";\nimport {ProviderScope} from \"../domain/ProviderScope\";\nimport {ProviderType} from \"../domain/ProviderType\";\nimport type {ProviderOpts} from \"../interfaces/ProviderOpts\";\nimport {GlobalProviders} from \"./GlobalProviders\";\n\n/**\n *\n */\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, Provider);\n\n/**\n * Register a provider configuration.\n * @param {ProviderOpts<any>} provider\n */\nexport function registerProvider<Type = any>(provider: Partial<ProviderOpts<Type>>): void {\n if (!provider.provide) {\n throw new Error(\"Provider.provide is required\");\n }\n\n GlobalProviders.merge(provider.provide, provider);\n}\n\n/**\n * Add a new value in the `ProviderRegistry`.\n *\n * #### Example with symbol definition\n *\n *\n * ```typescript\n * import {registerValue, InjectorService} from \"@tsed/di\";\n *\n * const MyValue = Symbol.from(\"MyValue\")\n *\n * registerValue({token: MyValue, useValue: \"myValue\"});\n *\n * @Service()\n * export class OtherService {\n * constructor(@Inject(MyValue) myValue: string){\n * console.log(myValue); /// \"myValue\"\n * }\n * }\n * ```\n */\nexport const registerValue = (provider: any | ProviderOpts<any>, value?: any): void => {\n if (!provider.provide) {\n provider = {\n provide: provider\n };\n }\n\n provider = Object.assign(\n {\n scope: ProviderScope.SINGLETON,\n useValue: value\n },\n provider,\n {type: ProviderType.VALUE}\n );\n GlobalProviders.merge(provider.provide, provider);\n};\n\n/**\n * Add a new controller in the `ProviderRegistry`. This controller will be built when `InjectorService` will be loaded.\n *\n * #### Example\n *\n * ```typescript\n * import {registerController, InjectorService} from \"@tsed/di\";\n *\n * export default class MyController {\n * constructor(){}\n * transform() {\n * return \"test\";\n * }\n * }\n *\n * registerController({provide: MyController});\n * // or\n * registerController(MyController);\n *\n * const injector = new InjectorService();\n * injector.load();\n *\n * const myController = injector.get<MyController>(MyController);\n * myController.getFoo(); // test\n * ```\n *\n * @param provider Provider configuration.\n */\nexport const registerController = GlobalProviders.createRegisterFn(ProviderType.CONTROLLER);\n"]}
|
|
@@ -10,6 +10,7 @@ class DIConfiguration {
|
|
|
10
10
|
scopes: {},
|
|
11
11
|
resolvers: [],
|
|
12
12
|
imports: [],
|
|
13
|
+
routes: [],
|
|
13
14
|
...initialProps
|
|
14
15
|
}).forEach(([key, value]) => {
|
|
15
16
|
this.default.set(key, value);
|
|
@@ -38,6 +39,12 @@ class DIConfiguration {
|
|
|
38
39
|
set imports(imports) {
|
|
39
40
|
this.setRaw("imports", imports);
|
|
40
41
|
}
|
|
42
|
+
get routes() {
|
|
43
|
+
return this.getRaw("routes");
|
|
44
|
+
}
|
|
45
|
+
set routes(routes) {
|
|
46
|
+
this.setRaw("routes", routes);
|
|
47
|
+
}
|
|
41
48
|
/**
|
|
42
49
|
*
|
|
43
50
|
* @param callbackfn
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DIConfiguration.js","sourceRoot":"","sources":["../../../src/services/DIConfiguration.ts"],"names":[],"mappings":";;;AAAA,qCAAmF;
|
|
1
|
+
{"version":3,"file":"DIConfiguration.js","sourceRoot":"","sources":["../../../src/services/DIConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import {classOf, deepMerge, getValue, proxyDelegation, setValue} from \"@tsed/core\";\nimport {ProviderScope} from \"../domain/ProviderScope\";\nimport type {DIResolver} from \"../interfaces/DIResolver\";\nimport type {TokenProvider} from \"../interfaces/TokenProvider\";\nimport {TokenRoute} from \"../interfaces/TokenRoute\";\n\nexport class DIConfiguration {\n readonly default: Map<string, any> = new Map();\n protected map: Map<string, any> = new Map();\n\n [key: string]: any;\n\n constructor(initialProps = {}) {\n Object.entries({\n scopes: {},\n resolvers: [],\n imports: [],\n routes: [],\n ...initialProps\n }).forEach(([key, value]) => {\n this.default.set(key, value);\n });\n\n return proxyDelegation<DIConfiguration>(this, {\n ownKeys(target) {\n return [...target.default.keys(), ...target.map.keys()];\n }\n });\n }\n\n get scopes(): {[key: string]: ProviderScope} {\n return this.getRaw(\"scopes\");\n }\n\n set scopes(value: {[key: string]: ProviderScope}) {\n this.setRaw(\"scopes\", value);\n }\n\n get resolvers(): DIResolver[] {\n return this.getRaw(\"resolvers\");\n }\n\n set resolvers(resolvers: DIResolver[]) {\n this.setRaw(\"resolvers\", resolvers);\n }\n\n get imports(): TokenProvider[] {\n return this.getRaw(\"imports\");\n }\n\n set imports(imports: TokenProvider[]) {\n this.setRaw(\"imports\", imports);\n }\n\n get routes(): TokenRoute[] {\n return this.getRaw(\"routes\");\n }\n\n set routes(routes: TokenRoute[]) {\n this.setRaw(\"routes\", routes);\n }\n\n /**\n *\n * @param callbackfn\n * @param thisArg\n */\n forEach(callbackfn: (value: any, index: string, map: Map<string, any>) => void, thisArg?: any) {\n return new Set([...Array.from(this.default.keys()), ...Array.from(this.map.keys())]).forEach((key) => {\n callbackfn(this.getRaw(key), key, this.map);\n }, thisArg);\n }\n\n /**\n *\n * @param propertyKey\n * @param value\n */\n set(propertyKey: string | Partial<TsED.Configuration>, value?: any): this {\n if (typeof propertyKey === \"string\") {\n this.setRaw(propertyKey, value);\n } else {\n Object.entries(propertyKey).forEach(([key, value]) => {\n this[key] = value;\n });\n }\n\n return this;\n }\n\n setRaw(propertyKey: string, value: any) {\n setValue(this.map, propertyKey, value);\n\n return this;\n }\n\n /**\n *\n * @param propertyKey\n * @param defaultValue\n * @returns {undefined|any}\n */\n get<T = any>(propertyKey: string, defaultValue?: T): T {\n return this.resolve(this.getRaw(propertyKey, defaultValue));\n }\n\n getRaw(propertyKey: string, defaultValue?: any): any {\n const value = getValue(this.map, propertyKey);\n\n if (value !== undefined) {\n return value;\n }\n\n return getValue(this.default, propertyKey, defaultValue);\n }\n\n merge(obj: Partial<TsED.Configuration>) {\n Object.entries(obj).forEach(([key, value]) => {\n const descriptor = Object.getOwnPropertyDescriptor(DIConfiguration.prototype, key);\n const originalValue = this.get(key);\n value = deepMerge(value, originalValue);\n\n if (descriptor && ![\"default\", \"set\", \"map\", \"get\"].includes(key)) {\n this[key] = value;\n }\n });\n }\n\n /**\n *\n * @param value\n * @returns {any}\n */\n resolve(value: any) {\n if (typeof value === \"object\" && value !== null) {\n if (![Array, Object].includes(classOf(value))) {\n return value;\n }\n\n return Object.entries(value).reduce(\n (o, [k, v]) => {\n // @ts-ignore\n o[k] = this.resolve(v);\n\n return o;\n },\n Array.isArray(value) ? [] : {}\n );\n }\n\n if (typeof value === \"string\") {\n const replacer = (match: string, key: string) => getValue(this.map, key);\n return value\n .replace(/\\${([\\w.]+)}/gi, replacer)\n .replace(/<([\\w.]+)>/gi, replacer)\n .replace(/{{([\\w.]+)}}/gi, replacer);\n }\n\n return value;\n }\n\n build() {\n this.forEach((value, key) => this.map.set(key, this.resolve(value)));\n\n this.set = this.setRaw;\n this.get = this.getRaw = (propertyKey: string, defaultValue?: any) => getValue(this.map, propertyKey, defaultValue);\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ const createContainer_1 = require("../utils/createContainer");
|
|
|
7
7
|
const LocalsContainer_1 = require("../domain/LocalsContainer");
|
|
8
8
|
const setLoggerLevel_1 = require("../utils/setLoggerLevel");
|
|
9
9
|
const InjectorService_1 = require("./InjectorService");
|
|
10
|
+
const DIContext_1 = require("../domain/DIContext");
|
|
10
11
|
/**
|
|
11
12
|
* Tool to run test with lightweight DI sandbox.
|
|
12
13
|
*/
|
|
@@ -92,6 +93,13 @@ class DITest {
|
|
|
92
93
|
static get(target, options = {}) {
|
|
93
94
|
return DITest.injector.get(target, options);
|
|
94
95
|
}
|
|
96
|
+
static createDIContext() {
|
|
97
|
+
return new DIContext_1.DIContext({
|
|
98
|
+
id: "id",
|
|
99
|
+
injector: DITest.injector,
|
|
100
|
+
logger: DITest.injector.logger
|
|
101
|
+
});
|
|
102
|
+
}
|
|
95
103
|
static configure(settings = {}) {
|
|
96
104
|
return {
|
|
97
105
|
...settings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DITest.js","sourceRoot":"","sources":["../../../src/services/DITest.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,yCAAkC;AAClC,8DAAyD;AACzD,+DAA0D;AAG1D,4DAAuD;AACvD,uDAAkD;
|
|
1
|
+
{"version":3,"file":"DITest.js","sourceRoot":"","sources":["../../../src/services/DITest.ts"],"names":[],"mappings":"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","sourcesContent":["import {Env, getValue} from \"@tsed/core\";\nimport {$log} from \"@tsed/logger\";\nimport {createContainer} from \"../utils/createContainer\";\nimport {LocalsContainer} from \"../domain/LocalsContainer\";\nimport {OnInit} from \"../interfaces/OnInit\";\nimport {TokenProvider} from \"../interfaces/TokenProvider\";\nimport {setLoggerLevel} from \"../utils/setLoggerLevel\";\nimport {InjectorService} from \"./InjectorService\";\nimport {DIContext} from \"../domain/DIContext\";\n\nexport interface DITestInvokeOptions {\n token?: TokenProvider;\n use: any;\n}\n\nexport interface DITestOptions extends Partial<TsED.Configuration> {\n imports?: DITestInvokeOptions[];\n}\n\n/**\n * Tool to run test with lightweight DI sandbox.\n */\nexport class DITest {\n protected static _injector: InjectorService | null = null;\n\n static get injector(): InjectorService {\n if (DITest._injector) {\n return DITest._injector!;\n }\n\n /* istanbul ignore next */\n throw new Error(\n \"PlatformTest.injector is not initialized. Use PlatformTest.create(): Promise before PlatformTest.invoke() or PlatformTest.injector.\\n\" +\n \"Example:\\n\" +\n \"before(async () => {\\n\" +\n \" await PlatformTest.create()\\n\" +\n \" await PlatformTest.invoke(MyService, [])\\n\" +\n \"})\"\n );\n }\n\n static set injector(injector: InjectorService) {\n DITest._injector = injector;\n }\n\n static hasInjector() {\n return !!DITest._injector;\n }\n\n static async create(settings: DITestOptions = {}) {\n DITest.injector = DITest.createInjector(settings);\n\n await this.createContainer(settings);\n }\n\n static async createContainer(settings: DITestOptions = {}) {\n const container = createContainer();\n\n settings.imports?.forEach(({token, use}) => {\n container.addProvider(token, {\n useValue: use\n });\n });\n\n await DITest.injector.load(container);\n }\n\n /**\n * Create a new injector with the right default services\n */\n static createInjector(settings: any = {}): InjectorService {\n const injector = new InjectorService();\n injector.logger = $log;\n\n // @ts-ignore\n injector.settings.set(DITest.configure(settings));\n\n setLoggerLevel(injector);\n\n return injector;\n }\n\n /**\n * Resets the test injector of the test context, so it won't pollute your next test. Call this in your `tearDown` logic.\n */\n static async reset() {\n if (DITest.hasInjector()) {\n await DITest.injector.destroy();\n DITest._injector = null;\n }\n }\n\n /**\n * Invoke a provider and return a fresh instance\n * @param target\n * @param providers\n */\n static invoke<T = any>(target: TokenProvider, providers: DITestInvokeOptions[] = []): T | Promise<T> {\n const locals = new LocalsContainer();\n providers.forEach((p) => {\n locals.set(p.token, p.use);\n });\n\n locals.set(InjectorService, DITest.injector);\n\n const instance: OnInit = DITest.injector.invoke(target, locals, {rebuild: true});\n\n if (instance && instance.$onInit) {\n // await instance.$onInit();\n const result = instance.$onInit();\n if (result instanceof Promise) {\n return result.then(() => instance as any);\n }\n }\n\n return instance as any;\n }\n\n /**\n * Return the instance from injector registry\n * @param target\n * @param options\n */\n static get<T = any>(target: TokenProvider, options: any = {}): T {\n return DITest.injector.get<T>(target, options)!;\n }\n\n static createDIContext() {\n return new DIContext({\n id: \"id\",\n injector: DITest.injector,\n logger: DITest.injector.logger\n });\n }\n\n protected static configure(settings: Partial<TsED.Configuration> = {}): Partial<TsED.Configuration> {\n return {\n ...settings,\n env: getValue(settings, \"env\", Env.TEST),\n logger: {\n ...getValue(settings, \"logger\", {}),\n level: getValue(settings, \"logger.level\", \"off\")\n }\n };\n }\n}\n"]}
|
|
@@ -5,10 +5,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.InjectorService = void 0;
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
7
|
const core_1 = require("@tsed/core");
|
|
8
|
-
const constants_1 = require("../constants");
|
|
8
|
+
const constants_1 = require("../constants/constants");
|
|
9
9
|
const configuration_1 = require("../decorators/configuration");
|
|
10
10
|
const injectable_1 = require("../decorators/injectable");
|
|
11
|
-
const domain_1 = require("../domain");
|
|
12
11
|
const Container_1 = require("../domain/Container");
|
|
13
12
|
const LocalsContainer_1 = require("../domain/LocalsContainer");
|
|
14
13
|
const Provider_1 = require("../domain/Provider");
|
|
@@ -16,7 +15,10 @@ const InjectionError_1 = require("../errors/InjectionError");
|
|
|
16
15
|
const UndefinedTokenError_1 = require("../errors/UndefinedTokenError");
|
|
17
16
|
const GlobalProviders_1 = require("../registries/GlobalProviders");
|
|
18
17
|
const createContainer_1 = require("../utils/createContainer");
|
|
18
|
+
const resolveControllers_1 = require("../utils/resolveControllers");
|
|
19
19
|
const DIConfiguration_1 = require("./DIConfiguration");
|
|
20
|
+
const ProviderScope_1 = require("../domain/ProviderScope");
|
|
21
|
+
const InjectablePropertyType_1 = require("../domain/InjectablePropertyType");
|
|
20
22
|
/**
|
|
21
23
|
* This service contain all services collected by `@Service` or services declared manually with `InjectorService.factory()` or `InjectorService.service()`.
|
|
22
24
|
*
|
|
@@ -30,7 +32,7 @@ const DIConfiguration_1 = require("./DIConfiguration");
|
|
|
30
32
|
* import MyService2 from "./services/service2";
|
|
31
33
|
* import MyService3 from "./services/service3";
|
|
32
34
|
*
|
|
33
|
-
* // When all services
|
|
35
|
+
* // When all services are imported, you can load InjectorService.
|
|
34
36
|
* const injector = new InjectorService()
|
|
35
37
|
*
|
|
36
38
|
* await injector.load();
|
|
@@ -45,7 +47,7 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
45
47
|
this.logger = console;
|
|
46
48
|
this.resolvedConfiguration = false;
|
|
47
49
|
_InjectorService_cache.set(this, new LocalsContainer_1.LocalsContainer());
|
|
48
|
-
|
|
50
|
+
tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").set(InjectorService_1, this);
|
|
49
51
|
}
|
|
50
52
|
get resolvers() {
|
|
51
53
|
return this.settings.resolvers;
|
|
@@ -58,28 +60,13 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
58
60
|
* @param provider
|
|
59
61
|
*/
|
|
60
62
|
scopeOf(provider) {
|
|
61
|
-
return provider.scope || this.scopes[provider.type] ||
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Clone a provider from GlobalProviders and the given token. forkProvider method build automatically the provider if the instance parameter ins't given.
|
|
65
|
-
* @param token
|
|
66
|
-
* @param settings
|
|
67
|
-
* @deprecated
|
|
68
|
-
*/
|
|
69
|
-
forkProvider(token, settings = {}) {
|
|
70
|
-
if (!this.hasProvider(token)) {
|
|
71
|
-
this.addProvider(token);
|
|
72
|
-
}
|
|
73
|
-
const provider = this.getProvider(token);
|
|
74
|
-
Object.assign(provider, settings);
|
|
75
|
-
(0, tslib_1.__classPrivateFieldGet)(this, _InjectorService_cache, "f").set(token, this.invoke(token));
|
|
76
|
-
return provider;
|
|
63
|
+
return provider.scope || this.scopes[provider.type] || ProviderScope_1.ProviderScope.SINGLETON;
|
|
77
64
|
}
|
|
78
65
|
/**
|
|
79
66
|
* Return a list of instance build by the injector.
|
|
80
67
|
*/
|
|
81
68
|
toArray() {
|
|
82
|
-
return
|
|
69
|
+
return tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").toArray();
|
|
83
70
|
}
|
|
84
71
|
/**
|
|
85
72
|
* Get a service or factory already constructed from his symbol or class.
|
|
@@ -115,13 +102,22 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
115
102
|
}
|
|
116
103
|
}
|
|
117
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Return all instance of the same provider type
|
|
107
|
+
* @param type
|
|
108
|
+
*/
|
|
109
|
+
getAll(type) {
|
|
110
|
+
return this.getProviders(type).map((provider) => {
|
|
111
|
+
return this.get(provider.token);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
118
114
|
/**
|
|
119
115
|
* The has() method returns a boolean indicating whether an element with the specified key exists or not.
|
|
120
116
|
* @returns {boolean}
|
|
121
117
|
* @param token
|
|
122
118
|
*/
|
|
123
119
|
has(token) {
|
|
124
|
-
return
|
|
120
|
+
return tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").get(token) !== undefined;
|
|
125
121
|
}
|
|
126
122
|
/**
|
|
127
123
|
* Invoke the class and inject all services that required by the class constructor.
|
|
@@ -157,27 +153,27 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
157
153
|
if (!provider || options.rebuild) {
|
|
158
154
|
instance = this.resolve(token, locals, options);
|
|
159
155
|
if (this.hasProvider(token)) {
|
|
160
|
-
|
|
156
|
+
tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").set(token, instance);
|
|
161
157
|
}
|
|
162
158
|
return instance;
|
|
163
159
|
}
|
|
164
160
|
switch (this.scopeOf(provider)) {
|
|
165
|
-
case
|
|
161
|
+
case ProviderScope_1.ProviderScope.SINGLETON:
|
|
166
162
|
if (!this.has(token)) {
|
|
167
|
-
|
|
163
|
+
tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").set(token, this.resolve(token, locals, options));
|
|
168
164
|
if (provider.isAsync()) {
|
|
169
|
-
|
|
170
|
-
|
|
165
|
+
tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").get(token).then((instance) => {
|
|
166
|
+
tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").set(token, instance);
|
|
171
167
|
});
|
|
172
168
|
}
|
|
173
169
|
}
|
|
174
170
|
instance = this.get(token);
|
|
175
171
|
break;
|
|
176
|
-
case
|
|
172
|
+
case ProviderScope_1.ProviderScope.REQUEST:
|
|
177
173
|
instance = this.resolve(token, locals, options);
|
|
178
174
|
locals.set(token, instance);
|
|
179
175
|
break;
|
|
180
|
-
case
|
|
176
|
+
case ProviderScope_1.ProviderScope.INSTANCE:
|
|
181
177
|
instance = this.resolve(provider.provide, locals, options);
|
|
182
178
|
break;
|
|
183
179
|
}
|
|
@@ -192,7 +188,7 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
192
188
|
if (provider.isAsync()) {
|
|
193
189
|
await this.invoke(provider.token, locals);
|
|
194
190
|
}
|
|
195
|
-
const instance =
|
|
191
|
+
const instance = tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").get(provider.token);
|
|
196
192
|
if (instance !== undefined) {
|
|
197
193
|
locals.set(provider.token, instance);
|
|
198
194
|
}
|
|
@@ -202,10 +198,10 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
202
198
|
}
|
|
203
199
|
loadSync(locals = new LocalsContainer_1.LocalsContainer()) {
|
|
204
200
|
for (const [, provider] of this) {
|
|
205
|
-
if (!locals.has(provider.token) && this.scopeOf(provider) ===
|
|
201
|
+
if (!locals.has(provider.token) && this.scopeOf(provider) === ProviderScope_1.ProviderScope.SINGLETON) {
|
|
206
202
|
this.invoke(provider.token, locals);
|
|
207
203
|
}
|
|
208
|
-
const instance =
|
|
204
|
+
const instance = tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").get(provider.token);
|
|
209
205
|
if (instance !== undefined) {
|
|
210
206
|
locals.set(provider.token, instance);
|
|
211
207
|
}
|
|
@@ -224,6 +220,20 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
224
220
|
this.resolveConfiguration();
|
|
225
221
|
return this;
|
|
226
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Load injector from a given module
|
|
225
|
+
* @param rootModule
|
|
226
|
+
*/
|
|
227
|
+
loadModule(rootModule) {
|
|
228
|
+
this.settings.routes = this.settings.routes.concat((0, resolveControllers_1.resolveControllers)(this.settings));
|
|
229
|
+
const container = (0, createContainer_1.createContainer)();
|
|
230
|
+
container.delete(rootModule);
|
|
231
|
+
container.addProvider(rootModule, {
|
|
232
|
+
type: "server:module",
|
|
233
|
+
scope: ProviderScope_1.ProviderScope.SINGLETON
|
|
234
|
+
});
|
|
235
|
+
return this.load(container);
|
|
236
|
+
}
|
|
227
237
|
/**
|
|
228
238
|
* Build all providers from given container (or GlobalProviders) and emit `$onInit` event.
|
|
229
239
|
*
|
|
@@ -254,8 +264,10 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
254
264
|
super.forEach((provider) => {
|
|
255
265
|
if (provider.configuration && provider.type !== "server:module") {
|
|
256
266
|
Object.entries(provider.configuration).forEach(([key, value]) => {
|
|
257
|
-
|
|
258
|
-
|
|
267
|
+
if (!["resolvers", "mount", "imports"].includes(key)) {
|
|
268
|
+
value = mergedConfiguration.has(key) ? (0, core_1.deepMerge)(mergedConfiguration.get(key), value) : (0, core_1.deepClone)(value);
|
|
269
|
+
mergedConfiguration.set(key, value);
|
|
270
|
+
}
|
|
259
271
|
});
|
|
260
272
|
}
|
|
261
273
|
if (provider.resolvers) {
|
|
@@ -284,19 +296,19 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
284
296
|
}, {});
|
|
285
297
|
Object.values(properties).forEach((definition) => {
|
|
286
298
|
switch (definition.bindingType) {
|
|
287
|
-
case
|
|
299
|
+
case InjectablePropertyType_1.InjectablePropertyType.METHOD:
|
|
288
300
|
this.bindMethod(instance, definition);
|
|
289
301
|
break;
|
|
290
|
-
case
|
|
302
|
+
case InjectablePropertyType_1.InjectablePropertyType.PROPERTY:
|
|
291
303
|
this.bindProperty(instance, definition, locals, options);
|
|
292
304
|
break;
|
|
293
|
-
case
|
|
305
|
+
case InjectablePropertyType_1.InjectablePropertyType.CONSTANT:
|
|
294
306
|
this.bindConstant(instance, definition);
|
|
295
307
|
break;
|
|
296
|
-
case
|
|
308
|
+
case InjectablePropertyType_1.InjectablePropertyType.VALUE:
|
|
297
309
|
this.bindValue(instance, definition);
|
|
298
310
|
break;
|
|
299
|
-
case
|
|
311
|
+
case InjectablePropertyType_1.InjectablePropertyType.INTERCEPTOR:
|
|
300
312
|
this.bindInterceptor(instance, definition);
|
|
301
313
|
break;
|
|
302
314
|
}
|
|
@@ -403,15 +415,6 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
403
415
|
}, next);
|
|
404
416
|
};
|
|
405
417
|
}
|
|
406
|
-
/**
|
|
407
|
-
* Allow handler hack for AsyncHookContext plugin.
|
|
408
|
-
* @param ctx
|
|
409
|
-
* @param cb
|
|
410
|
-
* @protected
|
|
411
|
-
*/
|
|
412
|
-
runInContext(ctx, cb) {
|
|
413
|
-
return cb();
|
|
414
|
-
}
|
|
415
418
|
async lazyInvoke(token) {
|
|
416
419
|
let instance = this.getInstance(token);
|
|
417
420
|
if (!instance) {
|
|
@@ -429,7 +432,7 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
429
432
|
* @returns {Promise<any[]>} A list of promises.
|
|
430
433
|
*/
|
|
431
434
|
async emit(eventName, ...args) {
|
|
432
|
-
return
|
|
435
|
+
return tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").emit(eventName, ...args);
|
|
433
436
|
}
|
|
434
437
|
/**
|
|
435
438
|
* @param eventName
|
|
@@ -437,7 +440,7 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
437
440
|
* @param args
|
|
438
441
|
*/
|
|
439
442
|
alter(eventName, value, ...args) {
|
|
440
|
-
return
|
|
443
|
+
return tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").alter(eventName, value, ...args);
|
|
441
444
|
}
|
|
442
445
|
/**
|
|
443
446
|
* @param eventName
|
|
@@ -445,10 +448,10 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
445
448
|
* @param args
|
|
446
449
|
*/
|
|
447
450
|
async alterAsync(eventName, value, ...args) {
|
|
448
|
-
return
|
|
451
|
+
return tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").alterAsync(eventName, value, ...args);
|
|
449
452
|
}
|
|
450
453
|
async destroy() {
|
|
451
|
-
await
|
|
454
|
+
await tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").destroy();
|
|
452
455
|
}
|
|
453
456
|
ensureProvider(token) {
|
|
454
457
|
if (!this.hasProvider(token) && GlobalProviders_1.GlobalProviders.has(token)) {
|
|
@@ -457,7 +460,7 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
457
460
|
return this.getProvider(token);
|
|
458
461
|
}
|
|
459
462
|
getInstance(token) {
|
|
460
|
-
return
|
|
463
|
+
return tslib_1.__classPrivateFieldGet(this, _InjectorService_cache, "f").get(token);
|
|
461
464
|
}
|
|
462
465
|
/**
|
|
463
466
|
* Invoke a class method and inject service.
|
|
@@ -510,6 +513,11 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
510
513
|
if (instance && (0, core_1.isClass)((0, core_1.classOf)(instance))) {
|
|
511
514
|
this.bindInjectableProperties(instance, locals, options);
|
|
512
515
|
}
|
|
516
|
+
if (instance && provider.hooks) {
|
|
517
|
+
Object.entries(provider.hooks).forEach(([key, cb]) => {
|
|
518
|
+
instance[key] = (...args) => cb(instance, ...args);
|
|
519
|
+
});
|
|
520
|
+
}
|
|
513
521
|
return instance;
|
|
514
522
|
}
|
|
515
523
|
/**
|
|
@@ -561,7 +569,7 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
561
569
|
}
|
|
562
570
|
return {
|
|
563
571
|
token,
|
|
564
|
-
scope: scope || core_1.Store.from(token).get("scope") ||
|
|
572
|
+
scope: scope || core_1.Store.from(token).get("scope") || ProviderScope_1.ProviderScope.SINGLETON,
|
|
565
573
|
deps: deps || [],
|
|
566
574
|
imports: imports || [],
|
|
567
575
|
construct,
|
|
@@ -570,12 +578,12 @@ let InjectorService = InjectorService_1 = class InjectorService extends Containe
|
|
|
570
578
|
}
|
|
571
579
|
};
|
|
572
580
|
_InjectorService_cache = new WeakMap();
|
|
573
|
-
InjectorService = InjectorService_1 =
|
|
581
|
+
InjectorService = InjectorService_1 = tslib_1.__decorate([
|
|
574
582
|
(0, injectable_1.Injectable)({
|
|
575
|
-
scope:
|
|
583
|
+
scope: ProviderScope_1.ProviderScope.SINGLETON,
|
|
576
584
|
global: true
|
|
577
585
|
}),
|
|
578
|
-
|
|
586
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
579
587
|
], InjectorService);
|
|
580
588
|
exports.InjectorService = InjectorService;
|
|
581
589
|
//# sourceMappingURL=InjectorService.js.map
|