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.
Files changed (176) hide show
  1. package/README.md +9 -8
  2. package/cjm/core/IProvider.d.ts +14 -0
  3. package/cjm/core/{providers/IProvider.js → IProvider.js} +0 -0
  4. package/cjm/core/IProvider.js.map +1 -0
  5. package/cjm/core/IProviderRepository.d.ts +2 -2
  6. package/cjm/core/IServiceLocator.d.ts +5 -3
  7. package/cjm/core/IServiceLocator.js.map +1 -1
  8. package/{esm/core/providers → cjm/core}/Provider.d.ts +3 -2
  9. package/cjm/core/{providers/Provider.js → Provider.js} +3 -0
  10. package/cjm/core/Provider.js.map +1 -0
  11. package/cjm/core/ProviderRepository.d.ts +8 -4
  12. package/cjm/core/ProviderRepository.js +35 -15
  13. package/cjm/core/ProviderRepository.js.map +1 -1
  14. package/cjm/core/ServiceLocator.d.ts +2 -2
  15. package/cjm/core/ServiceLocator.js +3 -2
  16. package/cjm/core/ServiceLocator.js.map +1 -1
  17. package/cjm/features/ProviderBuilder.d.ts +5 -6
  18. package/cjm/features/ProviderBuilder.js +14 -7
  19. package/cjm/features/ProviderBuilder.js.map +1 -1
  20. package/cjm/features/instanceHook/HookedProvider.d.ts +2 -1
  21. package/cjm/features/instanceHook/HookedProvider.js +3 -0
  22. package/cjm/features/instanceHook/HookedProvider.js.map +1 -1
  23. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.d.ts +0 -0
  24. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.js +0 -0
  25. package/cjm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +1 -0
  26. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.d.ts +0 -0
  27. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js +0 -0
  28. package/cjm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +1 -0
  29. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.d.ts +0 -0
  30. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.js +0 -0
  31. package/cjm/features/instanceHook/decorators/decorators.js.map +1 -0
  32. package/cjm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.d.ts +2 -2
  33. package/cjm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.js +0 -0
  34. package/cjm/features/ioc/decorators/InjectMetadataCollector.js.map +1 -0
  35. package/cjm/{decorators/ioc → features/ioc/decorators}/decorators.d.ts +3 -3
  36. package/cjm/{decorators/ioc → features/ioc/decorators}/decorators.js +0 -0
  37. package/cjm/features/ioc/decorators/decorators.js.map +1 -0
  38. package/cjm/features/mock/IMockProviderStorage.d.ts +1 -1
  39. package/cjm/features/mock/MockProvider.d.ts +2 -0
  40. package/cjm/features/mock/MockProvider.js +3 -0
  41. package/cjm/features/mock/MockProvider.js.map +1 -1
  42. package/cjm/features/mock/MockProviderStorage.d.ts +1 -1
  43. package/cjm/features/mock/MockedRepository.d.ts +2 -1
  44. package/cjm/features/mock/MockedRepository.js +3 -1
  45. package/cjm/features/mock/MockedRepository.js.map +1 -1
  46. package/cjm/features/mock/VendorMockProviderStorage.d.ts +1 -1
  47. package/cjm/features/scope/LevelProvider.d.ts +11 -0
  48. package/cjm/features/scope/LevelProvider.js +55 -0
  49. package/cjm/features/scope/LevelProvider.js.map +1 -0
  50. package/cjm/{core/providers → features/scope}/SingletonProvider.d.ts +3 -2
  51. package/cjm/{core/providers → features/scope}/SingletonProvider.js +6 -9
  52. package/cjm/features/scope/SingletonProvider.js.map +1 -0
  53. package/cjm/features/scope/TaggedProvider.d.ts +11 -0
  54. package/cjm/features/scope/TaggedProvider.js +56 -0
  55. package/cjm/features/scope/TaggedProvider.js.map +1 -0
  56. package/cjm/helpers/Box.d.ts +4 -0
  57. package/cjm/helpers/Box.js +11 -0
  58. package/cjm/helpers/Box.js.map +1 -0
  59. package/cjm/helpers/MathSet.d.ts +8 -0
  60. package/cjm/helpers/MathSet.js +51 -0
  61. package/cjm/helpers/MathSet.js.map +1 -0
  62. package/cjm/helpers/RangeType.d.ts +7 -0
  63. package/cjm/helpers/RangeType.js +40 -0
  64. package/cjm/helpers/RangeType.js.map +1 -0
  65. package/cjm/index.d.ts +11 -12
  66. package/cjm/index.js +11 -13
  67. package/cjm/index.js.map +1 -1
  68. package/esm/core/IProvider.d.ts +14 -0
  69. package/esm/core/{providers/IProvider.js → IProvider.js} +0 -0
  70. package/esm/core/IProvider.js.map +1 -0
  71. package/esm/core/IProviderRepository.d.ts +2 -2
  72. package/esm/core/IServiceLocator.d.ts +5 -3
  73. package/esm/core/IServiceLocator.js.map +1 -1
  74. package/{cjm/core/providers → esm/core}/Provider.d.ts +3 -2
  75. package/esm/core/{providers/Provider.js → Provider.js} +3 -0
  76. package/esm/core/Provider.js.map +1 -0
  77. package/esm/core/ProviderRepository.d.ts +8 -4
  78. package/esm/core/ProviderRepository.js +20 -15
  79. package/esm/core/ProviderRepository.js.map +1 -1
  80. package/esm/core/ServiceLocator.d.ts +2 -2
  81. package/esm/core/ServiceLocator.js +2 -2
  82. package/esm/core/ServiceLocator.js.map +1 -1
  83. package/esm/features/ProviderBuilder.d.ts +5 -6
  84. package/esm/features/ProviderBuilder.js +14 -7
  85. package/esm/features/ProviderBuilder.js.map +1 -1
  86. package/esm/features/instanceHook/HookedProvider.d.ts +2 -1
  87. package/esm/features/instanceHook/HookedProvider.js +3 -0
  88. package/esm/features/instanceHook/HookedProvider.js.map +1 -1
  89. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.d.ts +0 -0
  90. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.js +0 -0
  91. package/esm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +1 -0
  92. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.d.ts +0 -0
  93. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js +0 -0
  94. package/esm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +1 -0
  95. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.d.ts +0 -0
  96. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.js +0 -0
  97. package/esm/features/instanceHook/decorators/decorators.js.map +1 -0
  98. package/esm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.d.ts +2 -2
  99. package/esm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.js +0 -0
  100. package/esm/features/ioc/decorators/InjectMetadataCollector.js.map +1 -0
  101. package/esm/{decorators/ioc → features/ioc/decorators}/decorators.d.ts +3 -3
  102. package/esm/{decorators/ioc → features/ioc/decorators}/decorators.js +0 -0
  103. package/esm/features/ioc/decorators/decorators.js.map +1 -0
  104. package/esm/features/mock/IMockProviderStorage.d.ts +1 -1
  105. package/esm/features/mock/MockProvider.d.ts +2 -0
  106. package/esm/features/mock/MockProvider.js +3 -0
  107. package/esm/features/mock/MockProvider.js.map +1 -1
  108. package/esm/features/mock/MockProviderStorage.d.ts +1 -1
  109. package/esm/features/mock/MockedRepository.d.ts +2 -1
  110. package/esm/features/mock/MockedRepository.js +2 -1
  111. package/esm/features/mock/MockedRepository.js.map +1 -1
  112. package/esm/features/mock/VendorMockProviderStorage.d.ts +1 -1
  113. package/esm/features/scope/LevelProvider.d.ts +11 -0
  114. package/esm/features/scope/LevelProvider.js +20 -0
  115. package/esm/features/scope/LevelProvider.js.map +1 -0
  116. package/esm/{core/providers → features/scope}/SingletonProvider.d.ts +3 -2
  117. package/esm/{core/providers → features/scope}/SingletonProvider.js +5 -7
  118. package/esm/features/scope/SingletonProvider.js.map +1 -0
  119. package/esm/features/scope/TaggedProvider.d.ts +11 -0
  120. package/esm/features/scope/TaggedProvider.js +21 -0
  121. package/esm/features/scope/TaggedProvider.js.map +1 -0
  122. package/esm/helpers/Box.d.ts +4 -0
  123. package/esm/helpers/Box.js +6 -0
  124. package/esm/helpers/Box.js.map +1 -0
  125. package/esm/helpers/MathSet.d.ts +8 -0
  126. package/esm/helpers/MathSet.js +23 -0
  127. package/esm/helpers/MathSet.js.map +1 -0
  128. package/esm/helpers/RangeType.d.ts +7 -0
  129. package/esm/helpers/RangeType.js +18 -0
  130. package/esm/helpers/RangeType.js.map +1 -0
  131. package/esm/index.d.ts +11 -12
  132. package/esm/index.js +8 -9
  133. package/esm/index.js.map +1 -1
  134. package/package.json +4 -3
  135. package/cjm/core/providers/IProvider.d.ts +0 -8
  136. package/cjm/core/providers/IProvider.js.map +0 -1
  137. package/cjm/core/providers/Provider.js.map +0 -1
  138. package/cjm/core/providers/ScopedProvider.d.ts +0 -9
  139. package/cjm/core/providers/ScopedProvider.js +0 -26
  140. package/cjm/core/providers/ScopedProvider.js.map +0 -1
  141. package/cjm/core/providers/SingletonProvider.js.map +0 -1
  142. package/cjm/decorators/instanceHook/IMethodsMetadataCollector.js.map +0 -1
  143. package/cjm/decorators/instanceHook/MethodsMetadataCollector.js.map +0 -1
  144. package/cjm/decorators/instanceHook/decorators.js.map +0 -1
  145. package/cjm/decorators/ioc/InjectMetadataCollector.js.map +0 -1
  146. package/cjm/decorators/ioc/decorators.js.map +0 -1
  147. package/cjm/errors/ProviderNotClonedError.d.ts +0 -4
  148. package/cjm/errors/ProviderNotClonedError.js +0 -30
  149. package/cjm/errors/ProviderNotClonedError.js.map +0 -1
  150. package/cjm/features/scope/IScopeContext.d.ts +0 -4
  151. package/cjm/features/scope/IScopeContext.js +0 -5
  152. package/cjm/features/scope/IScopeContext.js.map +0 -1
  153. package/cjm/features/scope/ScopeContext.d.ts +0 -6
  154. package/cjm/features/scope/ScopeContext.js +0 -14
  155. package/cjm/features/scope/ScopeContext.js.map +0 -1
  156. package/esm/core/providers/IProvider.d.ts +0 -8
  157. package/esm/core/providers/IProvider.js.map +0 -1
  158. package/esm/core/providers/Provider.js.map +0 -1
  159. package/esm/core/providers/ScopedProvider.d.ts +0 -9
  160. package/esm/core/providers/ScopedProvider.js +0 -17
  161. package/esm/core/providers/ScopedProvider.js.map +0 -1
  162. package/esm/core/providers/SingletonProvider.js.map +0 -1
  163. package/esm/decorators/instanceHook/IMethodsMetadataCollector.js.map +0 -1
  164. package/esm/decorators/instanceHook/MethodsMetadataCollector.js.map +0 -1
  165. package/esm/decorators/instanceHook/decorators.js.map +0 -1
  166. package/esm/decorators/ioc/InjectMetadataCollector.js.map +0 -1
  167. package/esm/decorators/ioc/decorators.js.map +0 -1
  168. package/esm/errors/ProviderNotClonedError.d.ts +0 -4
  169. package/esm/errors/ProviderNotClonedError.js +0 -8
  170. package/esm/errors/ProviderNotClonedError.js.map +0 -1
  171. package/esm/features/scope/IScopeContext.d.ts +0 -4
  172. package/esm/features/scope/IScopeContext.js +0 -2
  173. package/esm/features/scope/IScopeContext.js.map +0 -1
  174. package/esm/features/scope/ScopeContext.d.ts +0 -6
  175. package/esm/features/scope/ScopeContext.js +0 -9
  176. 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).asRequested());
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).asRequested());
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).asScoped());
139
- locator.register('ILogger3', ProviderBuilder.fromConstructor(Logger).withArgs('dev').asSingleton());
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).asRequested())
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;
@@ -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 './providers/IProvider';
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 './providers/IProvider';
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 IServiceLocator extends IDisposable {
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":";;;AAgBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
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 '../IServiceLocator';
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 './providers/IProvider';
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?: IProviderRepository);
8
+ constructor(parent?: ProviderRepository, level?: number, tags?: Tag[]);
7
9
  add<T>(key: ProviderKey, provider: IProvider<T>): void;
