ts-ioc-container 6.28.2 → 7.0.6
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 +9 -8
- package/cjm/core/IProvider.d.ts +14 -0
- package/cjm/core/{providers/IProvider.js → IProvider.js} +0 -0
- package/cjm/core/IProvider.js.map +1 -0
- package/cjm/core/IProviderRepository.d.ts +2 -2
- package/cjm/core/IServiceLocator.d.ts +5 -3
- package/cjm/core/IServiceLocator.js.map +1 -1
- package/{esm/core/providers → cjm/core}/Provider.d.ts +3 -2
- package/cjm/core/{providers/Provider.js → Provider.js} +3 -0
- package/cjm/core/Provider.js.map +1 -0
- package/cjm/core/ProviderRepository.d.ts +8 -4
- package/cjm/core/ProviderRepository.js +35 -15
- package/cjm/core/ProviderRepository.js.map +1 -1
- package/cjm/core/ServiceLocator.d.ts +2 -2
- package/cjm/core/ServiceLocator.js +3 -2
- package/cjm/core/ServiceLocator.js.map +1 -1
- package/cjm/features/ProviderBuilder.d.ts +5 -6
- package/cjm/features/ProviderBuilder.js +14 -7
- package/cjm/features/ProviderBuilder.js.map +1 -1
- package/cjm/features/instanceHook/HookedProvider.d.ts +2 -1
- package/cjm/features/instanceHook/HookedProvider.js +3 -0
- package/cjm/features/instanceHook/HookedProvider.js.map +1 -1
- package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.d.ts +0 -0
- package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.js +0 -0
- package/cjm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +1 -0
- package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.d.ts +0 -0
- package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js +0 -0
- package/cjm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +1 -0
- package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.d.ts +0 -0
- package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.js +0 -0
- package/cjm/features/instanceHook/decorators/decorators.js.map +1 -0
- package/cjm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.d.ts +2 -2
- package/cjm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.js +0 -0
- package/cjm/features/ioc/decorators/InjectMetadataCollector.js.map +1 -0
- package/cjm/{decorators/ioc → features/ioc/decorators}/decorators.d.ts +3 -3
- package/cjm/{decorators/ioc → features/ioc/decorators}/decorators.js +0 -0
- package/cjm/features/ioc/decorators/decorators.js.map +1 -0
- package/cjm/features/mock/IMockProviderStorage.d.ts +1 -1
- package/cjm/features/mock/MockProvider.d.ts +2 -0
- package/cjm/features/mock/MockProvider.js +3 -0
- package/cjm/features/mock/MockProvider.js.map +1 -1
- package/cjm/features/mock/MockProviderStorage.d.ts +1 -1
- package/cjm/features/mock/MockedRepository.d.ts +2 -1
- package/cjm/features/mock/MockedRepository.js +3 -1
- package/cjm/features/mock/MockedRepository.js.map +1 -1
- package/cjm/features/mock/VendorMockProviderStorage.d.ts +1 -1
- package/cjm/features/scope/LevelProvider.d.ts +11 -0
- package/cjm/features/scope/LevelProvider.js +55 -0
- package/cjm/features/scope/LevelProvider.js.map +1 -0
- package/cjm/{core/providers → features/scope}/SingletonProvider.d.ts +3 -2
- package/cjm/{core/providers → features/scope}/SingletonProvider.js +6 -9
- package/cjm/features/scope/SingletonProvider.js.map +1 -0
- package/cjm/features/scope/TaggedProvider.d.ts +11 -0
- package/cjm/features/scope/TaggedProvider.js +56 -0
- package/cjm/features/scope/TaggedProvider.js.map +1 -0
- package/cjm/helpers/Box.d.ts +4 -0
- package/cjm/helpers/Box.js +11 -0
- package/cjm/helpers/Box.js.map +1 -0
- package/cjm/helpers/MathSet.d.ts +8 -0
- package/cjm/helpers/MathSet.js +51 -0
- package/cjm/helpers/MathSet.js.map +1 -0
- package/cjm/helpers/RangeType.d.ts +7 -0
- package/cjm/helpers/RangeType.js +40 -0
- package/cjm/helpers/RangeType.js.map +1 -0
- package/cjm/index.d.ts +11 -12
- package/cjm/index.js +11 -13
- package/cjm/index.js.map +1 -1
- package/esm/core/IProvider.d.ts +14 -0
- package/esm/core/{providers/IProvider.js → IProvider.js} +0 -0
- package/esm/core/IProvider.js.map +1 -0
- package/esm/core/IProviderRepository.d.ts +2 -2
- package/esm/core/IServiceLocator.d.ts +5 -3
- package/esm/core/IServiceLocator.js.map +1 -1
- package/{cjm/core/providers → esm/core}/Provider.d.ts +3 -2
- package/esm/core/{providers/Provider.js → Provider.js} +3 -0
- package/esm/core/Provider.js.map +1 -0
- package/esm/core/ProviderRepository.d.ts +8 -4
- package/esm/core/ProviderRepository.js +20 -15
- package/esm/core/ProviderRepository.js.map +1 -1
- package/esm/core/ServiceLocator.d.ts +2 -2
- package/esm/core/ServiceLocator.js +2 -2
- package/esm/core/ServiceLocator.js.map +1 -1
- package/esm/features/ProviderBuilder.d.ts +5 -6
- package/esm/features/ProviderBuilder.js +14 -7
- package/esm/features/ProviderBuilder.js.map +1 -1
- package/esm/features/instanceHook/HookedProvider.d.ts +2 -1
- package/esm/features/instanceHook/HookedProvider.js +3 -0
- package/esm/features/instanceHook/HookedProvider.js.map +1 -1
- package/esm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.d.ts +0 -0
- package/esm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.js +0 -0
- package/esm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +1 -0
- package/esm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.d.ts +0 -0
- package/esm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js +0 -0
- package/esm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +1 -0
- package/esm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.d.ts +0 -0
- package/esm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.js +0 -0
- package/esm/features/instanceHook/decorators/decorators.js.map +1 -0
- package/esm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.d.ts +2 -2
- package/esm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.js +0 -0
- package/esm/features/ioc/decorators/InjectMetadataCollector.js.map +1 -0
- package/esm/{decorators/ioc → features/ioc/decorators}/decorators.d.ts +3 -3
- package/esm/{decorators/ioc → features/ioc/decorators}/decorators.js +0 -0
- package/esm/features/ioc/decorators/decorators.js.map +1 -0
- package/esm/features/mock/IMockProviderStorage.d.ts +1 -1
- package/esm/features/mock/MockProvider.d.ts +2 -0
- package/esm/features/mock/MockProvider.js +3 -0
- package/esm/features/mock/MockProvider.js.map +1 -1
- package/esm/features/mock/MockProviderStorage.d.ts +1 -1
- package/esm/features/mock/MockedRepository.d.ts +2 -1
- package/esm/features/mock/MockedRepository.js +2 -1
- package/esm/features/mock/MockedRepository.js.map +1 -1
- package/esm/features/mock/VendorMockProviderStorage.d.ts +1 -1
- package/esm/features/scope/LevelProvider.d.ts +11 -0
- package/esm/features/scope/LevelProvider.js +20 -0
- package/esm/features/scope/LevelProvider.js.map +1 -0
- package/esm/{core/providers → features/scope}/SingletonProvider.d.ts +3 -2
- package/esm/{core/providers → features/scope}/SingletonProvider.js +5 -7
- package/esm/features/scope/SingletonProvider.js.map +1 -0
- package/esm/features/scope/TaggedProvider.d.ts +11 -0
- package/esm/features/scope/TaggedProvider.js +21 -0
- package/esm/features/scope/TaggedProvider.js.map +1 -0
- package/esm/helpers/Box.d.ts +4 -0
- package/esm/helpers/Box.js +6 -0
- package/esm/helpers/Box.js.map +1 -0
- package/esm/helpers/MathSet.d.ts +8 -0
- package/esm/helpers/MathSet.js +23 -0
- package/esm/helpers/MathSet.js.map +1 -0
- package/esm/helpers/RangeType.d.ts +7 -0
- package/esm/helpers/RangeType.js +18 -0
- package/esm/helpers/RangeType.js.map +1 -0
- package/esm/index.d.ts +11 -12
- package/esm/index.js +8 -9
- package/esm/index.js.map +1 -1
- package/package.json +4 -3
- package/cjm/core/providers/IProvider.d.ts +0 -8
- package/cjm/core/providers/IProvider.js.map +0 -1
- package/cjm/core/providers/Provider.js.map +0 -1
- package/cjm/core/providers/ScopedProvider.d.ts +0 -9
- package/cjm/core/providers/ScopedProvider.js +0 -26
- package/cjm/core/providers/ScopedProvider.js.map +0 -1
- package/cjm/core/providers/SingletonProvider.js.map +0 -1
- package/cjm/decorators/instanceHook/IMethodsMetadataCollector.js.map +0 -1
- package/cjm/decorators/instanceHook/MethodsMetadataCollector.js.map +0 -1
- package/cjm/decorators/instanceHook/decorators.js.map +0 -1
- package/cjm/decorators/ioc/InjectMetadataCollector.js.map +0 -1
- package/cjm/decorators/ioc/decorators.js.map +0 -1
- package/cjm/errors/ProviderNotClonedError.d.ts +0 -4
- package/cjm/errors/ProviderNotClonedError.js +0 -30
- package/cjm/errors/ProviderNotClonedError.js.map +0 -1
- package/cjm/features/scope/IScopeContext.d.ts +0 -4
- package/cjm/features/scope/IScopeContext.js +0 -5
- package/cjm/features/scope/IScopeContext.js.map +0 -1
- package/cjm/features/scope/ScopeContext.d.ts +0 -6
- package/cjm/features/scope/ScopeContext.js +0 -14
- package/cjm/features/scope/ScopeContext.js.map +0 -1
- package/esm/core/providers/IProvider.d.ts +0 -8
- package/esm/core/providers/IProvider.js.map +0 -1
- package/esm/core/providers/Provider.js.map +0 -1
- package/esm/core/providers/ScopedProvider.d.ts +0 -9
- package/esm/core/providers/ScopedProvider.js +0 -17
- package/esm/core/providers/ScopedProvider.js.map +0 -1
- package/esm/core/providers/SingletonProvider.js.map +0 -1
- package/esm/decorators/instanceHook/IMethodsMetadataCollector.js.map +0 -1
- package/esm/decorators/instanceHook/MethodsMetadataCollector.js.map +0 -1
- package/esm/decorators/instanceHook/decorators.js.map +0 -1
- package/esm/decorators/ioc/InjectMetadataCollector.js.map +0 -1
- package/esm/decorators/ioc/decorators.js.map +0 -1
- package/esm/errors/ProviderNotClonedError.d.ts +0 -4
- package/esm/errors/ProviderNotClonedError.js +0 -8
- package/esm/errors/ProviderNotClonedError.js.map +0 -1
- package/esm/features/scope/IScopeContext.d.ts +0 -4
- package/esm/features/scope/IScopeContext.js +0 -2
- package/esm/features/scope/IScopeContext.js.map +0 -1
- package/esm/features/scope/ScopeContext.d.ts +0 -6
- package/esm/features/scope/ScopeContext.js +0 -9
- package/esm/features/scope/ScopeContext.js.map +0 -1
package/README.md
CHANGED
|
@@ -57,7 +57,7 @@ How to create new simple locator
|
|
|
57
57
|
import { SimpleLocatorBuilder, ProviderBuilder } from 'ts-ioc-container';
|
|
58
58
|
|
|
59
59
|
const locator = new SimpleLocatorBuilder().build();
|
|
60
|
-
locator.register('ILogger', ProviderBuilder.fromConstructor(Logger).
|
|
60
|
+
locator.register('ILogger', ProviderBuilder.fromConstructor(Logger).build());
|
|
61
61
|
const logger = locator.resolve<ILogger>('ILogger');
|
|
62
62
|
```
|
|
63
63
|
### Injectors
|
|
@@ -73,7 +73,7 @@ class Car {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
const locator = new SimpleLocatorBuilder().build();
|
|
76
|
-
locator.register('IEngine', ProviderBuilder.fromConstructor(Engine).
|
|
76
|
+
locator.register('IEngine', ProviderBuilder.fromConstructor(Engine).build());
|
|
77
77
|
const car = locator.resolve(Car);
|
|
78
78
|
```
|
|
79
79
|
IoC injector. Compose `@inject` decorator as you need. Or use default `createInjectDecorator`;
|
|
@@ -107,7 +107,7 @@ export const Collection = <T>(...injections: InjectFn<T>[]) => l => injections.m
|
|
|
107
107
|
*/
|
|
108
108
|
|
|
109
109
|
const locator = new IocLocatorBuilder(constructorMetadataCollector).build();
|
|
110
|
-
locator.register<IEngine>('IEngine', ProviderBuilder.fromConstructor(Engine).asRequested());
|
|
110
|
+
locator.register<IEngine>('IEngine', ProviderBuilder.fromConstructor(Engine).asRequested().build());
|
|
111
111
|
|
|
112
112
|
class Car {
|
|
113
113
|
constructor(
|
|
@@ -134,9 +134,10 @@ const car = locator.resolve(Car);
|
|
|
134
134
|
import {ProviderBuilder} from "ts-ioc-container";
|
|
135
135
|
|
|
136
136
|
locator.register('ILogger', new ProviderBuilder((l, ...args) => new Logger(...args)).asRequested());
|
|
137
|
-
locator.register('ILogger1', ProviderBuilder.fromConstructor(Logger).asSingleton());
|
|
138
|
-
locator.register('ILogger2', ProviderBuilder.fromConstructor(Logger).
|
|
139
|
-
locator.register('ILogger3', ProviderBuilder.fromConstructor(Logger).
|
|
137
|
+
locator.register('ILogger1', ProviderBuilder.fromConstructor(Logger).asSingleton().forLevel(0).build()); // global singleton
|
|
138
|
+
locator.register('ILogger2', ProviderBuilder.fromConstructor(Logger).asSingleton().forLevel(1).build()); // first scope singleton
|
|
139
|
+
locator.register('ILogger3', ProviderBuilder.fromConstructor(Logger).asSingleton().forTags(['tag1', 'tag2']).build()); // singleton for scope with tag1 or tag2
|
|
140
|
+
locator.register('ILogger4', ProviderBuilder.fromConstructor(Logger).withArgs('dev').asSingleton().build()); // singleton in every scope
|
|
140
141
|
```
|
|
141
142
|
|
|
142
143
|
## Hooks
|
|
@@ -218,7 +219,7 @@ class Engine {
|
|
|
218
219
|
}
|
|
219
220
|
|
|
220
221
|
// in the case if you don't want to use locator.resolve to instanciate Engine you should use .withHook
|
|
221
|
-
locator.register('IEngine', new ProviderBuilder(() => new Engine()).withHook(hook).
|
|
222
|
+
locator.register('IEngine', new ProviderBuilder(() => new Engine()).withHook(hook).build())
|
|
222
223
|
const engine = locator.resolve(Engine); // output: initialized!
|
|
223
224
|
locator.dispose(); // output: disposed!
|
|
224
225
|
```
|
|
@@ -226,7 +227,7 @@ locator.dispose(); // output: disposed!
|
|
|
226
227
|
## Scoped locators
|
|
227
228
|
|
|
228
229
|
```typescript
|
|
229
|
-
const scope = locator.createLocator();
|
|
230
|
+
const scope = locator.createLocator(['tag1', 'tag2']);
|
|
230
231
|
const logger = scope.resolve('ILogger');
|
|
231
232
|
scope.dispose();
|
|
232
233
|
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IServiceLocator, Resolveable } from './IServiceLocator';
|
|
2
|
+
import { IDisposable } from '../helpers/IDisposable';
|
|
3
|
+
export declare type ResolveDependency<T> = (locator: IServiceLocator, ...args: any[]) => T;
|
|
4
|
+
export declare type Tag = string | symbol;
|
|
5
|
+
export interface ScopeOptions {
|
|
6
|
+
level: number;
|
|
7
|
+
tags: Tag[];
|
|
8
|
+
}
|
|
9
|
+
export interface IProvider<T> extends IDisposable {
|
|
10
|
+
clone(): IProvider<T>;
|
|
11
|
+
resolve(locator: Resolveable, ...args: any[]): T;
|
|
12
|
+
isValid(filters: ScopeOptions): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare type ProviderKey = string | symbol;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../lib/core/IProvider.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IProvider, ProviderKey } from './
|
|
1
|
+
import { IProvider, ProviderKey, Tag } from './IProvider';
|
|
2
2
|
import { IDisposable } from '../helpers/IDisposable';
|
|
3
3
|
export interface IProviderRepository extends IDisposable {
|
|
4
|
-
clone(parent?: IProviderRepository): IProviderRepository;
|
|
4
|
+
clone(tags?: Tag[], parent?: IProviderRepository): IProviderRepository;
|
|
5
5
|
find<T>(key: ProviderKey): IProvider<T>;
|
|
6
6
|
add<T>(key: ProviderKey, provider: IProvider<T>): void;
|
|
7
7
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { IProvider, ProviderKey } from './
|
|
1
|
+
import { IProvider, ProviderKey, Tag } from './IProvider';
|
|
2
2
|
import { constructor } from '../helpers/types';
|
|
3
3
|
import { IDisposable } from '../helpers/IDisposable';
|
|
4
4
|
import { IInjector } from './IInjector';
|
|
5
5
|
export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
|
|
6
6
|
export declare type CreateInjectorFn = (l: IServiceLocator) => IInjector;
|
|
7
|
-
export interface
|
|
8
|
-
createLocator(): IServiceLocator;
|
|
7
|
+
export interface Resolveable {
|
|
9
8
|
resolve<T>(key: InjectionToken<T>, ...deps: any[]): T;
|
|
9
|
+
}
|
|
10
|
+
export interface IServiceLocator extends Resolveable, IDisposable {
|
|
11
|
+
createLocator(tags?: Tag[]): IServiceLocator;
|
|
10
12
|
register<T>(key: ProviderKey, provider: IProvider<T>): this;
|
|
11
13
|
}
|
|
12
14
|
export declare function isProviderKey<T>(token: InjectionToken<T>): token is ProviderKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IServiceLocator.js","sourceRoot":"","sources":["../../lib/core/IServiceLocator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IServiceLocator.js","sourceRoot":"","sources":["../../lib/core/IServiceLocator.ts"],"names":[],"mappings":";;;AAkBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { IProvider, ResolveDependency } from './IProvider';
|
|
2
|
-
import { IServiceLocator } from '
|
|
1
|
+
import { IProvider, ResolveDependency, ScopeOptions } from './IProvider';
|
|
2
|
+
import { IServiceLocator } from './IServiceLocator';
|
|
3
3
|
export declare class Provider<T> implements IProvider<T> {
|
|
4
4
|
private readonly resolveDependency;
|
|
5
5
|
constructor(resolveDependency: ResolveDependency<T>);
|
|
6
6
|
clone(): IProvider<T>;
|
|
7
7
|
resolve(locator: IServiceLocator, ...args: any[]): T;
|
|
8
8
|
dispose(): void;
|
|
9
|
+
isValid(filters: ScopeOptions): boolean;
|
|
9
10
|
}
|
|
@@ -41,6 +41,9 @@ var Provider = /** @class */ (function () {
|
|
|
41
41
|
return this.resolveDependency.apply(this, __spreadArray([locator], __read(args), false));
|
|
42
42
|
};
|
|
43
43
|
Provider.prototype.dispose = function () { };
|
|
44
|
+
Provider.prototype.isValid = function (filters) {
|
|
45
|
+
return true;
|
|
46
|
+
};
|
|
44
47
|
return Provider;
|
|
45
48
|
}());
|
|
46
49
|
exports.Provider = Provider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/core/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,OAAwB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,eAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,4BAAQ"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { IProvider, ProviderKey } from './
|
|
1
|
+
import { IProvider, ProviderKey, ScopeOptions, Tag } from './IProvider';
|
|
2
2
|
import { IProviderRepository } from './IProviderRepository';
|
|
3
|
-
export declare class ProviderRepository implements IProviderRepository {
|
|
3
|
+
export declare class ProviderRepository implements IProviderRepository, ScopeOptions {
|
|
4
4
|
private parent?;
|
|
5
|
+
level: number;
|
|
6
|
+
tags: Tag[];
|
|
5
7
|
private readonly providers;
|
|
6
|
-
constructor(parent?:
|
|
8
|
+
constructor(parent?: ProviderRepository, level?: number, tags?: Tag[]);
|
|
7
9
|
add<T>(key: ProviderKey, provider: IProvider<T>): void;
|
|
8
|
-
clone(parent?:
|
|
10
|
+
clone(tags?: Tag[], parent?: ProviderRepository): IProviderRepository;
|
|
11
|
+
entries(filters: ScopeOptions): Array<[ProviderKey, IProvider<any>]>;
|
|
9
12
|
dispose(): void;
|
|
10
13
|
find<T>(key: ProviderKey): IProvider<T>;
|
|
14
|
+
private findLocally;
|
|
11
15
|
}
|
|
@@ -26,34 +26,39 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
26
|
}
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
30
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
31
|
+
if (ar || !(i in from)) {
|
|
32
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
33
|
+
ar[i] = from[i];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
|
+
};
|
|
29
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
39
|
exports.ProviderRepository = void 0;
|
|
31
40
|
var ProviderNotFoundError_1 = require("../errors/ProviderNotFoundError");
|
|
32
|
-
var ProviderNotClonedError_1 = require("../errors/ProviderNotClonedError");
|
|
33
41
|
var ProviderRepository = /** @class */ (function () {
|
|
34
|
-
function ProviderRepository(parent) {
|
|
42
|
+
function ProviderRepository(parent, level, tags) {
|
|
43
|
+
if (level === void 0) { level = 0; }
|
|
44
|
+
if (tags === void 0) { tags = []; }
|
|
35
45
|
this.parent = parent;
|
|
46
|
+
this.level = level;
|
|
47
|
+
this.tags = tags;
|
|
36
48
|
this.providers = new Map();
|
|
37
49
|
}
|
|
38
50
|
ProviderRepository.prototype.add = function (key, provider) {
|
|
39
51
|
this.providers.set(key, provider);
|
|
40
52
|
};
|
|
41
|
-
ProviderRepository.prototype.clone = function (parent) {
|
|
53
|
+
ProviderRepository.prototype.clone = function (tags, parent) {
|
|
42
54
|
var e_1, _a;
|
|
55
|
+
if (tags === void 0) { tags = []; }
|
|
43
56
|
if (parent === void 0) { parent = this; }
|
|
44
|
-
var repo = new ProviderRepository(parent);
|
|
57
|
+
var repo = new ProviderRepository(parent, parent.level + 1, tags);
|
|
45
58
|
try {
|
|
46
|
-
for (var _b = __values(
|
|
59
|
+
for (var _b = __values(parent.entries(repo)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
47
60
|
var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
|
|
48
|
-
|
|
49
|
-
repo.add(key, provider.clone());
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
if (e instanceof ProviderNotClonedError_1.ProviderNotClonedError) {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
throw e;
|
|
56
|
-
}
|
|
61
|
+
repo.add(key, provider.clone());
|
|
57
62
|
}
|
|
58
63
|
}
|
|
59
64
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -65,6 +70,14 @@ var ProviderRepository = /** @class */ (function () {
|
|
|
65
70
|
}
|
|
66
71
|
return repo;
|
|
67
72
|
};
|
|
73
|
+
ProviderRepository.prototype.entries = function (filters) {
|
|
74
|
+
var localProviders = Array.from(this.providers.entries()).filter(function (_a) {
|
|
75
|
+
var _b = __read(_a, 2), value = _b[1];
|
|
76
|
+
return value.isValid(filters);
|
|
77
|
+
});
|
|
78
|
+
var parentProviders = this.parent ? this.parent.entries(filters) : [];
|
|
79
|
+
return Array.from(new Map(__spreadArray(__spreadArray([], __read(parentProviders), false), __read(localProviders), false)).entries());
|
|
80
|
+
};
|
|
68
81
|
ProviderRepository.prototype.dispose = function () {
|
|
69
82
|
var e_2, _a;
|
|
70
83
|
try {
|
|
@@ -85,12 +98,19 @@ var ProviderRepository = /** @class */ (function () {
|
|
|
85
98
|
};
|
|
86
99
|
ProviderRepository.prototype.find = function (key) {
|
|
87
100
|
var _a, _b;
|
|
88
|
-
var provider = (_a = this.
|
|
101
|
+
var provider = (_a = this.findLocally(key)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.find(key);
|
|
89
102
|
if (provider === undefined) {
|
|
90
103
|
throw new ProviderNotFoundError_1.ProviderNotFoundError(key.toString());
|
|
91
104
|
}
|
|
92
105
|
return provider;
|
|
93
106
|
};
|
|
107
|
+
ProviderRepository.prototype.findLocally = function (key) {
|
|
108
|
+
var provider = this.providers.get(key);
|
|
109
|
+
if (!provider || !provider.isValid({ level: this.level, tags: this.tags })) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
return provider;
|
|
113
|
+
};
|
|
94
114
|
return ProviderRepository;
|
|
95
115
|
}());
|
|
96
116
|
exports.ProviderRepository = ProviderRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreateInjectorFn, InjectionToken, IServiceLocator } from './IServiceLocator';
|
|
2
|
-
import { IProvider, ProviderKey } from './
|
|
2
|
+
import { IProvider, ProviderKey, Tag } from './IProvider';
|
|
3
3
|
import { IProviderRepository } from './IProviderRepository';
|
|
4
4
|
export declare class ServiceLocator implements IServiceLocator {
|
|
5
5
|
private readonly createInjector;
|
|
@@ -8,6 +8,6 @@ export declare class ServiceLocator implements IServiceLocator {
|
|
|
8
8
|
constructor(createInjector: CreateInjectorFn, providerRepo: IProviderRepository);
|
|
9
9
|
register<T>(key: ProviderKey, provider: IProvider<T>): this;
|
|
10
10
|
resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
|
|
11
|
-
createLocator(): IServiceLocator;
|
|
11
|
+
createLocator(tags?: Tag[]): IServiceLocator;
|
|
12
12
|
dispose(): void;
|
|
13
13
|
}
|
|
@@ -49,8 +49,9 @@ var ServiceLocator = /** @class */ (function () {
|
|
|
49
49
|
}
|
|
50
50
|
return (_a = this.injector).resolve.apply(_a, __spreadArray([key], __read(args), false));
|
|
51
51
|
};
|
|
52
|
-
ServiceLocator.prototype.createLocator = function () {
|
|
53
|
-
|
|
52
|
+
ServiceLocator.prototype.createLocator = function (tags) {
|
|
53
|
+
if (tags === void 0) { tags = []; }
|
|
54
|
+
return new ServiceLocator(this.createInjector, this.providerRepo.clone(tags));
|
|
54
55
|
};
|
|
55
56
|
ServiceLocator.prototype.dispose = function () {
|
|
56
57
|
this.providerRepo.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAqG;AAKrG;IAGI,wBAA6B,cAAgC,EAAmB,YAAiC;QAApF,mBAAc,GAAd,cAAc,CAAkB;QAAmB,iBAAY,GAAZ,YAAY,CAAqB;QAC7G,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,iCAAQ,GAAR,UAAY,GAAgB,EAAE,QAAsB;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE;SAC1C;QAED,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,GAAG,UAAK,IAAI,WAAE;IAClD,CAAC;IAED,sCAAa,GAAb;
|
|
1
|
+
{"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAqG;AAKrG;IAGI,wBAA6B,cAAgC,EAAmB,YAAiC;QAApF,mBAAc,GAAd,cAAc,CAAkB;QAAmB,iBAAY,GAAZ,YAAY,CAAqB;QAC7G,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,iCAAQ,GAAR,UAAY,GAAgB,EAAE,QAAsB;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE;SAC1C;QAED,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,GAAG,UAAK,IAAI,WAAE;IAClD,CAAC;IAED,sCAAa,GAAb,UAAc,IAAgB;QAAhB,qBAAA,EAAA,SAAgB;QAC1B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,gCAAO,GAAP;QACI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACL,qBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,wCAAc"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { IProvider, ResolveDependency } from '../core/
|
|
2
|
-
import { SingletonProvider } from '../core/providers/SingletonProvider';
|
|
3
|
-
import { ScopedProvider } from '../core/providers/ScopedProvider';
|
|
1
|
+
import { IProvider, ResolveDependency, Tag } from '../core/IProvider';
|
|
4
2
|
import { constructor } from '../helpers/types';
|
|
5
3
|
import { IServiceLocator } from '../core/IServiceLocator';
|
|
6
4
|
import { IInstanceHook } from './instanceHook/IInstanceHook';
|
|
@@ -12,7 +10,8 @@ export declare class ProviderBuilder<T> {
|
|
|
12
10
|
withArgs(...extraArgs: any[]): this;
|
|
13
11
|
withHook(hook: IInstanceHook): this;
|
|
14
12
|
withArgsFn(fn: (l: IServiceLocator) => any[]): this;
|
|
15
|
-
asSingleton():
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
asSingleton(): this;
|
|
14
|
+
forTags(tags: Tag[]): this;
|
|
15
|
+
forLevel(level: number): this;
|
|
16
|
+
build(): IProvider<T>;
|
|
18
17
|
}
|
|
@@ -26,10 +26,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
exports.ProviderBuilder = void 0;
|
|
29
|
-
var SingletonProvider_1 = require("
|
|
30
|
-
var
|
|
31
|
-
var Provider_1 = require("../core/providers/Provider");
|
|
29
|
+
var SingletonProvider_1 = require("./scope/SingletonProvider");
|
|
30
|
+
var Provider_1 = require("../core/Provider");
|
|
32
31
|
var HookedProvider_1 = require("./instanceHook/HookedProvider");
|
|
32
|
+
var TaggedProvider_1 = require("./scope/TaggedProvider");
|
|
33
|
+
var LevelProvider_1 = require("./scope/LevelProvider");
|
|
33
34
|
var ProviderBuilder = /** @class */ (function () {
|
|
34
35
|
function ProviderBuilder(fn) {
|
|
35
36
|
this.provider = new Provider_1.Provider(fn);
|
|
@@ -70,12 +71,18 @@ var ProviderBuilder = /** @class */ (function () {
|
|
|
70
71
|
return this;
|
|
71
72
|
};
|
|
72
73
|
ProviderBuilder.prototype.asSingleton = function () {
|
|
73
|
-
|
|
74
|
+
this.provider = new SingletonProvider_1.SingletonProvider(this.provider);
|
|
75
|
+
return this;
|
|
76
|
+
};
|
|
77
|
+
ProviderBuilder.prototype.forTags = function (tags) {
|
|
78
|
+
this.provider = new TaggedProvider_1.TaggedProvider(this.provider, tags);
|
|
79
|
+
return this;
|
|
74
80
|
};
|
|
75
|
-
ProviderBuilder.prototype.
|
|
76
|
-
|
|
81
|
+
ProviderBuilder.prototype.forLevel = function (level) {
|
|
82
|
+
this.provider = new LevelProvider_1.LevelProvider(this.provider, [level, level]);
|
|
83
|
+
return this;
|
|
77
84
|
};
|
|
78
|
-
ProviderBuilder.prototype.
|
|
85
|
+
ProviderBuilder.prototype.build = function () {
|
|
79
86
|
return this.provider;
|
|
80
87
|
};
|
|
81
88
|
return ProviderBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA
|
|
1
|
+
{"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAA8D;AAC9D,6CAA4C;AAG5C,gEAA+D;AAE/D,yDAAwD;AACxD,uDAAsD;AAEtD;IAWI,yBAAY,EAAwB;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAVM,+BAAe,GAAtB,UAA0B,KAAqB;QAC3C,OAAO,IAAI,eAAe,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI;QAAxB,CAAyB,CAAC,CAAC;IAC1E,CAAC;IAEM,4BAAY,GAAnB,UAAuB,KAAQ;QAC3B,OAAO,IAAI,eAAe,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAC5C,CAAC;IAMD,kCAAQ,GAAR;QAAS,mBAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,8BAAmB;;QACxB,IAAI,CAAC,UAAU,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,IAAmB;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,EAAiC;QACxC,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,WAAW,CAAC,OAAO,OAAnB,WAAW,+BAAS,CAAC,UAAK,IAAI,kBAAK,EAAE,CAAC,CAAC,CAAC;QAAxC,CAAyC,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP,UAAQ,IAAW;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,0CAAe"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IProvider } from '../../core/
|
|
1
|
+
import { IProvider, ScopeOptions } from '../../core/IProvider';
|
|
2
2
|
import { IInstanceHook } from './IInstanceHook';
|
|
3
3
|
import { IServiceLocator } from '../../core/IServiceLocator';
|
|
4
4
|
export declare class HookedProvider<GInstance> implements IProvider<GInstance> {
|
|
@@ -9,4 +9,5 @@ export declare class HookedProvider<GInstance> implements IProvider<GInstance> {
|
|
|
9
9
|
dispose(): void;
|
|
10
10
|
resolve(locator: IServiceLocator, ...args: any[]): GInstance;
|
|
11
11
|
clone(): HookedProvider<GInstance>;
|
|
12
|
+
isValid(filters: ScopeOptions): boolean;
|
|
12
13
|
}
|
|
@@ -75,6 +75,9 @@ var HookedProvider = /** @class */ (function () {
|
|
|
75
75
|
HookedProvider.prototype.clone = function () {
|
|
76
76
|
return new HookedProvider(this.decorated.clone(), this.hook);
|
|
77
77
|
};
|
|
78
|
+
HookedProvider.prototype.isValid = function (filters) {
|
|
79
|
+
return this.decorated.isValid(filters);
|
|
80
|
+
};
|
|
78
81
|
return HookedProvider;
|
|
79
82
|
}());
|
|
80
83
|
exports.HookedProvider = HookedProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HookedProvider.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/HookedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IAGI,wBAA6B,SAA+B,EAAmB,IAAmB;QAArE,cAAS,GAAT,SAAS,CAAsB;QAAmB,SAAI,GAAJ,IAAI,CAAe;QAFjF,cAAS,GAAG,IAAI,GAAG,EAAa,CAAC;IAEmD,CAAC;IAEtG,gCAAO,GAAP;;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;YACzB,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;gBAAlC,IAAM,QAAQ,WAAA;gBACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACjC;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAwB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,IAAM,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,UAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,8BAAK,GAAL;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACL,qBAAC;AAAD,CAAC,
|
|
1
|
+
{"version":3,"file":"HookedProvider.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/HookedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IAGI,wBAA6B,SAA+B,EAAmB,IAAmB;QAArE,cAAS,GAAT,SAAS,CAAsB;QAAmB,SAAI,GAAJ,IAAI,CAAe;QAFjF,cAAS,GAAG,IAAI,GAAG,EAAa,CAAC;IAEmD,CAAC;IAEtG,gCAAO,GAAP;;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;YACzB,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;gBAAlC,IAAM,QAAQ,WAAA;gBACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACjC;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAwB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,IAAM,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,UAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,8BAAK,GAAL;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACL,qBAAC;AAAD,CAAC,AA3BD,IA2BC;AA3BY,wCAAc"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMethodsMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/IMethodsMetadataCollector.ts"],"names":[],"mappings":""}
|
|
File without changes
|
package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js
RENAMED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MethodsMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/MethodsMetadataCollector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IACI,kCAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;IACxD,0CAAO,GAAP,UAAkC,MAAiB,EAAE,WAA4B;QAC7E,IAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,yCAAM,KAAK,YAAE,WAAW,WAAG,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,wDAAwD;IACxD,gDAAa,GAAb,UAAwC,MAAiB;;QACrD,IAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAM,KAAK,GAAa,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC/D,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;;YAET,KAAyB,IAAA,UAAA,SAAA,KAAK,CAAA,4BAAA,+CAAE;gBAA3B,IAAM,UAAU,kBAAA;gBAChB,MAAc,CAAC,UAAU,CAAC,EAAE,CAAC;aACjC;;;;;;;;;IACL,CAAC;IAED,wDAAwD;IACzC,oCAAW,GAA1B,UAA2D,MAAiB;QACxE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IACL,+BAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,4DAAwB"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/decorators.ts"],"names":[],"mappings":";;;AAEA,SAAgB,mBAAmB,CAAC,QAAmC;IACnE,OAAO,UAAC,MAAM,EAAE,WAAW;QACvB,wDAAwD;QACxD,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC;AACN,CAAC;AALD,kDAKC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { IInjectMetadataCollector } from '
|
|
3
|
-
import { InjectFn } from '
|
|
2
|
+
import { IInjectMetadataCollector } from '../IInjectMetadataCollector';
|
|
3
|
+
import { InjectFn } from '../InjectFn';
|
|
4
4
|
export declare class InjectMetadataCollector implements IInjectMetadataCollector {
|
|
5
5
|
private readonly metadataKey;
|
|
6
6
|
constructor(metadataKey: string | symbol);
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InjectMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/ioc/decorators/InjectMetadataCollector.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAI1B;IACI,iCAA6B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAE7D,wDAAwD;IACxD,6CAAW,GAAX,UAAe,MAAS,EAAE,cAAsB,EAAE,WAA0B;QACxE,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,QAAQ,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,iDAAe,GAAf,UAAmB,MAAS;;QACxB,OAAO,MAAA,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;IAClE,CAAC;IACL,8BAAC;AAAD,CAAC,AAbD,IAaC;AAbY,0DAAuB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { InjectFn } from '
|
|
2
|
-
import { InjectionToken } from '
|
|
3
|
-
import { IInjectMetadataCollector } from '
|
|
1
|
+
import { InjectFn } from '../InjectFn';
|
|
2
|
+
import { InjectionToken } from '../../../core/IServiceLocator';
|
|
3
|
+
import { IInjectMetadataCollector } from '../IInjectMetadataCollector';
|
|
4
4
|
export declare type InjectFnDecorator = <T>(injectionFn: InjectFn<T>) => ParameterDecorator;
|
|
5
5
|
export declare function createInjectFnDecorator(metadata: IInjectMetadataCollector): InjectFnDecorator;
|
|
6
6
|
declare type InjectDecorator = <T>(token: InjectionToken<T>, ...args: any[]) => ParameterDecorator;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../lib/features/ioc/decorators/decorators.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAgB,uBAAuB,CAAC,QAAkC;IACtE,OAAO,UAAC,WAAW,IAAK,OAAA,UAAC,MAAM,EAAE,WAAW,EAAE,cAAc;QACxD,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC,EAFuB,CAEvB,CAAC;AACN,CAAC;AAJD,0DAIC;AAGD,SAAgB,qBAAqB,CAAC,QAAkC;IACpE,IAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,UAAI,KAAwB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAAK,OAAA,SAAS,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI,YAAxB,CAAyB,CAAC;IAA3C,CAA2C,CAAC;AACxG,CAAC;AAHD,sDAGC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IProvider, ProviderKey } from '../../core/
|
|
1
|
+
import { IProvider, ProviderKey } from '../../core/IProvider';
|
|
2
2
|
import { IDisposable } from '../../helpers/IDisposable';
|
|
3
3
|
export interface IMockProviderStorage extends IDisposable {
|
|
4
4
|
findOrCreate<T>(key: ProviderKey): IProvider<T>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { IProvider, IServiceLocator } from '../../index';
|
|
2
|
+
import { ScopeOptions } from '../../core/IProvider';
|
|
2
3
|
export declare abstract class MockProvider<T> implements IProvider<T> {
|
|
3
4
|
clone(): IProvider<T>;
|
|
4
5
|
dispose(): void;
|
|
5
6
|
abstract resolve(locator: IServiceLocator, ...args: any[]): T;
|
|
7
|
+
isValid(filters: ScopeOptions): boolean;
|
|
6
8
|
}
|
|
@@ -11,6 +11,9 @@ var MockProvider = /** @class */ (function () {
|
|
|
11
11
|
MockProvider.prototype.dispose = function () {
|
|
12
12
|
throw new MethodNotImplementedError_1.MethodNotImplementedError('MockProvider cannot be disposed');
|
|
13
13
|
};
|
|
14
|
+
MockProvider.prototype.isValid = function (filters) {
|
|
15
|
+
return true;
|
|
16
|
+
};
|
|
14
17
|
return MockProvider;
|
|
15
18
|
}());
|
|
16
19
|
exports.MockProvider = MockProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockProvider.js","sourceRoot":"","sources":["../../../lib/features/mock/MockProvider.ts"],"names":[],"mappings":";;;AACA,oFAAmF;
|
|
1
|
+
{"version":3,"file":"MockProvider.js","sourceRoot":"","sources":["../../../lib/features/mock/MockProvider.ts"],"names":[],"mappings":";;;AACA,oFAAmF;AAGnF;IAAA;IAcA,CAAC;IAbG,4BAAK,GAAL;QACI,MAAM,IAAI,qDAAyB,CAAC,+BAA+B,CAAC,CAAC;IACzE,CAAC;IAED,8BAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,CAAC,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IAID,8BAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,mBAAC;AAAD,CAAC,AAdD,IAcC;AAdqB,oCAAY"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MockProvider } from './MockProvider';
|
|
2
|
-
import { ProviderKey } from '../../core/
|
|
2
|
+
import { ProviderKey } from '../../core/IProvider';
|
|
3
3
|
import { IMockProviderStorage } from './IMockProviderStorage';
|
|
4
4
|
export declare class MockProviderStorage implements IMockProviderStorage {
|
|
5
5
|
private readonly createMockProvider;
|
|
@@ -7,5 +7,6 @@ export declare class MockedRepository implements IProviderRepository {
|
|
|
7
7
|
dispose(): void;
|
|
8
8
|
find<T>(key: ProviderKey): IProvider<T>;
|
|
9
9
|
add<T>(key: ProviderKey, provider: IProvider<T>): void;
|
|
10
|
-
clone(parent?: IProviderRepository): IProviderRepository;
|
|
10
|
+
clone(tags?: string[], parent?: IProviderRepository): IProviderRepository;
|
|
11
|
+
level: number;
|
|
11
12
|
}
|
|
@@ -7,6 +7,7 @@ var MockedRepository = /** @class */ (function () {
|
|
|
7
7
|
function MockedRepository(decorated, mockProviders) {
|
|
8
8
|
this.decorated = decorated;
|
|
9
9
|
this.mockProviders = mockProviders;
|
|
10
|
+
this.level = 0;
|
|
10
11
|
}
|
|
11
12
|
MockedRepository.prototype.dispose = function () {
|
|
12
13
|
this.decorated.dispose();
|
|
@@ -26,7 +27,8 @@ var MockedRepository = /** @class */ (function () {
|
|
|
26
27
|
MockedRepository.prototype.add = function (key, provider) {
|
|
27
28
|
this.decorated.add(key, provider);
|
|
28
29
|
};
|
|
29
|
-
MockedRepository.prototype.clone = function (parent) {
|
|
30
|
+
MockedRepository.prototype.clone = function (tags, parent) {
|
|
31
|
+
if (tags === void 0) { tags = []; }
|
|
30
32
|
throw new MethodNotImplementedError_1.MethodNotImplementedError('MockRepository cannot be cloned');
|
|
31
33
|
};
|
|
32
34
|
return MockedRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockedRepository.js","sourceRoot":"","sources":["../../../lib/features/mock/MockedRepository.ts"],"names":[],"mappings":";;;AAAA,qCAAiG;AAEjG,oFAAmF;AAEnF;IACI,0BAAsB,SAA8B,EAAU,aAAmC;QAA3E,cAAS,GAAT,SAAS,CAAqB;QAAU,kBAAa,GAAb,aAAa,CAAsB;
|
|
1
|
+
{"version":3,"file":"MockedRepository.js","sourceRoot":"","sources":["../../../lib/features/mock/MockedRepository.ts"],"names":[],"mappings":";;;AAAA,qCAAiG;AAEjG,oFAAmF;AAEnF;IACI,0BAAsB,SAA8B,EAAU,aAAmC;QAA3E,cAAS,GAAT,SAAS,CAAqB;QAAU,kBAAa,GAAb,aAAa,CAAsB;QA2BjG,UAAK,GAAG,CAAC,CAAC;IA3B0F,CAAC;IAErG,kCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,+BAAI,GAAJ,UAAQ,GAAgB;QACpB,IAAI;YACA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,6BAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAI,GAAG,CAAC,CAAC;aAClD;YAED,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,8BAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,gCAAK,GAAL,UAAM,IAAmB,EAAE,MAA4B;QAAjD,qBAAA,EAAA,SAAmB;QACrB,MAAM,IAAI,qDAAyB,CAAC,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IAGL,uBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,4CAAgB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IMockProviderStorage } from './IMockProviderStorage';
|
|
2
|
-
import { ProviderKey } from '../../core/
|
|
2
|
+
import { ProviderKey } from '../../core/IProvider';
|
|
3
3
|
import { MockProvider } from './MockProvider';
|
|
4
4
|
export declare abstract class VendorMockProviderStorage implements IMockProviderStorage {
|
|
5
5
|
protected readonly storage: IMockProviderStorage;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IProvider, ScopeOptions } from '../../core/IProvider';
|
|
2
|
+
import { IServiceLocator } from '../../core/IServiceLocator';
|
|
3
|
+
export declare class LevelProvider<T> implements IProvider<T> {
|
|
4
|
+
private decorated;
|
|
5
|
+
private readonly range;
|
|
6
|
+
constructor(decorated: IProvider<T>, range: [number, number]);
|
|
7
|
+
clone(): IProvider<T>;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
resolve(locator: IServiceLocator, ...args: any[]): T;
|
|
10
|
+
isValid(filters: ScopeOptions): boolean;
|
|
11
|
+
}
|