ts-ioc-container 19.2.0 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjm/AutoMockedContainer.d.ts +2 -2
- package/cjm/AutoMockedContainer.js +1 -1
- package/cjm/AutoMockedContainer.js.map +1 -1
- package/cjm/core/container/Container.d.ts +4 -4
- package/cjm/core/container/Container.js +8 -5
- package/cjm/core/container/Container.js.map +1 -1
- package/cjm/core/container/EmptyContainer.d.ts +2 -2
- package/cjm/core/container/EmptyContainer.js +1 -1
- package/cjm/core/container/EmptyContainer.js.map +1 -1
- package/cjm/core/container/IContainer.d.ts +6 -2
- package/cjm/core/provider/IProvider.d.ts +0 -2
- package/cjm/core/provider/IProvider.js.map +1 -1
- package/cjm/core/provider/Provider.d.ts +0 -1
- package/cjm/core/provider/Provider.js +1 -8
- package/cjm/core/provider/Provider.js.map +1 -1
- package/cjm/core/provider/ProviderDecorator.d.ts +1 -3
- package/cjm/core/provider/ProviderDecorator.js +0 -7
- package/cjm/core/provider/ProviderDecorator.js.map +1 -1
- package/cjm/core/provider/ProviderRepo.d.ts +2 -2
- package/cjm/core/provider/ProviderRepo.js +40 -11
- package/cjm/core/provider/ProviderRepo.js.map +1 -1
- package/cjm/providers/ProviderBuilder.d.ts +4 -2
- package/cjm/providers/ProviderBuilder.js +7 -3
- package/cjm/providers/ProviderBuilder.js.map +1 -1
- package/cjm/providers/TaggedProvider.js +1 -1
- package/esm/AutoMockedContainer.d.ts +2 -2
- package/esm/AutoMockedContainer.js +1 -1
- package/esm/AutoMockedContainer.js.map +1 -1
- package/esm/core/container/Container.d.ts +4 -4
- package/esm/core/container/Container.js +6 -4
- package/esm/core/container/Container.js.map +1 -1
- package/esm/core/container/EmptyContainer.d.ts +2 -2
- package/esm/core/container/EmptyContainer.js +1 -1
- package/esm/core/container/EmptyContainer.js.map +1 -1
- package/esm/core/container/IContainer.d.ts +6 -2
- package/esm/core/provider/IProvider.d.ts +0 -2
- package/esm/core/provider/IProvider.js.map +1 -1
- package/esm/core/provider/Provider.d.ts +0 -1
- package/esm/core/provider/Provider.js +1 -8
- package/esm/core/provider/Provider.js.map +1 -1
- package/esm/core/provider/ProviderDecorator.d.ts +1 -3
- package/esm/core/provider/ProviderDecorator.js +0 -7
- package/esm/core/provider/ProviderDecorator.js.map +1 -1
- package/esm/core/provider/ProviderRepo.d.ts +2 -2
- package/esm/core/provider/ProviderRepo.js +8 -5
- package/esm/core/provider/ProviderRepo.js.map +1 -1
- package/esm/providers/ProviderBuilder.d.ts +4 -2
- package/esm/providers/ProviderBuilder.js +7 -3
- package/esm/providers/ProviderBuilder.js.map +1 -1
- package/esm/providers/TaggedProvider.js +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IContainer, InjectionToken, IProvider } from './index';
|
|
1
|
+
import { IContainer, InjectionToken, IProvider, ProviderKey } from './index';
|
|
2
2
|
export declare abstract class AutoMockedContainer implements IContainer {
|
|
3
3
|
createScope(): IContainer;
|
|
4
4
|
abstract resolve<T>(key: InjectionToken<T>): T;
|
|
5
5
|
abstract dispose(): void;
|
|
6
|
-
getProviders(): IProvider<unknown
|
|
6
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
7
7
|
register(): this;
|
|
8
8
|
getInstances(): unknown[];
|
|
9
9
|
removeScope(): void;
|
|
@@ -9,7 +9,7 @@ var AutoMockedContainer = /** @class */ (function () {
|
|
|
9
9
|
throw new index_1.MethodNotImplementedError();
|
|
10
10
|
};
|
|
11
11
|
AutoMockedContainer.prototype.getProviders = function () {
|
|
12
|
-
return
|
|
12
|
+
return new Map();
|
|
13
13
|
};
|
|
14
14
|
AutoMockedContainer.prototype.register = function () {
|
|
15
15
|
throw new index_1.MethodNotImplementedError();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,iCAAwG;AAExG;IAAA;IAsBA,CAAC;IArBG,yCAAW,GAAX;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,0CAAY,GAAZ;QACI,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,sCAAQ,GAAR;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,yCAAW,GAAX,cAAqB,CAAC;IAC1B,0BAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBqB,kDAAmB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IContainer, InjectionToken } from './IContainer';
|
|
1
|
+
import { IContainer, InjectionToken, Registration } from './IContainer';
|
|
2
2
|
import { IInjector } from '../IInjector';
|
|
3
|
-
import { IProvider, Tagged, Tag } from '../provider/IProvider';
|
|
3
|
+
import { IProvider, Tagged, Tag, ProviderKey } from '../provider/IProvider';
|
|
4
4
|
export declare class Container implements IContainer, Tagged {
|
|
5
5
|
private readonly injector;
|
|
6
6
|
private readonly providers;
|
|
@@ -13,11 +13,11 @@ export declare class Container implements IContainer, Tagged {
|
|
|
13
13
|
parent?: IContainer;
|
|
14
14
|
tags?: Tag[];
|
|
15
15
|
});
|
|
16
|
-
register(
|
|
16
|
+
register({ key, value }: Registration<unknown>): this;
|
|
17
17
|
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
18
18
|
createScope(tags?: Tag[]): Container;
|
|
19
19
|
dispose(): void;
|
|
20
|
-
getProviders(): IProvider<unknown
|
|
20
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
21
21
|
getInstances(): unknown[];
|
|
22
22
|
removeScope(child: IContainer): void;
|
|
23
23
|
private validateContainer;
|
|
@@ -53,9 +53,10 @@ var Container = /** @class */ (function () {
|
|
|
53
53
|
this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer_1.EmptyContainer();
|
|
54
54
|
this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
|
|
55
55
|
}
|
|
56
|
-
Container.prototype.register = function (
|
|
56
|
+
Container.prototype.register = function (_a) {
|
|
57
|
+
var key = _a.key, value = _a.value;
|
|
57
58
|
this.validateContainer();
|
|
58
|
-
this.providers.add(
|
|
59
|
+
this.providers.add(key, value);
|
|
59
60
|
return this;
|
|
60
61
|
};
|
|
61
62
|
Container.prototype.resolve = function (key) {
|
|
@@ -79,9 +80,11 @@ var Container = /** @class */ (function () {
|
|
|
79
80
|
this.validateContainer();
|
|
80
81
|
var scope = new Container(this.injector, { parent: this, tags: tags });
|
|
81
82
|
try {
|
|
82
|
-
for (var _b = __values(this.getProviders().
|
|
83
|
-
var
|
|
84
|
-
|
|
83
|
+
for (var _b = __values(this.getProviders().entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
84
|
+
var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
|
|
85
|
+
if (provider.isValid(scope)) {
|
|
86
|
+
scope.register({ key: key, value: provider.clone() });
|
|
87
|
+
}
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IContainer, InjectionToken } from './IContainer';
|
|
2
|
-
import { IProvider } from '../provider/IProvider';
|
|
2
|
+
import { IProvider, ProviderKey } from '../provider/IProvider';
|
|
3
3
|
export declare class EmptyContainer implements IContainer {
|
|
4
4
|
createScope(): IContainer;
|
|
5
5
|
dispose(): void;
|
|
6
6
|
register(): this;
|
|
7
7
|
resolve<T>(key: InjectionToken<T>): T;
|
|
8
|
-
getProviders(): IProvider<unknown
|
|
8
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
9
9
|
getInstances(): unknown[];
|
|
10
10
|
removeScope(): void;
|
|
11
11
|
}
|
|
@@ -19,7 +19,7 @@ var EmptyContainer = /** @class */ (function () {
|
|
|
19
19
|
throw new ProviderNotFoundError_1.ProviderNotFoundError("Cannot find " + key.toString());
|
|
20
20
|
};
|
|
21
21
|
EmptyContainer.prototype.getProviders = function () {
|
|
22
|
-
return
|
|
22
|
+
return new Map();
|
|
23
23
|
};
|
|
24
24
|
EmptyContainer.prototype.getInstances = function () {
|
|
25
25
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,gFAA+E;AAC/E,2EAA0E;AAG1E;IAAA;IA0BA,CAAC;IAzBG,oCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAQ,GAAR;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,iBAAe,GAAG,CAAC,QAAQ,EAAI,CAAC,CAAC;IACrE,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,gFAA+E;AAC/E,2EAA0E;AAG1E;IAAA;IA0BA,CAAC;IAzBG,oCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAQ,GAAR;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,iBAAe,GAAG,CAAC,QAAQ,EAAI,CAAC,CAAC;IACrE,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,oCAAW,GAAX,cAAqB,CAAC;IAC1B,qBAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,wCAAc"}
|
|
@@ -4,10 +4,14 @@ export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
|
|
|
4
4
|
export interface Resolveable {
|
|
5
5
|
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
6
6
|
}
|
|
7
|
+
export interface Registration<T> {
|
|
8
|
+
key: ProviderKey;
|
|
9
|
+
value: IProvider<T>;
|
|
10
|
+
}
|
|
7
11
|
export interface IContainer extends Disposable, Resolveable {
|
|
8
12
|
createScope(tags?: Tag[]): IContainer;
|
|
9
|
-
register(
|
|
10
|
-
getProviders(): IProvider<unknown
|
|
13
|
+
register(value: Registration<unknown>): this;
|
|
14
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
11
15
|
removeScope(child: IContainer): void;
|
|
12
16
|
getInstances(): unknown[];
|
|
13
17
|
}
|
|
@@ -6,8 +6,6 @@ export interface Tagged {
|
|
|
6
6
|
readonly tags: Tag[];
|
|
7
7
|
}
|
|
8
8
|
export interface IProvider<T> extends Disposable {
|
|
9
|
-
setKey(key: ProviderKey): this;
|
|
10
|
-
getKeyOrFail(): ProviderKey;
|
|
11
9
|
clone(): IProvider<T>;
|
|
12
10
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
13
11
|
isValid(filters: Tagged): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
|
|
@@ -7,7 +7,6 @@ export declare class Provider<T> implements IProvider<T> {
|
|
|
7
7
|
static fromValue<T>(value: T): Provider<T>;
|
|
8
8
|
private key?;
|
|
9
9
|
constructor(resolveDependency: ResolveDependency<T>);
|
|
10
|
-
setKey(key: ProviderKey): this;
|
|
11
10
|
clone(): Provider<T>;
|
|
12
11
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
13
12
|
dispose(): void;
|
|
@@ -44,15 +44,8 @@ var Provider = /** @class */ (function () {
|
|
|
44
44
|
Provider.fromValue = function (value) {
|
|
45
45
|
return new Provider(function () { return value; });
|
|
46
46
|
};
|
|
47
|
-
Provider.prototype.setKey = function (key) {
|
|
48
|
-
this.key = key;
|
|
49
|
-
return this;
|
|
50
|
-
};
|
|
51
47
|
Provider.prototype.clone = function () {
|
|
52
|
-
|
|
53
|
-
throw new ProviderHasNoKeyError_1.ProviderHasNoKeyError('Pls provide registration keys for current provider');
|
|
54
|
-
}
|
|
55
|
-
return new Provider(this.resolveDependency).setKey(this.key);
|
|
48
|
+
return new Provider(this.resolveDependency);
|
|
56
49
|
};
|
|
57
50
|
Provider.prototype.resolve = function (container) {
|
|
58
51
|
var args = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;AAChE,yDAAwD;AAExD;IAWI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVjE,kBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI;QAAxB,CAAyB,CAAC,CAAC;IACnE,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAMD,
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;AAChE,yDAAwD;AAExD;IAWI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVjE,kBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI;QAAxB,CAAyB,CAAC,CAAC;IACnE,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAMD,wBAAK,GAAL;QACI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,0BAAO,GAAP,UAAQ,SAAsB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAY,GAAZ;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACL,eAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,4BAAQ;AAmCd,IAAM,MAAM,GACf,UAAC,GAAgB;IACjB,OAAA,UAAC,MAAM;QACH,IAAM,WAAW,GAAG,MAAqC,CAAC;QAC1D,IAAM,EAAE,GAAG,qCAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9D,qCAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,UAAC,OAAO,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAvB,CAAuB,CAAC,CAAC;IACpF,CAAC;AAJD,CAIC,CAAC;AANO,QAAA,MAAM,UAMb"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Resolveable } from '../container/IContainer';
|
|
2
|
-
import { IProvider,
|
|
2
|
+
import { IProvider, Tagged } from './IProvider';
|
|
3
3
|
export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
4
4
|
private decorated;
|
|
5
5
|
protected constructor(decorated: IProvider<T>);
|
|
@@ -7,6 +7,4 @@ export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
|
7
7
|
dispose(): void;
|
|
8
8
|
isValid(filters: Tagged): boolean;
|
|
9
9
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
10
|
-
getKeyOrFail(): ProviderKey;
|
|
11
|
-
setKey(key: ProviderKey): this;
|
|
12
10
|
}
|
|
@@ -47,13 +47,6 @@ var ProviderDecorator = /** @class */ (function () {
|
|
|
47
47
|
}
|
|
48
48
|
return (_a = this.decorated).resolve.apply(_a, __spreadArray([container], __read(args), false));
|
|
49
49
|
};
|
|
50
|
-
ProviderDecorator.prototype.getKeyOrFail = function () {
|
|
51
|
-
return this.decorated.getKeyOrFail();
|
|
52
|
-
};
|
|
53
|
-
ProviderDecorator.prototype.setKey = function (key) {
|
|
54
|
-
this.decorated.setKey(key);
|
|
55
|
-
return this;
|
|
56
|
-
};
|
|
57
50
|
return ProviderDecorator;
|
|
58
51
|
}());
|
|
59
52
|
exports.ProviderDecorator = ProviderDecorator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,iCAAK,GAAL;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,iCAAK,GAAL;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IACL,wBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBqB,8CAAiB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IProvider, ProviderKey } from './IProvider';
|
|
2
2
|
export declare class ProviderRepo {
|
|
3
3
|
private readonly providers;
|
|
4
|
-
add(provider: IProvider<unknown>): this;
|
|
4
|
+
add(key: ProviderKey, provider: IProvider<unknown>): this;
|
|
5
5
|
get<T>(key: ProviderKey): IProvider<T> | undefined;
|
|
6
|
-
merge(providers: IProvider<unknown
|
|
6
|
+
merge(providers: Map<ProviderKey, IProvider<unknown>>): Map<ProviderKey, IProvider<unknown>>;
|
|
7
7
|
dispose(): void;
|
|
8
8
|
}
|
|
@@ -10,51 +10,80 @@ var __values = (this && this.__values) || function(o) {
|
|
|
10
10
|
};
|
|
11
11
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
12
|
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
13
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
30
|
exports.ProviderRepo = void 0;
|
|
15
31
|
var ProviderRepo = /** @class */ (function () {
|
|
16
32
|
function ProviderRepo() {
|
|
17
33
|
this.providers = new Map();
|
|
18
34
|
}
|
|
19
|
-
ProviderRepo.prototype.add = function (provider) {
|
|
20
|
-
this.providers.set(
|
|
35
|
+
ProviderRepo.prototype.add = function (key, provider) {
|
|
36
|
+
this.providers.set(key, provider);
|
|
21
37
|
return this;
|
|
22
38
|
};
|
|
23
39
|
ProviderRepo.prototype.get = function (key) {
|
|
24
40
|
return this.providers.get(key);
|
|
25
41
|
};
|
|
26
42
|
ProviderRepo.prototype.merge = function (providers) {
|
|
27
|
-
var e_1, _a;
|
|
43
|
+
var e_1, _a, e_2, _b;
|
|
28
44
|
var map = new Map();
|
|
29
45
|
try {
|
|
30
|
-
for (var
|
|
31
|
-
var
|
|
32
|
-
map.set(
|
|
46
|
+
for (var _c = __values(providers.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
47
|
+
var _e = __read(_d.value, 2), key = _e[0], value = _e[1];
|
|
48
|
+
map.set(key, value);
|
|
33
49
|
}
|
|
34
50
|
}
|
|
35
51
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
36
52
|
finally {
|
|
37
53
|
try {
|
|
38
|
-
if (
|
|
54
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
39
55
|
}
|
|
40
56
|
finally { if (e_1) throw e_1.error; }
|
|
41
57
|
}
|
|
42
|
-
|
|
58
|
+
try {
|
|
59
|
+
for (var _f = __values(this.providers.entries()), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
60
|
+
var _h = __read(_g.value, 2), key = _h[0], value = _h[1];
|
|
61
|
+
map.set(key, value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
65
|
+
finally {
|
|
66
|
+
try {
|
|
67
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
68
|
+
}
|
|
69
|
+
finally { if (e_2) throw e_2.error; }
|
|
70
|
+
}
|
|
71
|
+
return map;
|
|
43
72
|
};
|
|
44
73
|
ProviderRepo.prototype.dispose = function () {
|
|
45
|
-
var
|
|
74
|
+
var e_3, _a;
|
|
46
75
|
try {
|
|
47
76
|
for (var _b = __values(this.providers.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
48
77
|
var p = _c.value;
|
|
49
78
|
p.dispose();
|
|
50
79
|
}
|
|
51
80
|
}
|
|
52
|
-
catch (
|
|
81
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
53
82
|
finally {
|
|
54
83
|
try {
|
|
55
84
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
56
85
|
}
|
|
57
|
-
finally { if (
|
|
86
|
+
finally { if (e_3) throw e_3.error; }
|
|
58
87
|
}
|
|
59
88
|
this.providers.clear();
|
|
60
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IAAA;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IA4B5E,CAAC;IA1BG,0BAAG,GAAH,UAAI,GAAgB,EAAE,QAA4B;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0BAAG,GAAH,UAAO,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;IACnD,CAAC;IAED,4BAAK,GAAL,UAAM,SAA+C;;QACjD,IAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;;YACvD,KAA2B,IAAA,KAAA,SAAA,SAAS,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAArC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACvB;;;;;;;;;;YACD,KAA2B,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAA1C,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACvB;;;;;;;;;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,8BAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACL,mBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,oCAAY"}
|
|
@@ -2,17 +2,19 @@ import { IProvider, ProviderKey, Tag } from '../core/provider/IProvider';
|
|
|
2
2
|
import { ProviderReducer } from '../core/provider/IProviderReflector';
|
|
3
3
|
import { ArgsFn } from './ArgsProvider';
|
|
4
4
|
import { constructor } from '../core/utils/types';
|
|
5
|
+
import { Registration } from '../core/container/IContainer';
|
|
5
6
|
export declare class ProviderBuilder<T> {
|
|
6
7
|
private provider;
|
|
7
8
|
static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
8
9
|
static fromValue<T>(value: T): ProviderBuilder<T>;
|
|
9
10
|
static fromFn<T>(fn: (...args: any[]) => T): ProviderBuilder<T>;
|
|
11
|
+
private key?;
|
|
10
12
|
constructor(provider: IProvider<T>);
|
|
11
13
|
withArgs(...extraArgs: any[]): this;
|
|
12
14
|
withArgsFn(argsFn: ArgsFn): this;
|
|
13
15
|
map(reducer: ProviderReducer<T>): ProviderBuilder<T>;
|
|
14
|
-
|
|
16
|
+
perTags(...tags: Tag[]): this;
|
|
15
17
|
asSingleton(): this;
|
|
16
18
|
forKey(key: ProviderKey): this;
|
|
17
|
-
build():
|
|
19
|
+
build(): Registration<T>;
|
|
18
20
|
}
|
|
@@ -6,6 +6,7 @@ var TaggedProvider_1 = require("./TaggedProvider");
|
|
|
6
6
|
var ArgsProvider_1 = require("./ArgsProvider");
|
|
7
7
|
var Provider_1 = require("../core/provider/Provider");
|
|
8
8
|
var ProviderReflector_1 = require("../core/provider/ProviderReflector");
|
|
9
|
+
var ProviderHasNoKeyError_1 = require("../core/provider/ProviderHasNoKeyError");
|
|
9
10
|
var ProviderBuilder = /** @class */ (function () {
|
|
10
11
|
function ProviderBuilder(provider) {
|
|
11
12
|
this.provider = provider;
|
|
@@ -34,7 +35,7 @@ var ProviderBuilder = /** @class */ (function () {
|
|
|
34
35
|
ProviderBuilder.prototype.map = function (reducer) {
|
|
35
36
|
return reducer(this);
|
|
36
37
|
};
|
|
37
|
-
ProviderBuilder.prototype.
|
|
38
|
+
ProviderBuilder.prototype.perTags = function () {
|
|
38
39
|
var tags = [];
|
|
39
40
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
40
41
|
tags[_i] = arguments[_i];
|
|
@@ -47,11 +48,14 @@ var ProviderBuilder = /** @class */ (function () {
|
|
|
47
48
|
return this;
|
|
48
49
|
};
|
|
49
50
|
ProviderBuilder.prototype.forKey = function (key) {
|
|
50
|
-
this.
|
|
51
|
+
this.key = key;
|
|
51
52
|
return this;
|
|
52
53
|
};
|
|
53
54
|
ProviderBuilder.prototype.build = function () {
|
|
54
|
-
|
|
55
|
+
if (!this.key) {
|
|
56
|
+
throw new ProviderHasNoKeyError_1.ProviderHasNoKeyError('Pls provide registration keys for current provider');
|
|
57
|
+
}
|
|
58
|
+
return { key: this.key, value: this.provider };
|
|
55
59
|
};
|
|
56
60
|
return ProviderBuilder;
|
|
57
61
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,mDAAkD;AAElD,+CAAsD;AACtD,sDAAqD;AAErD,wEAAuE;AAEvE;
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,mDAAkD;AAElD,+CAAsD;AACtD,sDAAqD;AAErD,wEAAuE;AAEvE,gFAA+E;AAE/E;IAeI,yBAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAdvC,yBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC;IAEM,yBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,sBAAM,GAAb,UAAiB,EAAyB;QACtC,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAMD,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,6BAAG,GAAH,UAAI,OAA2B;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,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,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IACL,sBAAC;AAAD,CAAC,AApDD,IAoDC;AApDY,0CAAe"}
|
|
@@ -71,7 +71,7 @@ var perTags = function () {
|
|
|
71
71
|
var fn = ProviderReflector_1.providerReflector.findReducerOrCreate(targetClass);
|
|
72
72
|
ProviderReflector_1.providerReflector.addReducer(targetClass, function (builder) {
|
|
73
73
|
var _a;
|
|
74
|
-
return (_a = fn(builder)).
|
|
74
|
+
return (_a = fn(builder)).perTags.apply(_a, __spreadArray([], __read(tags), false));
|
|
75
75
|
});
|
|
76
76
|
};
|
|
77
77
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IContainer, InjectionToken, IProvider } from './index';
|
|
1
|
+
import { IContainer, InjectionToken, IProvider, ProviderKey } from './index';
|
|
2
2
|
export declare abstract class AutoMockedContainer implements IContainer {
|
|
3
3
|
createScope(): IContainer;
|
|
4
4
|
abstract resolve<T>(key: InjectionToken<T>): T;
|
|
5
5
|
abstract dispose(): void;
|
|
6
|
-
getProviders(): IProvider<unknown
|
|
6
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
7
7
|
register(): this;
|
|
8
8
|
getInstances(): unknown[];
|
|
9
9
|
removeScope(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAe,MAAM,SAAS,CAAC;AAExG,MAAM,OAAgB,mBAAmB;IACrC,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,YAAY;QACR,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,KAAU,CAAC;CACzB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IContainer, InjectionToken } from './IContainer';
|
|
1
|
+
import { IContainer, InjectionToken, Registration } from './IContainer';
|
|
2
2
|
import { IInjector } from '../IInjector';
|
|
3
|
-
import { IProvider, Tagged, Tag } from '../provider/IProvider';
|
|
3
|
+
import { IProvider, Tagged, Tag, ProviderKey } from '../provider/IProvider';
|
|
4
4
|
export declare class Container implements IContainer, Tagged {
|
|
5
5
|
private readonly injector;
|
|
6
6
|
private readonly providers;
|
|
@@ -13,11 +13,11 @@ export declare class Container implements IContainer, Tagged {
|
|
|
13
13
|
parent?: IContainer;
|
|
14
14
|
tags?: Tag[];
|
|
15
15
|
});
|
|
16
|
-
register(
|
|
16
|
+
register({ key, value }: Registration<unknown>): this;
|
|
17
17
|
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
18
18
|
createScope(tags?: Tag[]): Container;
|
|
19
19
|
dispose(): void;
|
|
20
|
-
getProviders(): IProvider<unknown
|
|
20
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
21
21
|
getInstances(): unknown[];
|
|
22
22
|
removeScope(child: IContainer): void;
|
|
23
23
|
private validateContainer;
|
|
@@ -13,9 +13,9 @@ export class Container {
|
|
|
13
13
|
this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer();
|
|
14
14
|
this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
|
|
15
15
|
}
|
|
16
|
-
register(
|
|
16
|
+
register({ key, value }) {
|
|
17
17
|
this.validateContainer();
|
|
18
|
-
this.providers.add(
|
|
18
|
+
this.providers.add(key, value);
|
|
19
19
|
return this;
|
|
20
20
|
}
|
|
21
21
|
resolve(key, ...args) {
|
|
@@ -31,8 +31,10 @@ export class Container {
|
|
|
31
31
|
createScope(tags = []) {
|
|
32
32
|
this.validateContainer();
|
|
33
33
|
const scope = new Container(this.injector, { parent: this, tags });
|
|
34
|
-
for (const provider of this.getProviders().
|
|
35
|
-
|
|
34
|
+
for (const [key, provider] of this.getProviders().entries()) {
|
|
35
|
+
if (provider.isValid(scope)) {
|
|
36
|
+
scope.register({ key, value: provider.clone() });
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
this.children.add(scope);
|
|
38
40
|
return scope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,aAAa,
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IContainer, InjectionToken } from './IContainer';
|
|
2
|
-
import { IProvider } from '../provider/IProvider';
|
|
2
|
+
import { IProvider, ProviderKey } from '../provider/IProvider';
|
|
3
3
|
export declare class EmptyContainer implements IContainer {
|
|
4
4
|
createScope(): IContainer;
|
|
5
5
|
dispose(): void;
|
|
6
6
|
register(): this;
|
|
7
7
|
resolve<T>(key: InjectionToken<T>): T;
|
|
8
|
-
getProviders(): IProvider<unknown
|
|
8
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
9
9
|
getInstances(): unknown[];
|
|
10
10
|
removeScope(): void;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,OAAO,cAAc;IACvB,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO;QACH,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,CAAI,GAAsB;QAC7B,MAAM,IAAI,qBAAqB,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,OAAO,cAAc;IACvB,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO;QACH,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,CAAI,GAAsB;QAC7B,MAAM,IAAI,qBAAqB,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACR,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,KAAU,CAAC;CACzB"}
|
|
@@ -4,10 +4,14 @@ export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
|
|
|
4
4
|
export interface Resolveable {
|
|
5
5
|
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
6
6
|
}
|
|
7
|
+
export interface Registration<T> {
|
|
8
|
+
key: ProviderKey;
|
|
9
|
+
value: IProvider<T>;
|
|
10
|
+
}
|
|
7
11
|
export interface IContainer extends Disposable, Resolveable {
|
|
8
12
|
createScope(tags?: Tag[]): IContainer;
|
|
9
|
-
register(
|
|
10
|
-
getProviders(): IProvider<unknown
|
|
13
|
+
register(value: Registration<unknown>): this;
|
|
14
|
+
getProviders(): Map<ProviderKey, IProvider<unknown>>;
|
|
11
15
|
removeScope(child: IContainer): void;
|
|
12
16
|
getInstances(): unknown[];
|
|
13
17
|
}
|
|
@@ -6,8 +6,6 @@ export interface Tagged {
|
|
|
6
6
|
readonly tags: Tag[];
|
|
7
7
|
}
|
|
8
8
|
export interface IProvider<T> extends Disposable {
|
|
9
|
-
setKey(key: ProviderKey): this;
|
|
10
|
-
getKeyOrFail(): ProviderKey;
|
|
11
9
|
clone(): IProvider<T>;
|
|
12
10
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
13
11
|
isValid(filters: Tagged): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -7,7 +7,6 @@ export declare class Provider<T> implements IProvider<T> {
|
|
|
7
7
|
static fromValue<T>(value: T): Provider<T>;
|
|
8
8
|
private key?;
|
|
9
9
|
constructor(resolveDependency: ResolveDependency<T>);
|
|
10
|
-
setKey(key: ProviderKey): this;
|
|
11
10
|
clone(): Provider<T>;
|
|
12
11
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
13
12
|
dispose(): void;
|
|
@@ -10,15 +10,8 @@ export class Provider {
|
|
|
10
10
|
static fromValue(value) {
|
|
11
11
|
return new Provider(() => value);
|
|
12
12
|
}
|
|
13
|
-
setKey(key) {
|
|
14
|
-
this.key = key;
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
13
|
clone() {
|
|
18
|
-
|
|
19
|
-
throw new ProviderHasNoKeyError('Pls provide registration keys for current provider');
|
|
20
|
-
}
|
|
21
|
-
return new Provider(this.resolveDependency).setKey(this.key);
|
|
14
|
+
return new Provider(this.resolveDependency);
|
|
22
15
|
}
|
|
23
16
|
resolve(container, ...args) {
|
|
24
17
|
return this.resolveDependency(container, ...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,QAAQ;IAWjB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVxE,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAMD,
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,QAAQ;IAWjB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVxE,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAMD,KAAK;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAU,CAAC;IAElB,OAAO;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,MAAM,GACf,CAAC,GAAgB,EAAkB,EAAE,CACrC,CAAC,MAAM,EAAE,EAAE;IACP,MAAM,WAAW,GAAG,MAAqC,CAAC;IAC1D,MAAM,EAAE,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9D,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Resolveable } from '../container/IContainer';
|
|
2
|
-
import { IProvider,
|
|
2
|
+
import { IProvider, Tagged } from './IProvider';
|
|
3
3
|
export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
4
4
|
private decorated;
|
|
5
5
|
protected constructor(decorated: IProvider<T>);
|
|
@@ -7,6 +7,4 @@ export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
|
7
7
|
dispose(): void;
|
|
8
8
|
isValid(filters: Tagged): boolean;
|
|
9
9
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
10
|
-
getKeyOrFail(): ProviderKey;
|
|
11
|
-
setKey(key: ProviderKey): this;
|
|
12
10
|
}
|
|
@@ -14,12 +14,5 @@ export class ProviderDecorator {
|
|
|
14
14
|
resolve(container, ...args) {
|
|
15
15
|
return this.decorated.resolve(container, ...args);
|
|
16
16
|
}
|
|
17
|
-
getKeyOrFail() {
|
|
18
|
-
return this.decorated.getKeyOrFail();
|
|
19
|
-
}
|
|
20
|
-
setKey(key) {
|
|
21
|
-
this.decorated.setKey(key);
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
17
|
}
|
|
25
18
|
//# sourceMappingURL=ProviderDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,iBAAiB;IACnC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,KAAK;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,iBAAiB;IACnC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,KAAK;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;CACJ"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IProvider, ProviderKey } from './IProvider';
|
|
2
2
|
export declare class ProviderRepo {
|
|
3
3
|
private readonly providers;
|
|
4
|
-
add(provider: IProvider<unknown>): this;
|
|
4
|
+
add(key: ProviderKey, provider: IProvider<unknown>): this;
|
|
5
5
|
get<T>(key: ProviderKey): IProvider<T> | undefined;
|
|
6
|
-
merge(providers: IProvider<unknown
|
|
6
|
+
merge(providers: Map<ProviderKey, IProvider<unknown>>): Map<ProviderKey, IProvider<unknown>>;
|
|
7
7
|
dispose(): void;
|
|
8
8
|
}
|
|
@@ -2,8 +2,8 @@ export class ProviderRepo {
|
|
|
2
2
|
constructor() {
|
|
3
3
|
this.providers = new Map();
|
|
4
4
|
}
|
|
5
|
-
add(provider) {
|
|
6
|
-
this.providers.set(
|
|
5
|
+
add(key, provider) {
|
|
6
|
+
this.providers.set(key, provider);
|
|
7
7
|
return this;
|
|
8
8
|
}
|
|
9
9
|
get(key) {
|
|
@@ -11,10 +11,13 @@ export class ProviderRepo {
|
|
|
11
11
|
}
|
|
12
12
|
merge(providers) {
|
|
13
13
|
const map = new Map();
|
|
14
|
-
for (const
|
|
15
|
-
map.set(
|
|
14
|
+
for (const [key, value] of providers.entries()) {
|
|
15
|
+
map.set(key, value);
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
for (const [key, value] of this.providers.entries()) {
|
|
18
|
+
map.set(key, value);
|
|
19
|
+
}
|
|
20
|
+
return map;
|
|
18
21
|
}
|
|
19
22
|
dispose() {
|
|
20
23
|
for (const p of this.providers.values()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAAzB;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAAzB;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IA4B5E,CAAC;IA1BG,GAAG,CAAC,GAAgB,EAAE,QAA4B;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAI,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAA+C;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACvB;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;YACjD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO;QACH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;YACrC,CAAC,CAAC,OAAO,EAAE,CAAC;SACf;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ"}
|
|
@@ -2,17 +2,19 @@ import { IProvider, ProviderKey, Tag } from '../core/provider/IProvider';
|
|
|
2
2
|
import { ProviderReducer } from '../core/provider/IProviderReflector';
|
|
3
3
|
import { ArgsFn } from './ArgsProvider';
|
|
4
4
|
import { constructor } from '../core/utils/types';
|
|
5
|
+
import { Registration } from '../core/container/IContainer';
|
|
5
6
|
export declare class ProviderBuilder<T> {
|
|
6
7
|
private provider;
|
|
7
8
|
static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
8
9
|
static fromValue<T>(value: T): ProviderBuilder<T>;
|
|
9
10
|
static fromFn<T>(fn: (...args: any[]) => T): ProviderBuilder<T>;
|
|
11
|
+
private key?;
|
|
10
12
|
constructor(provider: IProvider<T>);
|
|
11
13
|
withArgs(...extraArgs: any[]): this;
|
|
12
14
|
withArgsFn(argsFn: ArgsFn): this;
|
|
13
15
|
map(reducer: ProviderReducer<T>): ProviderBuilder<T>;
|
|
14
|
-
|
|
16
|
+
perTags(...tags: Tag[]): this;
|
|
15
17
|
asSingleton(): this;
|
|
16
18
|
forKey(key: ProviderKey): this;
|
|
17
|
-
build():
|
|
19
|
+
build(): Registration<T>;
|
|
18
20
|
}
|
|
@@ -3,6 +3,7 @@ import { TaggedProvider } from './TaggedProvider';
|
|
|
3
3
|
import { ArgsProvider } from './ArgsProvider';
|
|
4
4
|
import { Provider } from '../core/provider/Provider';
|
|
5
5
|
import { providerReflector } from '../core/provider/ProviderReflector';
|
|
6
|
+
import { ProviderHasNoKeyError } from '../core/provider/ProviderHasNoKeyError';
|
|
6
7
|
export class ProviderBuilder {
|
|
7
8
|
constructor(provider) {
|
|
8
9
|
this.provider = provider;
|
|
@@ -27,7 +28,7 @@ export class ProviderBuilder {
|
|
|
27
28
|
map(reducer) {
|
|
28
29
|
return reducer(this);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
perTags(...tags) {
|
|
31
32
|
this.provider = new TaggedProvider(this.provider, tags);
|
|
32
33
|
return this;
|
|
33
34
|
}
|
|
@@ -36,11 +37,14 @@ export class ProviderBuilder {
|
|
|
36
37
|
return this;
|
|
37
38
|
}
|
|
38
39
|
forKey(key) {
|
|
39
|
-
this.
|
|
40
|
+
this.key = key;
|
|
40
41
|
return this;
|
|
41
42
|
}
|
|
42
43
|
build() {
|
|
43
|
-
|
|
44
|
+
if (!this.key) {
|
|
45
|
+
throw new ProviderHasNoKeyError('Pls provide registration keys for current provider');
|
|
46
|
+
}
|
|
47
|
+
return { key: this.key, value: this.provider };
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
//# sourceMappingURL=ProviderBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,MAAM,OAAO,eAAe;IAexB,YAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAd9C,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAI,EAAyB;QACtC,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAMD,QAAQ,CAAC,GAAG,SAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,OAA2B;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;CACJ"}
|
|
@@ -17,6 +17,6 @@ export class TaggedProvider extends ProviderDecorator {
|
|
|
17
17
|
export const perTags = (...tags) => (target) => {
|
|
18
18
|
const targetClass = target;
|
|
19
19
|
const fn = providerReflector.findReducerOrCreate(targetClass);
|
|
20
|
-
providerReflector.addReducer(targetClass, (builder) => fn(builder).
|
|
20
|
+
providerReflector.addReducer(targetClass, (builder) => fn(builder).perTags(...tags));
|
|
21
21
|
};
|
|
22
22
|
//# sourceMappingURL=TaggedProvider.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"author": "ibabkin <igba14@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/IgorBabkin/ts-ioc-container/tree/master/packages/ts-ioc-container",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"ts-jest": "27.0.5",
|
|
47
47
|
"typescript": "4.4.3"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "e633ef33be09ddec0c2af39d3b2d48a74459df10"
|
|
50
50
|
}
|