8
- clone(parent?: IProviderRepository): IProviderRepository;
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(this.providers.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
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
- try {
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.providers.get(key)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.find(key);
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAAwE;AAExE,2EAA0E;AAE1E;IAGI,4BAAoB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;QAF/B,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEjB,CAAC;IAEpD,gCAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,kCAAK,GAAL,UAAM,MAAkC;;QAAlC,uBAAA,EAAA,aAAkC;QACpC,IAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;;YAC5C,KAA8B,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAA7C,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI;oBACA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;iBACnC;gBAAC,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,YAAY,+CAAsB,EAAE;wBACrC,SAAS;qBACZ;oBACD,MAAM,CAAC,CAAC;iBACX;aACJ;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,iCAAI,GAAJ,UAAQ,GAAgB;;QACpB,IAAM,QAAQ,GAAG,MAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAkB,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAI,GAAG,CAAC,CAAC;QACxF,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACL,yBAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,gDAAkB"}
1
+ {"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAAwE;AAGxE;IAGI,4BAAoB,MAA2B,EAAS,KAAS,EAAS,IAAgB;QAAlC,sBAAA,EAAA,SAAS;QAAS,qBAAA,EAAA,SAAgB;QAAtE,WAAM,GAAN,MAAM,CAAqB;QAAS,UAAK,GAAL,KAAK,CAAI;QAAS,SAAI,GAAJ,IAAI,CAAY;QAFzE,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEyB,CAAC;IAE9F,gCAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,kCAAK,GAAL,UAAM,IAAgB,EAAE,MAAiC;;QAAnD,qBAAA,EAAA,SAAgB;QAAE,uBAAA,EAAA,aAAiC;QACrD,IAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;YACpE,KAA8B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,4BAAE;gBAAzC,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;aACnC;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAO,GAAP,UAAQ,OAAqB;QACzB,IAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,EAAS;gBAAT,KAAA,aAAS,EAAN,KAAK,QAAA;YAAM,OAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAtB,CAAsB,CAAC,CAAC;QAC1G,IAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,wCAAK,eAAe,kBAAK,cAAc,UAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,oCAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,iCAAI,GAAJ,UAAQ,GAAgB;;QACpB,IAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,WAAW,CAAI,GAAG,CAAC,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAI,GAAG,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,wCAAW,GAAnB,UAAuB,GAAgB;QACnC,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;YACxE,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACL,yBAAC;AAAD,CAAC,AA9CD,IA8CC;AA9CY,gDAAkB"}
@@ -1,5 +1,5 @@
1
1
  import { CreateInjectorFn, InjectionToken, IServiceLocator } from './IServiceLocator';
2
- import { IProvider, ProviderKey } from './providers/IProvider';
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
- return new ServiceLocator(this.createInjector, this.providerRepo.clone());
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;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,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
+ {"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/providers/IProvider';
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(): SingletonProvider<T>;
16
- asScoped(): ScopedProvider<T>;
17
- asRequested(): IProvider<T>;
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("../core/providers/SingletonProvider");
30
- var ScopedProvider_1 = require("../core/providers/ScopedProvider");
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
- return new SingletonProvider_1.SingletonProvider(this.provider);
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.asScoped = function () {
76
- return new ScopedProvider_1.ScopedProvider(this.provider);
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.asRequested = function () {
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,yEAAwE;AACxE,mEAAkE;AAClE,uDAAsD;AAGtD,gEAA+D;AAG/D;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,OAAO,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,kCAAQ,GAAR;QACI,OAAO,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,qCAAW,GAAX;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AA1CD,IA0CC;AA1CY,0CAAe"}
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/providers/IProvider';
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,AAvBD,IAuBC;AAvBY,wCAAc"}
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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMethodsMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/IMethodsMetadataCollector.ts"],"names":[],"mappings":""}
@@ -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"}
@@ -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 '../../features/ioc/IInjectMetadataCollector';
3
- import { InjectFn } from '../../features/ioc/InjectFn';
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);
@@ -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 '../../features/ioc/InjectFn';
2
- import { InjectionToken } from '../../core/IServiceLocator';
3
- import { IInjectMetadataCollector } from '../../features/ioc/IInjectMetadataCollector';
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;
@@ -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/providers/IProvider';
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;AAEnF;IAAA;IAUA,CAAC;IATG,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;IAGL,mBAAC;AAAD,CAAC,AAVD,IAUC;AAVqB,oCAAY"}
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/providers/IProvider';
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;IAAG,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,MAA4B;QAC9B,MAAM,IAAI,qDAAyB,CAAC,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IACL,uBAAC;AAAD,CAAC,AA3BD,IA2BC;AA3BY,4CAAgB"}
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/providers/IProvider';
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
+ }