ts-ioc-container 10.1.0 → 10.3.2

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 (178) hide show
  1. package/README.md +1 -0
  2. package/cjm/core/Container.d.ts +11 -0
  3. package/cjm/core/{DIContainer.js → Container.js} +11 -15
  4. package/cjm/core/Container.js.map +1 -0
  5. package/cjm/core/ContainerBuilder.d.ts +7 -10
  6. package/cjm/core/ContainerBuilder.js +9 -20
  7. package/cjm/core/ContainerBuilder.js.map +1 -1
  8. package/cjm/core/IContainer.d.ts +7 -0
  9. package/cjm/core/{IDIContainer.js → IContainer.js} +1 -1
  10. package/cjm/core/IContainer.js.map +1 -0
  11. package/cjm/core/IInjector.d.ts +2 -3
  12. package/cjm/core/IInstanceHook.d.ts +6 -0
  13. package/cjm/{features/instanceHook/emptyHook.js → core/IInstanceHook.js} +4 -2
  14. package/cjm/core/IInstanceHook.js.map +1 -0
  15. package/cjm/core/ServiceLocator.d.ts +5 -2
  16. package/cjm/core/ServiceLocator.js +35 -11
  17. package/cjm/core/ServiceLocator.js.map +1 -1
  18. package/cjm/features/ProviderBuilder.d.ts +3 -5
  19. package/cjm/features/ProviderBuilder.js +13 -15
  20. package/cjm/features/ProviderBuilder.js.map +1 -1
  21. package/cjm/features/instanceHook/{decorators/IMethodsMetadataCollector.d.ts → IMethodsMetadataCollector.d.ts} +0 -0
  22. package/cjm/features/instanceHook/{decorators/IMethodsMetadataCollector.js → IMethodsMetadataCollector.js} +0 -0
  23. package/cjm/features/instanceHook/IMethodsMetadataCollector.js.map +1 -0
  24. package/cjm/features/instanceHook/{decorators/MethodsMetadataCollector.d.ts → MethodsMetadataCollector.d.ts} +0 -0
  25. package/cjm/features/instanceHook/{decorators/MethodsMetadataCollector.js → MethodsMetadataCollector.js} +0 -0
  26. package/cjm/features/instanceHook/MethodsMetadataCollector.js.map +1 -0
  27. package/cjm/features/instanceHook/{decorators/decorators.d.ts → decorators.d.ts} +0 -0
  28. package/cjm/features/instanceHook/{decorators/decorators.js → decorators.js} +0 -0
  29. package/cjm/features/instanceHook/decorators.js.map +1 -0
  30. package/cjm/features/ioc/IocInjector.d.ts +5 -7
  31. package/cjm/features/ioc/IocInjector.js +28 -8
  32. package/cjm/features/ioc/IocInjector.js.map +1 -1
  33. package/cjm/features/mock/IMockRepository.d.ts +4 -0
  34. package/cjm/features/{ioc/IInjectMetadataCollector.js → mock/IMockRepository.js} +1 -1
  35. package/cjm/features/mock/IMockRepository.js.map +1 -0
  36. package/cjm/features/mock/MockedServiceLocator.d.ts +12 -0
  37. package/cjm/{core/ServiceLocatorDecorator.js → features/mock/MockedServiceLocator.js} +30 -16
  38. package/cjm/features/mock/MockedServiceLocator.js.map +1 -0
  39. package/cjm/features/proxy/ProxyInjector.d.ts +0 -2
  40. package/cjm/features/proxy/ProxyInjector.js +0 -4
  41. package/cjm/features/proxy/ProxyInjector.js.map +1 -1
  42. package/cjm/features/simple/SimpleInjector.d.ts +0 -2
  43. package/cjm/features/simple/SimpleInjector.js +0 -4
  44. package/cjm/features/simple/SimpleInjector.js.map +1 -1
  45. package/cjm/helpers/utils.d.ts +1 -0
  46. package/cjm/helpers/utils.js +9 -1
  47. package/cjm/helpers/utils.js.map +1 -1
  48. package/cjm/index.d.ts +13 -16
  49. package/cjm/index.js +20 -23
  50. package/cjm/index.js.map +1 -1
  51. package/esm/core/Container.d.ts +11 -0
  52. package/esm/core/{DIContainer.js → Container.js} +5 -8
  53. package/esm/core/Container.js.map +1 -0
  54. package/esm/core/ContainerBuilder.d.ts +7 -10
  55. package/esm/core/ContainerBuilder.js +8 -19
  56. package/esm/core/ContainerBuilder.js.map +1 -1
  57. package/esm/core/IContainer.d.ts +7 -0
  58. package/esm/core/IContainer.js +2 -0
  59. package/esm/core/IContainer.js.map +1 -0
  60. package/esm/core/IInjector.d.ts +2 -3
  61. package/esm/core/IInstanceHook.d.ts +6 -0
  62. package/esm/core/IInstanceHook.js +7 -0
  63. package/esm/core/IInstanceHook.js.map +1 -0
  64. package/esm/core/ServiceLocator.d.ts +5 -2
  65. package/esm/core/ServiceLocator.js +20 -7
  66. package/esm/core/ServiceLocator.js.map +1 -1
  67. package/esm/features/ProviderBuilder.d.ts +3 -5
  68. package/esm/features/ProviderBuilder.js +9 -14
  69. package/esm/features/ProviderBuilder.js.map +1 -1
  70. package/esm/features/instanceHook/{decorators/IMethodsMetadataCollector.d.ts → IMethodsMetadataCollector.d.ts} +0 -0
  71. package/esm/features/instanceHook/{decorators/IMethodsMetadataCollector.js → IMethodsMetadataCollector.js} +0 -0
  72. package/esm/features/instanceHook/IMethodsMetadataCollector.js.map +1 -0
  73. package/esm/features/instanceHook/{decorators/MethodsMetadataCollector.d.ts → MethodsMetadataCollector.d.ts} +0 -0
  74. package/esm/features/instanceHook/{decorators/MethodsMetadataCollector.js → MethodsMetadataCollector.js} +0 -0
  75. package/esm/features/instanceHook/MethodsMetadataCollector.js.map +1 -0
  76. package/esm/features/instanceHook/{decorators/decorators.d.ts → decorators.d.ts} +0 -0
  77. package/esm/features/instanceHook/{decorators/decorators.js → decorators.js} +0 -0
  78. package/esm/features/instanceHook/decorators.js.map +1 -0
  79. package/esm/features/ioc/IocInjector.d.ts +5 -7
  80. package/esm/features/ioc/IocInjector.js +16 -8
  81. package/esm/features/ioc/IocInjector.js.map +1 -1
  82. package/esm/features/mock/IMockRepository.d.ts +4 -0
  83. package/esm/features/mock/IMockRepository.js +2 -0
  84. package/esm/features/mock/IMockRepository.js.map +1 -0
  85. package/esm/features/mock/MockedServiceLocator.d.ts +12 -0
  86. package/esm/features/mock/MockedServiceLocator.js +32 -0
  87. package/esm/features/mock/MockedServiceLocator.js.map +1 -0
  88. package/esm/features/proxy/ProxyInjector.d.ts +0 -2
  89. package/esm/features/proxy/ProxyInjector.js +0 -4
  90. package/esm/features/proxy/ProxyInjector.js.map +1 -1
  91. package/esm/features/simple/SimpleInjector.d.ts +0 -2
  92. package/esm/features/simple/SimpleInjector.js +0 -4
  93. package/esm/features/simple/SimpleInjector.js.map +1 -1
  94. package/esm/helpers/utils.d.ts +1 -0
  95. package/esm/helpers/utils.js +3 -0
  96. package/esm/helpers/utils.js.map +1 -1
  97. package/esm/index.d.ts +13 -16
  98. package/esm/index.js +8 -12
  99. package/esm/index.js.map +1 -1
  100. package/package.json +2 -2
  101. package/cjm/core/DIContainer.d.ts +0 -12
  102. package/cjm/core/DIContainer.js.map +0 -1
  103. package/cjm/core/DIProviderBuilder.d.ts +0 -9
  104. package/cjm/core/DIProviderBuilder.js +0 -20
  105. package/cjm/core/DIProviderBuilder.js.map +0 -1
  106. package/cjm/core/HookedProviderBuilder.d.ts +0 -13
  107. package/cjm/core/HookedProviderBuilder.js +0 -21
  108. package/cjm/core/HookedProviderBuilder.js.map +0 -1
  109. package/cjm/core/IDIContainer.d.ts +0 -14
  110. package/cjm/core/IDIContainer.js.map +0 -1
  111. package/cjm/core/MetadataDIProviderBuilder.d.ts +0 -18
  112. package/cjm/core/MetadataDIProviderBuilder.js +0 -54
  113. package/cjm/core/MetadataDIProviderBuilder.js.map +0 -1
  114. package/cjm/core/ServiceLocatorDecorator.d.ts +0 -11
  115. package/cjm/core/ServiceLocatorDecorator.js.map +0 -1
  116. package/cjm/features/instanceHook/HookedInjector.d.ts +0 -13
  117. package/cjm/features/instanceHook/HookedInjector.js +0 -55
  118. package/cjm/features/instanceHook/HookedInjector.js.map +0 -1
  119. package/cjm/features/instanceHook/HookedProvider.d.ts +0 -12
  120. package/cjm/features/instanceHook/HookedProvider.js +0 -73
  121. package/cjm/features/instanceHook/HookedProvider.js.map +0 -1
  122. package/cjm/features/instanceHook/IResolvableHook.d.ts +0 -15
  123. package/cjm/features/instanceHook/IResolvableHook.js +0 -46
  124. package/cjm/features/instanceHook/IResolvableHook.js.map +0 -1
  125. package/cjm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +0 -1
  126. package/cjm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +0 -1
  127. package/cjm/features/instanceHook/decorators/decorators.js.map +0 -1
  128. package/cjm/features/instanceHook/emptyHook.d.ts +0 -2
  129. package/cjm/features/instanceHook/emptyHook.js.map +0 -1
  130. package/cjm/features/ioc/IInjectMetadataCollector.d.ts +0 -5
  131. package/cjm/features/ioc/IInjectMetadataCollector.js.map +0 -1
  132. package/cjm/features/ioc/decorators/InjectMetadataCollector.d.ts +0 -9
  133. package/cjm/features/ioc/decorators/InjectMetadataCollector.js +0 -22
  134. package/cjm/features/ioc/decorators/InjectMetadataCollector.js.map +0 -1
  135. package/cjm/features/ioc/decorators/decorators.d.ts +0 -8
  136. package/cjm/features/ioc/decorators/decorators.js +0 -46
  137. package/cjm/features/ioc/decorators/decorators.js.map +0 -1
  138. package/esm/core/DIContainer.d.ts +0 -12
  139. package/esm/core/DIContainer.js.map +0 -1
  140. package/esm/core/DIProviderBuilder.d.ts +0 -9
  141. package/esm/core/DIProviderBuilder.js +0 -13
  142. package/esm/core/DIProviderBuilder.js.map +0 -1
  143. package/esm/core/HookedProviderBuilder.d.ts +0 -13
  144. package/esm/core/HookedProviderBuilder.js +0 -16
  145. package/esm/core/HookedProviderBuilder.js.map +0 -1
  146. package/esm/core/IDIContainer.d.ts +0 -14
  147. package/esm/core/IDIContainer.js +0 -2
  148. package/esm/core/IDIContainer.js.map +0 -1
  149. package/esm/core/MetadataDIProviderBuilder.d.ts +0 -18
  150. package/esm/core/MetadataDIProviderBuilder.js +0 -29
  151. package/esm/core/MetadataDIProviderBuilder.js.map +0 -1
  152. package/esm/core/ServiceLocatorDecorator.d.ts +0 -11
  153. package/esm/core/ServiceLocatorDecorator.js +0 -18
  154. package/esm/core/ServiceLocatorDecorator.js.map +0 -1
  155. package/esm/features/instanceHook/HookedInjector.d.ts +0 -13
  156. package/esm/features/instanceHook/HookedInjector.js +0 -20
  157. package/esm/features/instanceHook/HookedInjector.js.map +0 -1
  158. package/esm/features/instanceHook/HookedProvider.d.ts +0 -12
  159. package/esm/features/instanceHook/HookedProvider.js +0 -21
  160. package/esm/features/instanceHook/HookedProvider.js.map +0 -1
  161. package/esm/features/instanceHook/IResolvableHook.d.ts +0 -15
  162. package/esm/features/instanceHook/IResolvableHook.js +0 -19
  163. package/esm/features/instanceHook/IResolvableHook.js.map +0 -1
  164. package/esm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +0 -1
  165. package/esm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +0 -1
  166. package/esm/features/instanceHook/decorators/decorators.js.map +0 -1
  167. package/esm/features/instanceHook/emptyHook.d.ts +0 -2
  168. package/esm/features/instanceHook/emptyHook.js +0 -5
  169. package/esm/features/instanceHook/emptyHook.js.map +0 -1
  170. package/esm/features/ioc/IInjectMetadataCollector.d.ts +0 -5
  171. package/esm/features/ioc/IInjectMetadataCollector.js +0 -2
  172. package/esm/features/ioc/IInjectMetadataCollector.js.map +0 -1
  173. package/esm/features/ioc/decorators/InjectMetadataCollector.d.ts +0 -9
  174. package/esm/features/ioc/decorators/InjectMetadataCollector.js +0 -17
  175. package/esm/features/ioc/decorators/InjectMetadataCollector.js.map +0 -1
  176. package/esm/features/ioc/decorators/decorators.d.ts +0 -8
  177. package/esm/features/ioc/decorators/decorators.js +0 -10
  178. package/esm/features/ioc/decorators/decorators.js.map +0 -1
