ts-ioc-container 21.0.13 → 22.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/README.md +40 -20
- package/cjm/container/AutoMockedContainer.d.ts +1 -0
- package/cjm/container/AutoMockedContainer.js +3 -0
- package/cjm/container/AutoMockedContainer.js.map +1 -1
- package/cjm/container/Container.d.ts +3 -3
- package/cjm/container/Container.js +6 -3
- package/cjm/container/Container.js.map +1 -1
- package/cjm/container/EmptyContainer.d.ts +1 -0
- package/cjm/container/EmptyContainer.js +3 -0
- package/cjm/container/EmptyContainer.js.map +1 -1
- package/cjm/container/IContainer.d.ts +5 -2
- package/cjm/index.d.ts +2 -9
- package/cjm/index.js +10 -48
- package/cjm/index.js.map +1 -1
- package/cjm/provider/IProvider.d.ts +1 -1
- package/cjm/provider/Provider.d.ts +0 -3
- package/cjm/provider/Provider.js +0 -12
- package/cjm/provider/Provider.js.map +1 -1
- package/cjm/provider/ProviderBuilder.d.ts +15 -0
- package/cjm/provider/ProviderBuilder.js +89 -0
- package/cjm/provider/ProviderBuilder.js.map +1 -0
- package/cjm/registration/Registration.d.ts +21 -4
- package/cjm/registration/Registration.js +116 -0
- package/cjm/registration/Registration.js.map +1 -1
- package/cjm/registration/RegistrationReflector.d.ts +3 -3
- package/cjm/registration/RegistrationReflector.js +2 -2
- package/cjm/registration/RegistrationReflector.js.map +1 -1
- package/cjm/utils.d.ts +3 -0
- package/cjm/utils.js +5 -1
- package/cjm/utils.js.map +1 -1
- package/esm/container/AutoMockedContainer.d.ts +1 -0
- package/esm/container/AutoMockedContainer.js +3 -0
- package/esm/container/AutoMockedContainer.js.map +1 -1
- package/esm/container/Container.d.ts +3 -3
- package/esm/container/Container.js +6 -2
- package/esm/container/Container.js.map +1 -1
- package/esm/container/EmptyContainer.d.ts +1 -0
- package/esm/container/EmptyContainer.js +3 -0
- package/esm/container/EmptyContainer.js.map +1 -1
- package/esm/container/IContainer.d.ts +5 -2
- package/esm/index.d.ts +2 -9
- package/esm/index.js +2 -25
- package/esm/index.js.map +1 -1
- package/esm/provider/IProvider.d.ts +1 -1
- package/esm/provider/Provider.d.ts +0 -3
- package/esm/provider/Provider.js +0 -6
- package/esm/provider/Provider.js.map +1 -1
- package/esm/provider/ProviderBuilder.d.ts +15 -0
- package/esm/{registration/RegistrationBuilder.js → provider/ProviderBuilder.js} +16 -14
- package/esm/provider/ProviderBuilder.js.map +1 -0
- package/esm/registration/Registration.d.ts +21 -4
- package/esm/registration/Registration.js +56 -1
- package/esm/registration/Registration.js.map +1 -1
- package/esm/registration/RegistrationReflector.d.ts +3 -3
- package/esm/registration/RegistrationReflector.js +3 -3
- package/esm/registration/RegistrationReflector.js.map +1 -1
- package/esm/utils.d.ts +3 -0
- package/esm/utils.js +3 -0
- package/esm/utils.js.map +1 -1
- package/package.json +2 -2
- package/cjm/registration/RegistrationBuilder.d.ts +0 -14
- package/cjm/registration/RegistrationBuilder.js +0 -56
- package/cjm/registration/RegistrationBuilder.js.map +0 -1
- package/esm/registration/RegistrationBuilder.d.ts +0 -14
- package/esm/registration/RegistrationBuilder.js.map +0 -1
|
@@ -1,3 +1,119 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
+
if (ar || !(i in from)) {
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
+
};
|
|
2
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.forKey = exports.asSingleton = exports.perTags = exports.Registration = void 0;
|
|
29
|
+
var RegistrationMissingKeyError_1 = require("./RegistrationMissingKeyError");
|
|
30
|
+
var ProviderBuilder_1 = require("../provider/ProviderBuilder");
|
|
31
|
+
var RegistrationReflector_1 = require("./RegistrationReflector");
|
|
32
|
+
var utils_1 = require("../utils");
|
|
33
|
+
var registrationReflector = new RegistrationReflector_1.RegistrationReflector();
|
|
34
|
+
var Registration = /** @class */ (function () {
|
|
35
|
+
function Registration(providerBuilder) {
|
|
36
|
+
this.providerBuilder = providerBuilder;
|
|
37
|
+
}
|
|
38
|
+
Registration.fromClass = function (Target) {
|
|
39
|
+
var _a;
|
|
40
|
+
var map = (_a = registrationReflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
|
|
41
|
+
return map(new Registration(ProviderBuilder_1.ProviderBuilder.fromClass(Target)));
|
|
42
|
+
};
|
|
43
|
+
Registration.fromValue = function (value) {
|
|
44
|
+
return new Registration(ProviderBuilder_1.ProviderBuilder.fromValue(value));
|
|
45
|
+
};
|
|
46
|
+
Registration.fromFn = function (fn) {
|
|
47
|
+
return new Registration(ProviderBuilder_1.ProviderBuilder.fromFn(fn));
|
|
48
|
+
};
|
|
49
|
+
Registration.prototype.withArgs = function () {
|
|
50
|
+
var _a;
|
|
51
|
+
var extraArgs = [];
|
|
52
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
53
|
+
extraArgs[_i] = arguments[_i];
|
|
54
|
+
}
|
|
55
|
+
this.providerBuilder = (_a = this.providerBuilder).withArgs.apply(_a, __spreadArray([], __read(extraArgs), false));
|
|
56
|
+
return this;
|
|
57
|
+
};
|
|
58
|
+
Registration.prototype.withArgsFn = function (argsFn) {
|
|
59
|
+
this.providerBuilder = this.providerBuilder.withArgsFn(argsFn);
|
|
60
|
+
return this;
|
|
61
|
+
};
|
|
62
|
+
Registration.prototype.perTags = function () {
|
|
63
|
+
var _a;
|
|
64
|
+
var tags = [];
|
|
65
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
66
|
+
tags[_i] = arguments[_i];
|
|
67
|
+
}
|
|
68
|
+
this.providerBuilder = (_a = this.providerBuilder).perTags.apply(_a, __spreadArray([], __read(tags), false));
|
|
69
|
+
return this;
|
|
70
|
+
};
|
|
71
|
+
Registration.prototype.asSingleton = function () {
|
|
72
|
+
var _a;
|
|
73
|
+
var tags = [];
|
|
74
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
75
|
+
tags[_i] = arguments[_i];
|
|
76
|
+
}
|
|
77
|
+
this.providerBuilder = (_a = this.providerBuilder).asSingleton.apply(_a, __spreadArray([], __read(tags), false));
|
|
78
|
+
return this;
|
|
79
|
+
};
|
|
80
|
+
Registration.prototype.forKey = function (key) {
|
|
81
|
+
this.key = key;
|
|
82
|
+
return this;
|
|
83
|
+
};
|
|
84
|
+
Registration.prototype.applyTo = function (container) {
|
|
85
|
+
if (!this.key) {
|
|
86
|
+
throw new RegistrationMissingKeyError_1.RegistrationMissingKeyError('Pls provide registration keys for current providerBuilder');
|
|
87
|
+
}
|
|
88
|
+
container.register(this.key, this.providerBuilder.build());
|
|
89
|
+
};
|
|
90
|
+
return Registration;
|
|
91
|
+
}());
|
|
92
|
+
exports.Registration = Registration;
|
|
93
|
+
var perTags = function () {
|
|
94
|
+
var tags = [];
|
|
95
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
96
|
+
tags[_i] = arguments[_i];
|
|
97
|
+
}
|
|
98
|
+
return function (target) {
|
|
99
|
+
registrationReflector.appendMapper(target, function (registration) { return registration.perTags.apply(registration, __spreadArray([], __read(tags), false)); });
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
exports.perTags = perTags;
|
|
103
|
+
var asSingleton = function () {
|
|
104
|
+
var tags = [];
|
|
105
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
106
|
+
tags[_i] = arguments[_i];
|
|
107
|
+
}
|
|
108
|
+
return function (target) {
|
|
109
|
+
registrationReflector.appendMapper(target, function (registration) { return registration.asSingleton.apply(registration, __spreadArray([], __read(tags), false)); });
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
exports.asSingleton = asSingleton;
|
|
113
|
+
var forKey = function (key) {
|
|
114
|
+
return function (target) {
|
|
115
|
+
registrationReflector.appendMapper(target, function (registration) { return registration.forKey(key); });
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
exports.forKey = forKey;
|
|
3
119
|
//# sourceMappingURL=Registration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { constructor, MapFn } from '../utils';
|
|
2
|
-
import {
|
|
2
|
+
import { Registration } from './Registration';
|
|
3
3
|
export declare class RegistrationReflector {
|
|
4
4
|
private metadataKey;
|
|
5
|
-
getMapper<T>(target: constructor<T>): MapFn<
|
|
6
|
-
appendMapper
|
|
5
|
+
getMapper<T>(target: constructor<T>): MapFn<Registration> | undefined;
|
|
6
|
+
appendMapper(target: constructor<unknown>, reducer: MapFn<Registration>): void;
|
|
7
7
|
}
|
|
@@ -9,10 +9,10 @@ var RegistrationReflector = /** @class */ (function () {
|
|
|
9
9
|
RegistrationReflector.prototype.getMapper = function (target) {
|
|
10
10
|
return Reflect.getMetadata(this.metadataKey, target);
|
|
11
11
|
};
|
|
12
|
-
RegistrationReflector.prototype.appendMapper = function (target,
|
|
12
|
+
RegistrationReflector.prototype.appendMapper = function (target, reducer) {
|
|
13
13
|
var _a;
|
|
14
14
|
var current = (_a = Reflect.getMetadata(this.metadataKey, target)) !== null && _a !== void 0 ? _a : utils_1.identity;
|
|
15
|
-
Reflect.defineMetadata(this.metadataKey,
|
|
15
|
+
Reflect.defineMetadata(this.metadataKey, (0, utils_1.pipe)(current, reducer), target);
|
|
16
16
|
};
|
|
17
17
|
return RegistrationReflector;
|
|
18
18
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegistrationReflector.js","sourceRoot":"","sources":["../../lib/registration/RegistrationReflector.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"RegistrationReflector.js","sourceRoot":"","sources":["../../lib/registration/RegistrationReflector.ts"],"names":[],"mappings":";;;AAAA,kCAA8D;AAG9D;IAAA;QACY,gBAAW,GAAG,uBAAuB,CAAC;IASlD,CAAC;IARG,yCAAS,GAAT,UAAa,MAAsB;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,4CAAY,GAAZ,UAAa,MAA4B,EAAE,OAA4B;;QACnE,IAAM,OAAO,GAAG,MAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,gBAAQ,CAAC;QAC1E,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAA,YAAI,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IACL,4BAAC;AAAD,CAAC,AAVD,IAUC;AAVY,sDAAqB"}
|
package/cjm/utils.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare type constructor<T> = new (...args: any[]) => T;
|
|
2
2
|
export declare type MapFn<T> = (value: T) => T;
|
|
3
|
+
declare type Fn<A, B> = (a: A) => B;
|
|
4
|
+
export declare function pipe<A, B, C>(a: Fn<A, B>, b: Fn<B, C>): Fn<A, C>;
|
|
3
5
|
export declare const identity: <T>(value: T) => T;
|
|
6
|
+
export {};
|
package/cjm/utils.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.identity = void 0;
|
|
3
|
+
exports.identity = exports.pipe = void 0;
|
|
4
|
+
function pipe(a, b) {
|
|
5
|
+
return function (x) { return b(a(x)); };
|
|
6
|
+
}
|
|
7
|
+
exports.pipe = pipe;
|
|
4
8
|
var identity = function (value) { return value; };
|
|
5
9
|
exports.identity = identity;
|
|
6
10
|
//# sourceMappingURL=utils.js.map
|
package/cjm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;AAMA,SAAgB,IAAI,CAAU,CAAW,EAAE,CAAW;IAClD,OAAO,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAP,CAAO,CAAC;AAC1B,CAAC;AAFD,oBAEC;AAEM,IAAM,QAAQ,GAAG,UAAI,KAAQ,IAAK,OAAA,KAAK,EAAL,CAAK,CAAC;AAAlC,QAAA,QAAQ,YAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAe,MAAM,UAAU,CAAC;AAEzG,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;
|
|
1
|
+
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAe,MAAM,UAAU,CAAC;AAEzG,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;IAEtB,GAAG;QACC,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;CACJ"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { IContainer, InjectionToken } from './IContainer';
|
|
1
|
+
import { IContainer, IModule, InjectionToken } from './IContainer';
|
|
2
2
|
import { IInjector } from '../IInjector';
|
|
3
3
|
import { IProvider, ProviderKey, Tag, Tagged } from '../provider/IProvider';
|
|
4
|
-
import { Registration } from '../registration/Registration';
|
|
5
4
|
export declare class Container implements IContainer, Tagged {
|
|
6
5
|
private readonly injector;
|
|
7
6
|
private readonly providers;
|
|
@@ -14,7 +13,7 @@ export declare class Container implements IContainer, Tagged {
|
|
|
14
13
|
parent?: IContainer;
|
|
15
14
|
tags?: Tag[];
|
|
16
15
|
});
|
|
17
|
-
register(
|
|
16
|
+
register(key: ProviderKey, provider: IProvider): this;
|
|
18
17
|
resolve<T>(key: InjectionToken<T>, ...args: unknown[]): T;
|
|
19
18
|
private resolveByProvider;
|
|
20
19
|
private resolveByInjector;
|
|
@@ -24,5 +23,6 @@ export declare class Container implements IContainer, Tagged {
|
|
|
24
23
|
getInstances(): unknown[];
|
|
25
24
|
removeScope(child: IContainer): void;
|
|
26
25
|
hasTag(tag: Tag): boolean;
|
|
26
|
+
add(module: IModule): this;
|
|
27
27
|
private validateContainer;
|
|
28
28
|
}
|
|
@@ -13,7 +13,7 @@ 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, provider) {
|
|
17
17
|
this.validateContainer();
|
|
18
18
|
this.providers.add(key, provider);
|
|
19
19
|
return this;
|
|
@@ -36,7 +36,7 @@ export class Container {
|
|
|
36
36
|
const scope = new Container(this.injector, { parent: this, tags });
|
|
37
37
|
for (const [key, provider] of this.getProviders().entries()) {
|
|
38
38
|
if (provider.isValid(scope)) {
|
|
39
|
-
scope.register(
|
|
39
|
+
scope.register(key, provider.clone());
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
this.children.add(scope);
|
|
@@ -69,6 +69,10 @@ export class Container {
|
|
|
69
69
|
hasTag(tag) {
|
|
70
70
|
return this.tags.includes(tag);
|
|
71
71
|
}
|
|
72
|
+
add(module) {
|
|
73
|
+
module.applyTo(this);
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
72
76
|
validateContainer() {
|
|
73
77
|
ContainerDisposedError.assert(!this.isDisposed, 'Container is already disposed');
|
|
74
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,aAAa,EAA4B,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,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;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,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;IAEtB,GAAG;QACC,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;CACJ"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { IProvider, ProviderKey, Tag } from '../provider/IProvider';
|
|
2
2
|
import { constructor } from '../utils';
|
|
3
|
-
import { Registration } from '../registration/Registration';
|
|
4
3
|
export declare type InjectionToken<T = unknown> = constructor<T> | ProviderKey;
|
|
5
4
|
export interface Resolvable {
|
|
6
5
|
resolve<T>(key: InjectionToken<T>, ...args: unknown[]): T;
|
|
7
6
|
}
|
|
7
|
+
export interface IModule {
|
|
8
|
+
applyTo(container: IContainer): void;
|
|
9
|
+
}
|
|
8
10
|
export interface IContainer extends Resolvable {
|
|
9
11
|
createScope(tags?: Tag[]): IContainer;
|
|
10
|
-
register(value:
|
|
12
|
+
register(key: ProviderKey, value: IProvider): this;
|
|
11
13
|
getProviders(): Map<ProviderKey, IProvider>;
|
|
12
14
|
removeScope(child: IContainer): void;
|
|
13
15
|
getInstances(): unknown[];
|
|
14
16
|
dispose(): void;
|
|
17
|
+
add(module: IModule): this;
|
|
15
18
|
}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { IContainer, InjectionToken } from './container/IContainer';
|
|
2
|
-
import { ProviderKey, ResolveDependency, Tag } from './provider/IProvider';
|
|
3
|
-
import { constructor } from './utils';
|
|
4
|
-
import { RegistrationBuilder } from './registration/RegistrationBuilder';
|
|
5
2
|
export { IContainer, Resolvable } from './container/IContainer';
|
|
6
3
|
export { EmptyContainer } from './container/EmptyContainer';
|
|
7
4
|
export { constructor } from './utils';
|
|
@@ -16,11 +13,7 @@ export { Provider } from './provider/Provider';
|
|
|
16
13
|
export { ArgsFn } from './provider/ArgsProvider';
|
|
17
14
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
18
15
|
export { ProviderKey } from './provider/IProvider';
|
|
16
|
+
export { ProviderBuilder } from './provider/ProviderBuilder';
|
|
19
17
|
export { isProviderKey } from './provider/IProvider';
|
|
18
|
+
export { perTags, forKey, asSingleton, Registration } from './registration/Registration';
|
|
20
19
|
export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
|
|
21
|
-
export declare function fromClass<T>(Target: constructor<T>): RegistrationBuilder<T>;
|
|
22
|
-
export declare function fromValue<T>(value: T): RegistrationBuilder<T>;
|
|
23
|
-
export declare function fromFn<T>(fn: ResolveDependency<T>): RegistrationBuilder<T>;
|
|
24
|
-
export declare const perTags: (...tags: Tag[]) => ClassDecorator;
|
|
25
|
-
export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
|
|
26
|
-
export declare const forKey: (key: ProviderKey) => ClassDecorator;
|
package/esm/index.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import { Provider } from './provider/Provider';
|
|
2
|
-
import { RegistrationReflector } from './registration/RegistrationReflector';
|
|
3
|
-
import { identity } from './utils';
|
|
4
|
-
import { RegistrationBuilder } from './registration/RegistrationBuilder';
|
|
5
1
|
export { EmptyContainer } from './container/EmptyContainer';
|
|
6
2
|
export { Container } from './container/Container';
|
|
7
3
|
export { ProviderNotFoundError } from './provider/ProviderNotFoundError';
|
|
@@ -9,27 +5,8 @@ export { MethodNotImplementedError } from './MethodNotImplementedError';
|
|
|
9
5
|
export { ContainerDisposedError } from './container/ContainerDisposedError';
|
|
10
6
|
export { Provider } from './provider/Provider';
|
|
11
7
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
8
|
+
export { ProviderBuilder } from './provider/ProviderBuilder';
|
|
12
9
|
export { isProviderKey } from './provider/IProvider';
|
|
13
|
-
|
|
10
|
+
export { perTags, forKey, asSingleton, Registration } from './registration/Registration';
|
|
14
11
|
export const by = (key, ...args) => (l) => l.resolve(key, ...args);
|
|
15
|
-
export function fromClass(Target) {
|
|
16
|
-
var _a;
|
|
17
|
-
const map = (_a = providerReflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
|
|
18
|
-
return map(new RegistrationBuilder(Provider.fromClass(Target)));
|
|
19
|
-
}
|
|
20
|
-
export function fromValue(value) {
|
|
21
|
-
return new RegistrationBuilder(Provider.fromValue(value));
|
|
22
|
-
}
|
|
23
|
-
export function fromFn(fn) {
|
|
24
|
-
return new RegistrationBuilder(new Provider(fn));
|
|
25
|
-
}
|
|
26
|
-
export const perTags = (...tags) => (target) => {
|
|
27
|
-
providerReflector.appendMapper(target, (builder) => builder.perTags(...tags));
|
|
28
|
-
};
|
|
29
|
-
export const asSingleton = (...tags) => (target) => {
|
|
30
|
-
providerReflector.appendMapper(target, (builder) => builder.asSingleton(...tags));
|
|
31
|
-
};
|
|
32
|
-
export const forKey = (key) => (target) => {
|
|
33
|
-
providerReflector.appendMapper(target, (builder) => builder.forKey(key));
|
|
34
|
-
};
|
|
35
12
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEzF,MAAM,CAAC,MAAM,EAAE,GACX,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CACd,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InjectionToken, Resolvable } from '../container/IContainer';
|
|
2
|
-
export declare type ResolveDependency<T> = (container: Resolvable, ...args: unknown[]) => T;
|
|
2
|
+
export declare type ResolveDependency<T = unknown> = (container: Resolvable, ...args: unknown[]) => T;
|
|
3
3
|
export declare type Tag = string;
|
|
4
4
|
export interface Tagged {
|
|
5
5
|
hasTag(tag: Tag): boolean;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { constructor } from '../utils';
|
|
2
1
|
import { IProvider, ResolveDependency } from './IProvider';
|
|
3
2
|
import { Resolvable } from '../container/IContainer';
|
|
4
3
|
export declare class Provider<T> implements IProvider<T> {
|
|
5
4
|
private readonly resolveDependency;
|
|
6
|
-
static fromClass<T>(value: constructor<T>): Provider<T>;
|
|
7
|
-
static fromValue<T>(value: T): Provider<T>;
|
|
8
5
|
constructor(resolveDependency: ResolveDependency<T>);
|
|
9
6
|
clone(): Provider<T>;
|
|
10
7
|
resolve(container: Resolvable, ...args: unknown[]): T;
|
package/esm/provider/Provider.js
CHANGED
|
@@ -2,12 +2,6 @@ export class Provider {
|
|
|
2
2
|
constructor(resolveDependency) {
|
|
3
3
|
this.resolveDependency = resolveDependency;
|
|
4
4
|
}
|
|
5
|
-
static fromClass(value) {
|
|
6
|
-
return new Provider((container, ...args) => container.resolve(value, ...args));
|
|
7
|
-
}
|
|
8
|
-
static fromValue(value) {
|
|
9
|
-
return new Provider(() => value);
|
|
10
|
-
}
|
|
11
5
|
clone() {
|
|
12
6
|
return new Provider(this.resolveDependency);
|
|
13
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/provider/Provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/provider/Provider.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,QAAQ;IACjB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAExE,KAAK;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC7C,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;CACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IProvider, ResolveDependency, Tag } from './IProvider';
|
|
2
|
+
import { ArgsFn } from './ArgsProvider';
|
|
3
|
+
import { constructor } from '../utils';
|
|
4
|
+
export declare class ProviderBuilder {
|
|
5
|
+
private provider;
|
|
6
|
+
static fromClass(Target: constructor<unknown>): ProviderBuilder;
|
|
7
|
+
static fromValue(value: unknown): ProviderBuilder;
|
|
8
|
+
static fromFn(fn: ResolveDependency): ProviderBuilder;
|
|
9
|
+
constructor(provider: IProvider);
|
|
10
|
+
withArgs(...extraArgs: unknown[]): this;
|
|
11
|
+
withArgsFn(argsFn: ArgsFn): this;
|
|
12
|
+
perTags(...tags: Tag[]): this;
|
|
13
|
+
asSingleton(...tags: Tag[]): this;
|
|
14
|
+
build(): IProvider<unknown>;
|
|
15
|
+
}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TaggedProvider } from '
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export class
|
|
1
|
+
import { ArgsProvider } from './ArgsProvider';
|
|
2
|
+
import { TaggedProvider } from './TaggedProvider';
|
|
3
|
+
import { SingletonProvider } from './SingletonProvider';
|
|
4
|
+
import { Provider } from './Provider';
|
|
5
|
+
export class ProviderBuilder {
|
|
6
6
|
constructor(provider) {
|
|
7
7
|
this.provider = provider;
|
|
8
8
|
}
|
|
9
|
+
static fromClass(Target) {
|
|
10
|
+
return new ProviderBuilder(new Provider((container, ...args) => container.resolve(Target, ...args)));
|
|
11
|
+
}
|
|
12
|
+
static fromValue(value) {
|
|
13
|
+
return new ProviderBuilder(new Provider(() => value));
|
|
14
|
+
}
|
|
15
|
+
static fromFn(fn) {
|
|
16
|
+
return new ProviderBuilder(new Provider(fn));
|
|
17
|
+
}
|
|
9
18
|
withArgs(...extraArgs) {
|
|
10
19
|
this.provider = new ArgsProvider(this.provider, () => extraArgs);
|
|
11
20
|
return this;
|
|
@@ -25,15 +34,8 @@ export class RegistrationBuilder {
|
|
|
25
34
|
}
|
|
26
35
|
return this;
|
|
27
36
|
}
|
|
28
|
-
forKey(key) {
|
|
29
|
-
this.key = key;
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
37
|
build() {
|
|
33
|
-
|
|
34
|
-
throw new RegistrationMissingKeyError('Pls provide registration keys for current provider');
|
|
35
|
-
}
|
|
36
|
-
return { key: this.key, provider: this.provider };
|
|
38
|
+
return this.provider;
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=ProviderBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAO,eAAe;IAaxB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAZ3C,MAAM,CAAC,SAAS,CAAC,MAA4B;QACzC,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAqB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,QAAQ,CAAC,GAAG,SAAoB;QAC5B,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,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,CAAC,GAAG,IAAW;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ"}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ProviderKey, ResolveDependency, Tag } from '../provider/IProvider';
|
|
2
|
+
import { ArgsFn } from '../provider/ArgsProvider';
|
|
3
|
+
import { IContainer, IModule } from '../container/IContainer';
|
|
4
|
+
import { ProviderBuilder } from '../provider/ProviderBuilder';
|
|
5
|
+
import { constructor } from '../utils';
|
|
6
|
+
export declare class Registration implements IModule {
|
|
7
|
+
private providerBuilder;
|
|
8
|
+
private key?;
|
|
9
|
+
static fromClass<T>(Target: constructor<T>): Registration;
|
|
10
|
+
static fromValue<T>(value: T): Registration;
|
|
11
|
+
static fromFn<T>(fn: ResolveDependency<T>): Registration;
|
|
12
|
+
constructor(providerBuilder: ProviderBuilder);
|
|
13
|
+
withArgs(...extraArgs: unknown[]): this;
|
|
14
|
+
withArgsFn(argsFn: ArgsFn): this;
|
|
15
|
+
perTags(...tags: Tag[]): this;
|
|
16
|
+
asSingleton(...tags: Tag[]): this;
|
|
17
|
+
forKey(key: ProviderKey): this;
|
|
18
|
+
applyTo(container: IContainer): void;
|
|
5
19
|
}
|
|
20
|
+
export declare const perTags: (...tags: Tag[]) => ClassDecorator;
|
|
21
|
+
export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
|
|
22
|
+
export declare const forKey: (key: ProviderKey) => ClassDecorator;
|
|
@@ -1,2 +1,57 @@
|
|
|
1
|
-
|
|
1
|
+
import { RegistrationMissingKeyError } from './RegistrationMissingKeyError';
|
|
2
|
+
import { ProviderBuilder } from '../provider/ProviderBuilder';
|
|
3
|
+
import { RegistrationReflector } from './RegistrationReflector';
|
|
4
|
+
import { identity } from '../utils';
|
|
5
|
+
const registrationReflector = new RegistrationReflector();
|
|
6
|
+
export class Registration {
|
|
7
|
+
constructor(providerBuilder) {
|
|
8
|
+
this.providerBuilder = providerBuilder;
|
|
9
|
+
}
|
|
10
|
+
static fromClass(Target) {
|
|
11
|
+
var _a;
|
|
12
|
+
const map = (_a = registrationReflector.getMapper(Target)) !== null && _a !== void 0 ? _a : identity;
|
|
13
|
+
return map(new Registration(ProviderBuilder.fromClass(Target)));
|
|
14
|
+
}
|
|
15
|
+
static fromValue(value) {
|
|
16
|
+
return new Registration(ProviderBuilder.fromValue(value));
|
|
17
|
+
}
|
|
18
|
+
static fromFn(fn) {
|
|
19
|
+
return new Registration(ProviderBuilder.fromFn(fn));
|
|
20
|
+
}
|
|
21
|
+
withArgs(...extraArgs) {
|
|
22
|
+
this.providerBuilder = this.providerBuilder.withArgs(...extraArgs);
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
withArgsFn(argsFn) {
|
|
26
|
+
this.providerBuilder = this.providerBuilder.withArgsFn(argsFn);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
perTags(...tags) {
|
|
30
|
+
this.providerBuilder = this.providerBuilder.perTags(...tags);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
asSingleton(...tags) {
|
|
34
|
+
this.providerBuilder = this.providerBuilder.asSingleton(...tags);
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
forKey(key) {
|
|
38
|
+
this.key = key;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
applyTo(container) {
|
|
42
|
+
if (!this.key) {
|
|
43
|
+
throw new RegistrationMissingKeyError('Pls provide registration keys for current providerBuilder');
|
|
44
|
+
}
|
|
45
|
+
container.register(this.key, this.providerBuilder.build());
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export const perTags = (...tags) => (target) => {
|
|
49
|
+
registrationReflector.appendMapper(target, (registration) => registration.perTags(...tags));
|
|
50
|
+
};
|
|
51
|
+
export const asSingleton = (...tags) => (target) => {
|
|
52
|
+
registrationReflector.appendMapper(target, (registration) => registration.asSingleton(...tags));
|
|
53
|
+
};
|
|
54
|
+
export const forKey = (key) => (target) => {
|
|
55
|
+
registrationReflector.appendMapper(target, (registration) => registration.forKey(key));
|
|
56
|
+
};
|
|
2
57
|
//# sourceMappingURL=Registration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { constructor, MapFn } from '../utils';
|
|
2
|
-
import {
|
|
2
|
+
import { Registration } from './Registration';
|
|
3
3
|
export declare class RegistrationReflector {
|
|
4
4
|
private metadataKey;
|
|
5
|
-
getMapper<T>(target: constructor<T>): MapFn<
|
|
6
|
-
appendMapper
|
|
5
|
+
getMapper<T>(target: constructor<T>): MapFn<Registration> | undefined;
|
|
6
|
+
appendMapper(target: constructor<unknown>, reducer: MapFn<Registration>): void;
|
|
7
7
|
}
|