ts-ioc-container 22.4.7 → 23.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 +19 -24
- package/cjm/index.d.ts +5 -3
- package/cjm/index.js +13 -5
- package/cjm/index.js.map +1 -1
- package/cjm/provider/ArgsProvider.d.ts +3 -0
- package/cjm/provider/ArgsProvider.js +13 -1
- package/cjm/provider/ArgsProvider.js.map +1 -1
- package/cjm/provider/IProvider.d.ts +2 -0
- package/cjm/provider/Provider.d.ts +4 -2
- package/cjm/provider/Provider.js +22 -3
- package/cjm/provider/Provider.js.map +1 -1
- package/cjm/provider/ProviderDecorator.d.ts +2 -0
- package/cjm/provider/ProviderDecorator.js +7 -0
- package/cjm/provider/ProviderDecorator.js.map +1 -1
- package/cjm/provider/SingletonProvider.d.ts +2 -0
- package/cjm/provider/SingletonProvider.js +5 -1
- package/cjm/provider/SingletonProvider.js.map +1 -1
- package/cjm/provider/TaggedProvider.d.ts +2 -0
- package/cjm/provider/TaggedProvider.js +9 -1
- package/cjm/provider/TaggedProvider.js.map +1 -1
- package/cjm/registration/Registration.d.ts +7 -11
- package/cjm/registration/Registration.js +9 -31
- package/cjm/registration/Registration.js.map +1 -1
- package/esm/index.d.ts +5 -3
- package/esm/index.js +5 -2
- package/esm/index.js.map +1 -1
- package/esm/provider/ArgsProvider.d.ts +3 -0
- package/esm/provider/ArgsProvider.js +6 -0
- package/esm/provider/ArgsProvider.js.map +1 -1
- package/esm/provider/IProvider.d.ts +2 -0
- package/esm/provider/Provider.d.ts +4 -2
- package/esm/provider/Provider.js +8 -1
- package/esm/provider/Provider.js.map +1 -1
- package/esm/provider/ProviderDecorator.d.ts +2 -0
- package/esm/provider/ProviderDecorator.js +3 -0
- package/esm/provider/ProviderDecorator.js.map +1 -1
- package/esm/provider/SingletonProvider.d.ts +2 -0
- package/esm/provider/SingletonProvider.js +3 -0
- package/esm/provider/SingletonProvider.js.map +1 -1
- package/esm/provider/TaggedProvider.d.ts +2 -0
- package/esm/provider/TaggedProvider.js +3 -0
- package/esm/provider/TaggedProvider.js.map +1 -1
- package/esm/registration/Registration.d.ts +7 -11
- package/esm/registration/Registration.js +7 -19
- package/esm/registration/Registration.js.map +1 -1
- package/package.json +2 -2
- package/cjm/provider/ProviderBuilder.d.ts +0 -18
- package/cjm/provider/ProviderBuilder.js +0 -108
- package/cjm/provider/ProviderBuilder.js.map +0 -1
- package/esm/provider/ProviderBuilder.d.ts +0 -18
- package/esm/provider/ProviderBuilder.js +0 -46
- package/esm/provider/ProviderBuilder.js.map +0 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ yarn add ts-ioc-container ts-constructor-injector reflect-metadata
|
|
|
39
39
|
How to create new container
|
|
40
40
|
|
|
41
41
|
```typescript
|
|
42
|
-
import { Container, IContainer, IInjector,
|
|
42
|
+
import { Container, IContainer, IInjector, Provider } from "ts-ioc-container";
|
|
43
43
|
import { resolve } from 'ts-constructor-injector';
|
|
44
44
|
|
|
45
45
|
class Logger {
|
|
@@ -55,46 +55,44 @@ const injector: IInjector = {
|
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
const container = new Container(injector)
|
|
58
|
-
.register('ILogger',
|
|
58
|
+
.register('ILogger', Provider.fromClass(Logger));
|
|
59
59
|
const logger = container.resolve<ILogger>('ILogger');
|
|
60
60
|
logger.info('Hello world');
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
## Provider
|
|
63
|
+
## Provider
|
|
64
64
|
|
|
65
65
|
```typescript
|
|
66
|
-
import {
|
|
66
|
+
import { Provider, asSingleton, perTags, withArgs, withArgsFn } from "ts-ioc-container";
|
|
67
67
|
|
|
68
68
|
const container = new Container(injector, { tags: ['root'] });
|
|
69
|
-
container.register('ILogger',
|
|
69
|
+
container.register('ILogger', new Provider((container, ...args) => new Logger(...args)));
|
|
70
70
|
|
|
71
71
|
// Available only in root scope and all his children
|
|
72
|
-
container.register('ILogger',
|
|
72
|
+
container.register('ILogger', Provider.fromClass(Logger).pipe(perTags('root')));
|
|
73
73
|
|
|
74
74
|
// Singleton per root tag and all his children
|
|
75
|
-
container.register('ILogger',
|
|
76
|
-
// OR
|
|
77
|
-
container.register('ILogger', ProviderBuilder.fromClass(Logger).asSingleton('root').build());
|
|
75
|
+
container.register('ILogger', Provider.fromClass(Logger).pipe(asSingleton(), perTags('root')));
|
|
78
76
|
|
|
79
77
|
// singleton for scope with tag1 or tag2
|
|
80
|
-
container.register('ILogger',
|
|
78
|
+
container.register('ILogger', Provider.fromClass(Logger).pipe(asSingleton(), perTags('tag1', 'tag2')));
|
|
81
79
|
|
|
82
80
|
// singleton in every scope
|
|
83
|
-
container.register('ILogger',
|
|
81
|
+
container.register('ILogger', Provider.fromClass(Logger).pipe(withArgs('dev'), asSingleton()));
|
|
84
82
|
|
|
85
83
|
// singleton in every scope
|
|
86
|
-
container.register('ILogger',
|
|
84
|
+
container.register('ILogger', Provider.fromClass(Logger).pipe(withArgsFn((scope) => [scope.resolve('isTestEnv') ? 'dev' : 'prod']), asSingleton()));
|
|
87
85
|
|
|
88
|
-
container.register('ILogger',
|
|
86
|
+
container.register('ILogger', Provider.fromValue(new Logger()));
|
|
89
87
|
```
|
|
90
88
|
|
|
91
89
|
## Registration module (Provider + DependencyKey)
|
|
92
90
|
|
|
93
91
|
```typescript
|
|
94
|
-
import { asSingleton, forKey, Registration } from "ts-ioc-container";
|
|
92
|
+
import { asSingleton, perTags, forKey, Registration } from "ts-ioc-container";
|
|
95
93
|
|
|
96
94
|
@forKey('ILogger')
|
|
97
|
-
@asSingleton('root')
|
|
95
|
+
@provider(asSingleton(), perTags('root'))
|
|
98
96
|
class Logger {
|
|
99
97
|
info(message: string) {
|
|
100
98
|
console.log(message);
|
|
@@ -111,10 +109,10 @@ logger.info('Hello world');
|
|
|
111
109
|
|
|
112
110
|
```typescript
|
|
113
111
|
import { asSingleton, perTags, forKey, by, Registration } from "ts-ioc-container";
|
|
114
|
-
import {
|
|
112
|
+
import { inject } from "ts-constructor-injector";
|
|
115
113
|
|
|
116
114
|
@forKey('IEngine')
|
|
117
|
-
@asSingleton('root')
|
|
115
|
+
@provider(asSingleton(), perTags('root'))
|
|
118
116
|
class Engine {
|
|
119
117
|
constructor(@inject(by('ILogger')) private logger: ILogger) {
|
|
120
118
|
}
|
|
@@ -122,10 +120,7 @@ class Engine {
|
|
|
122
120
|
|
|
123
121
|
// OR
|
|
124
122
|
|
|
125
|
-
const perRoot =
|
|
126
|
-
asSingleton(),
|
|
127
|
-
perTags('root'),
|
|
128
|
-
);
|
|
123
|
+
const perRoot = provider(asSingleton(), perTags('root'))
|
|
129
124
|
|
|
130
125
|
@perRoot
|
|
131
126
|
@forKey('IEngine')
|
|
@@ -191,15 +186,15 @@ for (const instance of container.getInstances()) {
|
|
|
191
186
|
|
|
192
187
|
```typescript
|
|
193
188
|
import { composeDecorators } from "ts-constructor-injector";
|
|
194
|
-
import { forKey, Registration } from "ts-ioc-container";
|
|
189
|
+
import { forKey, provider, Registration, asSingleton, perTags } from "ts-ioc-container";
|
|
195
190
|
|
|
196
|
-
@asSingleton('root')
|
|
197
191
|
@forKey('IEngine')
|
|
192
|
+
@provider(perTags('root'), asSingleton())
|
|
198
193
|
class Logger {
|
|
199
194
|
}
|
|
200
195
|
|
|
201
|
-
@asSingleton('home')
|
|
202
196
|
@forKey('IEngine')
|
|
197
|
+
@provider(perTags('home'), asSingleton())
|
|
203
198
|
class Engine {
|
|
204
199
|
constructor(@inject(by('ILogger')) private logger: ILogger) {
|
|
205
200
|
}
|
package/cjm/index.d.ts
CHANGED
|
@@ -8,9 +8,11 @@ export { IInjector } from './IInjector';
|
|
|
8
8
|
export { DependencyNotFoundError } from './container/DependencyNotFoundError';
|
|
9
9
|
export { MethodNotImplementedError } from './container/MethodNotImplementedError';
|
|
10
10
|
export { ContainerDisposedError } from './container/ContainerDisposedError';
|
|
11
|
-
export { Provider } from './provider/Provider';
|
|
12
|
-
export { ArgsFn } from './provider/ArgsProvider';
|
|
11
|
+
export { Provider, provider } from './provider/Provider';
|
|
12
|
+
export { ArgsFn, withArgsFn, withArgs } from './provider/ArgsProvider';
|
|
13
|
+
export { SingletonProvider, asSingleton } from './provider/SingletonProvider';
|
|
14
|
+
export { TaggedProvider, perTags } from './provider/TaggedProvider';
|
|
13
15
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
14
|
-
export { ProviderBuilder, perTags, asSingleton } from './provider/ProviderBuilder';
|
|
15
16
|
export { forKey, Registration } from './registration/Registration';
|
|
17
|
+
export { DependencyMissingKeyError } from './registration/DependencyMissingKeyError';
|
|
16
18
|
export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
|
package/cjm/index.js
CHANGED
|
@@ -25,7 +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.Registration = exports.forKey = exports.
|
|
28
|
+
exports.by = exports.DependencyMissingKeyError = exports.Registration = exports.forKey = exports.AutoMockedContainer = exports.perTags = exports.TaggedProvider = exports.asSingleton = exports.SingletonProvider = exports.withArgs = exports.withArgsFn = exports.provider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.Container = exports.EmptyContainer = exports.isDependencyKey = void 0;
|
|
29
29
|
var IContainer_1 = require("./container/IContainer");
|
|
30
30
|
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
31
31
|
var EmptyContainer_1 = require("./container/EmptyContainer");
|
|
@@ -40,15 +40,23 @@ var ContainerDisposedError_1 = require("./container/ContainerDisposedError");
|
|
|
40
40
|
Object.defineProperty(exports, "ContainerDisposedError", { enumerable: true, get: function () { return ContainerDisposedError_1.ContainerDisposedError; } });
|
|
41
41
|
var Provider_1 = require("./provider/Provider");
|
|
42
42
|
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return Provider_1.Provider; } });
|
|
43
|
+
Object.defineProperty(exports, "provider", { enumerable: true, get: function () { return Provider_1.provider; } });
|
|
44
|
+
var ArgsProvider_1 = require("./provider/ArgsProvider");
|
|
45
|
+
Object.defineProperty(exports, "withArgsFn", { enumerable: true, get: function () { return ArgsProvider_1.withArgsFn; } });
|
|
46
|
+
Object.defineProperty(exports, "withArgs", { enumerable: true, get: function () { return ArgsProvider_1.withArgs; } });
|
|
47
|
+
var SingletonProvider_1 = require("./provider/SingletonProvider");
|
|
48
|
+
Object.defineProperty(exports, "SingletonProvider", { enumerable: true, get: function () { return SingletonProvider_1.SingletonProvider; } });
|
|
49
|
+
Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return SingletonProvider_1.asSingleton; } });
|
|
50
|
+
var TaggedProvider_1 = require("./provider/TaggedProvider");
|
|
51
|
+
Object.defineProperty(exports, "TaggedProvider", { enumerable: true, get: function () { return TaggedProvider_1.TaggedProvider; } });
|
|
52
|
+
Object.defineProperty(exports, "perTags", { enumerable: true, get: function () { return TaggedProvider_1.perTags; } });
|
|
43
53
|
var AutoMockedContainer_1 = require("./container/AutoMockedContainer");
|
|
44
54
|
Object.defineProperty(exports, "AutoMockedContainer", { enumerable: true, get: function () { return AutoMockedContainer_1.AutoMockedContainer; } });
|
|
45
|
-
var ProviderBuilder_1 = require("./provider/ProviderBuilder");
|
|
46
|
-
Object.defineProperty(exports, "ProviderBuilder", { enumerable: true, get: function () { return ProviderBuilder_1.ProviderBuilder; } });
|
|
47
|
-
Object.defineProperty(exports, "perTags", { enumerable: true, get: function () { return ProviderBuilder_1.perTags; } });
|
|
48
|
-
Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return ProviderBuilder_1.asSingleton; } });
|
|
49
55
|
var Registration_1 = require("./registration/Registration");
|
|
50
56
|
Object.defineProperty(exports, "forKey", { enumerable: true, get: function () { return Registration_1.forKey; } });
|
|
51
57
|
Object.defineProperty(exports, "Registration", { enumerable: true, get: function () { return Registration_1.Registration; } });
|
|
58
|
+
var DependencyMissingKeyError_1 = require("./registration/DependencyMissingKeyError");
|
|
59
|
+
Object.defineProperty(exports, "DependencyMissingKeyError", { enumerable: true, get: function () { return DependencyMissingKeyError_1.DependencyMissingKeyError; } });
|
|
52
60
|
var by = function (key) {
|
|
53
61
|
var args = [];
|
|
54
62
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qDASgC;AAL5B,6GAAA,eAAe,OAAA;AAMnB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAGlB,+EAA8E;AAArE,kIAAA,uBAAuB,OAAA;AAChC,mFAAkF;AAAzE,sIAAA,yBAAyB,OAAA;AAClC,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qDASgC;AAL5B,6GAAA,eAAe,OAAA;AAMnB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAGlB,+EAA8E;AAArE,kIAAA,uBAAuB,OAAA;AAChC,mFAAkF;AAAzE,sIAAA,yBAAyB,OAAA;AAClC,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAC/B,gDAAyD;AAAhD,oGAAA,QAAQ,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAC3B,wDAAuE;AAAtD,0GAAA,UAAU,OAAA;AAAE,wGAAA,QAAQ,OAAA;AACrC,kEAA8E;AAArE,sHAAA,iBAAiB,OAAA;AAAE,gHAAA,WAAW,OAAA;AACvC,4DAAoE;AAA3D,gHAAA,cAAc,OAAA;AAAE,yGAAA,OAAO,OAAA;AAChC,uEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAC5B,4DAAmE;AAA1D,sGAAA,MAAM,OAAA;AAAE,4GAAA,YAAY,OAAA;AAC7B,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAE3B,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,7 +1,10 @@
|
|
|
1
1
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
2
2
|
import { Resolvable } from '../container/IContainer';
|
|
3
3
|
import { IProvider } from './IProvider';
|
|
4
|
+
import { MapFn } from '../utils';
|
|
4
5
|
export declare type ArgsFn = (l: Resolvable) => unknown[];
|
|
6
|
+
export declare function withArgs(...extraArgs: unknown[]): MapFn<IProvider>;
|
|
7
|
+
export declare function withArgsFn(value: ArgsFn): MapFn<IProvider>;
|
|
5
8
|
export declare class ArgsProvider<T> extends ProviderDecorator<T> {
|
|
6
9
|
private provider;
|
|
7
10
|
private argsFn;
|
|
@@ -40,8 +40,20 @@ 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.ArgsProvider = void 0;
|
|
43
|
+
exports.ArgsProvider = exports.withArgsFn = exports.withArgs = void 0;
|
|
44
44
|
var ProviderDecorator_1 = require("./ProviderDecorator");
|
|
45
|
+
function withArgs() {
|
|
46
|
+
var extraArgs = [];
|
|
47
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
48
|
+
extraArgs[_i] = arguments[_i];
|
|
49
|
+
}
|
|
50
|
+
return function (provider) { return new ArgsProvider(provider, function () { return extraArgs; }); };
|
|
51
|
+
}
|
|
52
|
+
exports.withArgs = withArgs;
|
|
53
|
+
function withArgsFn(value) {
|
|
54
|
+
return function (provider) { return new ArgsProvider(provider, value); };
|
|
55
|
+
}
|
|
56
|
+
exports.withArgsFn = withArgsFn;
|
|
45
57
|
var ArgsProvider = /** @class */ (function (_super) {
|
|
46
58
|
__extends(ArgsProvider, _super);
|
|
47
59
|
function ArgsProvider(provider, argsFn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAwD;
|
|
1
|
+
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAwD;AAOxD,SAAgB,QAAQ;IAAC,mBAAuB;SAAvB,UAAuB,EAAvB,qBAAuB,EAAvB,IAAuB;QAAvB,8BAAuB;;IAC5C,OAAO,UAAC,QAAQ,IAAK,OAAA,IAAI,YAAY,CAAC,QAAQ,EAAE,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,EAA3C,CAA2C,CAAC;AACrE,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAC,KAAa;IACpC,OAAO,UAAC,QAAQ,IAAK,OAAA,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAjC,CAAiC,CAAC;AAC3D,CAAC;AAFD,gCAEC;AAED;IAAqC,gCAAoB;IACrD,sBAAoB,QAAsB,EAAU,MAAc;QAAlE,YACI,kBAAM,QAAQ,CAAC,SAClB;QAFmB,cAAQ,GAAR,QAAQ,CAAc;QAAU,YAAM,GAAN,MAAM,CAAQ;;IAElE,CAAC;IAED,8BAAO,GAAP,UAAQ,SAAqB;;QAAE,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,6BAAkB;;QAC7C,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,wCAAC,SAAS,UAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAK,IAAI,WAAE;IAChF,CAAC;IAED,4BAAK,GAAL;QACI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IACL,mBAAC;AAAD,CAAC,AAZD,CAAqC,qCAAiB,GAYrD;AAZY,oCAAY"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Resolvable, Tagged } from '../container/IContainer';
|
|
2
|
+
import { MapFn } from '../utils';
|
|
2
3
|
export declare type ResolveDependency<T = unknown> = (container: Resolvable, ...args: unknown[]) => T;
|
|
3
4
|
export interface IProvider<T = unknown> {
|
|
4
5
|
clone(): IProvider<T>;
|
|
5
6
|
resolve(container: Resolvable, ...args: unknown[]): T;
|
|
6
7
|
isValid(filters: Tagged): boolean;
|
|
8
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
7
9
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { IProvider, ResolveDependency } from './IProvider';
|
|
2
2
|
import { Resolvable } from '../container/IContainer';
|
|
3
|
-
import { constructor } from '../utils';
|
|
3
|
+
import { constructor, MapFn } from '../utils';
|
|
4
|
+
export declare const provider: (...mappers: MapFn<IProvider>[]) => ClassDecorator;
|
|
4
5
|
export declare class Provider<T> implements IProvider<T> {
|
|
5
6
|
private readonly resolveDependency;
|
|
6
|
-
static fromClass<T>(Target: constructor<T>):
|
|
7
|
+
static fromClass<T>(Target: constructor<T>): IProvider<T>;
|
|
7
8
|
static fromValue<T>(value: T): Provider<T>;
|
|
8
9
|
constructor(resolveDependency: ResolveDependency<T>);
|
|
10
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
9
11
|
clone(): Provider<T>;
|
|
10
12
|
resolve(container: Resolvable, ...args: unknown[]): T;
|
|
11
13
|
isValid(): boolean;
|
package/cjm/provider/Provider.js
CHANGED
|
@@ -25,23 +25,42 @@ 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.Provider = void 0;
|
|
28
|
+
exports.Provider = exports.provider = void 0;
|
|
29
|
+
var reflection_1 = require("../reflection");
|
|
30
|
+
var provider = function () {
|
|
31
|
+
var mappers = [];
|
|
32
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
33
|
+
mappers[_i] = arguments[_i];
|
|
34
|
+
}
|
|
35
|
+
return (0, reflection_1.setProp)('provider', mappers);
|
|
36
|
+
};
|
|
37
|
+
exports.provider = provider;
|
|
29
38
|
var Provider = /** @class */ (function () {
|
|
30
39
|
function Provider(resolveDependency) {
|
|
31
40
|
this.resolveDependency = resolveDependency;
|
|
32
41
|
}
|
|
33
42
|
Provider.fromClass = function (Target) {
|
|
34
|
-
|
|
43
|
+
var _a;
|
|
44
|
+
var _b;
|
|
45
|
+
var mappers = (_b = (0, reflection_1.getProp)(Target, 'provider')) !== null && _b !== void 0 ? _b : [];
|
|
46
|
+
return (_a = new Provider(function (container) {
|
|
35
47
|
var args = [];
|
|
36
48
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
37
49
|
args[_i - 1] = arguments[_i];
|
|
38
50
|
}
|
|
39
51
|
return container.resolve.apply(container, __spreadArray([Target], __read(args), false));
|
|
40
|
-
});
|
|
52
|
+
})).pipe.apply(_a, __spreadArray([], __read(mappers), false));
|
|
41
53
|
};
|
|
42
54
|
Provider.fromValue = function (value) {
|
|
43
55
|
return new Provider(function () { return value; });
|
|
44
56
|
};
|
|
57
|
+
Provider.prototype.pipe = function () {
|
|
58
|
+
var mappers = [];
|
|
59
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
60
|
+
mappers[_i] = arguments[_i];
|
|
61
|
+
}
|
|
62
|
+
return mappers.reduce(function (acc, current) { return current(acc); }, this);
|
|
63
|
+
};
|
|
45
64
|
Provider.prototype.clone = function () {
|
|
46
65
|
return new Provider(this.resolveDependency);
|
|
47
66
|
};
|
|
@@ -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,4CAAiD;AAE1C,IAAM,QAAQ,GAAG;IAAC,iBAA8B;SAA9B,UAA8B,EAA9B,qBAA8B,EAA9B,IAA8B;QAA9B,4BAA8B;;IAAqB,OAAA,IAAA,oBAAO,EAAC,UAAU,EAAE,OAAO,CAAC;AAA5B,CAA4B,CAAC;AAA5F,QAAA,QAAQ,YAAoF;AAEzG;IAUI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IATjE,kBAAS,GAAhB,UAAoB,MAAsB;;;QACtC,IAAM,OAAO,GAAG,MAAA,IAAA,oBAAO,EAAwB,MAAM,EAAE,UAAU,CAAC,mCAAI,EAAE,CAAC;QACzE,OAAO,CAAA,KAAA,IAAI,QAAQ,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,CAAA,CAAC,IAAI,oCAAI,OAAO,WAAE;IACrG,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAID,uBAAI,GAAJ;QAAK,iBAAiC;aAAjC,UAAiC,EAAjC,qBAAiC,EAAjC,IAAiC;YAAjC,4BAAiC;;QAClC,OAAO,OAAO,CAAC,MAAM,CAAe,UAAC,GAAG,EAAE,OAAO,IAAK,OAAA,OAAO,CAAC,GAAG,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,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;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,eAAC;AAAD,CAAC,AA3BD,IA2BC;AA3BY,4BAAQ"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Resolvable, Tagged } from '../container/IContainer';
|
|
2
2
|
import { IProvider } from './IProvider';
|
|
3
|
+
import { MapFn } from '../utils';
|
|
3
4
|
export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
4
5
|
private decorated;
|
|
5
6
|
protected constructor(decorated: IProvider<T>);
|
|
6
7
|
clone(): IProvider<T>;
|
|
7
8
|
isValid(filters: Tagged): boolean;
|
|
8
9
|
resolve(container: Resolvable, ...args: any[]): T;
|
|
10
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
9
11
|
}
|
|
@@ -44,6 +44,13 @@ var ProviderDecorator = /** @class */ (function () {
|
|
|
44
44
|
}
|
|
45
45
|
return (_a = this.decorated).resolve.apply(_a, __spreadArray([container], __read(args), false));
|
|
46
46
|
};
|
|
47
|
+
ProviderDecorator.prototype.pipe = function () {
|
|
48
|
+
var mappers = [];
|
|
49
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
50
|
+
mappers[_i] = arguments[_i];
|
|
51
|
+
}
|
|
52
|
+
return mappers.reduce(function (acc, current) { return current(acc); }, this);
|
|
53
|
+
};
|
|
47
54
|
return ProviderDecorator;
|
|
48
55
|
}());
|
|
49
56
|
exports.ProviderDecorator = ProviderDecorator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IACI,2BAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,iCAAK,GAAL;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAqB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACzC,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,gCAAI,GAAJ;QAAK,iBAAiC;aAAjC,UAAiC,EAAjC,qBAAiC,EAAjC,IAAiC;YAAjC,4BAAiC;;QAClC,OAAO,OAAO,CAAC,MAAM,CAAe,UAAC,GAAG,EAAE,OAAO,IAAK,OAAA,OAAO,CAAC,GAAG,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IACL,wBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBqB,8CAAiB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Resolvable } from '../container/IContainer';
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { IProvider } from './IProvider';
|
|
4
|
+
import { MapFn } from '../utils';
|
|
5
|
+
export declare function asSingleton(): MapFn<IProvider>;
|
|
4
6
|
export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
5
7
|
private readonly provider;
|
|
6
8
|
private instance;
|
|
@@ -40,8 +40,12 @@ 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.SingletonProvider = void 0;
|
|
43
|
+
exports.SingletonProvider = exports.asSingleton = void 0;
|
|
44
44
|
var ProviderDecorator_1 = require("./ProviderDecorator");
|
|
45
|
+
function asSingleton() {
|
|
46
|
+
return function (provider) { return new SingletonProvider(provider); };
|
|
47
|
+
}
|
|
48
|
+
exports.asSingleton = asSingleton;
|
|
45
49
|
var SingletonProvider = /** @class */ (function (_super) {
|
|
46
50
|
__extends(SingletonProvider, _super);
|
|
47
51
|
function SingletonProvider(provider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yDAAwD;
|
|
1
|
+
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yDAAwD;AAMxD,SAAgB,WAAW;IACvB,OAAO,UAAC,QAAQ,IAAK,OAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAA/B,CAA+B,CAAC;AACzD,CAAC;AAFD,kCAEC;AAED;IAA0C,qCAAoB;IAG1D,2BAA6B,QAAsB;QAAnD,YACI,kBAAM,QAAQ,CAAC,SAClB;QAF4B,cAAQ,GAAR,QAAQ,CAAc;QAF3C,cAAQ,GAAoB,IAAI,CAAC;;IAIzC,CAAC;IAED,iCAAK,GAAL;QACI,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAqB;;;QAAE,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,6BAAkB;;QAC7C,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,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;SACvC;QAED,OAAO,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAU,CAAC;IACrC,CAAC;IACL,wBAAC;AAAD,CAAC,AAnBD,CAA0C,qCAAiB,GAmB1D;AAnBY,8CAAiB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { IProvider } from './IProvider';
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { Tag, Tagged } from '../container/IContainer';
|
|
4
|
+
import { MapFn } from '../utils';
|
|
5
|
+
export declare function perTags(...tags: Tag[]): MapFn<IProvider>;
|
|
4
6
|
export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
5
7
|
private provider;
|
|
6
8
|
private readonly tags;
|
|
@@ -15,8 +15,16 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.TaggedProvider = void 0;
|
|
18
|
+
exports.TaggedProvider = exports.perTags = void 0;
|
|
19
19
|
var ProviderDecorator_1 = require("./ProviderDecorator");
|
|
20
|
+
function perTags() {
|
|
21
|
+
var tags = [];
|
|
22
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
23
|
+
tags[_i] = arguments[_i];
|
|
24
|
+
}
|
|
25
|
+
return function (provider) { return new TaggedProvider(provider, tags); };
|
|
26
|
+
}
|
|
27
|
+
exports.perTags = perTags;
|
|
20
28
|
var TaggedProvider = /** @class */ (function (_super) {
|
|
21
29
|
__extends(TaggedProvider, _super);
|
|
22
30
|
function TaggedProvider(provider, tags) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,yDAAwD;
|
|
1
|
+
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,yDAAwD;AAIxD,SAAgB,OAAO;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IAClC,OAAO,UAAC,QAAQ,IAAK,OAAA,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAlC,CAAkC,CAAC;AAC5D,CAAC;AAFD,0BAEC;AAED;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,OAAe;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;IACL,qBAAC;AAAD,CAAC,AAZD,CAAuC,qCAAiB,GAYvD;AAZY,wCAAc"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { constructor } from '../utils';
|
|
1
|
+
import { DependencyKey, IContainer, IContainerModule } from '../container/IContainer';
|
|
2
|
+
import { constructor, MapFn } from '../utils';
|
|
3
|
+
import { IProvider } from '../provider/IProvider';
|
|
5
4
|
export declare const forKey: (key: DependencyKey) => ClassDecorator;
|
|
6
5
|
export declare class Registration implements IContainerModule {
|
|
7
6
|
private key;
|
|
8
|
-
private
|
|
9
|
-
static fromClass
|
|
10
|
-
constructor(key: DependencyKey,
|
|
11
|
-
|
|
12
|
-
withArgsFn(argsFn: ArgsFn): this;
|
|
13
|
-
perTags(...tags: Tag[]): this;
|
|
14
|
-
asSingleton(...tags: Tag[]): this;
|
|
7
|
+
private provider;
|
|
8
|
+
static fromClass(Target: constructor<unknown>): Registration;
|
|
9
|
+
constructor(key: DependencyKey, provider: IProvider);
|
|
10
|
+
map(...mappers: MapFn<IProvider>[]): this;
|
|
15
11
|
applyTo(container: IContainer): void;
|
|
16
12
|
}
|
|
@@ -27,55 +27,33 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
exports.Registration = exports.forKey = void 0;
|
|
29
29
|
var DependencyMissingKeyError_1 = require("./DependencyMissingKeyError");
|
|
30
|
-
var ProviderBuilder_1 = require("../provider/ProviderBuilder");
|
|
31
30
|
var reflection_1 = require("../reflection");
|
|
31
|
+
var Provider_1 = require("../provider/Provider");
|
|
32
32
|
var forKey = function (key) { return (0, reflection_1.setProp)('DependencyKey', key); };
|
|
33
33
|
exports.forKey = forKey;
|
|
34
34
|
var Registration = /** @class */ (function () {
|
|
35
|
-
function Registration(key,
|
|
35
|
+
function Registration(key, provider) {
|
|
36
36
|
this.key = key;
|
|
37
|
-
this.
|
|
37
|
+
this.provider = provider;
|
|
38
38
|
}
|
|
39
39
|
Registration.fromClass = function (Target) {
|
|
40
40
|
var dependencyKey = (0, reflection_1.getProp)(Target, 'DependencyKey');
|
|
41
41
|
if (dependencyKey === undefined) {
|
|
42
42
|
throw new DependencyMissingKeyError_1.DependencyMissingKeyError("Pls provide dependency key for " + Target.name);
|
|
43
43
|
}
|
|
44
|
-
return new Registration(dependencyKey,
|
|
44
|
+
return new Registration(dependencyKey, Provider_1.Provider.fromClass(Target));
|
|
45
45
|
};
|
|
46
|
-
Registration.prototype.
|
|
46
|
+
Registration.prototype.map = function () {
|
|
47
47
|
var _a;
|
|
48
|
-
var
|
|
48
|
+
var mappers = [];
|
|
49
49
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
50
|
-
|
|
50
|
+
mappers[_i] = arguments[_i];
|
|
51
51
|
}
|
|
52
|
-
this.
|
|
53
|
-
return this;
|
|
54
|
-
};
|
|
55
|
-
Registration.prototype.withArgsFn = function (argsFn) {
|
|
56
|
-
this.providerBuilder = this.providerBuilder.withArgsFn(argsFn);
|
|
57
|
-
return this;
|
|
58
|
-
};
|
|
59
|
-
Registration.prototype.perTags = function () {
|
|
60
|
-
var _a;
|
|
61
|
-
var tags = [];
|
|
62
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
63
|
-
tags[_i] = arguments[_i];
|
|
64
|
-
}
|
|
65
|
-
this.providerBuilder = (_a = this.providerBuilder).perTags.apply(_a, __spreadArray([], __read(tags), false));
|
|
66
|
-
return this;
|
|
67
|
-
};
|
|
68
|
-
Registration.prototype.asSingleton = function () {
|
|
69
|
-
var _a;
|
|
70
|
-
var tags = [];
|
|
71
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
72
|
-
tags[_i] = arguments[_i];
|
|
73
|
-
}
|
|
74
|
-
this.providerBuilder = (_a = this.providerBuilder).asSingleton.apply(_a, __spreadArray([], __read(tags), false));
|
|
52
|
+
this.provider = (_a = this.provider).pipe.apply(_a, __spreadArray([], __read(mappers), false));
|
|
75
53
|
return this;
|
|
76
54
|
};
|
|
77
55
|
Registration.prototype.applyTo = function (container) {
|
|
78
|
-
container.register(this.key, this.
|
|
56
|
+
container.register(this.key, this.provider);
|
|
79
57
|
};
|
|
80
58
|
return Registration;
|
|
81
59
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAwE;AAGxE,4CAAiD;AACjD,iDAAgD;AAGzC,IAAM,MAAM,GAAG,UAAC,GAAkB,IAAqB,OAAA,IAAA,oBAAO,EAAC,eAAe,EAAE,GAAG,CAAC,EAA7B,CAA6B,CAAC;AAA/E,QAAA,MAAM,UAAyE;AAE5F;IASI,sBAAoB,GAAkB,EAAU,QAAmB;QAA/C,QAAG,GAAH,GAAG,CAAe;QAAU,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IARhE,sBAAS,GAAhB,UAAiB,MAA4B;QACzC,IAAM,aAAa,GAAG,IAAA,oBAAO,EAAgB,MAAM,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,aAAa,KAAK,SAAS,EAAE;YAC7B,MAAM,IAAI,qDAAyB,CAAC,oCAAkC,MAAM,CAAC,IAAM,CAAC,CAAC;SACxF;QACD,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,mBAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;IAID,0BAAG,GAAH;;QAAI,iBAA8B;aAA9B,UAA8B,EAA9B,qBAA8B,EAA9B,IAA8B;YAA9B,4BAA8B;;QAC9B,IAAI,CAAC,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,IAAI,oCAAI,OAAO,UAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8BAAO,GAAP,UAAQ,SAAqB;QACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACL,mBAAC;AAAD,CAAC,AAnBD,IAmBC;AAnBY,oCAAY"}
|
package/esm/index.d.ts
CHANGED
|
@@ -8,9 +8,11 @@ export { IInjector } from './IInjector';
|
|
|
8
8
|
export { DependencyNotFoundError } from './container/DependencyNotFoundError';
|
|
9
9
|
export { MethodNotImplementedError } from './container/MethodNotImplementedError';
|
|
10
10
|
export { ContainerDisposedError } from './container/ContainerDisposedError';
|
|
11
|
-
export { Provider } from './provider/Provider';
|
|
12
|
-
export { ArgsFn } from './provider/ArgsProvider';
|
|
11
|
+
export { Provider, provider } from './provider/Provider';
|
|
12
|
+
export { ArgsFn, withArgsFn, withArgs } from './provider/ArgsProvider';
|
|
13
|
+
export { SingletonProvider, asSingleton } from './provider/SingletonProvider';
|
|
14
|
+
export { TaggedProvider, perTags } from './provider/TaggedProvider';
|
|
13
15
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
14
|
-
export { ProviderBuilder, perTags, asSingleton } from './provider/ProviderBuilder';
|
|
15
16
|
export { forKey, Registration } from './registration/Registration';
|
|
17
|
+
export { DependencyMissingKeyError } from './registration/DependencyMissingKeyError';
|
|
16
18
|
export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
|
package/esm/index.js
CHANGED
|
@@ -4,9 +4,12 @@ export { Container } from './container/Container';
|
|
|
4
4
|
export { DependencyNotFoundError } from './container/DependencyNotFoundError';
|
|
5
5
|
export { MethodNotImplementedError } from './container/MethodNotImplementedError';
|
|
6
6
|
export { ContainerDisposedError } from './container/ContainerDisposedError';
|
|
7
|
-
export { Provider } from './provider/Provider';
|
|
7
|
+
export { Provider, provider } from './provider/Provider';
|
|
8
|
+
export { withArgsFn, withArgs } from './provider/ArgsProvider';
|
|
9
|
+
export { SingletonProvider, asSingleton } from './provider/SingletonProvider';
|
|
10
|
+
export { TaggedProvider, perTags } from './provider/TaggedProvider';
|
|
8
11
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
9
|
-
export { ProviderBuilder, perTags, asSingleton } from './provider/ProviderBuilder';
|
|
10
12
|
export { forKey, Registration } from './registration/Registration';
|
|
13
|
+
export { DependencyMissingKeyError } from './registration/DependencyMissingKeyError';
|
|
11
14
|
export const by = (key, ...args) => (l) => l.resolve(key, ...args);
|
|
12
15
|
//# 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":"AAEA,OAAO,EAIH,eAAe,GAKlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAIH,eAAe,GAKlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAU,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAErF,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,7 +1,10 @@
|
|
|
1
1
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
2
2
|
import { Resolvable } from '../container/IContainer';
|
|
3
3
|
import { IProvider } from './IProvider';
|
|
4
|
+
import { MapFn } from '../utils';
|
|
4
5
|
export declare type ArgsFn = (l: Resolvable) => unknown[];
|
|
6
|
+
export declare function withArgs(...extraArgs: unknown[]): MapFn<IProvider>;
|
|
7
|
+
export declare function withArgsFn(value: ArgsFn): MapFn<IProvider>;
|
|
5
8
|
export declare class ArgsProvider<T> extends ProviderDecorator<T> {
|
|
6
9
|
private provider;
|
|
7
10
|
private argsFn;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
2
|
+
export function withArgs(...extraArgs) {
|
|
3
|
+
return (provider) => new ArgsProvider(provider, () => extraArgs);
|
|
4
|
+
}
|
|
5
|
+
export function withArgsFn(value) {
|
|
6
|
+
return (provider) => new ArgsProvider(provider, value);
|
|
7
|
+
}
|
|
2
8
|
export class ArgsProvider extends ProviderDecorator {
|
|
3
9
|
constructor(provider, argsFn) {
|
|
4
10
|
super(provider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,MAAM,UAAU,QAAQ,CAAC,GAAG,SAAoB;IAC5C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,YAAgB,SAAQ,iBAAoB;IACrD,YAAoB,QAAsB,EAAU,MAAc;QAC9D,KAAK,CAAC,QAAQ,CAAC,CAAC;QADA,aAAQ,GAAR,QAAQ,CAAc;QAAU,WAAM,GAAN,MAAM,CAAQ;IAElE,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,KAAK;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;CACJ"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Resolvable, Tagged } from '../container/IContainer';
|
|
2
|
+
import { MapFn } from '../utils';
|
|
2
3
|
export declare type ResolveDependency<T = unknown> = (container: Resolvable, ...args: unknown[]) => T;
|
|
3
4
|
export interface IProvider<T = unknown> {
|
|
4
5
|
clone(): IProvider<T>;
|
|
5
6
|
resolve(container: Resolvable, ...args: unknown[]): T;
|
|
6
7
|
isValid(filters: Tagged): boolean;
|
|
8
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
7
9
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { IProvider, ResolveDependency } from './IProvider';
|
|
2
2
|
import { Resolvable } from '../container/IContainer';
|
|
3
|
-
import { constructor } from '../utils';
|
|
3
|
+
import { constructor, MapFn } from '../utils';
|
|
4
|
+
export declare const provider: (...mappers: MapFn<IProvider>[]) => ClassDecorator;
|
|
4
5
|
export declare class Provider<T> implements IProvider<T> {
|
|
5
6
|
private readonly resolveDependency;
|
|
6
|
-
static fromClass<T>(Target: constructor<T>):
|
|
7
|
+
static fromClass<T>(Target: constructor<T>): IProvider<T>;
|
|
7
8
|
static fromValue<T>(value: T): Provider<T>;
|
|
8
9
|
constructor(resolveDependency: ResolveDependency<T>);
|
|
10
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
9
11
|
clone(): Provider<T>;
|
|
10
12
|
resolve(container: Resolvable, ...args: unknown[]): T;
|
|
11
13
|
isValid(): boolean;
|
package/esm/provider/Provider.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
|
+
import { getProp, setProp } from '../reflection';
|
|
2
|
+
export const provider = (...mappers) => setProp('provider', mappers);
|
|
1
3
|
export class Provider {
|
|
2
4
|
constructor(resolveDependency) {
|
|
3
5
|
this.resolveDependency = resolveDependency;
|
|
4
6
|
}
|
|
5
7
|
static fromClass(Target) {
|
|
6
|
-
|
|
8
|
+
var _a;
|
|
9
|
+
const mappers = (_a = getProp(Target, 'provider')) !== null && _a !== void 0 ? _a : [];
|
|
10
|
+
return new Provider((container, ...args) => container.resolve(Target, ...args)).pipe(...mappers);
|
|
7
11
|
}
|
|
8
12
|
static fromValue(value) {
|
|
9
13
|
return new Provider(() => value);
|
|
10
14
|
}
|
|
15
|
+
pipe(...mappers) {
|
|
16
|
+
return mappers.reduce((acc, current) => current(acc), this);
|
|
17
|
+
}
|
|
11
18
|
clone() {
|
|
12
19
|
return new Provider(this.resolveDependency);
|
|
13
20
|
}
|
|
@@ -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,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAA2B,EAAkB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzG,MAAM,OAAO,QAAQ;IAUjB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IATxE,MAAM,CAAC,SAAS,CAAI,MAAsB;;QACtC,MAAM,OAAO,GAAG,MAAA,OAAO,CAAwB,MAAM,EAAE,UAAU,CAAC,mCAAI,EAAE,CAAC;QACzE,OAAO,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAID,IAAI,CAAC,GAAG,OAA8B;QAClC,OAAO,OAAO,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Resolvable, Tagged } from '../container/IContainer';
|
|
2
2
|
import { IProvider } from './IProvider';
|
|
3
|
+
import { MapFn } from '../utils';
|
|
3
4
|
export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
4
5
|
private decorated;
|
|
5
6
|
protected constructor(decorated: IProvider<T>);
|
|
6
7
|
clone(): IProvider<T>;
|
|
7
8
|
isValid(filters: Tagged): boolean;
|
|
8
9
|
resolve(container: Resolvable, ...args: any[]): T;
|
|
10
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
9
11
|
}
|
|
@@ -11,5 +11,8 @@ export class ProviderDecorator {
|
|
|
11
11
|
resolve(container, ...args) {
|
|
12
12
|
return this.decorated.resolve(container, ...args);
|
|
13
13
|
}
|
|
14
|
+
pipe(...mappers) {
|
|
15
|
+
return mappers.reduce((acc, current) => current(acc), this);
|
|
16
|
+
}
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=ProviderDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,iBAAiB;IACnC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,KAAK;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAW;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,GAAG,OAA8B;QAClC,OAAO,OAAO,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;CACJ"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Resolvable } from '../container/IContainer';
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { IProvider } from './IProvider';
|
|
4
|
+
import { MapFn } from '../utils';
|
|
5
|
+
export declare function asSingleton(): MapFn<IProvider>;
|
|
4
6
|
export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
5
7
|
private readonly provider;
|
|
6
8
|
private instance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,UAAU,WAAW;IACvB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,OAAO,iBAAqB,SAAQ,iBAAoB;IAG1D,YAA6B,QAAsB;QAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAc;QAF3C,aAAQ,GAAoB,IAAI,CAAC;IAIzC,CAAC;IAED,KAAK;QACD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;;QAC7C,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,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;SACvC;QAED,OAAO,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAU,CAAC;IACrC,CAAC;CACJ"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { IProvider } from './IProvider';
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { Tag, Tagged } from '../container/IContainer';
|
|
4
|
+
import { MapFn } from '../utils';
|
|
5
|
+
export declare function perTags(...tags: Tag[]): MapFn<IProvider>;
|
|
4
6
|
export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
5
7
|
private provider;
|
|
6
8
|
private readonly tags;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,UAAU,OAAO,CAAC,GAAG,IAAW;IAClC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,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,OAAe;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;CACJ"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { constructor } from '../utils';
|
|
1
|
+
import { DependencyKey, IContainer, IContainerModule } from '../container/IContainer';
|
|
2
|
+
import { constructor, MapFn } from '../utils';
|
|
3
|
+
import { IProvider } from '../provider/IProvider';
|
|
5
4
|
export declare const forKey: (key: DependencyKey) => ClassDecorator;
|
|
6
5
|
export declare class Registration implements IContainerModule {
|
|
7
6
|
private key;
|
|
8
|
-
private
|
|
9
|
-
static fromClass
|
|
10
|
-
constructor(key: DependencyKey,
|
|
11
|
-
|
|
12
|
-
withArgsFn(argsFn: ArgsFn): this;
|
|
13
|
-
perTags(...tags: Tag[]): this;
|
|
14
|
-
asSingleton(...tags: Tag[]): this;
|
|
7
|
+
private provider;
|
|
8
|
+
static fromClass(Target: constructor<unknown>): Registration;
|
|
9
|
+
constructor(key: DependencyKey, provider: IProvider);
|
|
10
|
+
map(...mappers: MapFn<IProvider>[]): this;
|
|
15
11
|
applyTo(container: IContainer): void;
|
|
16
12
|
}
|
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
import { DependencyMissingKeyError } from './DependencyMissingKeyError';
|
|
2
|
-
import { ProviderBuilder } from '../provider/ProviderBuilder';
|
|
3
2
|
import { getProp, setProp } from '../reflection';
|
|
3
|
+
import { Provider } from '../provider/Provider';
|
|
4
4
|
export const forKey = (key) => setProp('DependencyKey', key);
|
|
5
5
|
export class Registration {
|
|
6
|
-
constructor(key,
|
|
6
|
+
constructor(key, provider) {
|
|
7
7
|
this.key = key;
|
|
8
|
-
this.
|
|
8
|
+
this.provider = provider;
|
|
9
9
|
}
|
|
10
10
|
static fromClass(Target) {
|
|
11
11
|
const dependencyKey = getProp(Target, 'DependencyKey');
|
|
12
12
|
if (dependencyKey === undefined) {
|
|
13
13
|
throw new DependencyMissingKeyError(`Pls provide dependency key for ${Target.name}`);
|
|
14
14
|
}
|
|
15
|
-
return new Registration(dependencyKey,
|
|
15
|
+
return new Registration(dependencyKey, Provider.fromClass(Target));
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
return this;
|
|
20
|
-
}
|
|
21
|
-
withArgsFn(argsFn) {
|
|
22
|
-
this.providerBuilder = this.providerBuilder.withArgsFn(argsFn);
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
perTags(...tags) {
|
|
26
|
-
this.providerBuilder = this.providerBuilder.perTags(...tags);
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
asSingleton(...tags) {
|
|
30
|
-
this.providerBuilder = this.providerBuilder.asSingleton(...tags);
|
|
17
|
+
map(...mappers) {
|
|
18
|
+
this.provider = this.provider.pipe(...mappers);
|
|
31
19
|
return this;
|
|
32
20
|
}
|
|
33
21
|
applyTo(container) {
|
|
34
|
-
container.register(this.key, this.
|
|
22
|
+
container.register(this.key, this.provider);
|
|
35
23
|
}
|
|
36
24
|
}
|
|
37
25
|
//# sourceMappingURL=Registration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAkB,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5F,MAAM,OAAO,YAAY;IASrB,YAAoB,GAAkB,EAAU,QAAmB;QAA/C,QAAG,GAAH,GAAG,CAAe;QAAU,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IARvE,MAAM,CAAC,SAAS,CAAC,MAA4B;QACzC,MAAM,aAAa,GAAG,OAAO,CAAgB,MAAM,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,aAAa,KAAK,SAAS,EAAE;YAC7B,MAAM,IAAI,yBAAyB,CAAC,kCAAkC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACxF;QACD,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;IAID,GAAG,CAAC,GAAG,OAA2B;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,SAAqB;QACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "23.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",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"ts-jest": "27.0.5",
|
|
49
49
|
"typescript": "4.4.3"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "3d62b186cb55577ad74aabc5330d00fd20ea7610"
|
|
52
52
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { IProvider, ResolveDependency } from './IProvider';
|
|
2
|
-
import { ArgsFn } from './ArgsProvider';
|
|
3
|
-
import { constructor } from '../utils';
|
|
4
|
-
import { Tag } from '../container/IContainer';
|
|
5
|
-
export declare const perTags: (...tags: Tag[]) => ClassDecorator;
|
|
6
|
-
export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
|
|
7
|
-
export declare class ProviderBuilder {
|
|
8
|
-
private provider;
|
|
9
|
-
static fromClass(Target: constructor<unknown>): ProviderBuilder;
|
|
10
|
-
static fromValue(value: unknown): ProviderBuilder;
|
|
11
|
-
static fromFn(fn: ResolveDependency): ProviderBuilder;
|
|
12
|
-
constructor(provider: IProvider);
|
|
13
|
-
withArgs(...extraArgs: unknown[]): this;
|
|
14
|
-
withArgsFn(argsFn: ArgsFn): this;
|
|
15
|
-
perTags(...tags: Tag[]): this;
|
|
16
|
-
asSingleton(...tags: Tag[]): this;
|
|
17
|
-
build(): IProvider<unknown>;
|
|
18
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
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 = exports.asSingleton = exports.perTags = 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 reflection_1 = require("../reflection");
|
|
34
|
-
var perTags = function () {
|
|
35
|
-
var tags = [];
|
|
36
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
37
|
-
tags[_i] = arguments[_i];
|
|
38
|
-
}
|
|
39
|
-
return (0, reflection_1.reduceProp)('provider', function (prev) { return function (builder) {
|
|
40
|
-
var _a;
|
|
41
|
-
return (_a = prev(builder)).perTags.apply(_a, __spreadArray([], __read(tags), false));
|
|
42
|
-
}; }, function (x) { return x; });
|
|
43
|
-
};
|
|
44
|
-
exports.perTags = perTags;
|
|
45
|
-
var asSingleton = function () {
|
|
46
|
-
var tags = [];
|
|
47
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
48
|
-
tags[_i] = arguments[_i];
|
|
49
|
-
}
|
|
50
|
-
return (0, reflection_1.reduceProp)('provider', function (prev) { return function (builder) {
|
|
51
|
-
var _a;
|
|
52
|
-
return (_a = prev(builder)).asSingleton.apply(_a, __spreadArray([], __read(tags), false));
|
|
53
|
-
}; }, function (x) { return x; });
|
|
54
|
-
};
|
|
55
|
-
exports.asSingleton = asSingleton;
|
|
56
|
-
var ProviderBuilder = /** @class */ (function () {
|
|
57
|
-
function ProviderBuilder(provider) {
|
|
58
|
-
this.provider = provider;
|
|
59
|
-
}
|
|
60
|
-
ProviderBuilder.fromClass = function (Target) {
|
|
61
|
-
var _a;
|
|
62
|
-
var map = (_a = (0, reflection_1.getProp)(Target, 'provider')) !== null && _a !== void 0 ? _a : (function (x) { return x; });
|
|
63
|
-
return map(new ProviderBuilder(Provider_1.Provider.fromClass(Target)));
|
|
64
|
-
};
|
|
65
|
-
ProviderBuilder.fromValue = function (value) {
|
|
66
|
-
return new ProviderBuilder(Provider_1.Provider.fromValue(value));
|
|
67
|
-
};
|
|
68
|
-
ProviderBuilder.fromFn = function (fn) {
|
|
69
|
-
return new ProviderBuilder(new Provider_1.Provider(fn));
|
|
70
|
-
};
|
|
71
|
-
ProviderBuilder.prototype.withArgs = function () {
|
|
72
|
-
var extraArgs = [];
|
|
73
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
74
|
-
extraArgs[_i] = arguments[_i];
|
|
75
|
-
}
|
|
76
|
-
this.provider = new ArgsProvider_1.ArgsProvider(this.provider, function () { return extraArgs; });
|
|
77
|
-
return this;
|
|
78
|
-
};
|
|
79
|
-
ProviderBuilder.prototype.withArgsFn = function (argsFn) {
|
|
80
|
-
this.provider = new ArgsProvider_1.ArgsProvider(this.provider, argsFn);
|
|
81
|
-
return this;
|
|
82
|
-
};
|
|
83
|
-
ProviderBuilder.prototype.perTags = function () {
|
|
84
|
-
var tags = [];
|
|
85
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
86
|
-
tags[_i] = arguments[_i];
|
|
87
|
-
}
|
|
88
|
-
this.provider = new TaggedProvider_1.TaggedProvider(this.provider, tags);
|
|
89
|
-
return this;
|
|
90
|
-
};
|
|
91
|
-
ProviderBuilder.prototype.asSingleton = function () {
|
|
92
|
-
var tags = [];
|
|
93
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
94
|
-
tags[_i] = arguments[_i];
|
|
95
|
-
}
|
|
96
|
-
this.provider = new SingletonProvider_1.SingletonProvider(this.provider);
|
|
97
|
-
if (tags.length > 0) {
|
|
98
|
-
this.provider = new TaggedProvider_1.TaggedProvider(this.provider, tags);
|
|
99
|
-
}
|
|
100
|
-
return this;
|
|
101
|
-
};
|
|
102
|
-
ProviderBuilder.prototype.build = function () {
|
|
103
|
-
return this.provider;
|
|
104
|
-
};
|
|
105
|
-
return ProviderBuilder;
|
|
106
|
-
}());
|
|
107
|
-
exports.ProviderBuilder = ProviderBuilder;
|
|
108
|
-
//# sourceMappingURL=ProviderBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAsD;AACtD,mDAAkD;AAClD,yDAAwD;AAExD,uCAAsC;AACtC,4CAAoD;AAG7C,IAAM,OAAO,GAAG;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IAClC,OAAA,IAAA,uBAAU,EACN,UAAU,EACV,UAAC,IAAI,IAAK,OAAA,UAAC,OAAO;;QAAK,OAAA,CAAA,KAAA,IAAI,CAAC,OAAO,CAAC,CAAA,CAAC,OAAO,oCAAI,IAAI;IAA7B,CAA8B,EAA3C,CAA2C,EACrD,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CACX;AAJD,CAIC,CAAC;AALO,QAAA,OAAO,WAKd;AAEC,IAAM,WAAW,GAAG;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IACtC,OAAA,IAAA,uBAAU,EACN,UAAU,EACV,UAAC,IAAI,IAAK,OAAA,UAAC,OAAO;;QAAK,OAAA,CAAA,KAAA,IAAI,CAAC,OAAO,CAAC,CAAA,CAAC,WAAW,oCAAI,IAAI;IAAjC,CAAkC,EAA/C,CAA+C,EACzD,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CACX;AAJD,CAIC,CAAC;AALO,QAAA,WAAW,eAKlB;AAEN;IAcI,yBAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAbpC,yBAAS,GAAhB,UAAiB,MAA4B;;QACzC,IAAM,GAAG,GAA2B,MAAA,IAAA,oBAAO,EAAC,MAAM,EAAE,UAAU,CAAC,mCAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAEM,yBAAS,GAAhB,UAAiB,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,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,AA1CD,IA0CC;AA1CY,0CAAe"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { IProvider, ResolveDependency } from './IProvider';
|
|
2
|
-
import { ArgsFn } from './ArgsProvider';
|
|
3
|
-
import { constructor } from '../utils';
|
|
4
|
-
import { Tag } from '../container/IContainer';
|
|
5
|
-
export declare const perTags: (...tags: Tag[]) => ClassDecorator;
|
|
6
|
-
export declare const asSingleton: (...tags: Tag[]) => ClassDecorator;
|
|
7
|
-
export declare class ProviderBuilder {
|
|
8
|
-
private provider;
|
|
9
|
-
static fromClass(Target: constructor<unknown>): ProviderBuilder;
|
|
10
|
-
static fromValue(value: unknown): ProviderBuilder;
|
|
11
|
-
static fromFn(fn: ResolveDependency): ProviderBuilder;
|
|
12
|
-
constructor(provider: IProvider);
|
|
13
|
-
withArgs(...extraArgs: unknown[]): this;
|
|
14
|
-
withArgsFn(argsFn: ArgsFn): this;
|
|
15
|
-
perTags(...tags: Tag[]): this;
|
|
16
|
-
asSingleton(...tags: Tag[]): this;
|
|
17
|
-
build(): IProvider<unknown>;
|
|
18
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ArgsProvider } from './ArgsProvider';
|
|
2
|
-
import { TaggedProvider } from './TaggedProvider';
|
|
3
|
-
import { SingletonProvider } from './SingletonProvider';
|
|
4
|
-
import { Provider } from './Provider';
|
|
5
|
-
import { reduceProp, getProp } from '../reflection';
|
|
6
|
-
export const perTags = (...tags) => reduceProp('provider', (prev) => (builder) => prev(builder).perTags(...tags), (x) => x);
|
|
7
|
-
export const asSingleton = (...tags) => reduceProp('provider', (prev) => (builder) => prev(builder).asSingleton(...tags), (x) => x);
|
|
8
|
-
export class ProviderBuilder {
|
|
9
|
-
constructor(provider) {
|
|
10
|
-
this.provider = provider;
|
|
11
|
-
}
|
|
12
|
-
static fromClass(Target) {
|
|
13
|
-
var _a;
|
|
14
|
-
const map = (_a = getProp(Target, 'provider')) !== null && _a !== void 0 ? _a : ((x) => x);
|
|
15
|
-
return map(new ProviderBuilder(Provider.fromClass(Target)));
|
|
16
|
-
}
|
|
17
|
-
static fromValue(value) {
|
|
18
|
-
return new ProviderBuilder(Provider.fromValue(value));
|
|
19
|
-
}
|
|
20
|
-
static fromFn(fn) {
|
|
21
|
-
return new ProviderBuilder(new Provider(fn));
|
|
22
|
-
}
|
|
23
|
-
withArgs(...extraArgs) {
|
|
24
|
-
this.provider = new ArgsProvider(this.provider, () => extraArgs);
|
|
25
|
-
return this;
|
|
26
|
-
}
|
|
27
|
-
withArgsFn(argsFn) {
|
|
28
|
-
this.provider = new ArgsProvider(this.provider, argsFn);
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
perTags(...tags) {
|
|
32
|
-
this.provider = new TaggedProvider(this.provider, tags);
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
asSingleton(...tags) {
|
|
36
|
-
this.provider = new SingletonProvider(this.provider);
|
|
37
|
-
if (tags.length > 0) {
|
|
38
|
-
this.provider = new TaggedProvider(this.provider, tags);
|
|
39
|
-
}
|
|
40
|
-
return this;
|
|
41
|
-
}
|
|
42
|
-
build() {
|
|
43
|
-
return this.provider;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=ProviderBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/provider/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAkB,EAAE,CACtD,UAAU,CACN,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACX,CAAC;AAEN,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAW,EAAkB,EAAE,CAC1D,UAAU,CACN,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACX,CAAC;AAEN,MAAM,OAAO,eAAe;IAcxB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAb3C,MAAM,CAAC,SAAS,CAAC,MAA4B;;QACzC,MAAM,GAAG,GAA2B,MAAA,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,mCAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAc;QAC3B,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAqB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,QAAQ,CAAC,GAAG,SAAoB;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,GAAG,IAAW;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ"}
|