ts-ioc-container 15.0.0 → 16.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 +13 -12
- package/cjm/core/provider/Provider.d.ts +1 -2
- package/cjm/core/provider/Provider.js +8 -9
- package/cjm/core/provider/Provider.js.map +1 -1
- package/cjm/core/provider/ProviderReflector.d.ts +1 -0
- package/cjm/core/provider/ProviderReflector.js +2 -1
- package/cjm/core/provider/ProviderReflector.js.map +1 -1
- package/cjm/hooks/IMethodReflector.d.ts +0 -2
- package/cjm/hooks/IMethodReflector.js +0 -8
- package/cjm/hooks/IMethodReflector.js.map +1 -1
- package/cjm/hooks/MethodReflector.d.ts +2 -1
- package/cjm/hooks/MethodReflector.js +7 -0
- package/cjm/hooks/MethodReflector.js.map +1 -1
- package/cjm/index.d.ts +4 -14
- package/cjm/index.js +18 -41
- package/cjm/index.js.map +1 -1
- package/cjm/providers/LevelProvider.d.ts +1 -2
- package/cjm/providers/LevelProvider.js +8 -9
- package/cjm/providers/LevelProvider.js.map +1 -1
- package/cjm/providers/ProviderBuilder.d.ts +4 -0
- package/cjm/providers/ProviderBuilder.js +11 -0
- package/cjm/providers/ProviderBuilder.js.map +1 -1
- package/cjm/providers/SingletonProvider.d.ts +1 -2
- package/cjm/providers/SingletonProvider.js +7 -8
- package/cjm/providers/SingletonProvider.js.map +1 -1
- package/cjm/providers/TaggedProvider.d.ts +1 -2
- package/cjm/providers/TaggedProvider.js +15 -16
- package/cjm/providers/TaggedProvider.js.map +1 -1
- package/esm/core/provider/Provider.d.ts +1 -2
- package/esm/core/provider/Provider.js +4 -3
- package/esm/core/provider/Provider.js.map +1 -1
- package/esm/core/provider/ProviderReflector.d.ts +1 -0
- package/esm/core/provider/ProviderReflector.js +1 -0
- package/esm/core/provider/ProviderReflector.js.map +1 -1
- package/esm/hooks/IMethodReflector.d.ts +0 -2
- package/esm/hooks/IMethodReflector.js +1 -6
- package/esm/hooks/IMethodReflector.js.map +1 -1
- package/esm/hooks/MethodReflector.d.ts +2 -1
- package/esm/hooks/MethodReflector.js +6 -0
- package/esm/hooks/MethodReflector.js.map +1 -1
- package/esm/index.d.ts +4 -14
- package/esm/index.js +4 -23
- package/esm/index.js.map +1 -1
- package/esm/providers/LevelProvider.d.ts +1 -2
- package/esm/providers/LevelProvider.js +4 -3
- package/esm/providers/LevelProvider.js.map +1 -1
- package/esm/providers/ProviderBuilder.d.ts +4 -0
- package/esm/providers/ProviderBuilder.js +11 -0
- package/esm/providers/ProviderBuilder.js.map +1 -1
- package/esm/providers/SingletonProvider.d.ts +1 -2
- package/esm/providers/SingletonProvider.js +4 -3
- package/esm/providers/SingletonProvider.js.map +1 -1
- package/esm/providers/TaggedProvider.d.ts +1 -2
- package/esm/providers/TaggedProvider.js +4 -3
- package/esm/providers/TaggedProvider.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ yarn add ts-ioc-container reflect-metadata
|
|
|
40
40
|
How to create new container
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
|
-
import { Container,
|
|
43
|
+
import { Container, IInjector, ProviderBuilder } from "ts-ioc-container";
|
|
44
44
|
import { resolve } from 'ts-constructor-injector';
|
|
45
45
|
|
|
46
46
|
const injector: IInjector = {
|
|
@@ -49,20 +49,20 @@ const injector: IInjector = {
|
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
const container = new Container(injector);
|
|
52
|
-
container.register('ILogger', fromClass(Logger).build());
|
|
52
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).build());
|
|
53
53
|
const logger = container.resolve<ILogger>('ILogger');
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
## ProviderBuilder
|
|
57
57
|
|
|
58
58
|
```typescript
|
|
59
|
-
import { fromClass } from "ts-ioc-container";
|
|
59
|
+
import { fromClass, ProviderBuilder } from "ts-ioc-container";
|
|
60
60
|
|
|
61
61
|
container.register('ILogger', new ProviderBuilder((container, ...args) => new Logger(...args)).build());
|
|
62
|
-
container.register('ILogger1', fromClass(Logger).forKey('ILogger').asSingleton().forLevel(0).build()); // global singleton
|
|
63
|
-
container.register('ILogger2', fromClass(Logger).asSingleton().forLevel(1).build()); // first scope singleton
|
|
64
|
-
container.register('ILogger3', fromClass(Logger).asSingleton().forTags(['tag1', 'tag2']).build()); // singleton for scope with tag1 or tag2
|
|
65
|
-
container.register('ILogger4', fromClass(Logger).withArgs('dev').asSingleton().build()); // singleton in every scope
|
|
62
|
+
container.register('ILogger1', ProviderBuilder.fromClass(Logger).forKey('ILogger').asSingleton().forLevel(0).build()); // global singleton
|
|
63
|
+
container.register('ILogger2', ProviderBuilder.fromClass(Logger).asSingleton().forLevel(1).build()); // first scope singleton
|
|
64
|
+
container.register('ILogger3', ProviderBuilder.fromClass(Logger).asSingleton().forTags(['tag1', 'tag2']).build()); // singleton for scope with tag1 or tag2
|
|
65
|
+
container.register('ILogger4', ProviderBuilder.fromClass(Logger).withArgs('dev').asSingleton().build()); // singleton in every scope
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
## Decorators
|
|
@@ -89,13 +89,14 @@ import {
|
|
|
89
89
|
Container,
|
|
90
90
|
IInjector,
|
|
91
91
|
ContainerHook,
|
|
92
|
+
ProviderBuilder,
|
|
92
93
|
} from "ts-ioc-container";
|
|
93
94
|
|
|
94
|
-
export const
|
|
95
|
-
export const onConstruct = createMethodHookDecorator(
|
|
95
|
+
export const onConstructReflector = new MethodReflector('OnConstructHook');
|
|
96
|
+
export const onConstruct = onConstructReflector.createMethodHookDecorator();
|
|
96
97
|
|
|
97
|
-
export const
|
|
98
|
-
export const onDispose = createMethodHookDecorator(
|
|
98
|
+
export const onDisposeReflector = new MethodReflector('OnDisposeHook');
|
|
99
|
+
export const onDispose = onDisposeReflector.createMethodHookDecorator();
|
|
99
100
|
|
|
100
101
|
class Logger {
|
|
101
102
|
@onConstruct
|
|
@@ -116,7 +117,7 @@ const injector: IInjector = {
|
|
|
116
117
|
const container = new Container(injector).setHook(new ContainerHook((instance) => {
|
|
117
118
|
onDisposeMetadataCollector.invokeHooksOf(instance);
|
|
118
119
|
}));
|
|
119
|
-
container.register('ILogger', fromClass(Logger).build());
|
|
120
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).build());
|
|
120
121
|
const logger = container.resolve<ILogger>('ILogger');
|
|
121
122
|
```
|
|
122
123
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { constructor } from '../utils/types';
|
|
2
2
|
import { IProvider, ProviderKey, ResolveDependency } from './IProvider';
|
|
3
3
|
import { Resolveable } from '../container/IContainer';
|
|
4
|
-
import { IProviderReflector } from './IProviderReflector';
|
|
5
4
|
export declare class Provider<T> implements IProvider<T> {
|
|
6
5
|
private readonly resolveDependency;
|
|
7
6
|
static fromClass<T>(value: constructor<T>): Provider<T>;
|
|
@@ -15,4 +14,4 @@ export declare class Provider<T> implements IProvider<T> {
|
|
|
15
14
|
isValid(): boolean;
|
|
16
15
|
getKeyOrFail(): ProviderKey;
|
|
17
16
|
}
|
|
18
|
-
export declare const
|
|
17
|
+
export declare const forKey: (key: ProviderKey) => ClassDecorator;
|
|
@@ -25,8 +25,9 @@ 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.
|
|
28
|
+
exports.forKey = exports.Provider = void 0;
|
|
29
29
|
var ProviderHasNoKeyError_1 = require("./ProviderHasNoKeyError");
|
|
30
|
+
var ProviderReflector_1 = require("./ProviderReflector");
|
|
30
31
|
var Provider = /** @class */ (function () {
|
|
31
32
|
function Provider(resolveDependency) {
|
|
32
33
|
this.resolveDependency = resolveDependency;
|
|
@@ -73,14 +74,12 @@ var Provider = /** @class */ (function () {
|
|
|
73
74
|
return Provider;
|
|
74
75
|
}());
|
|
75
76
|
exports.Provider = Provider;
|
|
76
|
-
var
|
|
77
|
-
return function (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
metadataCollector.addReducer(targetClass, function (builder) { return fn(builder).forKey(key); });
|
|
82
|
-
};
|
|
77
|
+
var forKey = function (key) {
|
|
78
|
+
return function (target) {
|
|
79
|
+
var targetClass = target;
|
|
80
|
+
var fn = ProviderReflector_1.providerReflector.findReducerOrCreate(targetClass);
|
|
81
|
+
ProviderReflector_1.providerReflector.addReducer(targetClass, function (builder) { return fn(builder).forKey(key); });
|
|
83
82
|
};
|
|
84
83
|
};
|
|
85
|
-
exports.
|
|
84
|
+
exports.forKey = forKey;
|
|
86
85
|
//# sourceMappingURL=Provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;AAEhE,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,yBAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wBAAK,GAAL;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,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,AAzCD,IAyCC;AAzCY,4BAAQ;AA2Cd,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"}
|
|
@@ -8,3 +8,4 @@ export declare class ProviderReflector implements IProviderReflector {
|
|
|
8
8
|
findReducerOrCreate<T>(target: constructor<T>): ProviderReducer<T>;
|
|
9
9
|
addReducer<T>(target: constructor<T>, reducer: ProviderReducer<T>): void;
|
|
10
10
|
}
|
|
11
|
+
export declare const providerReflector: ProviderReflector;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProviderReflector = void 0;
|
|
3
|
+
exports.providerReflector = exports.ProviderReflector = void 0;
|
|
4
4
|
var others_1 = require("../utils/others");
|
|
5
5
|
var ProviderReflector = /** @class */ (function () {
|
|
6
6
|
function ProviderReflector(metadataKey, createReducer) {
|
|
@@ -22,4 +22,5 @@ var ProviderReflector = /** @class */ (function () {
|
|
|
22
22
|
return ProviderReflector;
|
|
23
23
|
}());
|
|
24
24
|
exports.ProviderReflector = ProviderReflector;
|
|
25
|
+
exports.providerReflector = ProviderReflector.create();
|
|
25
26
|
//# sourceMappingURL=ProviderReflector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderReflector.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderReflector.ts"],"names":[],"mappings":";;;AAEA,0CAAqC;AAErC;IAKI,2BAAoB,WAA4B,EAAU,aAA6C;QAAnF,gBAAW,GAAX,WAAW,CAAiB;QAAU,kBAAa,GAAb,aAAa,CAAgC;IAAG,CAAC;IAJpG,wBAAM,GAAb;QACI,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,cAAM,OAAA,WAAE,EAAF,CAAE,CAAC,CAAC;IACtE,CAAC;IAID,+CAAmB,GAAnB,UAAuB,MAAsB;QACzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YAChD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;SAC1E;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,sCAAU,GAAV,UAAc,MAAsB,EAAE,OAA2B;QAC7D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IACL,wBAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,8CAAiB"}
|
|
1
|
+
{"version":3,"file":"ProviderReflector.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderReflector.ts"],"names":[],"mappings":";;;AAEA,0CAAqC;AAErC;IAKI,2BAAoB,WAA4B,EAAU,aAA6C;QAAnF,gBAAW,GAAX,WAAW,CAAiB;QAAU,kBAAa,GAAb,aAAa,CAAgC;IAAG,CAAC;IAJpG,wBAAM,GAAb;QACI,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,cAAM,OAAA,WAAE,EAAF,CAAE,CAAC,CAAC;IACtE,CAAC;IAID,+CAAmB,GAAnB,UAAuB,MAAsB;QACzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YAChD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;SAC1E;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,sCAAU,GAAV,UAAc,MAAsB,EAAE,OAA2B;QAC7D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IACL,wBAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,8CAAiB;AAmBjB,QAAA,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export interface IMethodReflector {
|
|
2
|
-
addHook<GInstance extends Object>(target: GInstance, propertyKey: string | symbol): void;
|
|
3
2
|
invokeHooksOf<GInstance extends Object>(target: GInstance): void;
|
|
4
3
|
}
|
|
5
|
-
export declare function createMethodHookDecorator(metadata: IMethodReflector): MethodDecorator;
|
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMethodHookDecorator = void 0;
|
|
4
|
-
function createMethodHookDecorator(metadata) {
|
|
5
|
-
return function (target, propertyKey) {
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
7
|
-
metadata.addHook(target, propertyKey);
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
exports.createMethodHookDecorator = createMethodHookDecorator;
|
|
11
3
|
//# sourceMappingURL=IMethodReflector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IMethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/IMethodReflector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IMethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/IMethodReflector.ts"],"names":[],"mappings":""}
|
|
@@ -2,7 +2,8 @@ import { IMethodReflector } from './IMethodReflector';
|
|
|
2
2
|
export declare class MethodReflector implements IMethodReflector {
|
|
3
3
|
readonly hookKey: string | symbol;
|
|
4
4
|
constructor(hookKey: string | symbol);
|
|
5
|
-
addHook
|
|
5
|
+
private addHook;
|
|
6
6
|
invokeHooksOf<GInstance extends Object>(target: GInstance): void;
|
|
7
7
|
private static getTargetId;
|
|
8
|
+
createMethodHookDecorator(): MethodDecorator;
|
|
8
9
|
}
|
|
@@ -72,6 +72,13 @@ var MethodReflector = /** @class */ (function () {
|
|
|
72
72
|
MethodReflector.getTargetId = function (target) {
|
|
73
73
|
return target.constructor;
|
|
74
74
|
};
|
|
75
|
+
MethodReflector.prototype.createMethodHookDecorator = function () {
|
|
76
|
+
var _this = this;
|
|
77
|
+
return function (target, propertyKey) {
|
|
78
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
79
|
+
_this.addHook(target, propertyKey);
|
|
80
|
+
};
|
|
81
|
+
};
|
|
75
82
|
return MethodReflector;
|
|
76
83
|
}());
|
|
77
84
|
exports.MethodReflector = MethodReflector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/MethodReflector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IACI,yBAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;
|
|
1
|
+
{"version":3,"file":"MethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/MethodReflector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IACI,yBAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;IAChD,iCAAO,GAAf,UAA0C,MAAiB,EAAE,WAA4B;QACrF,IAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrD,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,uCAAa,GAAb,UAAwC,MAAiB;;QACrD,IAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrD,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,2BAAW,GAA1B,UAA2D,MAAiB;QACxE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAED,mDAAyB,GAAzB;QAAA,iBAKC;QAJG,OAAO,UAAC,MAAM,EAAE,WAAW;YACvB,wDAAwD;YACxD,KAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC;IACN,CAAC;IACL,sBAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,0CAAe"}
|
package/cjm/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { constructor } from './core/utils/types';
|
|
2
|
-
import { ProviderBuilder } from './providers/ProviderBuilder';
|
|
3
|
-
import { ResolveDependency } from './core/provider/IProvider';
|
|
4
1
|
import { IContainer, InjectionToken } from './core/container/IContainer';
|
|
5
2
|
export { ContainerHook } from './hooks/ContainerHook';
|
|
6
3
|
export { ProviderReducer } from './core/provider/IProviderReflector';
|
|
@@ -21,7 +18,7 @@ export { ArgsProvider, ArgsFn, createArgsFnDecorator } from './providers/ArgsPro
|
|
|
21
18
|
export { IContainerHook } from './core/container/IContainerHook';
|
|
22
19
|
export { TaggedProvider } from './providers/TaggedProvider';
|
|
23
20
|
export { ProxyInjector } from './injectors/ProxyInjector';
|
|
24
|
-
export { LevelProvider,
|
|
21
|
+
export { LevelProvider, perLevel } from './providers/LevelProvider';
|
|
25
22
|
export { IMockRepository } from './automock/IMockRepository';
|
|
26
23
|
export { AutoMockedContainer } from './automock/AutoMockedContainer';
|
|
27
24
|
export { SingletonProvider } from './providers/SingletonProvider';
|
|
@@ -31,14 +28,7 @@ export { ProviderReflector } from './core/provider/ProviderReflector';
|
|
|
31
28
|
export { IDisposable } from './core/utils/types';
|
|
32
29
|
export { ProviderKey } from './core/provider/IProvider';
|
|
33
30
|
export { isProviderKey } from './core/provider/IProvider';
|
|
34
|
-
export {
|
|
35
|
-
export {
|
|
36
|
-
export {
|
|
37
|
-
export declare const forKey: (key: import("./core/provider/IProvider").ProviderKey) => ClassDecorator;
|
|
38
|
-
export declare const asSingleton: ClassDecorator;
|
|
39
|
-
export declare const perTags: (...tags: string[]) => ClassDecorator;
|
|
40
|
-
export declare function fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
41
|
-
export declare function fromValue<T>(value: T): ProviderBuilder<T>;
|
|
42
|
-
export declare function fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
|
|
43
|
-
export { createMethodHookDecorator } from './hooks/IMethodReflector';
|
|
31
|
+
export { perTags } from './providers/TaggedProvider';
|
|
32
|
+
export { asSingleton } from './providers/SingletonProvider';
|
|
33
|
+
export { forKey } from './core/provider/Provider';
|
|
44
34
|
export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
|
package/cjm/index.js
CHANGED
|
@@ -25,12 +25,7 @@ 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.by = exports.
|
|
29
|
-
var Provider_1 = require("./core/provider/Provider");
|
|
30
|
-
var ProviderReflector_1 = require("./core/provider/ProviderReflector");
|
|
31
|
-
var SingletonProvider_1 = require("./providers/SingletonProvider");
|
|
32
|
-
var TaggedProvider_1 = require("./providers/TaggedProvider");
|
|
33
|
-
var ProviderBuilder_1 = require("./providers/ProviderBuilder");
|
|
28
|
+
exports.by = exports.forKey = exports.asSingleton = exports.perTags = exports.isProviderKey = exports.ProviderReflector = exports.ProviderBuilder = exports.SingletonProvider = exports.AutoMockedContainer = exports.perLevel = exports.LevelProvider = exports.ProxyInjector = exports.TaggedProvider = exports.createArgsFnDecorator = exports.ArgsProvider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.MethodReflector = exports.SimpleInjector = exports.Container = exports.ContainerHook = void 0;
|
|
34
29
|
var ContainerHook_1 = require("./hooks/ContainerHook");
|
|
35
30
|
Object.defineProperty(exports, "ContainerHook", { enumerable: true, get: function () { return ContainerHook_1.ContainerHook; } });
|
|
36
31
|
var Container_1 = require("./core/container/Container");
|
|
@@ -45,52 +40,34 @@ var MethodNotImplementedError_1 = require("./core/utils/MethodNotImplementedErro
|
|
|
45
40
|
Object.defineProperty(exports, "MethodNotImplementedError", { enumerable: true, get: function () { return MethodNotImplementedError_1.MethodNotImplementedError; } });
|
|
46
41
|
var ContainerDisposedError_1 = require("./core/container/ContainerDisposedError");
|
|
47
42
|
Object.defineProperty(exports, "ContainerDisposedError", { enumerable: true, get: function () { return ContainerDisposedError_1.ContainerDisposedError; } });
|
|
48
|
-
var
|
|
49
|
-
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return
|
|
43
|
+
var Provider_1 = require("./core/provider/Provider");
|
|
44
|
+
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return Provider_1.Provider; } });
|
|
50
45
|
var ArgsProvider_1 = require("./providers/ArgsProvider");
|
|
51
46
|
Object.defineProperty(exports, "ArgsProvider", { enumerable: true, get: function () { return ArgsProvider_1.ArgsProvider; } });
|
|
52
47
|
Object.defineProperty(exports, "createArgsFnDecorator", { enumerable: true, get: function () { return ArgsProvider_1.createArgsFnDecorator; } });
|
|
53
|
-
var
|
|
54
|
-
Object.defineProperty(exports, "TaggedProvider", { enumerable: true, get: function () { return
|
|
48
|
+
var TaggedProvider_1 = require("./providers/TaggedProvider");
|
|
49
|
+
Object.defineProperty(exports, "TaggedProvider", { enumerable: true, get: function () { return TaggedProvider_1.TaggedProvider; } });
|
|
55
50
|
var ProxyInjector_1 = require("./injectors/ProxyInjector");
|
|
56
51
|
Object.defineProperty(exports, "ProxyInjector", { enumerable: true, get: function () { return ProxyInjector_1.ProxyInjector; } });
|
|
57
52
|
var LevelProvider_1 = require("./providers/LevelProvider");
|
|
58
53
|
Object.defineProperty(exports, "LevelProvider", { enumerable: true, get: function () { return LevelProvider_1.LevelProvider; } });
|
|
59
|
-
Object.defineProperty(exports, "
|
|
54
|
+
Object.defineProperty(exports, "perLevel", { enumerable: true, get: function () { return LevelProvider_1.perLevel; } });
|
|
60
55
|
var AutoMockedContainer_1 = require("./automock/AutoMockedContainer");
|
|
61
56
|
Object.defineProperty(exports, "AutoMockedContainer", { enumerable: true, get: function () { return AutoMockedContainer_1.AutoMockedContainer; } });
|
|
62
|
-
var
|
|
63
|
-
Object.defineProperty(exports, "SingletonProvider", { enumerable: true, get: function () { return
|
|
64
|
-
var
|
|
65
|
-
Object.defineProperty(exports, "ProviderBuilder", { enumerable: true, get: function () { return
|
|
66
|
-
var
|
|
67
|
-
Object.defineProperty(exports, "ProviderReflector", { enumerable: true, get: function () { return
|
|
57
|
+
var SingletonProvider_1 = require("./providers/SingletonProvider");
|
|
58
|
+
Object.defineProperty(exports, "SingletonProvider", { enumerable: true, get: function () { return SingletonProvider_1.SingletonProvider; } });
|
|
59
|
+
var ProviderBuilder_1 = require("./providers/ProviderBuilder");
|
|
60
|
+
Object.defineProperty(exports, "ProviderBuilder", { enumerable: true, get: function () { return ProviderBuilder_1.ProviderBuilder; } });
|
|
61
|
+
var ProviderReflector_1 = require("./core/provider/ProviderReflector");
|
|
62
|
+
Object.defineProperty(exports, "ProviderReflector", { enumerable: true, get: function () { return ProviderReflector_1.ProviderReflector; } });
|
|
68
63
|
var IProvider_1 = require("./core/provider/IProvider");
|
|
69
64
|
Object.defineProperty(exports, "isProviderKey", { enumerable: true, get: function () { return IProvider_1.isProviderKey; } });
|
|
70
|
-
var
|
|
71
|
-
Object.defineProperty(exports, "
|
|
72
|
-
var
|
|
73
|
-
Object.defineProperty(exports, "
|
|
74
|
-
var
|
|
75
|
-
Object.defineProperty(exports, "
|
|
76
|
-
var providerReflector = ProviderReflector_1.ProviderReflector.create();
|
|
77
|
-
exports.forKey = (0, Provider_1.createAddKeyDecorator)(providerReflector);
|
|
78
|
-
exports.asSingleton = (0, SingletonProvider_1.createSingletonDecorator)(providerReflector);
|
|
79
|
-
exports.perTags = (0, TaggedProvider_1.createTagsDecorator)(providerReflector);
|
|
80
|
-
function fromClass(value) {
|
|
81
|
-
return new ProviderBuilder_1.ProviderBuilder(Provider_1.Provider.fromClass(value)).map(providerReflector.findReducerOrCreate(value));
|
|
82
|
-
}
|
|
83
|
-
exports.fromClass = fromClass;
|
|
84
|
-
function fromValue(value) {
|
|
85
|
-
return new ProviderBuilder_1.ProviderBuilder(Provider_1.Provider.fromValue(value));
|
|
86
|
-
}
|
|
87
|
-
exports.fromValue = fromValue;
|
|
88
|
-
function fromFn(fn) {
|
|
89
|
-
return new ProviderBuilder_1.ProviderBuilder(new Provider_1.Provider(fn));
|
|
90
|
-
}
|
|
91
|
-
exports.fromFn = fromFn;
|
|
92
|
-
var IMethodReflector_1 = require("./hooks/IMethodReflector");
|
|
93
|
-
Object.defineProperty(exports, "createMethodHookDecorator", { enumerable: true, get: function () { return IMethodReflector_1.createMethodHookDecorator; } });
|
|
65
|
+
var TaggedProvider_2 = require("./providers/TaggedProvider");
|
|
66
|
+
Object.defineProperty(exports, "perTags", { enumerable: true, get: function () { return TaggedProvider_2.perTags; } });
|
|
67
|
+
var SingletonProvider_2 = require("./providers/SingletonProvider");
|
|
68
|
+
Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return SingletonProvider_2.asSingleton; } });
|
|
69
|
+
var Provider_2 = require("./core/provider/Provider");
|
|
70
|
+
Object.defineProperty(exports, "forKey", { enumerable: true, get: function () { return Provider_2.forKey; } });
|
|
94
71
|
var by = function (key) {
|
|
95
72
|
var args = [];
|
|
96
73
|
for (var _i = 1; _i < arguments.length; _i++) {
|
package/cjm/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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AAItB,wDAAuD;AAA9C,sGAAA,SAAS,OAAA;AAGlB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AAExB,+EAA8E;AAArE,8HAAA,qBAAqB,OAAA;AAC9B,oFAAmF;AAA1E,sIAAA,yBAAyB,OAAA;AAClC,kFAAiF;AAAxE,gIAAA,sBAAsB,OAAA;AAC/B,qDAAoD;AAA3C,oGAAA,QAAQ,OAAA;AACjB,yDAAuF;AAA9E,4GAAA,YAAY,OAAA;AAAU,qHAAA,qBAAqB,OAAA;AAEpD,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AACvB,2DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,2DAAoE;AAA3D,8GAAA,aAAa,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAEhC,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAC5B,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAExB,uEAAsE;AAA7D,sHAAA,iBAAiB,OAAA;AAG1B,uDAA0D;AAAjD,0GAAA,aAAa,OAAA;AACtB,6DAAqD;AAA5C,yGAAA,OAAO,OAAA;AAChB,mEAA4D;AAAnD,gHAAA,WAAW,OAAA;AACpB,qDAAkD;AAAzC,kGAAA,MAAM,OAAA;AAER,IAAM,EAAE,GACX,UAAI,GAAsB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAC9C,OAAA,UAAC,CAAa;QACV,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAY,GAAG,UAAK,IAAI;IAAzB,CAA0B;AAD9B,CAC8B,CAAC;AAHtB,QAAA,EAAE,MAGoB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IProvider, ScopeOptions } from '../core/provider/IProvider';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
|
-
import { IProviderReflector } from '../core/provider/IProviderReflector';
|
|
4
3
|
export declare class LevelProvider<T> extends ProviderDecorator<T> {
|
|
5
4
|
private provider;
|
|
6
5
|
private readonly range;
|
|
@@ -8,4 +7,4 @@ export declare class LevelProvider<T> extends ProviderDecorator<T> {
|
|
|
8
7
|
clone(): LevelProvider<T>;
|
|
9
8
|
isValid(filters: ScopeOptions): boolean;
|
|
10
9
|
}
|
|
11
|
-
export declare const
|
|
10
|
+
export declare const perLevel: (value: number) => ClassDecorator;
|
|
@@ -31,8 +31,9 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
31
31
|
return ar;
|
|
32
32
|
};
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
-
exports.
|
|
34
|
+
exports.perLevel = exports.LevelProvider = void 0;
|
|
35
35
|
var ProviderDecorator_1 = require("../core/provider/ProviderDecorator");
|
|
36
|
+
var ProviderReflector_1 = require("../core/provider/ProviderReflector");
|
|
36
37
|
var LevelProvider = /** @class */ (function (_super) {
|
|
37
38
|
__extends(LevelProvider, _super);
|
|
38
39
|
function LevelProvider(provider, range) {
|
|
@@ -52,14 +53,12 @@ var LevelProvider = /** @class */ (function (_super) {
|
|
|
52
53
|
return LevelProvider;
|
|
53
54
|
}(ProviderDecorator_1.ProviderDecorator));
|
|
54
55
|
exports.LevelProvider = LevelProvider;
|
|
55
|
-
var
|
|
56
|
-
return function (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
metadataCollector.addReducer(targetClass, function (builder) { return fn(builder).forLevel(value); });
|
|
61
|
-
};
|
|
56
|
+
var perLevel = function (value) {
|
|
57
|
+
return function (target) {
|
|
58
|
+
var targetClass = target;
|
|
59
|
+
var fn = ProviderReflector_1.providerReflector.findReducerOrCreate(targetClass);
|
|
60
|
+
ProviderReflector_1.providerReflector.addReducer(targetClass, function (builder) { return fn(builder).forLevel(value); });
|
|
62
61
|
};
|
|
63
62
|
};
|
|
64
|
-
exports.
|
|
63
|
+
exports.perLevel = perLevel;
|
|
65
64
|
//# sourceMappingURL=LevelProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LevelProvider.js","sourceRoot":"","sources":["../../lib/providers/LevelProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wEAAuE;
|
|
1
|
+
{"version":3,"file":"LevelProvider.js","sourceRoot":"","sources":["../../lib/providers/LevelProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wEAAuE;AAEvE,wEAAuE;AAEvE;IAAsC,iCAAoB;IACtD,uBAAoB,QAAsB,EAAmB,KAAuB;QAApF,YACI,kBAAM,QAAQ,CAAC,SAClB;QAFmB,cAAQ,GAAR,QAAQ,CAAc;QAAmB,WAAK,GAAL,KAAK,CAAkB;;IAEpF,CAAC;IAED,6BAAK,GAAL;QACI,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,+BAAO,GAAP,UAAQ,OAAqB;QACjB,IAAA,KAAK,GAAK,OAAO,MAAZ,CAAa;QACpB,IAAA,KAAA,OAAa,IAAI,CAAC,KAAK,IAAA,EAAtB,IAAI,QAAA,EAAE,EAAE,QAAc,CAAC;QAC9B,OAAO,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IACL,oBAAC;AAAD,CAAC,AAdD,CAAsC,qCAAiB,GActD;AAdY,sCAAa;AAgBnB,IAAM,QAAQ,GACjB,UAAC,KAAa;IACd,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,QAAQ,CAAC,KAAK,CAAC,EAA3B,CAA2B,CAAC,CAAC;IACxF,CAAC;AAJD,CAIC,CAAC;AANO,QAAA,QAAQ,YAMf"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { IProvider, ProviderKey, Tag } from '../core/provider/IProvider';
|
|
2
2
|
import { ProviderReducer } from '../core/provider/IProviderReflector';
|
|
3
3
|
import { ArgsFn } from './ArgsProvider';
|
|
4
|
+
import { constructor } from '../core/utils/types';
|
|
4
5
|
export declare class ProviderBuilder<T> {
|
|
5
6
|
private provider;
|
|
7
|
+
static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
8
|
+
static fromValue<T>(value: T): ProviderBuilder<T>;
|
|
9
|
+
static fromFn<T>(fn: (...args: any[]) => T): ProviderBuilder<T>;
|
|
6
10
|
constructor(provider: IProvider<T>);
|
|
7
11
|
withArgs(...extraArgs: any[]): this;
|
|
8
12
|
withArgsFn(argsFn: ArgsFn): this;
|
|
@@ -5,10 +5,21 @@ var SingletonProvider_1 = require("./SingletonProvider");
|
|
|
5
5
|
var TaggedProvider_1 = require("./TaggedProvider");
|
|
6
6
|
var LevelProvider_1 = require("./LevelProvider");
|
|
7
7
|
var ArgsProvider_1 = require("./ArgsProvider");
|
|
8
|
+
var Provider_1 = require("../core/provider/Provider");
|
|
9
|
+
var ProviderReflector_1 = require("../core/provider/ProviderReflector");
|
|
8
10
|
var ProviderBuilder = /** @class */ (function () {
|
|
9
11
|
function ProviderBuilder(provider) {
|
|
10
12
|
this.provider = provider;
|
|
11
13
|
}
|
|
14
|
+
ProviderBuilder.fromClass = function (value) {
|
|
15
|
+
return new ProviderBuilder(Provider_1.Provider.fromClass(value)).map(ProviderReflector_1.providerReflector.findReducerOrCreate(value));
|
|
16
|
+
};
|
|
17
|
+
ProviderBuilder.fromValue = function (value) {
|
|
18
|
+
return new ProviderBuilder(Provider_1.Provider.fromValue(value));
|
|
19
|
+
};
|
|
20
|
+
ProviderBuilder.fromFn = function (fn) {
|
|
21
|
+
return new ProviderBuilder(new Provider_1.Provider(fn));
|
|
22
|
+
};
|
|
12
23
|
ProviderBuilder.prototype.withArgs = function () {
|
|
13
24
|
var extraArgs = [];
|
|
14
25
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,mDAAkD;AAClD,iDAAgD;AAEhD,+CAAsD;
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,mDAAkD;AAClD,iDAAgD;AAEhD,+CAAsD;AACtD,sDAAqD;AAErD,wEAAuE;AAEvE;IAaI,yBAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAZvC,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;IAID,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,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,gCAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AApDD,IAoDC;AApDY,0CAAe"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Resolveable } from '../core/container/IContainer';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
3
|
import { IProvider } from '../core/provider/IProvider';
|
|
4
|
-
import { IProviderReflector } from '../core/provider/IProviderReflector';
|
|
5
4
|
export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
6
5
|
private readonly provider;
|
|
7
6
|
private instance;
|
|
@@ -10,4 +9,4 @@ export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
|
10
9
|
dispose(): void;
|
|
11
10
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
12
11
|
}
|
|
13
|
-
export declare const
|
|
12
|
+
export declare const asSingleton: ClassDecorator;
|
|
@@ -40,9 +40,10 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
40
40
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
41
41
|
};
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.
|
|
43
|
+
exports.asSingleton = exports.SingletonProvider = void 0;
|
|
44
44
|
var types_1 = require("../core/utils/types");
|
|
45
45
|
var ProviderDecorator_1 = require("../core/provider/ProviderDecorator");
|
|
46
|
+
var ProviderReflector_1 = require("../core/provider/ProviderReflector");
|
|
46
47
|
var SingletonProvider = /** @class */ (function (_super) {
|
|
47
48
|
__extends(SingletonProvider, _super);
|
|
48
49
|
function SingletonProvider(provider) {
|
|
@@ -73,12 +74,10 @@ var SingletonProvider = /** @class */ (function (_super) {
|
|
|
73
74
|
return SingletonProvider;
|
|
74
75
|
}(ProviderDecorator_1.ProviderDecorator));
|
|
75
76
|
exports.SingletonProvider = SingletonProvider;
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
metadataCollector.addReducer(targetClass, function (builder) { return fn(builder).asSingleton(); });
|
|
81
|
-
};
|
|
77
|
+
var asSingleton = function (target) {
|
|
78
|
+
var targetClass = target;
|
|
79
|
+
var fn = ProviderReflector_1.providerReflector.findReducerOrCreate(targetClass);
|
|
80
|
+
ProviderReflector_1.providerReflector.addReducer(targetClass, function (builder) { return fn(builder).asSingleton(); });
|
|
82
81
|
};
|
|
83
|
-
exports.
|
|
82
|
+
exports.asSingleton = asSingleton;
|
|
84
83
|
//# sourceMappingURL=SingletonProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/providers/SingletonProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAAuD;AACvD,wEAAuE;
|
|
1
|
+
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/providers/SingletonProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAAuD;AACvD,wEAAuE;AAEvE,wEAAuE;AAEvE;IAA0C,qCAAoB;IAG1D,2BAA6B,QAAsB;QAAnD,YACI,kBAAM,QAAQ,CAAC,SAClB;QAF4B,cAAQ,GAAR,QAAQ,CAAc;QAF3C,cAAQ,GAAkB,IAAI,CAAC;;IAIvC,CAAC;IAED,iCAAK,GAAL;QACI,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,mCAAO,GAAP;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACxB,IAAM,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,UAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAG,CAAI,QAAQ,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAU,CAAC;IACpC,CAAC;IACL,wBAAC;AAAD,CAAC,AAxBD,CAA0C,qCAAiB,GAwB1D;AAxBY,8CAAiB;AA0BvB,IAAM,WAAW,GAAmB,UAAC,MAAM;IAC9C,IAAM,WAAW,GAAG,MAAqC,CAAC;IAC1D,IAAM,EAAE,GAAG,qCAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9D,qCAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,UAAC,OAAO,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAzB,CAAyB,CAAC,CAAC;AACtF,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IProvider, ScopeOptions, Tag } from '../core/provider/IProvider';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
|
-
import { IProviderReflector } from '../core/provider/IProviderReflector';
|
|
4
3
|
export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
5
4
|
private provider;
|
|
6
5
|
private readonly tags;
|
|
@@ -8,4 +7,4 @@ export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
|
8
7
|
clone(): TaggedProvider<T>;
|
|
9
8
|
isValid(filters: ScopeOptions): boolean;
|
|
10
9
|
}
|
|
11
|
-
export declare const
|
|
10
|
+
export declare const perTags: (...tags: Tag[]) => ClassDecorator;
|
|
@@ -40,8 +40,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
40
40
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
41
41
|
};
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.
|
|
43
|
+
exports.perTags = exports.TaggedProvider = void 0;
|
|
44
44
|
var ProviderDecorator_1 = require("../core/provider/ProviderDecorator");
|
|
45
|
+
var ProviderReflector_1 = require("../core/provider/ProviderReflector");
|
|
45
46
|
var TaggedProvider = /** @class */ (function (_super) {
|
|
46
47
|
__extends(TaggedProvider, _super);
|
|
47
48
|
function TaggedProvider(provider, tags) {
|
|
@@ -60,21 +61,19 @@ var TaggedProvider = /** @class */ (function (_super) {
|
|
|
60
61
|
return TaggedProvider;
|
|
61
62
|
}(ProviderDecorator_1.ProviderDecorator));
|
|
62
63
|
exports.TaggedProvider = TaggedProvider;
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
};
|
|
64
|
+
var perTags = function () {
|
|
65
|
+
var tags = [];
|
|
66
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
67
|
+
tags[_i] = arguments[_i];
|
|
68
|
+
}
|
|
69
|
+
return function (target) {
|
|
70
|
+
var targetClass = target;
|
|
71
|
+
var fn = ProviderReflector_1.providerReflector.findReducerOrCreate(targetClass);
|
|
72
|
+
ProviderReflector_1.providerReflector.addReducer(targetClass, function (builder) {
|
|
73
|
+
var _a;
|
|
74
|
+
return (_a = fn(builder)).forTags.apply(_a, __spreadArray([], __read(tags), false));
|
|
75
|
+
});
|
|
77
76
|
};
|
|
78
77
|
};
|
|
79
|
-
exports.
|
|
78
|
+
exports.perTags = perTags;
|
|
80
79
|
//# sourceMappingURL=TaggedProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/providers/TaggedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wEAAuE;
|
|
1
|
+
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/providers/TaggedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wEAAuE;AAEvE,wEAAuE;AAEvE;IAAuC,kCAAoB;IACvD,wBAAoB,QAAsB,EAAmB,IAAW;QAAxE,YACI,kBAAM,QAAQ,CAAC,SAClB;QAFmB,cAAQ,GAAR,QAAQ,CAAc;QAAmB,UAAI,GAAJ,IAAI,CAAO;;IAExE,CAAC;IAED,8BAAK,GAAL;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAqB;QACjB,IAAA,IAAI,GAAK,OAAO,KAAZ,CAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IACL,qBAAC;AAAD,CAAC,AAbD,CAAuC,qCAAiB,GAavD;AAbY,wCAAc;AAepB,IAAM,OAAO,GAChB;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IACf,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;;YAAK,OAAA,CAAA,KAAA,EAAE,CAAC,OAAO,CAAC,CAAA,CAAC,OAAO,oCAAI,IAAI;QAA3B,CAA4B,CAAC,CAAC;IACzF,CAAC;AAJD,CAIC,CAAC;AANO,QAAA,OAAO,WAMd"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { constructor } from '../utils/types';
|
|
2
2
|
import { IProvider, ProviderKey, ResolveDependency } from './IProvider';
|
|
3
3
|
import { Resolveable } from '../container/IContainer';
|
|
4
|
-
import { IProviderReflector } from './IProviderReflector';
|
|
5
4
|
export declare class Provider<T> implements IProvider<T> {
|
|
6
5
|
private readonly resolveDependency;
|
|
7
6
|
static fromClass<T>(value: constructor<T>): Provider<T>;
|
|
@@ -15,4 +14,4 @@ export declare class Provider<T> implements IProvider<T> {
|
|
|
15
14
|
isValid(): boolean;
|
|
16
15
|
getKeyOrFail(): ProviderKey;
|
|
17
16
|
}
|
|
18
|
-
export declare const
|
|
17
|
+
export declare const forKey: (key: ProviderKey) => ClassDecorator;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ProviderHasNoKeyError } from './ProviderHasNoKeyError';
|
|
2
|
+
import { providerReflector } from './ProviderReflector';
|
|
2
3
|
export class Provider {
|
|
3
4
|
constructor(resolveDependency) {
|
|
4
5
|
this.resolveDependency = resolveDependency;
|
|
@@ -33,9 +34,9 @@ export class Provider {
|
|
|
33
34
|
return this.key;
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
export const
|
|
37
|
+
export const forKey = (key) => (target) => {
|
|
37
38
|
const targetClass = target;
|
|
38
|
-
const fn =
|
|
39
|
-
|
|
39
|
+
const fn = providerReflector.findReducerOrCreate(targetClass);
|
|
40
|
+
providerReflector.addReducer(targetClass, (builder) => fn(builder).forKey(key));
|
|
40
41
|
};
|
|
41
42
|
//# sourceMappingURL=Provider.js.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,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,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,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,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"}
|
|
@@ -8,3 +8,4 @@ export declare class ProviderReflector implements IProviderReflector {
|
|
|
8
8
|
findReducerOrCreate<T>(target: constructor<T>): ProviderReducer<T>;
|
|
9
9
|
addReducer<T>(target: constructor<T>, reducer: ProviderReducer<T>): void;
|
|
10
10
|
}
|
|
11
|
+
export declare const providerReflector: ProviderReflector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderReflector.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderReflector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,OAAO,iBAAiB;IAK1B,YAAoB,WAA4B,EAAU,aAA6C;QAAnF,gBAAW,GAAX,WAAW,CAAiB;QAAU,kBAAa,GAAb,aAAa,CAAgC;IAAG,CAAC;IAJ3G,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAID,mBAAmB,CAAI,MAAsB;QACzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YAChD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;SAC1E;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAI,MAAsB,EAAE,OAA2B;QAC7D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"ProviderReflector.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderReflector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,OAAO,iBAAiB;IAK1B,YAAoB,WAA4B,EAAU,aAA6C;QAAnF,gBAAW,GAAX,WAAW,CAAiB;QAAU,kBAAa,GAAb,aAAa,CAAgC;IAAG,CAAC;IAJ3G,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAID,mBAAmB,CAAI,MAAsB;QACzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YAChD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;SAC1E;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAI,MAAsB,EAAE,OAA2B;QAC7D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export interface IMethodReflector {
|
|
2
|
-
addHook<GInstance extends Object>(target: GInstance, propertyKey: string | symbol): void;
|
|
3
2
|
invokeHooksOf<GInstance extends Object>(target: GInstance): void;
|
|
4
3
|
}
|
|
5
|
-
export declare function createMethodHookDecorator(metadata: IMethodReflector): MethodDecorator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IMethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/IMethodReflector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IMethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/IMethodReflector.ts"],"names":[],"mappings":""}
|
|
@@ -2,7 +2,8 @@ import { IMethodReflector } from './IMethodReflector';
|
|
|
2
2
|
export declare class MethodReflector implements IMethodReflector {
|
|
3
3
|
readonly hookKey: string | symbol;
|
|
4
4
|
constructor(hookKey: string | symbol);
|
|
5
|
-
addHook
|
|
5
|
+
private addHook;
|
|
6
6
|
invokeHooksOf<GInstance extends Object>(target: GInstance): void;
|
|
7
7
|
private static getTargetId;
|
|
8
|
+
createMethodHookDecorator(): MethodDecorator;
|
|
8
9
|
}
|
|
@@ -22,5 +22,11 @@ export class MethodReflector {
|
|
|
22
22
|
static getTargetId(target) {
|
|
23
23
|
return target.constructor;
|
|
24
24
|
}
|
|
25
|
+
createMethodHookDecorator() {
|
|
26
|
+
return (target, propertyKey) => {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
28
|
+
this.addHook(target, propertyKey);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
25
31
|
}
|
|
26
32
|
//# sourceMappingURL=MethodReflector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/MethodReflector.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IACxB,YAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;
|
|
1
|
+
{"version":3,"file":"MethodReflector.js","sourceRoot":"","sources":["../../lib/hooks/MethodReflector.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IACxB,YAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;IAChD,OAAO,CAA2B,MAAiB,EAAE,WAA4B;QACrF,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,wDAAwD;IACxD,aAAa,CAA2B,MAAiB;QACrD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,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;QAET,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE;YAC3B,MAAc,CAAC,UAAU,CAAC,EAAE,CAAC;SACjC;IACL,CAAC;IAED,wDAAwD;IAChD,MAAM,CAAC,WAAW,CAAiC,MAAiB;QACxE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAED,yBAAyB;QACrB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YAC3B,wDAAwD;YACxD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC;IACN,CAAC;CACJ"}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { constructor } from './core/utils/types';
|
|
2
|
-
import { ProviderBuilder } from './providers/ProviderBuilder';
|
|
3
|
-
import { ResolveDependency } from './core/provider/IProvider';
|
|
4
1
|
import { IContainer, InjectionToken } from './core/container/IContainer';
|
|
5
2
|
export { ContainerHook } from './hooks/ContainerHook';
|
|
6
3
|
export { ProviderReducer } from './core/provider/IProviderReflector';
|
|
@@ -21,7 +18,7 @@ export { ArgsProvider, ArgsFn, createArgsFnDecorator } from './providers/ArgsPro
|
|
|
21
18
|
export { IContainerHook } from './core/container/IContainerHook';
|
|
22
19
|
export { TaggedProvider } from './providers/TaggedProvider';
|
|
23
20
|
export { ProxyInjector } from './injectors/ProxyInjector';
|
|
24
|
-
export { LevelProvider,
|
|
21
|
+
export { LevelProvider, perLevel } from './providers/LevelProvider';
|
|
25
22
|
export { IMockRepository } from './automock/IMockRepository';
|
|
26
23
|
export { AutoMockedContainer } from './automock/AutoMockedContainer';
|
|
27
24
|
export { SingletonProvider } from './providers/SingletonProvider';
|
|
@@ -31,14 +28,7 @@ export { ProviderReflector } from './core/provider/ProviderReflector';
|
|
|
31
28
|
export { IDisposable } from './core/utils/types';
|
|
32
29
|
export { ProviderKey } from './core/provider/IProvider';
|
|
33
30
|
export { isProviderKey } from './core/provider/IProvider';
|
|
34
|
-
export {
|
|
35
|
-
export {
|
|
36
|
-
export {
|
|
37
|
-
export declare const forKey: (key: import("./core/provider/IProvider").ProviderKey) => ClassDecorator;
|
|
38
|
-
export declare const asSingleton: ClassDecorator;
|
|
39
|
-
export declare const perTags: (...tags: string[]) => ClassDecorator;
|
|
40
|
-
export declare function fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
41
|
-
export declare function fromValue<T>(value: T): ProviderBuilder<T>;
|
|
42
|
-
export declare function fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
|
|
43
|
-
export { createMethodHookDecorator } from './hooks/IMethodReflector';
|
|
31
|
+
export { perTags } from './providers/TaggedProvider';
|
|
32
|
+
export { asSingleton } from './providers/SingletonProvider';
|
|
33
|
+
export { forKey } from './core/provider/Provider';
|
|
44
34
|
export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
|
package/esm/index.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import { createAddKeyDecorator, Provider } from './core/provider/Provider';
|
|
2
|
-
import { ProviderReflector } from './core/provider/ProviderReflector';
|
|
3
|
-
import { createSingletonDecorator } from './providers/SingletonProvider';
|
|
4
|
-
import { createTagsDecorator } from './providers/TaggedProvider';
|
|
5
|
-
import { ProviderBuilder } from './providers/ProviderBuilder';
|
|
6
1
|
export { ContainerHook } from './hooks/ContainerHook';
|
|
7
2
|
export { Container } from './core/container/Container';
|
|
8
3
|
export { SimpleInjector } from './injectors/SimpleInjector';
|
|
@@ -14,28 +9,14 @@ export { Provider } from './core/provider/Provider';
|
|
|
14
9
|
export { ArgsProvider, createArgsFnDecorator } from './providers/ArgsProvider';
|
|
15
10
|
export { TaggedProvider } from './providers/TaggedProvider';
|
|
16
11
|
export { ProxyInjector } from './injectors/ProxyInjector';
|
|
17
|
-
export { LevelProvider,
|
|
12
|
+
export { LevelProvider, perLevel } from './providers/LevelProvider';
|
|
18
13
|
export { AutoMockedContainer } from './automock/AutoMockedContainer';
|
|
19
14
|
export { SingletonProvider } from './providers/SingletonProvider';
|
|
20
15
|
export { ProviderBuilder } from './providers/ProviderBuilder';
|
|
21
16
|
export { ProviderReflector } from './core/provider/ProviderReflector';
|
|
22
17
|
export { isProviderKey } from './core/provider/IProvider';
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
25
|
-
export {
|
|
26
|
-
const providerReflector = ProviderReflector.create();
|
|
27
|
-
export const forKey = createAddKeyDecorator(providerReflector);
|
|
28
|
-
export const asSingleton = createSingletonDecorator(providerReflector);
|
|
29
|
-
export const perTags = createTagsDecorator(providerReflector);
|
|
30
|
-
export function fromClass(value) {
|
|
31
|
-
return new ProviderBuilder(Provider.fromClass(value)).map(providerReflector.findReducerOrCreate(value));
|
|
32
|
-
}
|
|
33
|
-
export function fromValue(value) {
|
|
34
|
-
return new ProviderBuilder(Provider.fromValue(value));
|
|
35
|
-
}
|
|
36
|
-
export function fromFn(fn) {
|
|
37
|
-
return new ProviderBuilder(new Provider(fn));
|
|
38
|
-
}
|
|
39
|
-
export { createMethodHookDecorator } from './hooks/IMethodReflector';
|
|
18
|
+
export { perTags } from './providers/TaggedProvider';
|
|
19
|
+
export { asSingleton } from './providers/SingletonProvider';
|
|
20
|
+
export { forKey } from './core/provider/Provider';
|
|
40
21
|
export const by = (key, ...args) => (l) => l.resolve(key, ...args);
|
|
41
22
|
//# 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":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAU,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,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,6 +1,5 @@
|
|
|
1
1
|
import { IProvider, ScopeOptions } from '../core/provider/IProvider';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
|
-
import { IProviderReflector } from '../core/provider/IProviderReflector';
|
|
4
3
|
export declare class LevelProvider<T> extends ProviderDecorator<T> {
|
|
5
4
|
private provider;
|
|
6
5
|
private readonly range;
|
|
@@ -8,4 +7,4 @@ export declare class LevelProvider<T> extends ProviderDecorator<T> {
|
|
|
8
7
|
clone(): LevelProvider<T>;
|
|
9
8
|
isValid(filters: ScopeOptions): boolean;
|
|
10
9
|
}
|
|
11
|
-
export declare const
|
|
10
|
+
export declare const perLevel: (value: number) => ClassDecorator;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
2
|
+
import { providerReflector } from '../core/provider/ProviderReflector';
|
|
2
3
|
export class LevelProvider extends ProviderDecorator {
|
|
3
4
|
constructor(provider, range) {
|
|
4
5
|
super(provider);
|
|
@@ -14,9 +15,9 @@ export class LevelProvider extends ProviderDecorator {
|
|
|
14
15
|
return from <= level && level <= to && this.provider.isValid(filters);
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
|
-
export const
|
|
18
|
+
export const perLevel = (value) => (target) => {
|
|
18
19
|
const targetClass = target;
|
|
19
|
-
const fn =
|
|
20
|
-
|
|
20
|
+
const fn = providerReflector.findReducerOrCreate(targetClass);
|
|
21
|
+
providerReflector.addReducer(targetClass, (builder) => fn(builder).forLevel(value));
|
|
21
22
|
};
|
|
22
23
|
//# sourceMappingURL=LevelProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LevelProvider.js","sourceRoot":"","sources":["../../lib/providers/LevelProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"LevelProvider.js","sourceRoot":"","sources":["../../lib/providers/LevelProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,OAAO,aAAiB,SAAQ,iBAAoB;IACtD,YAAoB,QAAsB,EAAmB,KAAuB;QAChF,KAAK,CAAC,QAAQ,CAAC,CAAC;QADA,aAAQ,GAAR,QAAQ,CAAc;QAAmB,UAAK,GAAL,KAAK,CAAkB;IAEpF,CAAC;IAED,KAAK;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,OAAqB;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1B,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,OAAO,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,QAAQ,GACjB,CAAC,KAAa,EAAkB,EAAE,CAClC,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,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { IProvider, ProviderKey, Tag } from '../core/provider/IProvider';
|
|
2
2
|
import { ProviderReducer } from '../core/provider/IProviderReflector';
|
|
3
3
|
import { ArgsFn } from './ArgsProvider';
|
|
4
|
+
import { constructor } from '../core/utils/types';
|
|
4
5
|
export declare class ProviderBuilder<T> {
|
|
5
6
|
private provider;
|
|
7
|
+
static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
|
|
8
|
+
static fromValue<T>(value: T): ProviderBuilder<T>;
|
|
9
|
+
static fromFn<T>(fn: (...args: any[]) => T): ProviderBuilder<T>;
|
|
6
10
|
constructor(provider: IProvider<T>);
|
|
7
11
|
withArgs(...extraArgs: any[]): this;
|
|
8
12
|
withArgsFn(argsFn: ArgsFn): this;
|
|
@@ -2,10 +2,21 @@ import { SingletonProvider } from './SingletonProvider';
|
|
|
2
2
|
import { TaggedProvider } from './TaggedProvider';
|
|
3
3
|
import { LevelProvider } from './LevelProvider';
|
|
4
4
|
import { ArgsProvider } from './ArgsProvider';
|
|
5
|
+
import { Provider } from '../core/provider/Provider';
|
|
6
|
+
import { providerReflector } from '../core/provider/ProviderReflector';
|
|
5
7
|
export class ProviderBuilder {
|
|
6
8
|
constructor(provider) {
|
|
7
9
|
this.provider = provider;
|
|
8
10
|
}
|
|
11
|
+
static fromClass(value) {
|
|
12
|
+
return new ProviderBuilder(Provider.fromClass(value)).map(providerReflector.findReducerOrCreate(value));
|
|
13
|
+
}
|
|
14
|
+
static fromValue(value) {
|
|
15
|
+
return new ProviderBuilder(Provider.fromValue(value));
|
|
16
|
+
}
|
|
17
|
+
static fromFn(fn) {
|
|
18
|
+
return new ProviderBuilder(new Provider(fn));
|
|
19
|
+
}
|
|
9
20
|
withArgs(...extraArgs) {
|
|
10
21
|
this.provider = new ArgsProvider(this.provider, () => extraArgs);
|
|
11
22
|
return this;
|
|
@@ -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;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
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;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,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;IAaxB,YAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAZ9C,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;IAID,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,QAAQ,CAAC,KAAa;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,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,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Resolveable } from '../core/container/IContainer';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
3
|
import { IProvider } from '../core/provider/IProvider';
|
|
4
|
-
import { IProviderReflector } from '../core/provider/IProviderReflector';
|
|
5
4
|
export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
6
5
|
private readonly provider;
|
|
7
6
|
private instance;
|
|
@@ -10,4 +9,4 @@ export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
|
10
9
|
dispose(): void;
|
|
11
10
|
resolve(container: Resolveable, ...args: any[]): T;
|
|
12
11
|
}
|
|
13
|
-
export declare const
|
|
12
|
+
export declare const asSingleton: ClassDecorator;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Box } from '../core/utils/types';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
|
+
import { providerReflector } from '../core/provider/ProviderReflector';
|
|
3
4
|
export class SingletonProvider extends ProviderDecorator {
|
|
4
5
|
constructor(provider) {
|
|
5
6
|
super(provider);
|
|
@@ -21,9 +22,9 @@ export class SingletonProvider extends ProviderDecorator {
|
|
|
21
22
|
return this.instance.value;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
|
-
export const
|
|
25
|
+
export const asSingleton = (target) => {
|
|
25
26
|
const targetClass = target;
|
|
26
|
-
const fn =
|
|
27
|
-
|
|
27
|
+
const fn = providerReflector.findReducerOrCreate(targetClass);
|
|
28
|
+
providerReflector.addReducer(targetClass, (builder) => fn(builder).asSingleton());
|
|
28
29
|
};
|
|
29
30
|
//# sourceMappingURL=SingletonProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/providers/SingletonProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAe,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/providers/SingletonProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAe,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,OAAO,iBAAqB,SAAQ,iBAAoB;IAG1D,YAA6B,QAAsB;QAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAc;QAF3C,aAAQ,GAAkB,IAAI,CAAC;IAIvC,CAAC;IAED,KAAK;QACD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAI,QAAQ,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAU,CAAC;IACpC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAmB,CAAC,MAAM,EAAE,EAAE;IAClD,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,WAAW,EAAE,CAAC,CAAC;AACtF,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IProvider, ScopeOptions, Tag } from '../core/provider/IProvider';
|
|
2
2
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
3
|
-
import { IProviderReflector } from '../core/provider/IProviderReflector';
|
|
4
3
|
export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
5
4
|
private provider;
|
|
6
5
|
private readonly tags;
|
|
@@ -8,4 +7,4 @@ export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
|
8
7
|
clone(): TaggedProvider<T>;
|
|
9
8
|
isValid(filters: ScopeOptions): boolean;
|
|
10
9
|
}
|
|
11
|
-
export declare const
|
|
10
|
+
export declare const perTags: (...tags: Tag[]) => ClassDecorator;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ProviderDecorator } from '../core/provider/ProviderDecorator';
|
|
2
|
+
import { providerReflector } from '../core/provider/ProviderReflector';
|
|
2
3
|
export class TaggedProvider extends ProviderDecorator {
|
|
3
4
|
constructor(provider, tags) {
|
|
4
5
|
super(provider);
|
|
@@ -13,9 +14,9 @@ export class TaggedProvider extends ProviderDecorator {
|
|
|
13
14
|
return this.tags.some((t) => tags.includes(t)) && this.provider.isValid(filters);
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
|
-
export const
|
|
17
|
+
export const perTags = (...tags) => (target) => {
|
|
17
18
|
const targetClass = target;
|
|
18
|
-
const fn =
|
|
19
|
-
|
|
19
|
+
const fn = providerReflector.findReducerOrCreate(targetClass);
|
|
20
|
+
providerReflector.addReducer(targetClass, (builder) => fn(builder).forTags(...tags));
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=TaggedProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/providers/TaggedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/providers/TaggedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,OAAO,cAAkB,SAAQ,iBAAoB;IACvD,YAAoB,QAAsB,EAAmB,IAAW;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADA,aAAQ,GAAR,QAAQ,CAAc;QAAmB,SAAI,GAAJ,IAAI,CAAO;IAExE,CAAC;IAED,KAAK;QACD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,OAAqB;QACzB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,OAAO,GAChB,CAAC,GAAG,IAAW,EAAkB,EAAE,CACnC,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,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACzF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.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": "c0a1641180b6370a304cacbbc47c586e5f021496"
|
|
50
50
|
}
|