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
package/README.md
CHANGED
|
@@ -38,8 +38,9 @@ yarn add ts-ioc-container ts-constructor-injector reflect-metadata
|
|
|
38
38
|
How to create new container
|
|
39
39
|
|
|
40
40
|
```typescript
|
|
41
|
-
import { Container, IContainer, IInjector
|
|
41
|
+
import { Container, IContainer, IInjector } from "ts-ioc-container";
|
|
42
42
|
import { resolve } from 'ts-constructor-injector';
|
|
43
|
+
import { ProviderBuilder } from "ts-ioc-container/lib";
|
|
43
44
|
|
|
44
45
|
class Logger {
|
|
45
46
|
info(message: string) {
|
|
@@ -53,44 +54,63 @@ const injector: IInjector = {
|
|
|
53
54
|
},
|
|
54
55
|
};
|
|
55
56
|
|
|
56
|
-
const container = new Container(injector)
|
|
57
|
-
|
|
57
|
+
const container = new Container(injector)
|
|
58
|
+
.register('ILogger', ProviderBuilder.fromClass(Logger).build());
|
|
58
59
|
const logger = container.resolve<ILogger>('ILogger');
|
|
59
60
|
logger.info('Hello world');
|
|
60
61
|
```
|
|
61
62
|
|
|
62
|
-
##
|
|
63
|
+
## Provider builder
|
|
63
64
|
|
|
64
65
|
```typescript
|
|
65
|
-
import {
|
|
66
|
+
import { ProviderBuilder } from "ts-ioc-container";
|
|
66
67
|
|
|
67
68
|
const container = new Container(injector, { tags: ['root'] });
|
|
68
|
-
container.register(fromFn((container, ...args) => new Logger(...args)).
|
|
69
|
+
container.register('ILogger', ProviderBuilder.fromFn((container, ...args) => new Logger(...args)).build());
|
|
69
70
|
|
|
70
71
|
// Available only in root scope and all his children
|
|
71
|
-
container.register(fromClass(Logger).
|
|
72
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).perTags('root').build());
|
|
72
73
|
|
|
73
74
|
// Singleton per root tag and all his children
|
|
74
|
-
container.register(fromClass(Logger).
|
|
75
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).asSingleton().perTags('root').build());
|
|
75
76
|
// OR
|
|
76
|
-
container.register(fromClass(Logger).
|
|
77
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).asSingleton('root').build());
|
|
77
78
|
|
|
78
79
|
// singleton for scope with tag1 or tag2
|
|
79
|
-
container.register(fromClass(Logger).
|
|
80
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).asSingleton('tag1', 'tag2').build());
|
|
80
81
|
|
|
81
82
|
// singleton in every scope
|
|
82
|
-
container.register(fromClass(Logger).
|
|
83
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).withArgs('dev').asSingleton().build());
|
|
83
84
|
|
|
84
85
|
// singleton in every scope
|
|
85
|
-
container.register(fromClass(Logger).
|
|
86
|
+
container.register('ILogger', ProviderBuilder.fromClass(Logger).withArgsFn((container) => [container.resolve('isTestEnv') ? 'dev' : 'prod']).asSingleton().build());
|
|
87
|
+
|
|
88
|
+
container.register('ILogger', ProviderBuilder.fromValue(new Logger()).build());
|
|
89
|
+
```
|
|
86
90
|
|
|
87
|
-
|
|
91
|
+
## Registration module (Provider + ProviderKey)
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { asSingleton, forKey, Registration } from "ts-ioc-container";
|
|
95
|
+
|
|
96
|
+
@forKey('ILogger')
|
|
97
|
+
@asSingleton('root')
|
|
98
|
+
class Logger {
|
|
99
|
+
info(message: string) {
|
|
100
|
+
console.log(message);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const container = new Container(injector, { tags: ['root'] })
|
|
105
|
+
.add(Registration.fromClass(Logger));
|
|
106
|
+
const logger = container.resolve<ILogger>('ILogger');
|
|
107
|
+
logger.info('Hello world');
|
|
88
108
|
```
|
|
89
109
|
|
|
90
110
|
## Decorators
|
|
91
111
|
|
|
92
112
|
```typescript
|
|
93
|
-
import { asSingleton, perTags, forKey, by } from "ts-ioc-container";
|
|
113
|
+
import { asSingleton, perTags, forKey, by, Registration } from "ts-ioc-container";
|
|
94
114
|
import { composeDecorators, inject } from "ts-constructor-injector";
|
|
95
115
|
|
|
96
116
|
@forKey('IEngine')
|
|
@@ -115,7 +135,7 @@ class Engine {
|
|
|
115
135
|
}
|
|
116
136
|
|
|
117
137
|
const container = new Container(injector, { tags: ['root'] })
|
|
118
|
-
.
|
|
138
|
+
.add(Registration.fromClass(Engine));
|
|
119
139
|
```
|
|
120
140
|
|
|
121
141
|
## Hooks
|
|
@@ -126,7 +146,7 @@ import {
|
|
|
126
146
|
IInjector,
|
|
127
147
|
ContainerHook,
|
|
128
148
|
Injector,
|
|
129
|
-
|
|
149
|
+
Registration,
|
|
130
150
|
} from "ts-ioc-container";
|
|
131
151
|
import { MethodReflector } from "ts-constructor-injector";
|
|
132
152
|
|
|
@@ -158,7 +178,7 @@ const injector: IInjector = {
|
|
|
158
178
|
}
|
|
159
179
|
|
|
160
180
|
const container = new Container(injector)
|
|
161
|
-
.
|
|
181
|
+
.add(Registration.fromClass(Logger));
|
|
162
182
|
const logger = container.resolve<ILogger>('ILogger'); // initialized
|
|
163
183
|
for (const instance of container.getInstances()) {
|
|
164
184
|
onDisposeReflector.invokeHooksOf(instance); // disposed
|
|
@@ -171,7 +191,7 @@ for (const instance of container.getInstances()) {
|
|
|
171
191
|
|
|
172
192
|
```typescript
|
|
173
193
|
import { composeDecorators } from "ts-constructor-injector";
|
|
174
|
-
import { forKey } from "ts-ioc-container";
|
|
194
|
+
import { forKey, Registration } from "ts-ioc-container";
|
|
175
195
|
|
|
176
196
|
@asSingleton('root')
|
|
177
197
|
@forKey('IEngine')
|
|
@@ -186,8 +206,8 @@ class Engine {
|
|
|
186
206
|
}
|
|
187
207
|
|
|
188
208
|
const container = new Container(injector, { tags: ['root'] })
|
|
189
|
-
.
|
|
190
|
-
.
|
|
209
|
+
.add(Registration.fromClass(Logger))
|
|
210
|
+
.add(Registration.fromClass(Engine));
|
|
191
211
|
|
|
192
212
|
const scope = container.createScope(['home', 'child']);
|
|
193
213
|
const logger = scope.resolve('ILogger');
|
|
@@ -18,6 +18,9 @@ var AutoMockedContainer = /** @class */ (function () {
|
|
|
18
18
|
return [];
|
|
19
19
|
};
|
|
20
20
|
AutoMockedContainer.prototype.removeScope = function () { };
|
|
21
|
+
AutoMockedContainer.prototype.add = function () {
|
|
22
|
+
throw new index_1.MethodNotImplementedError();
|
|
23
|
+
};
|
|
21
24
|
return AutoMockedContainer;
|
|
22
25
|
}());
|
|
23
26
|
exports.AutoMockedContainer = AutoMockedContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,kCAAyG;AAEzG;IAAA;
|
|
1
|
+
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,kCAAyG;AAEzG;IAAA;IA0BA,CAAC;IAzBG,yCAAW,GAAX;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,0CAAY,GAAZ;QACI,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,sCAAQ,GAAR;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,yCAAW,GAAX,cAAqB,CAAC;IAEtB,iCAAG,GAAH;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IACL,0BAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BqB,kDAAmB"}
|
|
@@ -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
|
}
|
|
@@ -53,8 +53,7 @@ var Container = /** @class */ (function () {
|
|
|
53
53
|
this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer_1.EmptyContainer();
|
|
54
54
|
this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
|
|
55
55
|
}
|
|
56
|
-
Container.prototype.register = function (
|
|
57
|
-
var key = _a.key, provider = _a.provider;
|
|
56
|
+
Container.prototype.register = function (key, provider) {
|
|
58
57
|
this.validateContainer();
|
|
59
58
|
this.providers.add(key, provider);
|
|
60
59
|
return this;
|
|
@@ -95,7 +94,7 @@ var Container = /** @class */ (function () {
|
|
|
95
94
|
for (var _b = __values(this.getProviders().entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
96
95
|
var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
|
|
97
96
|
if (provider.isValid(scope)) {
|
|
98
|
-
scope.register(
|
|
97
|
+
scope.register(key, provider.clone());
|
|
99
98
|
}
|
|
100
99
|
}
|
|
101
100
|
}
|
|
@@ -158,6 +157,10 @@ var Container = /** @class */ (function () {
|
|
|
158
157
|
Container.prototype.hasTag = function (tag) {
|
|
159
158
|
return this.tags.includes(tag);
|
|
160
159
|
};
|
|
160
|
+
Container.prototype.add = function (module) {
|
|
161
|
+
module.applyTo(this);
|
|
162
|
+
return this;
|
|
163
|
+
};
|
|
161
164
|
Container.prototype.validateContainer = function () {
|
|
162
165
|
ContainerDisposedError_1.ContainerDisposedError.assert(!this.isDisposed, 'Container is already disposed');
|
|
163
166
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,mDAA2F;AAC3F,mDAAkD;AAClD,yDAAwD;AACxD,mEAAkE;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,9 @@ var EmptyContainer = /** @class */ (function () {
|
|
|
25
25
|
return [];
|
|
26
26
|
};
|
|
27
27
|
EmptyContainer.prototype.removeScope = function () { };
|
|
28
|
+
EmptyContainer.prototype.add = function () {
|
|
29
|
+
throw new MethodNotImplementedError_1.MethodNotImplementedError();
|
|
30
|
+
};
|
|
28
31
|
return EmptyContainer;
|
|
29
32
|
}());
|
|
30
33
|
exports.EmptyContainer = EmptyContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,0EAAyE;AACzE,2EAA0E;AAG1E;IAAA;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,0EAAyE;AACzE,2EAA0E;AAG1E;IAAA;IA8BA,CAAC;IA7BG,oCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAQ,GAAR;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,iBAAe,GAAG,CAAC,QAAQ,EAAI,CAAC,CAAC;IACrE,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,oCAAW,GAAX,cAAqB,CAAC;IAEtB,4BAAG,GAAH;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IACL,qBAAC;AAAD,CAAC,AA9BD,IA8BC;AA9BY,wCAAc"}
|
|
@@ -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/cjm/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/cjm/index.js
CHANGED
|
@@ -25,11 +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.
|
|
29
|
-
var Provider_1 = require("./provider/Provider");
|
|
30
|
-
var RegistrationReflector_1 = require("./registration/RegistrationReflector");
|
|
31
|
-
var utils_1 = require("./utils");
|
|
32
|
-
var RegistrationBuilder_1 = require("./registration/RegistrationBuilder");
|
|
28
|
+
exports.by = exports.Registration = exports.asSingleton = exports.forKey = exports.perTags = exports.isProviderKey = exports.ProviderBuilder = exports.AutoMockedContainer = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.Container = exports.EmptyContainer = void 0;
|
|
33
29
|
var EmptyContainer_1 = require("./container/EmptyContainer");
|
|
34
30
|
Object.defineProperty(exports, "EmptyContainer", { enumerable: true, get: function () { return EmptyContainer_1.EmptyContainer; } });
|
|
35
31
|
var Container_1 = require("./container/Container");
|
|
@@ -40,13 +36,19 @@ var MethodNotImplementedError_1 = require("./MethodNotImplementedError");
|
|
|
40
36
|
Object.defineProperty(exports, "MethodNotImplementedError", { enumerable: true, get: function () { return MethodNotImplementedError_1.MethodNotImplementedError; } });
|
|
41
37
|
var ContainerDisposedError_1 = require("./container/ContainerDisposedError");
|
|
42
38
|
Object.defineProperty(exports, "ContainerDisposedError", { enumerable: true, get: function () { return ContainerDisposedError_1.ContainerDisposedError; } });
|
|
43
|
-
var
|
|
44
|
-
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return
|
|
39
|
+
var Provider_1 = require("./provider/Provider");
|
|
40
|
+
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return Provider_1.Provider; } });
|
|
45
41
|
var AutoMockedContainer_1 = require("./container/AutoMockedContainer");
|
|
46
42
|
Object.defineProperty(exports, "AutoMockedContainer", { enumerable: true, get: function () { return AutoMockedContainer_1.AutoMockedContainer; } });
|
|
43
|
+
var ProviderBuilder_1 = require("./provider/ProviderBuilder");
|
|
44
|
+
Object.defineProperty(exports, "ProviderBuilder", { enumerable: true, get: function () { return ProviderBuilder_1.ProviderBuilder; } });
|
|
47
45
|
var IProvider_1 = require("./provider/IProvider");
|
|
48
46
|
Object.defineProperty(exports, "isProviderKey", { enumerable: true, get: function () { return IProvider_1.isProviderKey; } });
|
|
49
|
-
var
|
|
47
|
+
var Registration_1 = require("./registration/Registration");
|
|
48
|
+
Object.defineProperty(exports, "perTags", { enumerable: true, get: function () { return Registration_1.perTags; } });
|
|
49
|
+
Object.defineProperty(exports, "forKey", { enumerable: true, get: function () { return Registration_1.forKey; } });
|
|
50
|
+
Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return Registration_1.asSingleton; } });
|
|
51
|
+
Object.defineProperty(exports, "Registration", { enumerable: true, get: function () { return Registration_1.Registration; } });
|
|
50
52
|
var by = function (key) {
|
|
51
53
|
var args = [];
|
|
52
54
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
@@ -57,44 +59,4 @@ var by = function (key) {
|
|
|
57
59
|
};
|
|
58
60
|
};
|
|
59
61
|
exports.by = by;
|
|
60
|
-
function fromClass(Target) {
|
|
61
|
-
var _a;
|
|
62
|
-
var map = (_a = providerReflector.getMapper(Target)) !== null && _a !== void 0 ? _a : utils_1.identity;
|
|
63
|
-
return map(new RegistrationBuilder_1.RegistrationBuilder(Provider_1.Provider.fromClass(Target)));
|
|
64
|
-
}
|
|
65
|
-
exports.fromClass = fromClass;
|
|
66
|
-
function fromValue(value) {
|
|
67
|
-
return new RegistrationBuilder_1.RegistrationBuilder(Provider_1.Provider.fromValue(value));
|
|
68
|
-
}
|
|
69
|
-
exports.fromValue = fromValue;
|
|
70
|
-
function fromFn(fn) {
|
|
71
|
-
return new RegistrationBuilder_1.RegistrationBuilder(new Provider_1.Provider(fn));
|
|
72
|
-
}
|
|
73
|
-
exports.fromFn = fromFn;
|
|
74
|
-
var perTags = function () {
|
|
75
|
-
var tags = [];
|
|
76
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
77
|
-
tags[_i] = arguments[_i];
|
|
78
|
-
}
|
|
79
|
-
return function (target) {
|
|
80
|
-
providerReflector.appendMapper(target, function (builder) { return builder.perTags.apply(builder, __spreadArray([], __read(tags), false)); });
|
|
81
|
-
};
|
|
82
|
-
};
|
|
83
|
-
exports.perTags = perTags;
|
|
84
|
-
var asSingleton = function () {
|
|
85
|
-
var tags = [];
|
|
86
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
87
|
-
tags[_i] = arguments[_i];
|
|
88
|
-
}
|
|
89
|
-
return function (target) {
|
|
90
|
-
providerReflector.appendMapper(target, function (builder) { return builder.asSingleton.apply(builder, __spreadArray([], __read(tags), false)); });
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
exports.asSingleton = asSingleton;
|
|
94
|
-
var forKey = function (key) {
|
|
95
|
-
return function (target) {
|
|
96
|
-
providerReflector.appendMapper(target, function (builder) { return builder.forKey(key); });
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
exports.forKey = forKey;
|
|
100
62
|
//# sourceMappingURL=index.js.map
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAIlB,0EAAyE;AAAhE,8HAAA,qBAAqB,OAAA;AAC9B,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAC/B,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAEjB,uEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAE5B,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,kDAAqD;AAA5C,0GAAA,aAAa,OAAA;AACtB,4DAAyF;AAAhF,uGAAA,OAAO,OAAA;AAAE,sGAAA,MAAM,OAAA;AAAE,2GAAA,WAAW,OAAA;AAAE,4GAAA,YAAY,OAAA;AAE5C,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,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/cjm/provider/Provider.js
CHANGED
|
@@ -30,18 +30,6 @@ var Provider = /** @class */ (function () {
|
|
|
30
30
|
function Provider(resolveDependency) {
|
|
31
31
|
this.resolveDependency = resolveDependency;
|
|
32
32
|
}
|
|
33
|
-
Provider.fromClass = function (value) {
|
|
34
|
-
return new Provider(function (container) {
|
|
35
|
-
var args = [];
|
|
36
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
37
|
-
args[_i - 1] = arguments[_i];
|
|
38
|
-
}
|
|
39
|
-
return container.resolve.apply(container, __spreadArray([value], __read(args), false));
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
Provider.fromValue = function (value) {
|
|
43
|
-
return new Provider(function () { return value; });
|
|
44
|
-
};
|
|
45
33
|
Provider.prototype.clone = function () {
|
|
46
34
|
return new Provider(this.resolveDependency);
|
|
47
35
|
};
|
|
@@ -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;IACI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAExE,wBAAK,GAAL;QACI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,0BAAO,GAAP,UAAQ,SAAqB;QAAE,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,6BAAkB;;QAC7C,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;IACL,eAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,4BAAQ"}
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.ProviderBuilder = void 0;
|
|
29
|
+
var ArgsProvider_1 = require("./ArgsProvider");
|
|
30
|
+
var TaggedProvider_1 = require("./TaggedProvider");
|
|
31
|
+
var SingletonProvider_1 = require("./SingletonProvider");
|
|
32
|
+
var Provider_1 = require("./Provider");
|
|
33
|
+
var ProviderBuilder = /** @class */ (function () {
|
|
34
|
+
function ProviderBuilder(provider) {
|
|
35
|
+
this.provider = provider;
|
|
36
|
+
}
|
|
37
|
+
ProviderBuilder.fromClass = function (Target) {
|
|
38
|
+
return new ProviderBuilder(new Provider_1.Provider(function (container) {
|
|
39
|
+
var args = [];
|
|
40
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
41
|
+
args[_i - 1] = arguments[_i];
|
|
42
|
+
}
|
|
43
|
+
return container.resolve.apply(container, __spreadArray([Target], __read(args), false));
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
ProviderBuilder.fromValue = function (value) {
|
|
47
|
+
return new ProviderBuilder(new Provider_1.Provider(function () { return value; }));
|
|
48
|
+
};
|
|
49
|
+
ProviderBuilder.fromFn = function (fn) {
|
|
50
|
+
return new ProviderBuilder(new Provider_1.Provider(fn));
|
|
51
|
+
};
|
|
52
|
+
ProviderBuilder.prototype.withArgs = function () {
|
|
53
|
+
var extraArgs = [];
|
|
54
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
55
|
+
extraArgs[_i] = arguments[_i];
|
|
56
|
+
}
|
|
57
|
+
this.provider = new ArgsProvider_1.ArgsProvider(this.provider, function () { return extraArgs; });
|
|
58
|
+
return this;
|
|
59
|
+
};
|
|
60
|
+
ProviderBuilder.prototype.withArgsFn = function (argsFn) {
|
|
61
|
+
this.provider = new ArgsProvider_1.ArgsProvider(this.provider, argsFn);
|
|
62
|
+
return this;
|
|
63
|
+
};
|
|
64
|
+
ProviderBuilder.prototype.perTags = function () {
|
|
65
|
+
var tags = [];
|
|
66
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
67
|
+
tags[_i] = arguments[_i];
|
|
68
|
+
}
|
|
69
|
+
this.provider = new TaggedProvider_1.TaggedProvider(this.provider, tags);
|
|
70
|
+
return this;
|
|
71
|
+
};
|
|
72
|
+
ProviderBuilder.prototype.asSingleton = function () {
|
|
73
|
+
var tags = [];
|
|
74
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
75
|
+
tags[_i] = arguments[_i];
|
|
76
|
+
}
|
|
77
|
+
this.provider = new SingletonProvider_1.SingletonProvider(this.provider);
|
|
78
|
+
if (tags.length > 0) {
|
|
79
|
+
this.provider = new TaggedProvider_1.TaggedProvider(this.provider, tags);
|
|
80
|
+
}
|
|
81
|
+
return this;
|
|
82
|
+
};
|
|
83
|
+
ProviderBuilder.prototype.build = function () {
|
|
84
|
+
return this.provider;
|
|
85
|
+
};
|
|
86
|
+
return ProviderBuilder;
|
|
87
|
+
}());
|
|
88
|
+
exports.ProviderBuilder = ProviderBuilder;
|
|
89
|
+
//# sourceMappingURL=ProviderBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAsD;AACtD,mDAAkD;AAClD,yDAAwD;AAExD,uCAAsC;AAEtC;IAaI,yBAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAZpC,yBAAS,GAAhB,UAAiB,MAA4B;QACzC,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,UAAC,SAAS;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,SAAS,CAAC,OAAO,OAAjB,SAAS,iBAAS,MAAM,UAAK,IAAI;QAAjC,CAAkC,CAAC,CAAC,CAAC;IACzG,CAAC;IAEM,yBAAS,GAAhB,UAAiB,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,sBAAM,GAAb,UAAc,EAAqB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,kCAAQ,GAAR;QAAS,mBAAuB;aAAvB,UAAuB,EAAvB,qBAAuB,EAAvB,IAAuB;YAAvB,8BAAuB;;QAC5B,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,iCAAO,GAAP;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,0CAAe"}
|
|
@@ -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;
|