ts-ioc-container 10.1.0 → 10.3.2
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 +1 -0
- package/cjm/core/Container.d.ts +11 -0
- package/cjm/core/{DIContainer.js → Container.js} +11 -15
- package/cjm/core/Container.js.map +1 -0
- package/cjm/core/ContainerBuilder.d.ts +7 -10
- package/cjm/core/ContainerBuilder.js +9 -20
- package/cjm/core/ContainerBuilder.js.map +1 -1
- package/cjm/core/IContainer.d.ts +7 -0
- package/cjm/core/{IDIContainer.js → IContainer.js} +1 -1
- package/cjm/core/IContainer.js.map +1 -0
- package/cjm/core/IInjector.d.ts +2 -3
- package/cjm/core/IInstanceHook.d.ts +6 -0
- package/cjm/{features/instanceHook/emptyHook.js → core/IInstanceHook.js} +4 -2
- package/cjm/core/IInstanceHook.js.map +1 -0
- package/cjm/core/ServiceLocator.d.ts +5 -2
- package/cjm/core/ServiceLocator.js +35 -11
- package/cjm/core/ServiceLocator.js.map +1 -1
- package/cjm/features/ProviderBuilder.d.ts +3 -5
- package/cjm/features/ProviderBuilder.js +13 -15
- package/cjm/features/ProviderBuilder.js.map +1 -1
- package/cjm/features/instanceHook/{decorators/IMethodsMetadataCollector.d.ts → IMethodsMetadataCollector.d.ts} +0 -0
- package/cjm/features/instanceHook/{decorators/IMethodsMetadataCollector.js → IMethodsMetadataCollector.js} +0 -0
- package/cjm/features/instanceHook/IMethodsMetadataCollector.js.map +1 -0
- package/cjm/features/instanceHook/{decorators/MethodsMetadataCollector.d.ts → MethodsMetadataCollector.d.ts} +0 -0
- package/cjm/features/instanceHook/{decorators/MethodsMetadataCollector.js → MethodsMetadataCollector.js} +0 -0
- package/cjm/features/instanceHook/MethodsMetadataCollector.js.map +1 -0
- package/cjm/features/instanceHook/{decorators/decorators.d.ts → decorators.d.ts} +0 -0
- package/cjm/features/instanceHook/{decorators/decorators.js → decorators.js} +0 -0
- package/cjm/features/instanceHook/decorators.js.map +1 -0
- package/cjm/features/ioc/IocInjector.d.ts +5 -7
- package/cjm/features/ioc/IocInjector.js +28 -8
- package/cjm/features/ioc/IocInjector.js.map +1 -1
- package/cjm/features/mock/IMockRepository.d.ts +4 -0
- package/cjm/features/{ioc/IInjectMetadataCollector.js → mock/IMockRepository.js} +1 -1
- package/cjm/features/mock/IMockRepository.js.map +1 -0
- package/cjm/features/mock/MockedServiceLocator.d.ts +12 -0
- package/cjm/{core/ServiceLocatorDecorator.js → features/mock/MockedServiceLocator.js} +30 -16
- package/cjm/features/mock/MockedServiceLocator.js.map +1 -0
- package/cjm/features/proxy/ProxyInjector.d.ts +0 -2
- package/cjm/features/proxy/ProxyInjector.js +0 -4
- package/cjm/features/proxy/ProxyInjector.js.map +1 -1
- package/cjm/features/simple/SimpleInjector.d.ts +0 -2
- package/cjm/features/simple/SimpleInjector.js +0 -4
- package/cjm/features/simple/SimpleInjector.js.map +1 -1
- package/cjm/helpers/utils.d.ts +1 -0
- package/cjm/helpers/utils.js +9 -1
- package/cjm/helpers/utils.js.map +1 -1
- package/cjm/index.d.ts +13 -16
- package/cjm/index.js +20 -23
- package/cjm/index.js.map +1 -1
- package/esm/core/Container.d.ts +11 -0
- package/esm/core/{DIContainer.js → Container.js} +5 -8
- package/esm/core/Container.js.map +1 -0
- package/esm/core/ContainerBuilder.d.ts +7 -10
- package/esm/core/ContainerBuilder.js +8 -19
- package/esm/core/ContainerBuilder.js.map +1 -1
- package/esm/core/IContainer.d.ts +7 -0
- package/esm/core/IContainer.js +2 -0
- package/esm/core/IContainer.js.map +1 -0
- package/esm/core/IInjector.d.ts +2 -3
- package/esm/core/IInstanceHook.d.ts +6 -0
- package/esm/core/IInstanceHook.js +7 -0
- package/esm/core/IInstanceHook.js.map +1 -0
- package/esm/core/ServiceLocator.d.ts +5 -2
- package/esm/core/ServiceLocator.js +20 -7
- package/esm/core/ServiceLocator.js.map +1 -1
- package/esm/features/ProviderBuilder.d.ts +3 -5
- package/esm/features/ProviderBuilder.js +9 -14
- package/esm/features/ProviderBuilder.js.map +1 -1
- package/esm/features/instanceHook/{decorators/IMethodsMetadataCollector.d.ts → IMethodsMetadataCollector.d.ts} +0 -0
- package/esm/features/instanceHook/{decorators/IMethodsMetadataCollector.js → IMethodsMetadataCollector.js} +0 -0
- package/esm/features/instanceHook/IMethodsMetadataCollector.js.map +1 -0
- package/esm/features/instanceHook/{decorators/MethodsMetadataCollector.d.ts → MethodsMetadataCollector.d.ts} +0 -0
- package/esm/features/instanceHook/{decorators/MethodsMetadataCollector.js → MethodsMetadataCollector.js} +0 -0
- package/esm/features/instanceHook/MethodsMetadataCollector.js.map +1 -0
- package/esm/features/instanceHook/{decorators/decorators.d.ts → decorators.d.ts} +0 -0
- package/esm/features/instanceHook/{decorators/decorators.js → decorators.js} +0 -0
- package/esm/features/instanceHook/decorators.js.map +1 -0
- package/esm/features/ioc/IocInjector.d.ts +5 -7
- package/esm/features/ioc/IocInjector.js +16 -8
- package/esm/features/ioc/IocInjector.js.map +1 -1
- package/esm/features/mock/IMockRepository.d.ts +4 -0
- package/esm/features/mock/IMockRepository.js +2 -0
- package/esm/features/mock/IMockRepository.js.map +1 -0
- package/esm/features/mock/MockedServiceLocator.d.ts +12 -0
- package/esm/features/mock/MockedServiceLocator.js +32 -0
- package/esm/features/mock/MockedServiceLocator.js.map +1 -0
- package/esm/features/proxy/ProxyInjector.d.ts +0 -2
- package/esm/features/proxy/ProxyInjector.js +0 -4
- package/esm/features/proxy/ProxyInjector.js.map +1 -1
- package/esm/features/simple/SimpleInjector.d.ts +0 -2
- package/esm/features/simple/SimpleInjector.js +0 -4
- package/esm/features/simple/SimpleInjector.js.map +1 -1
- package/esm/helpers/utils.d.ts +1 -0
- package/esm/helpers/utils.js +3 -0
- package/esm/helpers/utils.js.map +1 -1
- package/esm/index.d.ts +13 -16
- package/esm/index.js +8 -12
- package/esm/index.js.map +1 -1
- package/package.json +2 -2
- package/cjm/core/DIContainer.d.ts +0 -12
- package/cjm/core/DIContainer.js.map +0 -1
- package/cjm/core/DIProviderBuilder.d.ts +0 -9
- package/cjm/core/DIProviderBuilder.js +0 -20
- package/cjm/core/DIProviderBuilder.js.map +0 -1
- package/cjm/core/HookedProviderBuilder.d.ts +0 -13
- package/cjm/core/HookedProviderBuilder.js +0 -21
- package/cjm/core/HookedProviderBuilder.js.map +0 -1
- package/cjm/core/IDIContainer.d.ts +0 -14
- package/cjm/core/IDIContainer.js.map +0 -1
- package/cjm/core/MetadataDIProviderBuilder.d.ts +0 -18
- package/cjm/core/MetadataDIProviderBuilder.js +0 -54
- package/cjm/core/MetadataDIProviderBuilder.js.map +0 -1
- package/cjm/core/ServiceLocatorDecorator.d.ts +0 -11
- package/cjm/core/ServiceLocatorDecorator.js.map +0 -1
- package/cjm/features/instanceHook/HookedInjector.d.ts +0 -13
- package/cjm/features/instanceHook/HookedInjector.js +0 -55
- package/cjm/features/instanceHook/HookedInjector.js.map +0 -1
- package/cjm/features/instanceHook/HookedProvider.d.ts +0 -12
- package/cjm/features/instanceHook/HookedProvider.js +0 -73
- package/cjm/features/instanceHook/HookedProvider.js.map +0 -1
- package/cjm/features/instanceHook/IResolvableHook.d.ts +0 -15
- package/cjm/features/instanceHook/IResolvableHook.js +0 -46
- package/cjm/features/instanceHook/IResolvableHook.js.map +0 -1
- package/cjm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +0 -1
- package/cjm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +0 -1
- package/cjm/features/instanceHook/decorators/decorators.js.map +0 -1
- package/cjm/features/instanceHook/emptyHook.d.ts +0 -2
- package/cjm/features/instanceHook/emptyHook.js.map +0 -1
- package/cjm/features/ioc/IInjectMetadataCollector.d.ts +0 -5
- package/cjm/features/ioc/IInjectMetadataCollector.js.map +0 -1
- package/cjm/features/ioc/decorators/InjectMetadataCollector.d.ts +0 -9
- package/cjm/features/ioc/decorators/InjectMetadataCollector.js +0 -22
- package/cjm/features/ioc/decorators/InjectMetadataCollector.js.map +0 -1
- package/cjm/features/ioc/decorators/decorators.d.ts +0 -8
- package/cjm/features/ioc/decorators/decorators.js +0 -46
- package/cjm/features/ioc/decorators/decorators.js.map +0 -1
- package/esm/core/DIContainer.d.ts +0 -12
- package/esm/core/DIContainer.js.map +0 -1
- package/esm/core/DIProviderBuilder.d.ts +0 -9
- package/esm/core/DIProviderBuilder.js +0 -13
- package/esm/core/DIProviderBuilder.js.map +0 -1
- package/esm/core/HookedProviderBuilder.d.ts +0 -13
- package/esm/core/HookedProviderBuilder.js +0 -16
- package/esm/core/HookedProviderBuilder.js.map +0 -1
- package/esm/core/IDIContainer.d.ts +0 -14
- package/esm/core/IDIContainer.js +0 -2
- package/esm/core/IDIContainer.js.map +0 -1
- package/esm/core/MetadataDIProviderBuilder.d.ts +0 -18
- package/esm/core/MetadataDIProviderBuilder.js +0 -29
- package/esm/core/MetadataDIProviderBuilder.js.map +0 -1
- package/esm/core/ServiceLocatorDecorator.d.ts +0 -11
- package/esm/core/ServiceLocatorDecorator.js +0 -18
- package/esm/core/ServiceLocatorDecorator.js.map +0 -1
- package/esm/features/instanceHook/HookedInjector.d.ts +0 -13
- package/esm/features/instanceHook/HookedInjector.js +0 -20
- package/esm/features/instanceHook/HookedInjector.js.map +0 -1
- package/esm/features/instanceHook/HookedProvider.d.ts +0 -12
- package/esm/features/instanceHook/HookedProvider.js +0 -21
- package/esm/features/instanceHook/HookedProvider.js.map +0 -1
- package/esm/features/instanceHook/IResolvableHook.d.ts +0 -15
- package/esm/features/instanceHook/IResolvableHook.js +0 -19
- package/esm/features/instanceHook/IResolvableHook.js.map +0 -1
- package/esm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +0 -1
- package/esm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +0 -1
- package/esm/features/instanceHook/decorators/decorators.js.map +0 -1
- package/esm/features/instanceHook/emptyHook.d.ts +0 -2
- package/esm/features/instanceHook/emptyHook.js +0 -5
- package/esm/features/instanceHook/emptyHook.js.map +0 -1
- package/esm/features/ioc/IInjectMetadataCollector.d.ts +0 -5
- package/esm/features/ioc/IInjectMetadataCollector.js +0 -2
- package/esm/features/ioc/IInjectMetadataCollector.js.map +0 -1
- package/esm/features/ioc/decorators/InjectMetadataCollector.d.ts +0 -9
- package/esm/features/ioc/decorators/InjectMetadataCollector.js +0 -17
- package/esm/features/ioc/decorators/InjectMetadataCollector.js.map +0 -1
- package/esm/features/ioc/decorators/decorators.d.ts +0 -8
- package/esm/features/ioc/decorators/decorators.js +0 -10
- package/esm/features/ioc/decorators/decorators.js.map +0 -1
package/README.md
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IKeyedProvider, Tag } from './provider/IProvider';
|
|
2
|
+
import { InjectionToken, IServiceLocator, RegisterOptions } from './IServiceLocator';
|
|
3
|
+
import { IContainer } from './IContainer';
|
|
4
|
+
export declare class Container implements IContainer {
|
|
5
|
+
private locator;
|
|
6
|
+
constructor(locator: IServiceLocator);
|
|
7
|
+
createScope(tags?: Tag[]): IContainer;
|
|
8
|
+
register(provider: IKeyedProvider<unknown>, options?: Partial<RegisterOptions>): this;
|
|
9
|
+
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -36,21 +36,17 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
36
36
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
39
|
+
exports.Container = void 0;
|
|
40
40
|
var NoRegistrationKeysProvided_1 = require("../errors/NoRegistrationKeysProvided");
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
function DIContainer(locator, providerBuilder) {
|
|
44
|
-
if (providerBuilder === void 0) { providerBuilder = new DIProviderBuilder_1.DIProviderBuilder(); }
|
|
41
|
+
var Container = /** @class */ (function () {
|
|
42
|
+
function Container(locator) {
|
|
45
43
|
this.locator = locator;
|
|
46
|
-
this.providerBuilder = providerBuilder;
|
|
47
44
|
}
|
|
48
|
-
|
|
49
|
-
return new
|
|
45
|
+
Container.prototype.createScope = function (tags) {
|
|
46
|
+
return new Container(this.locator.createScope(tags));
|
|
50
47
|
};
|
|
51
|
-
|
|
48
|
+
Container.prototype.register = function (provider, options) {
|
|
52
49
|
var e_1, _a;
|
|
53
|
-
var provider = fn(this.providerBuilder);
|
|
54
50
|
var keys = provider.getKeys();
|
|
55
51
|
if (keys.length === 0) {
|
|
56
52
|
throw new NoRegistrationKeysProvided_1.NoRegistrationKeysProvided();
|
|
@@ -70,7 +66,7 @@ var DIContainer = /** @class */ (function () {
|
|
|
70
66
|
}
|
|
71
67
|
return this;
|
|
72
68
|
};
|
|
73
|
-
|
|
69
|
+
Container.prototype.resolve = function (key) {
|
|
74
70
|
var _a;
|
|
75
71
|
var args = [];
|
|
76
72
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
@@ -78,10 +74,10 @@ var DIContainer = /** @class */ (function () {
|
|
|
78
74
|
}
|
|
79
75
|
return (_a = this.locator).resolve.apply(_a, __spreadArray([key], __read(args), false));
|
|
80
76
|
};
|
|
81
|
-
|
|
77
|
+
Container.prototype.dispose = function () {
|
|
82
78
|
this.locator.dispose();
|
|
83
79
|
};
|
|
84
|
-
return
|
|
80
|
+
return Container;
|
|
85
81
|
}());
|
|
86
|
-
exports.
|
|
87
|
-
//# sourceMappingURL=
|
|
82
|
+
exports.Container = Container;
|
|
83
|
+
//# sourceMappingURL=Container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/core/Container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,mFAAkF;AAGlF;IACI,mBAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEhD,+BAAW,GAAX,UAAY,IAAY;QACpB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,4BAAQ,GAAR,UAAS,QAAiC,EAAE,OAAkC;;QAC1E,IAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,MAAM,IAAI,uDAA0B,EAAE,CAAC;SAC1C;;YACD,KAAkB,IAAA,SAAA,SAAA,IAAI,CAAA,0BAAA,4CAAE;gBAAnB,IAAM,GAAG,iBAAA;gBACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;aACjD;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,2BAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,OAAO,CAAA,KAAA,IAAI,CAAC,OAAO,CAAA,CAAC,OAAO,0BAAC,GAAG,UAAK,IAAI,WAAE;IAC9C,CAAC;IAED,2BAAO,GAAP;QACI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACL,gBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,8BAAS"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { IInjector } from './IInjector';
|
|
2
2
|
import { IServiceLocator } from './IServiceLocator';
|
|
3
3
|
import { ScopeOptions } from './provider/IProvider';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import { IResolvableHook } from '../features/instanceHook/IResolvableHook';
|
|
4
|
+
import { Container } from './Container';
|
|
5
|
+
import { IInstanceHook } from './IInstanceHook';
|
|
6
|
+
export declare type MapFn<T> = (value: T) => T;
|
|
8
7
|
export declare class ContainerBuilder {
|
|
9
8
|
private injector;
|
|
10
9
|
private parent;
|
|
11
|
-
private providerBuilder;
|
|
12
10
|
private mapFn;
|
|
13
11
|
private options;
|
|
14
|
-
|
|
12
|
+
private hook;
|
|
13
|
+
constructor(injector: IInjector, parent?: IServiceLocator, mapFn?: MapFn<IServiceLocator>, options?: Partial<ScopeOptions>, hook?: IInstanceHook);
|
|
15
14
|
mapLocator(fn: MapFn<IServiceLocator>): this;
|
|
16
|
-
|
|
17
|
-
mapInjector(fn: MapFn<IInjector>): this;
|
|
18
|
-
mapProviderBuilder(fn: MapFn<IDIProviderBuilder>): this;
|
|
15
|
+
setHook(hook: IInstanceHook): this;
|
|
19
16
|
withOptions(options: Partial<ScopeOptions>): this;
|
|
20
|
-
build():
|
|
17
|
+
build(): Container;
|
|
21
18
|
}
|
|
@@ -3,39 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ContainerBuilder = void 0;
|
|
4
4
|
var EmptyServiceLocator_1 = require("./EmptyServiceLocator");
|
|
5
5
|
var utils_1 = require("../helpers/utils");
|
|
6
|
-
var
|
|
6
|
+
var Container_1 = require("./Container");
|
|
7
7
|
var ServiceLocator_1 = require("./ServiceLocator");
|
|
8
|
-
var
|
|
9
|
-
var HookedProviderBuilder_1 = require("./HookedProviderBuilder");
|
|
10
|
-
var HookedInjector_1 = require("../features/instanceHook/HookedInjector");
|
|
8
|
+
var IInstanceHook_1 = require("./IInstanceHook");
|
|
11
9
|
var ContainerBuilder = /** @class */ (function () {
|
|
12
|
-
function ContainerBuilder(injector, parent,
|
|
10
|
+
function ContainerBuilder(injector, parent, mapFn, options, hook) {
|
|
13
11
|
if (parent === void 0) { parent = new EmptyServiceLocator_1.EmptyServiceLocator(); }
|
|
14
|
-
if (providerBuilder === void 0) { providerBuilder = new DIProviderBuilder_1.DIProviderBuilder(); }
|
|
15
12
|
if (mapFn === void 0) { mapFn = utils_1.id; }
|
|
16
13
|
if (options === void 0) { options = {}; }
|
|
14
|
+
if (hook === void 0) { hook = IInstanceHook_1.emptyHook; }
|
|
17
15
|
this.injector = injector;
|
|
18
16
|
this.parent = parent;
|
|
19
|
-
this.providerBuilder = providerBuilder;
|
|
20
17
|
this.mapFn = mapFn;
|
|
21
18
|
this.options = options;
|
|
19
|
+
this.hook = hook;
|
|
22
20
|
}
|
|
23
21
|
ContainerBuilder.prototype.mapLocator = function (fn) {
|
|
24
22
|
var oldFn = this.mapFn;
|
|
25
23
|
this.mapFn = function (value) { return fn(oldFn(value)); };
|
|
26
24
|
return this;
|
|
27
25
|
};
|
|
28
|
-
ContainerBuilder.prototype.
|
|
29
|
-
this.
|
|
30
|
-
this.providerBuilder = new HookedProviderBuilder_1.HookedProviderBuilder(this.providerBuilder, hook);
|
|
31
|
-
return this;
|
|
32
|
-
};
|
|
33
|
-
ContainerBuilder.prototype.mapInjector = function (fn) {
|
|
34
|
-
this.injector = fn(this.injector);
|
|
35
|
-
return this;
|
|
36
|
-
};
|
|
37
|
-
ContainerBuilder.prototype.mapProviderBuilder = function (fn) {
|
|
38
|
-
this.providerBuilder = fn(this.providerBuilder);
|
|
26
|
+
ContainerBuilder.prototype.setHook = function (hook) {
|
|
27
|
+
this.hook = hook;
|
|
39
28
|
return this;
|
|
40
29
|
};
|
|
41
30
|
ContainerBuilder.prototype.withOptions = function (options) {
|
|
@@ -44,8 +33,8 @@ var ContainerBuilder = /** @class */ (function () {
|
|
|
44
33
|
};
|
|
45
34
|
ContainerBuilder.prototype.build = function () {
|
|
46
35
|
var parent = this.mapFn(this.parent);
|
|
47
|
-
var locator = new ServiceLocator_1.ServiceLocator(parent, this.injector, this.options.level, this.options.tags);
|
|
48
|
-
return new
|
|
36
|
+
var locator = new ServiceLocator_1.ServiceLocator(parent, this.injector, this.options.level, this.options.tags, this.hook);
|
|
37
|
+
return new Container_1.Container(this.mapFn(locator));
|
|
49
38
|
};
|
|
50
39
|
return ContainerBuilder;
|
|
51
40
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerBuilder.js","sourceRoot":"","sources":["../../lib/core/ContainerBuilder.ts"],"names":[],"mappings":";;;AAEA,6DAA4D;AAC5D,0CAAsC;AAEtC,
|
|
1
|
+
{"version":3,"file":"ContainerBuilder.js","sourceRoot":"","sources":["../../lib/core/ContainerBuilder.ts"],"names":[],"mappings":";;;AAEA,6DAA4D;AAC5D,0CAAsC;AAEtC,yCAAwC;AACxC,mDAAkD;AAClD,iDAA2D;AAI3D;IACI,0BACY,QAAmB,EACnB,MAAmD,EACnD,KAAkC,EAClC,OAAmC,EACnC,IAA+B;QAH/B,uBAAA,EAAA,aAA8B,yCAAmB,EAAE;QACnD,sBAAA,EAAA,QAAgC,UAAE;QAClC,wBAAA,EAAA,YAAmC;QACnC,qBAAA,EAAA,OAAsB,yBAAS;QAJ/B,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAA6C;QACnD,UAAK,GAAL,KAAK,CAA6B;QAClC,YAAO,GAAP,OAAO,CAA4B;QACnC,SAAI,GAAJ,IAAI,CAA2B;IACxC,CAAC;IAEJ,qCAAU,GAAV,UAAW,EAA0B;QACjC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,UAAC,KAAK,IAAK,OAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAhB,CAAgB,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAO,GAAP,UAAQ,IAAmB;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sCAAW,GAAX,UAAY,OAA8B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAK,GAAL;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAM,OAAO,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5G,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,CAAC;IACL,uBAAC;AAAD,CAAC,AA9BD,IA8BC;AA9BY,4CAAgB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RegisterOptions, Resolveable } from './IServiceLocator';
|
|
2
|
+
import { IKeyedProvider, Tag } from './provider/IProvider';
|
|
3
|
+
import { IDisposable } from '../helpers/types';
|
|
4
|
+
export interface IContainer extends Resolveable, IDisposable {
|
|
5
|
+
createScope(tags?: Tag[]): IContainer;
|
|
6
|
+
register(fn: IKeyedProvider<unknown>, options?: Partial<RegisterOptions>): this;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../lib/core/IContainer.ts"],"names":[],"mappings":""}
|
package/cjm/core/IInjector.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { constructor
|
|
1
|
+
import { constructor } from '../helpers/types';
|
|
2
2
|
import { IServiceLocator } from './IServiceLocator';
|
|
3
|
-
export interface IInjector
|
|
3
|
+
export interface IInjector {
|
|
4
4
|
resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: any[]): T;
|
|
5
|
-
clone(): IInjector;
|
|
6
5
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.emptyHook = void 0;
|
|
4
|
+
var utils_1 = require("../helpers/utils");
|
|
4
5
|
exports.emptyHook = {
|
|
5
|
-
onResolve:
|
|
6
|
+
onResolve: utils_1.id,
|
|
7
|
+
onConstruct: utils_1.id,
|
|
6
8
|
onDispose: function () { },
|
|
7
9
|
};
|
|
8
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=IInstanceHook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IInstanceHook.js","sourceRoot":"","sources":["../../lib/core/IInstanceHook.ts"],"names":[],"mappings":";;;AAAA,0CAAsC;AAUzB,QAAA,SAAS,GAAkB;IACpC,SAAS,EAAE,UAAE;IACb,WAAW,EAAE,UAAE;IACf,SAAS,EAAT,cAAmB,CAAC;CACvB,CAAC"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { InjectionToken, IServiceLocator, ProviderKey, RegisterOptions } from './IServiceLocator';
|
|
2
2
|
import { IInjector } from './IInjector';
|
|
3
3
|
import { IProvider, Tag } from './provider/IProvider';
|
|
4
|
+
import { IInstanceHook } from './IInstanceHook';
|
|
4
5
|
export declare class ServiceLocator implements IServiceLocator {
|
|
5
6
|
private parent;
|
|
6
7
|
private readonly injector;
|
|
7
8
|
readonly level: number;
|
|
8
9
|
readonly tags: Tag[];
|
|
10
|
+
private hook;
|
|
9
11
|
static fromInjector(injector: IInjector): ServiceLocator;
|
|
12
|
+
private instances;
|
|
10
13
|
private readonly providers;
|
|
11
|
-
constructor(parent: IServiceLocator, injector: IInjector, level?: number, tags?: Tag[]);
|
|
14
|
+
constructor(parent: IServiceLocator, injector: IInjector, level?: number, tags?: Tag[], hook?: IInstanceHook);
|
|
12
15
|
register(key: ProviderKey, provider: IProvider<unknown>, options?: Partial<RegisterOptions>): void;
|
|
13
16
|
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
14
17
|
private findValidProvider;
|
|
15
18
|
createScope(tags?: Tag[], parent?: IServiceLocator): ServiceLocator;
|
|
16
19
|
entries(): Array<[ProviderKey, IProvider<any>]>;
|
|
17
20
|
dispose(): void;
|
|
21
|
+
private onResolve;
|
|
18
22
|
}
|
|
19
|
-
export declare type MapFn<T> = (value: T) => T;
|
|
@@ -40,14 +40,18 @@ exports.ServiceLocator = void 0;
|
|
|
40
40
|
var IServiceLocator_1 = require("./IServiceLocator");
|
|
41
41
|
var ProviderKeyIsBusy_1 = require("../errors/ProviderKeyIsBusy");
|
|
42
42
|
var EmptyServiceLocator_1 = require("./EmptyServiceLocator");
|
|
43
|
+
var IInstanceHook_1 = require("./IInstanceHook");
|
|
43
44
|
var ServiceLocator = /** @class */ (function () {
|
|
44
|
-
function ServiceLocator(parent, injector, level, tags) {
|
|
45
|
+
function ServiceLocator(parent, injector, level, tags, hook) {
|
|
45
46
|
if (level === void 0) { level = 0; }
|
|
46
47
|
if (tags === void 0) { tags = []; }
|
|
48
|
+
if (hook === void 0) { hook = IInstanceHook_1.emptyHook; }
|
|
47
49
|
this.parent = parent;
|
|
48
50
|
this.injector = injector;
|
|
49
51
|
this.level = level;
|
|
50
52
|
this.tags = tags;
|
|
53
|
+
this.hook = hook;
|
|
54
|
+
this.instances = new Set();
|
|
51
55
|
this.providers = new Map();
|
|
52
56
|
}
|
|
53
57
|
ServiceLocator.fromInjector = function (injector) {
|
|
@@ -62,15 +66,15 @@ var ServiceLocator = /** @class */ (function () {
|
|
|
62
66
|
};
|
|
63
67
|
ServiceLocator.prototype.resolve = function (key) {
|
|
64
68
|
var _a, _b;
|
|
65
|
-
var _c, _d;
|
|
66
69
|
var args = [];
|
|
67
70
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
68
71
|
args[_i - 1] = arguments[_i];
|
|
69
72
|
}
|
|
70
73
|
if ((0, IServiceLocator_1.isProviderKey)(key)) {
|
|
71
|
-
|
|
74
|
+
var provider = this.findValidProvider(key);
|
|
75
|
+
return provider ? this.onResolve(provider.resolve.apply(provider, __spreadArray([this], __read(args), false))) : (_a = this.parent).resolve.apply(_a, __spreadArray([key], __read(args), false));
|
|
72
76
|
}
|
|
73
|
-
return (_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false));
|
|
77
|
+
return this.onResolve((_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false)));
|
|
74
78
|
};
|
|
75
79
|
ServiceLocator.prototype.findValidProvider = function (key) {
|
|
76
80
|
if (!this.providers.has(key)) {
|
|
@@ -86,7 +90,7 @@ var ServiceLocator = /** @class */ (function () {
|
|
|
86
90
|
var e_1, _a;
|
|
87
91
|
if (tags === void 0) { tags = []; }
|
|
88
92
|
if (parent === void 0) { parent = this; }
|
|
89
|
-
var scope = new ServiceLocator(parent, this.injector
|
|
93
|
+
var scope = new ServiceLocator(parent, this.injector, this.level + 1, tags, this.hook);
|
|
90
94
|
try {
|
|
91
95
|
for (var _b = __values(parent.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
92
96
|
var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
|
|
@@ -109,23 +113,43 @@ var ServiceLocator = /** @class */ (function () {
|
|
|
109
113
|
return Array.from(new Map(__spreadArray(__spreadArray([], __read(this.parent.entries()), false), __read(localProviders), false)).entries());
|
|
110
114
|
};
|
|
111
115
|
ServiceLocator.prototype.dispose = function () {
|
|
112
|
-
var e_2, _a;
|
|
116
|
+
var e_2, _a, e_3, _b;
|
|
117
|
+
this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
|
|
113
118
|
try {
|
|
114
|
-
for (var
|
|
115
|
-
var p =
|
|
119
|
+
for (var _c = __values(this.providers.values()), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
120
|
+
var p = _d.value;
|
|
116
121
|
p.dispose();
|
|
117
122
|
}
|
|
118
123
|
}
|
|
119
124
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
120
125
|
finally {
|
|
121
126
|
try {
|
|
122
|
-
if (
|
|
127
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
123
128
|
}
|
|
124
129
|
finally { if (e_2) throw e_2.error; }
|
|
125
130
|
}
|
|
126
131
|
this.providers.clear();
|
|
127
|
-
|
|
128
|
-
|
|
132
|
+
try {
|
|
133
|
+
for (var _e = __values(this.instances), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
134
|
+
var it_1 = _f.value;
|
|
135
|
+
this.hook.onDispose(it_1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
139
|
+
finally {
|
|
140
|
+
try {
|
|
141
|
+
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
142
|
+
}
|
|
143
|
+
finally { if (e_3) throw e_3.error; }
|
|
144
|
+
}
|
|
145
|
+
this.instances.clear();
|
|
146
|
+
};
|
|
147
|
+
ServiceLocator.prototype.onResolve = function (instance) {
|
|
148
|
+
if (!this.instances.has(instance)) {
|
|
149
|
+
this.instances.add(instance);
|
|
150
|
+
this.hook.onConstruct(instance);
|
|
151
|
+
}
|
|
152
|
+
return this.hook.onResolve(instance);
|
|
129
153
|
};
|
|
130
154
|
return ServiceLocator;
|
|
131
155
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAiH;AAGjH,iEAAgE;AAChE,6DAA4D;
|
|
1
|
+
{"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,17 +3,15 @@ import { constructor } from '../helpers/types';
|
|
|
3
3
|
import { ProviderReducer } from './scope/IProvidersMetadataCollector';
|
|
4
4
|
import { ArgsFn } from '../core/provider/ArgsProvider';
|
|
5
5
|
import { ProviderKey } from '../core/IServiceLocator';
|
|
6
|
-
|
|
6
|
+
export declare function fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
7
|
+
export declare function fromValue<T>(value: T): ProviderBuilder<T>;
|
|
8
|
+
export declare function fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
|
|
7
9
|
export declare class ProviderBuilder<T> {
|
|
8
10
|
private provider;
|
|
9
|
-
static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
10
|
-
static fromValue<T>(value: T): ProviderBuilder<T>;
|
|
11
|
-
static fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
|
|
12
11
|
constructor(provider: IKeyedProvider<T>);
|
|
13
12
|
withArgs(...extraArgs: any[]): this;
|
|
14
13
|
withArgsFn(argsFn: ArgsFn): this;
|
|
15
14
|
withReducer(reducer: ProviderReducer<T>): this;
|
|
16
|
-
withHook(hook: IResolvableHook): this;
|
|
17
15
|
forTags(...tags: Tag[]): this;
|
|
18
16
|
forLevel(level: number): this;
|
|
19
17
|
asSingleton(): this;
|
|
@@ -25,26 +25,28 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
25
25
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.ProviderBuilder = void 0;
|
|
28
|
+
exports.ProviderBuilder = exports.fromFn = exports.fromValue = exports.fromClass = void 0;
|
|
29
29
|
var SingletonProvider_1 = require("./scope/SingletonProvider");
|
|
30
30
|
var Provider_1 = require("../core/provider/Provider");
|
|
31
31
|
var TaggedProvider_1 = require("./scope/TaggedProvider");
|
|
32
32
|
var LevelProvider_1 = require("./scope/LevelProvider");
|
|
33
33
|
var ArgsProvider_1 = require("../core/provider/ArgsProvider");
|
|
34
|
-
|
|
34
|
+
function fromClass(value) {
|
|
35
|
+
return new ProviderBuilder(Provider_1.Provider.fromClass(value));
|
|
36
|
+
}
|
|
37
|
+
exports.fromClass = fromClass;
|
|
38
|
+
function fromValue(value) {
|
|
39
|
+
return new ProviderBuilder(Provider_1.Provider.fromValue(value));
|
|
40
|
+
}
|
|
41
|
+
exports.fromValue = fromValue;
|
|
42
|
+
function fromFn(fn) {
|
|
43
|
+
return new ProviderBuilder(new Provider_1.Provider(fn));
|
|
44
|
+
}
|
|
45
|
+
exports.fromFn = fromFn;
|
|
35
46
|
var ProviderBuilder = /** @class */ (function () {
|
|
36
47
|
function ProviderBuilder(provider) {
|
|
37
48
|
this.provider = provider;
|
|
38
49
|
}
|
|
39
|
-
ProviderBuilder.fromClass = function (value) {
|
|
40
|
-
return new ProviderBuilder(Provider_1.Provider.fromClass(value));
|
|
41
|
-
};
|
|
42
|
-
ProviderBuilder.fromValue = function (value) {
|
|
43
|
-
return new ProviderBuilder(Provider_1.Provider.fromValue(value));
|
|
44
|
-
};
|
|
45
|
-
ProviderBuilder.fromFn = function (fn) {
|
|
46
|
-
return new ProviderBuilder(new Provider_1.Provider(fn));
|
|
47
|
-
};
|
|
48
50
|
ProviderBuilder.prototype.withArgs = function () {
|
|
49
51
|
var extraArgs = [];
|
|
50
52
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -61,10 +63,6 @@ var ProviderBuilder = /** @class */ (function () {
|
|
|
61
63
|
this.provider = reducer(this.provider);
|
|
62
64
|
return this;
|
|
63
65
|
};
|
|
64
|
-
ProviderBuilder.prototype.withHook = function (hook) {
|
|
65
|
-
this.provider = new HookedProvider_1.HookedProvider(this.provider, hook);
|
|
66
|
-
return this;
|
|
67
|
-
};
|
|
68
66
|
ProviderBuilder.prototype.forTags = function () {
|
|
69
67
|
var tags = [];
|
|
70
68
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAA8D;AAC9D,sDAAqD;AAErD,yDAAwD;AACxD,uDAAsD;AAEtD,8DAAqE;AAGrE,
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAA8D;AAC9D,sDAAqD;AAErD,yDAAwD;AACxD,uDAAsD;AAEtD,8DAAqE;AAGrE,SAAgB,SAAS,CAAI,KAAqB;IAC9C,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAI,KAAQ;IACjC,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,8BAEC;AAED,SAAgB,MAAM,CAAI,EAAwB;IAC9C,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAFD,wBAEC;AAED;IACI,yBAAoB,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAEnD,kCAAQ,GAAR;QAAS,mBAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,8BAAmB;;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX,UAAY,OAA2B;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;;QAAQ,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,oCAAI,IAAI,UAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,0CAAe"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMethodsMetadataCollector.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/IMethodsMetadataCollector.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MethodsMetadataCollector.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/MethodsMetadataCollector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IACI,kCAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;IACxD,0CAAO,GAAP,UAAkC,MAAiB,EAAE,WAA4B;QAC7E,IAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,yCAAM,KAAK,YAAE,WAAW,WAAG,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,wDAAwD;IACxD,gDAAa,GAAb,UAAwC,MAAiB;;QACrD,IAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAM,KAAK,GAAa,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC/D,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;;YAET,KAAyB,IAAA,UAAA,SAAA,KAAK,CAAA,4BAAA,+CAAE;gBAA3B,IAAM,UAAU,kBAAA;gBAChB,MAAc,CAAC,UAAU,CAAC,EAAE,CAAC;aACjC;;;;;;;;;IACL,CAAC;IAED,wDAAwD;IACzC,oCAAW,GAA1B,UAA2D,MAAiB;QACxE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IACL,+BAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,4DAAwB"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/decorators.ts"],"names":[],"mappings":";;;AAEA,SAAgB,yBAAyB,CAAC,QAAmC;IACzE,OAAO,UAAC,MAAM,EAAE,WAAW;QACvB,wDAAwD;QACxD,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC;AACN,CAAC;AALD,8DAKC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { constructor } from '../../helpers/types';
|
|
2
|
-
import { IServiceLocator } from '../../core/IServiceLocator';
|
|
2
|
+
import { InjectionToken, IServiceLocator } from '../../core/IServiceLocator';
|
|
3
3
|
import { IInjector } from '../../core/IInjector';
|
|
4
|
-
import {
|
|
4
|
+
import { InjectFn } from './InjectFn';
|
|
5
5
|
export declare class IocInjector implements IInjector {
|
|
6
|
-
|
|
7
|
-
constructor(metadataCollector: IInjectMetadataCollector);
|
|
8
|
-
resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: any[]): T;
|
|
9
|
-
clone(): IInjector;
|
|
10
|
-
dispose(): void;
|
|
6
|
+
resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: unknown[]): T;
|
|
11
7
|
}
|
|
8
|
+
export declare const injectFn: <T>(injectionFn: InjectFn<T>) => ParameterDecorator;
|
|
9
|
+
export declare const inject: <T>(token: InjectionToken<T>, ...args: unknown[]) => ParameterDecorator;
|
|
@@ -25,26 +25,46 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
25
25
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.IocInjector = void 0;
|
|
28
|
+
exports.inject = exports.injectFn = exports.IocInjector = void 0;
|
|
29
29
|
var utils_1 = require("../../helpers/utils");
|
|
30
|
+
var METADATA_KEY = Symbol.for('IocInjector');
|
|
31
|
+
function getInjectionFns(target) {
|
|
32
|
+
var _a;
|
|
33
|
+
return (_a = Reflect.getOwnMetadata(METADATA_KEY, target)) !== null && _a !== void 0 ? _a : [];
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
36
|
+
function addMetadata(target, parameterIndex, injectionFn) {
|
|
37
|
+
var metadata = getInjectionFns(target);
|
|
38
|
+
metadata[parameterIndex] = injectionFn;
|
|
39
|
+
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
40
|
+
}
|
|
30
41
|
var IocInjector = /** @class */ (function () {
|
|
31
|
-
function IocInjector(
|
|
32
|
-
this.metadataCollector = metadataCollector;
|
|
42
|
+
function IocInjector() {
|
|
33
43
|
}
|
|
34
44
|
IocInjector.prototype.resolve = function (locator, value) {
|
|
35
45
|
var deps = [];
|
|
36
46
|
for (var _i = 2; _i < arguments.length; _i++) {
|
|
37
47
|
deps[_i - 2] = arguments[_i];
|
|
38
48
|
}
|
|
39
|
-
var injectionFns =
|
|
49
|
+
var injectionFns = getInjectionFns(value);
|
|
40
50
|
var args = (0, utils_1.merge)(injectionFns, deps.map(utils_1.constant)).map(function (fn) { return fn(locator); });
|
|
41
51
|
return new (value.bind.apply(value, __spreadArray([void 0], __read(args), false)))();
|
|
42
52
|
};
|
|
43
|
-
IocInjector.prototype.clone = function () {
|
|
44
|
-
return new IocInjector(this.metadataCollector);
|
|
45
|
-
};
|
|
46
|
-
IocInjector.prototype.dispose = function () { };
|
|
47
53
|
return IocInjector;
|
|
48
54
|
}());
|
|
49
55
|
exports.IocInjector = IocInjector;
|
|
56
|
+
var injectFn = function (injectionFn) {
|
|
57
|
+
return function (target, propertyKey, parameterIndex) {
|
|
58
|
+
addMetadata(target, parameterIndex, injectionFn);
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
exports.injectFn = injectFn;
|
|
62
|
+
var inject = function (token) {
|
|
63
|
+
var args = [];
|
|
64
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
65
|
+
args[_i - 1] = arguments[_i];
|
|
66
|
+
}
|
|
67
|
+
return (0, exports.injectFn)(function (l) { return l.resolve.apply(l, __spreadArray([token], __read(args), false)); });
|
|
68
|
+
};
|
|
69
|
+
exports.inject = inject;
|
|
50
70
|
//# sourceMappingURL=IocInjector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IocInjector.js","sourceRoot":"","sources":["../../../lib/features/ioc/IocInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6CAAsD;AAGtD;
|
|
1
|
+
{"version":3,"file":"IocInjector.js","sourceRoot":"","sources":["../../../lib/features/ioc/IocInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6CAAsD;AAGtD,IAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAE/C,SAAS,eAAe,CAAI,MAAS;;IACjC,OAAO,MAAA,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;AAC9D,CAAC;AAED,wDAAwD;AACxD,SAAS,WAAW,CAAI,MAAS,EAAE,cAAsB,EAAE,WAA8B;IACrF,IAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;IACvC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED;IAAA;IAMA,CAAC;IALG,6BAAO,GAAP,UAAW,OAAwB,EAAE,KAAqB;QAAE,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,6BAAkB;;QAC1E,IAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAM,IAAI,GAAG,IAAA,aAAK,EAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,EAAX,CAAW,CAAC,CAAC;QAC9E,YAAW,KAAK,YAAL,KAAK,iCAAI,IAAI,cAAE;IAC9B,CAAC;IACL,kBAAC;AAAD,CAAC,AAND,IAMC;AANY,kCAAW;AAQjB,IAAM,QAAQ,GACjB,UAAI,WAAwB;IAC5B,OAAA,UAAC,MAAM,EAAE,WAAW,EAAE,cAAc;QAChC,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,QAAQ,YAIf;AAEC,IAAM,MAAM,GAAG,UAAI,KAAwB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAClE,OAAA,IAAA,gBAAQ,EAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI,YAAxB,CAAyB,CAAC;AAA1C,CAA0C,CAAC;AADlC,QAAA,MAAM,UAC4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMockRepository.js","sourceRoot":"","sources":["../../../lib/features/mock/IMockRepository.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { InjectionToken, IProvider, IServiceLocator, ProviderKey } from '../../index';
|
|
2
|
+
import { IMockRepository } from './IMockRepository';
|
|
3
|
+
export declare class MockedServiceLocator implements IServiceLocator {
|
|
4
|
+
private decorated;
|
|
5
|
+
private mockRepository;
|
|
6
|
+
constructor(decorated: IServiceLocator, mockRepository: IMockRepository);
|
|
7
|
+
createScope(): IServiceLocator;
|
|
8
|
+
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
9
|
+
dispose(): void;
|
|
10
|
+
entries(): Array<[ProviderKey, IProvider<any>]>;
|
|
11
|
+
register(key: ProviderKey, provider: IProvider<unknown>): void;
|
|
12
|
+
}
|