package/README.md CHANGED
@@ -287,6 +287,7 @@ export class MoqProvider<T> extends MockProvider<T> {
287
287
  }
288
288
  ```
289
289
 
290
+
290
291
  ## Errors
291
292
 
292
293
  - ProviderNotFoundError
@@ -0,0 +1,11 @@
1
+ import { IKeyedProvider, Tag } from './provider/IProvider';
2
+ import { InjectionToken, IServiceLocator, RegisterOptions } from './IServiceLocator';
3
+ import { IContainer } from './IContainer';
4
+ export declare class Container implements IContainer {
5
+ private locator;
6
+ constructor(locator: IServiceLocator);
7
+ createScope(tags?: Tag[]): IContainer;
8
+ register(provider: IKeyedProvider<unknown>, options?: Partial<RegisterOptions>): this;
9
+ resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
10
+ dispose(): void;
11
+ }
@@ -36,21 +36,17 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
36
36
  return to.concat(ar || Array.prototype.slice.call(from));
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.DIContainer = void 0;
39
+ exports.Container = void 0;
40
40
  var NoRegistrationKeysProvided_1 = require("../errors/NoRegistrationKeysProvided");
41
- var DIProviderBuilder_1 = require("./DIProviderBuilder");
42
- var DIContainer = /** @class */ (function () {
43
- function DIContainer(locator, providerBuilder) {
44
- if (providerBuilder === void 0) { providerBuilder = new DIProviderBuilder_1.DIProviderBuilder(); }
41
+ var Container = /** @class */ (function () {
42
+ function Container(locator) {
45
43
  this.locator = locator;
46
- this.providerBuilder = providerBuilder;
47
44
  }
48
- DIContainer.prototype.createScope = function (tags) {
49
- return new DIContainer(this.locator.createScope(tags), this.providerBuilder);
45
+ Container.prototype.createScope = function (tags) {
46
+ return new Container(this.locator.createScope(tags));
50
47
  };
51
- DIContainer.prototype.register = function (fn, options) {
48
+ Container.prototype.register = function (provider, options) {
52
49
  var e_1, _a;
53
- var provider = fn(this.providerBuilder);
54
50
  var keys = provider.getKeys();
55
51
  if (keys.length === 0) {
56
52
  throw new NoRegistrationKeysProvided_1.NoRegistrationKeysProvided();
@@ -70,7 +66,7 @@ var DIContainer = /** @class */ (function () {
70
66
  }
71
67
  return this;
72
68
  };
73
- DIContainer.prototype.resolve = function (key) {
69
+ Container.prototype.resolve = function (key) {
74
70
  var _a;
75
71
  var args = [];
76
72
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -78,10 +74,10 @@ var DIContainer = /** @class */ (function () {
78
74
  }
79
75
  return (_a = this.locator).resolve.apply(_a, __spreadArray([key], __read(args), false));
80
76
  };
81
- DIContainer.prototype.dispose = function () {
77
+ Container.prototype.dispose = function () {
82
78
  this.locator.dispose();
83
79
  };
84
- return DIContainer;
80
+ return Container;
85
81
  }());
86
- exports.DIContainer = DIContainer;
87
- //# sourceMappingURL=DIContainer.js.map
82
+ exports.Container = Container;
83
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/core/Container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,mFAAkF;AAGlF;IACI,mBAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEhD,+BAAW,GAAX,UAAY,IAAY;QACpB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,4BAAQ,GAAR,UAAS,QAAiC,EAAE,OAAkC;;QAC1E,IAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,MAAM,IAAI,uDAA0B,EAAE,CAAC;SAC1C;;YACD,KAAkB,IAAA,SAAA,SAAA,IAAI,CAAA,0BAAA,4CAAE;gBAAnB,IAAM,GAAG,iBAAA;gBACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;aACjD;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,2BAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,OAAO,CAAA,KAAA,IAAI,CAAC,OAAO,CAAA,CAAC,OAAO,0BAAC,GAAG,UAAK,IAAI,WAAE;IAC9C,CAAC;IAED,2BAAO,GAAP;QACI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACL,gBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,8BAAS"}
@@ -1,21 +1,18 @@
1
1
  import { IInjector } from './IInjector';
2
2
  import { IServiceLocator } from './IServiceLocator';
3
3
  import { ScopeOptions } from './provider/IProvider';
4
- import { DIContainer } from './DIContainer';
5
- import { MapFn } from './ServiceLocator';
6
- import { IDIProviderBuilder } from './IDIContainer';
7
- import { IResolvableHook } from '../features/instanceHook/IResolvableHook';
4
+ import { Container } from './Container';
5
+ import { IInstanceHook } from './IInstanceHook';
6
+ export declare type MapFn<T> = (value: T) => T;
8
7
  export declare class ContainerBuilder {
9
8
  private injector;
10
9
  private parent;
11
- private providerBuilder;
12
10
  private mapFn;
13
11
  private options;
14
- constructor(injector: IInjector, parent?: IServiceLocator, providerBuilder?: IDIProviderBuilder, mapFn?: MapFn<IServiceLocator>, options?: Partial<ScopeOptions>);
12
+ private hook;
13
+ constructor(injector: IInjector, parent?: IServiceLocator, mapFn?: MapFn<IServiceLocator>, options?: Partial<ScopeOptions>, hook?: IInstanceHook);
15
14
  mapLocator(fn: MapFn<IServiceLocator>): this;
16
- withHook(hook: IResolvableHook): this;
17
- mapInjector(fn: MapFn<IInjector>): this;
18
- mapProviderBuilder(fn: MapFn<IDIProviderBuilder>): this;
15
+ setHook(hook: IInstanceHook): this;
19
16
  withOptions(options: Partial<ScopeOptions>): this;
20
- build(): DIContainer;
17
+ build(): Container;
21
18
  }
@@ -3,39 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContainerBuilder = void 0;
4
4
  var EmptyServiceLocator_1 = require("./EmptyServiceLocator");
5
5
  var utils_1 = require("../helpers/utils");
6
- var DIContainer_1 = require("./DIContainer");
6
+ var Container_1 = require("./Container");
7
7
  var ServiceLocator_1 = require("./ServiceLocator");
8
- var DIProviderBuilder_1 = require("./DIProviderBuilder");
9
- var HookedProviderBuilder_1 = require("./HookedProviderBuilder");
10
- var HookedInjector_1 = require("../features/instanceHook/HookedInjector");
8
+ var IInstanceHook_1 = require("./IInstanceHook");
11
9
  var ContainerBuilder = /** @class */ (function () {
12
- function ContainerBuilder(injector, parent, providerBuilder, mapFn, options) {
10
+ function ContainerBuilder(injector, parent, mapFn, options, hook) {
13
11
  if (parent === void 0) { parent = new EmptyServiceLocator_1.EmptyServiceLocator(); }
14
- if (providerBuilder === void 0) { providerBuilder = new DIProviderBuilder_1.DIProviderBuilder(); }
15
12
  if (mapFn === void 0) { mapFn = utils_1.id; }
16
13
  if (options === void 0) { options = {}; }
14
+ if (hook === void 0) { hook = IInstanceHook_1.emptyHook; }
17
15
  this.injector = injector;
18
16
  this.parent = parent;
19
- this.providerBuilder = providerBuilder;
20
17
  this.mapFn = mapFn;
21
18
  this.options = options;
19
+ this.hook = hook;
22
20
  }
23
21
  ContainerBuilder.prototype.mapLocator = function (fn) {
24
22
  var oldFn = this.mapFn;
25
23
  this.mapFn = function (value) { return fn(oldFn(value)); };
26
24
  return this;
27
25
  };
28
- ContainerBuilder.prototype.withHook = function (hook) {
29
- this.injector = new HookedInjector_1.HookedInjector(this.injector, hook);
30
- this.providerBuilder = new HookedProviderBuilder_1.HookedProviderBuilder(this.providerBuilder, hook);
31
- return this;
32
- };
33
- ContainerBuilder.prototype.mapInjector = function (fn) {
34
- this.injector = fn(this.injector);
35
- return this;
36
- };
37
- ContainerBuilder.prototype.mapProviderBuilder = function (fn) {
38
- this.providerBuilder = fn(this.providerBuilder);
26
+ ContainerBuilder.prototype.setHook = function (hook) {
27
+ this.hook = hook;
39
28
  return this;
40
29
  };
41
30
  ContainerBuilder.prototype.withOptions = function (options) {
@@ -44,8 +33,8 @@ var ContainerBuilder = /** @class */ (function () {
44
33
  };
45
34
  ContainerBuilder.prototype.build = function () {
46
35
  var parent = this.mapFn(this.parent);
47
- var locator = new ServiceLocator_1.ServiceLocator(parent, this.injector, this.options.level, this.options.tags);
48
- return new DIContainer_1.DIContainer(this.mapFn(locator), this.providerBuilder);
36
+ var locator = new ServiceLocator_1.ServiceLocator(parent, this.injector, this.options.level, this.options.tags, this.hook);
37
+ return new Container_1.Container(this.mapFn(locator));
49
38
  };
50
39
  return ContainerBuilder;
51
40
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerBuilder.js","sourceRoot":"","sources":["../../lib/core/ContainerBuilder.ts"],"names":[],"mappings":";;;AAEA,6DAA4D;AAC5D,0CAAsC;AAEtC,6CAA4C;AAC5C,mDAAyD;AAEzD,yDAAwD;AAExD,iEAAgE;AAChE,0EAAyE;AAEzE;IACI,0BACY,QAAmB,EACnB,MAAmD,EACnD,eAA6D,EAC7D,KAAkC,EAClC,OAAmC;QAHnC,uBAAA,EAAA,aAA8B,yCAAmB,EAAE;QACnD,gCAAA,EAAA,sBAA0C,qCAAiB,EAAE;QAC7D,sBAAA,EAAA,QAAgC,UAAE;QAClC,wBAAA,EAAA,YAAmC;QAJnC,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAA6C;QACnD,oBAAe,GAAf,eAAe,CAA8C;QAC7D,UAAK,GAAL,KAAK,CAA6B;QAClC,YAAO,GAAP,OAAO,CAA4B;IAC5C,CAAC;IAEJ,qCAAU,GAAV,UAAW,EAA0B;QACjC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,UAAC,KAAK,IAAK,OAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAhB,CAAgB,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mCAAQ,GAAR,UAAS,IAAqB;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sCAAW,GAAX,UAAY,EAAoB;QAC5B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,6CAAkB,GAAlB,UAAmB,EAA6B;QAC5C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sCAAW,GAAX,UAAY,OAA8B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAK,GAAL;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAM,OAAO,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjG,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACtE,CAAC;IACL,uBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,4CAAgB"}
1
+ {"version":3,"file":"ContainerBuilder.js","sourceRoot":"","sources":["../../lib/core/ContainerBuilder.ts"],"names":[],"mappings":";;;AAEA,6DAA4D;AAC5D,0CAAsC;AAEtC,yCAAwC;AACxC,mDAAkD;AAClD,iDAA2D;AAI3D;IACI,0BACY,QAAmB,EACnB,MAAmD,EACnD,KAAkC,EAClC,OAAmC,EACnC,IAA+B;QAH/B,uBAAA,EAAA,aAA8B,yCAAmB,EAAE;QACnD,sBAAA,EAAA,QAAgC,UAAE;QAClC,wBAAA,EAAA,YAAmC;QACnC,qBAAA,EAAA,OAAsB,yBAAS;QAJ/B,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAA6C;QACnD,UAAK,GAAL,KAAK,CAA6B;QAClC,YAAO,GAAP,OAAO,CAA4B;QACnC,SAAI,GAAJ,IAAI,CAA2B;IACxC,CAAC;IAEJ,qCAAU,GAAV,UAAW,EAA0B;QACjC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,UAAC,KAAK,IAAK,OAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAhB,CAAgB,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAO,GAAP,UAAQ,IAAmB;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sCAAW,GAAX,UAAY,OAA8B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAK,GAAL;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAM,OAAO,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5G,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,CAAC;IACL,uBAAC;AAAD,CAAC,AA9BD,IA8BC;AA9BY,4CAAgB"}
@@ -0,0 +1,7 @@
1
+ import { RegisterOptions, Resolveable } from './IServiceLocator';
2
+ import { IKeyedProvider, Tag } from './provider/IProvider';
3
+ import { IDisposable } from '../helpers/types';
4
+ export interface IContainer extends Resolveable, IDisposable {
5
+ createScope(tags?: Tag[]): IContainer;
6
+ register(fn: IKeyedProvider<unknown>, options?: Partial<RegisterOptions>): this;
7
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IDIContainer.js.map
3
+ //# sourceMappingURL=IContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../lib/core/IContainer.ts"],"names":[],"mappings":""}
@@ -1,6 +1,5 @@
1
- import { constructor, IDisposable } from '../helpers/types';
1
+ import { constructor } from '../helpers/types';
2
2
  import { IServiceLocator } from './IServiceLocator';
3
- export interface IInjector extends IDisposable {
3
+ export interface IInjector {
4
4
  resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: any[]): T;
5
- clone(): IInjector;
6
5
  }
@@ -0,0 +1,6 @@
1
+ export interface IInstanceHook {
2
+ onConstruct<T>(instance: T): T;
3
+ onResolve<T>(instance: T): T;
4
+ onDispose(instance: unknown): void;
5
+ }
6
+ export declare const emptyHook: IInstanceHook;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emptyHook = void 0;
4
+ var utils_1 = require("../helpers/utils");
4
5
  exports.emptyHook = {
5
- onResolve: function (instance) { },
6
+ onResolve: utils_1.id,
7
+ onConstruct: utils_1.id,
6
8
  onDispose: function () { },
7
9
  };
8
- //# sourceMappingURL=emptyHook.js.map
10
+ //# sourceMappingURL=IInstanceHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IInstanceHook.js","sourceRoot":"","sources":["../../lib/core/IInstanceHook.ts"],"names":[],"mappings":";;;AAAA,0CAAsC;AAUzB,QAAA,SAAS,GAAkB;IACpC,SAAS,EAAE,UAAE;IACb,WAAW,EAAE,UAAE;IACf,SAAS,EAAT,cAAmB,CAAC;CACvB,CAAC"}
@@ -1,19 +1,22 @@
1
1
  import { InjectionToken, IServiceLocator, ProviderKey, RegisterOptions } from './IServiceLocator';
2
2
  import { IInjector } from './IInjector';
3
3
  import { IProvider, Tag } from './provider/IProvider';
4
+ import { IInstanceHook } from './IInstanceHook';
4
5
  export declare class ServiceLocator implements IServiceLocator {
5
6
  private parent;
6
7
  private readonly injector;
7
8
  readonly level: number;
8
9
  readonly tags: Tag[];
10
+ private hook;
9
11
  static fromInjector(injector: IInjector): ServiceLocator;
12
+ private instances;
10
13
  private readonly providers;
11
- constructor(parent: IServiceLocator, injector: IInjector, level?: number, tags?: Tag[]);
14
+ constructor(parent: IServiceLocator, injector: IInjector, level?: number, tags?: Tag[], hook?: IInstanceHook);
12
15
  register(key: ProviderKey, provider: IProvider<unknown>, options?: Partial<RegisterOptions>): void;
13
16
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
14
17
  private findValidProvider;
15
18
  createScope(tags?: Tag[], parent?: IServiceLocator): ServiceLocator;
16
19
  entries(): Array<[ProviderKey, IProvider<any>]>;
17
20
  dispose(): void;
21
+ private onResolve;
18
22
  }
19
- export declare type MapFn<T> = (value: T) => T;
@@ -40,14 +40,18 @@ exports.ServiceLocator = void 0;
40
40
  var IServiceLocator_1 = require("./IServiceLocator");
41
41
  var ProviderKeyIsBusy_1 = require("../errors/ProviderKeyIsBusy");
42
42
  var EmptyServiceLocator_1 = require("./EmptyServiceLocator");
43
+ var IInstanceHook_1 = require("./IInstanceHook");
43
44
  var ServiceLocator = /** @class */ (function () {
44
- function ServiceLocator(parent, injector, level, tags) {
45
+ function ServiceLocator(parent, injector, level, tags, hook) {
45
46
  if (level === void 0) { level = 0; }
46
47
  if (tags === void 0) { tags = []; }
48
+ if (hook === void 0) { hook = IInstanceHook_1.emptyHook; }
47
49
  this.parent = parent;
48
50
  this.injector = injector;
49
51
  this.level = level;
50
52
  this.tags = tags;
53
+ this.hook = hook;
54
+ this.instances = new Set();
51
55
  this.providers = new Map();
52
56
  }
53
57
  ServiceLocator.fromInjector = function (injector) {
@@ -62,15 +66,15 @@ var ServiceLocator = /** @class */ (function () {
62
66
  };
63
67
  ServiceLocator.prototype.resolve = function (key) {
64
68
  var _a, _b;
65
- var _c, _d;
66
69
  var args = [];
67
70
  for (var _i = 1; _i < arguments.length; _i++) {
68
71
  args[_i - 1] = arguments[_i];
69
72
  }
70
73
  if ((0, IServiceLocator_1.isProviderKey)(key)) {
71
- return (_d = (_c = this.findValidProvider(key)) === null || _c === void 0 ? void 0 : _c.resolve.apply(_c, __spreadArray([this], __read(args), false))) !== null && _d !== void 0 ? _d : (_a = this.parent).resolve.apply(_a, __spreadArray([key], __read(args), false));
74
+ var provider = this.findValidProvider(key);
75
+ return provider ? this.onResolve(provider.resolve.apply(provider, __spreadArray([this], __read(args), false))) : (_a = this.parent).resolve.apply(_a, __spreadArray([key], __read(args), false));
72
76
  }
73
- return (_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false));
77
+ return this.onResolve((_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false)));
74
78
  };
75
79
  ServiceLocator.prototype.findValidProvider = function (key) {
76
80
  if (!this.providers.has(key)) {
@@ -86,7 +90,7 @@ var ServiceLocator = /** @class */ (function () {
86
90
  var e_1, _a;
87
91
  if (tags === void 0) { tags = []; }
88
92
  if (parent === void 0) { parent = this; }
89
- var scope = new ServiceLocator(parent, this.injector.clone(), this.level + 1, tags);
93
+ var scope = new ServiceLocator(parent, this.injector, this.level + 1, tags, this.hook);
90
94
  try {
91
95
  for (var _b = __values(parent.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
92
96
  var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
@@ -109,23 +113,43 @@ var ServiceLocator = /** @class */ (function () {
109
113
  return Array.from(new Map(__spreadArray(__spreadArray([], __read(this.parent.entries()), false), __read(localProviders), false)).entries());
110
114
  };
111
115
  ServiceLocator.prototype.dispose = function () {
112
- var e_2, _a;
116
+ var e_2, _a, e_3, _b;
117
+ this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
113
118
  try {
114
- for (var _b = __values(this.providers.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
115
- var p = _c.value;
119
+ for (var _c = __values(this.providers.values()), _d = _c.next(); !_d.done; _d = _c.next()) {
120
+ var p = _d.value;
116
121
  p.dispose();
117
122
  }
118
123
  }
119
124
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
120
125
  finally {
121
126
  try {
122
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
127
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
123
128
  }
124
129
  finally { if (e_2) throw e_2.error; }
125
130
  }
126
131
  this.providers.clear();
127
- this.injector.dispose();
128
- this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
132
+ try {
133
+ for (var _e = __values(this.instances), _f = _e.next(); !_f.done; _f = _e.next()) {
134
+ var it_1 = _f.value;
135
+ this.hook.onDispose(it_1);
136
+ }
137
+ }
138
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
139
+ finally {
140
+ try {
141
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
142
+ }
143
+ finally { if (e_3) throw e_3.error; }
144
+ }
145
+ this.instances.clear();
146
+ };
147
+ ServiceLocator.prototype.onResolve = function (instance) {
148
+ if (!this.instances.has(instance)) {
149
+ this.instances.add(instance);
150
+ this.hook.onConstruct(instance);
151
+ }
152
+ return this.hook.onResolve(instance);
129
153
  };
130
154
  return ServiceLocator;
131
155
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,15 @@ import { constructor } from '../helpers/types';
3
3
  import { ProviderReducer } from './scope/IProvidersMetadataCollector';
4
4
  import { ArgsFn } from '../core/provider/ArgsProvider';
5
5
  import { ProviderKey } from '../core/IServiceLocator';
6
- import { IResolvableHook } from './instanceHook/IResolvableHook';
6
+ export declare function fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
7
+ export declare function fromValue<T>(value: T): ProviderBuilder<T>;
8
+ export declare function fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
7
9
  export declare class ProviderBuilder<T> {
8
10
  private provider;
9
- static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
10
- static fromValue<T>(value: T): ProviderBuilder<T>;
11
- static fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
12
11
  constructor(provider: IKeyedProvider<T>);
13
12
  withArgs(...extraArgs: any[]): this;
14
13
  withArgsFn(argsFn: ArgsFn): this;
15
14
  withReducer(reducer: ProviderReducer<T>): this;
16
- withHook(hook: IResolvableHook): this;
17
15
  forTags(...tags: Tag[]): this;
18
16
  forLevel(level: number): this;
19
17
  asSingleton(): this;
@@ -25,26 +25,28 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.ProviderBuilder = void 0;
28
+ exports.ProviderBuilder = exports.fromFn = exports.fromValue = exports.fromClass = void 0;
29
29
  var SingletonProvider_1 = require("./scope/SingletonProvider");
30
30
  var Provider_1 = require("../core/provider/Provider");
31
31
  var TaggedProvider_1 = require("./scope/TaggedProvider");
32
32
  var LevelProvider_1 = require("./scope/LevelProvider");
33
33
  var ArgsProvider_1 = require("../core/provider/ArgsProvider");
34
- var HookedProvider_1 = require("./instanceHook/HookedProvider");
34
+ function fromClass(value) {
35
+ return new ProviderBuilder(Provider_1.Provider.fromClass(value));
36
+ }
37
+ exports.fromClass = fromClass;
38
+ function fromValue(value) {
39
+ return new ProviderBuilder(Provider_1.Provider.fromValue(value));
40
+ }
41
+ exports.fromValue = fromValue;
42
+ function fromFn(fn) {
43
+ return new ProviderBuilder(new Provider_1.Provider(fn));
44
+ }
45
+ exports.fromFn = fromFn;
35
46
  var ProviderBuilder = /** @class */ (function () {
36
47
  function ProviderBuilder(provider) {
37
48
  this.provider = provider;
38
49
  }
39
- ProviderBuilder.fromClass = function (value) {
40
- return new ProviderBuilder(Provider_1.Provider.fromClass(value));
41
- };
42
- ProviderBuilder.fromValue = function (value) {
43
- return new ProviderBuilder(Provider_1.Provider.fromValue(value));
44
- };
45
- ProviderBuilder.fromFn = function (fn) {
46
- return new ProviderBuilder(new Provider_1.Provider(fn));
47
- };
48
50
  ProviderBuilder.prototype.withArgs = function () {
49
51
  var extraArgs = [];
50
52
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -61,10 +63,6 @@ var ProviderBuilder = /** @class */ (function () {
61
63
  this.provider = reducer(this.provider);
62
64
  return this;
63
65
  };
64
- ProviderBuilder.prototype.withHook = function (hook) {
65
- this.provider = new HookedProvider_1.HookedProvider(this.provider, hook);
66
- return this;
67
- };
68
66
  ProviderBuilder.prototype.forTags = function () {
69
67
  var tags = [];
70
68
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAA8D;AAC9D,sDAAqD;AAErD,yDAAwD;AACxD,uDAAsD;AAEtD,8DAAqE;AAGrE,gEAA+D;AAE/D;IAaI,yBAAoB,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAZ5C,yBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,yBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,sBAAM,GAAb,UAAiB,EAAwB;QACrC,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,kCAAQ,GAAR;QAAS,mBAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,8BAAmB;;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX,UAAY,OAA2B;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,IAAqB;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;;QAAQ,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,oCAAI,IAAI,UAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AA1DD,IA0DC;AA1DY,0CAAe"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAA8D;AAC9D,sDAAqD;AAErD,yDAAwD;AACxD,uDAAsD;AAEtD,8DAAqE;AAGrE,SAAgB,SAAS,CAAI,KAAqB;IAC9C,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAI,KAAQ;IACjC,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,8BAEC;AAED,SAAgB,MAAM,CAAI,EAAwB;IAC9C,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAFD,wBAEC;AAED;IACI,yBAAoB,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAEnD,kCAAQ,GAAR;QAAS,mBAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,8BAAmB;;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX,UAAY,OAA2B;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;QAAQ,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP;;QAAQ,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,oCAAI,IAAI,UAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,0CAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMethodsMetadataCollector.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/IMethodsMetadataCollector.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodsMetadataCollector.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/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.ts"],"names":[],"mappings":";;;AAEA,SAAgB,yBAAyB,CAAC,QAAmC;IACzE,OAAO,UAAC,MAAM,EAAE,WAAW;QACvB,wDAAwD;QACxD,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC;AACN,CAAC;AALD,8DAKC"}
@@ -1,11 +1,9 @@
1
1
  import { constructor } from '../../helpers/types';
2
- import { IServiceLocator } from '../../core/IServiceLocator';
2
+ import { InjectionToken, IServiceLocator } from '../../core/IServiceLocator';
3
3
  import { IInjector } from '../../core/IInjector';
4
- import { IInjectMetadataCollector } from './IInjectMetadataCollector';
4
+ import { InjectFn } from './InjectFn';
5
5
  export declare class IocInjector implements IInjector {
6
- private readonly metadataCollector;
7
- constructor(metadataCollector: IInjectMetadataCollector);
8
- resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: any[]): T;
9
- clone(): IInjector;
10
- dispose(): void;
6
+ resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: unknown[]): T;
11
7
  }
8
+ export declare const injectFn: <T>(injectionFn: InjectFn<T>) => ParameterDecorator;
9
+ export declare const inject: <T>(token: InjectionToken<T>, ...args: unknown[]) => ParameterDecorator;
@@ -25,26 +25,46 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.IocInjector = void 0;
28
+ exports.inject = exports.injectFn = exports.IocInjector = void 0;
29
29
  var utils_1 = require("../../helpers/utils");
30
+ var METADATA_KEY = Symbol.for('IocInjector');
31
+ function getInjectionFns(target) {
32
+ var _a;
33
+ return (_a = Reflect.getOwnMetadata(METADATA_KEY, target)) !== null && _a !== void 0 ? _a : [];
34
+ }
35
+ // eslint-disable-next-line @typescript-eslint/ban-types
36
+ function addMetadata(target, parameterIndex, injectionFn) {
37
+ var metadata = getInjectionFns(target);
38
+ metadata[parameterIndex] = injectionFn;
39
+ Reflect.defineMetadata(METADATA_KEY, metadata, target);
40
+ }
30
41
  var IocInjector = /** @class */ (function () {
31
- function IocInjector(metadataCollector) {
32
- this.metadataCollector = metadataCollector;
42
+ function IocInjector() {
33
43
  }
34
44
  IocInjector.prototype.resolve = function (locator, value) {
35
45
  var deps = [];
36
46
  for (var _i = 2; _i < arguments.length; _i++) {
37
47
  deps[_i - 2] = arguments[_i];
38
48
  }
39
- var injectionFns = this.metadataCollector.getInjectionFns(value);
49
+ var injectionFns = getInjectionFns(value);
40
50
  var args = (0, utils_1.merge)(injectionFns, deps.map(utils_1.constant)).map(function (fn) { return fn(locator); });
41
51
  return new (value.bind.apply(value, __spreadArray([void 0], __read(args), false)))();
42
52
  };
43
- IocInjector.prototype.clone = function () {
44
- return new IocInjector(this.metadataCollector);
45
- };
46
- IocInjector.prototype.dispose = function () { };
47
53
  return IocInjector;
48
54
  }());
49
55
  exports.IocInjector = IocInjector;
56
+ var injectFn = function (injectionFn) {
57
+ return function (target, propertyKey, parameterIndex) {
58
+ addMetadata(target, parameterIndex, injectionFn);
59
+ };
60
+ };
61
+ exports.injectFn = injectFn;
62
+ var inject = function (token) {
63
+ var args = [];
64
+ for (var _i = 1; _i < arguments.length; _i++) {
65
+ args[_i - 1] = arguments[_i];
66
+ }
67
+ return (0, exports.injectFn)(function (l) { return l.resolve.apply(l, __spreadArray([token], __read(args), false)); });
68
+ };
69
+ exports.inject = inject;
50
70
  //# sourceMappingURL=IocInjector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IocInjector.js","sourceRoot":"","sources":["../../../lib/features/ioc/IocInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6CAAsD;AAGtD;IACI,qBAA6B,iBAA2C;QAA3C,sBAAiB,GAAjB,iBAAiB,CAA0B;IAAG,CAAC;IAE5E,6BAAO,GAAP,UAAW,OAAwB,EAAE,KAAqB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACtE,IAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACnE,IAAM,IAAI,GAAG,IAAA,aAAK,EAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,EAAX,CAAW,CAAC,CAAC;QAC9E,YAAW,KAAK,YAAL,KAAK,iCAAI,IAAI,cAAE;IAC9B,CAAC;IAED,2BAAK,GAAL;QACI,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAED,6BAAO,GAAP,cAAiB,CAAC;IACtB,kBAAC;AAAD,CAAC,AAdD,IAcC;AAdY,kCAAW"}
1
+ {"version":3,"file":"IocInjector.js","sourceRoot":"","sources":["../../../lib/features/ioc/IocInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6CAAsD;AAGtD,IAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAE/C,SAAS,eAAe,CAAI,MAAS;;IACjC,OAAO,MAAA,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;AAC9D,CAAC;AAED,wDAAwD;AACxD,SAAS,WAAW,CAAI,MAAS,EAAE,cAAsB,EAAE,WAA8B;IACrF,IAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;IACvC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED;IAAA;IAMA,CAAC;IALG,6BAAO,GAAP,UAAW,OAAwB,EAAE,KAAqB;QAAE,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,6BAAkB;;QAC1E,IAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAM,IAAI,GAAG,IAAA,aAAK,EAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,EAAX,CAAW,CAAC,CAAC;QAC9E,YAAW,KAAK,YAAL,KAAK,iCAAI,IAAI,cAAE;IAC9B,CAAC;IACL,kBAAC;AAAD,CAAC,AAND,IAMC;AANY,kCAAW;AAQjB,IAAM,QAAQ,GACjB,UAAI,WAAwB;IAC5B,OAAA,UAAC,MAAM,EAAE,WAAW,EAAE,cAAc;QAChC,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;AAFD,CAEC,CAAC;AAJO,QAAA,QAAQ,YAIf;AAEC,IAAM,MAAM,GAAG,UAAI,KAAwB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAClE,OAAA,IAAA,gBAAQ,EAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI,YAAxB,CAAyB,CAAC;AAA1C,CAA0C,CAAC;AADlC,QAAA,MAAM,UAC4B"}
@@ -0,0 +1,4 @@
1
+ import { IDisposable, InjectionToken } from '../../index';
2
+ export interface IMockRepository extends IDisposable {
3
+ resolve<T>(key: InjectionToken<T>): T;
4
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IInjectMetadataCollector.js.map
3
+ //# sourceMappingURL=IMockRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMockRepository.js","sourceRoot":"","sources":["../../../lib/features/mock/IMockRepository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { InjectionToken, IProvider, IServiceLocator, ProviderKey } from '../../index';
2
+ import { IMockRepository } from './IMockRepository';
3
+ export declare class MockedServiceLocator implements IServiceLocator {
4
+ private decorated;
5
+ private mockRepository;
6
+ constructor(decorated: IServiceLocator, mockRepository: IMockRepository);
7
+ createScope(): IServiceLocator;
8
+ resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
9
+ dispose(): void;
10
+ entries(): Array<[ProviderKey, IProvider<any>]>;
11
+ register(key: ProviderKey, provider: IProvider<unknown>): void;
12
+ }