ts-ioc-container 11.0.5 → 12.0.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 (190) hide show
  1. package/cjm/core/EmptyServiceLocator.d.ts +3 -0
  2. package/cjm/core/EmptyServiceLocator.js +6 -0
  3. package/cjm/core/EmptyServiceLocator.js.map +1 -1
  4. package/cjm/core/IInstanceHook.d.ts +5 -4
  5. package/cjm/core/IInstanceHook.js +3 -3
  6. package/cjm/core/IInstanceHook.js.map +1 -1
  7. package/cjm/core/IServiceLocator.d.ts +4 -2
  8. package/cjm/core/IServiceLocator.js.map +1 -1
  9. package/cjm/core/ProviderRepo.d.ts +9 -0
  10. package/cjm/core/ProviderRepo.js +48 -0
  11. package/cjm/core/ProviderRepo.js.map +1 -0
  12. package/cjm/core/ServiceLocator.d.ts +12 -11
  13. package/cjm/core/ServiceLocator.js +39 -68
  14. package/cjm/core/ServiceLocator.js.map +1 -1
  15. package/cjm/core/provider/ArgsProvider.d.ts +2 -2
  16. package/cjm/core/provider/ArgsProvider.js.map +1 -1
  17. package/cjm/core/provider/IProvider.d.ts +1 -6
  18. package/cjm/core/provider/Provider.d.ts +4 -7
  19. package/cjm/core/provider/Provider.js +2 -14
  20. package/cjm/core/provider/Provider.js.map +1 -1
  21. package/cjm/core/provider/ProviderDecorator.d.ts +5 -7
  22. package/cjm/core/provider/ProviderDecorator.js +3 -12
  23. package/cjm/core/provider/ProviderDecorator.js.map +1 -1
  24. package/cjm/features/container/Container.d.ts +16 -0
  25. package/cjm/{core → features/container}/Container.js +10 -31
  26. package/cjm/features/container/Container.js.map +1 -0
  27. package/cjm/features/container/ContainerProvider.d.ts +9 -0
  28. package/cjm/features/container/ContainerProvider.js +44 -0
  29. package/cjm/features/container/ContainerProvider.js.map +1 -0
  30. package/cjm/features/container/IContainer.d.ts +8 -0
  31. package/cjm/{core → features/container}/IContainer.js +0 -0
  32. package/cjm/features/container/IContainer.js.map +1 -0
  33. package/cjm/features/container/IContainerProvider.d.ts +4 -0
  34. package/cjm/features/container/IContainerProvider.js +3 -0
  35. package/cjm/features/container/IContainerProvider.js.map +1 -0
  36. package/{esm/features/scope → cjm/features/container}/IProvidersMetadataCollector.d.ts +2 -2
  37. package/cjm/features/{scope → container}/IProvidersMetadataCollector.js +0 -0
  38. package/cjm/features/container/IProvidersMetadataCollector.js.map +1 -0
  39. package/cjm/features/container/ProviderBuilder.d.ts +22 -0
  40. package/cjm/features/{ProviderBuilder.js → container/ProviderBuilder.js} +11 -36
  41. package/cjm/features/container/ProviderBuilder.js.map +1 -0
  42. package/cjm/features/{scope → container}/ProvidersMetadataCollector.d.ts +0 -0
  43. package/cjm/features/{scope → container}/ProvidersMetadataCollector.js +1 -1
  44. package/cjm/features/container/ProvidersMetadataCollector.js.map +1 -0
  45. package/cjm/features/{scope → container}/decorators.d.ts +0 -0
  46. package/cjm/features/{scope → container}/decorators.js +9 -10
  47. package/cjm/features/container/decorators.js.map +1 -0
  48. package/cjm/features/{proxy → injectors}/ProxyInjector.d.ts +0 -0
  49. package/cjm/features/{proxy → injectors}/ProxyInjector.js +0 -0
  50. package/cjm/features/injectors/ProxyInjector.js.map +1 -0
  51. package/cjm/features/{simple → injectors}/SimpleInjector.d.ts +0 -0
  52. package/cjm/features/{simple → injectors}/SimpleInjector.js +0 -0
  53. package/cjm/features/injectors/SimpleInjector.js.map +1 -0
  54. package/cjm/features/instanceHook/InstanceHook.d.ts +11 -0
  55. package/cjm/features/instanceHook/InstanceHook.js +52 -0
  56. package/cjm/features/instanceHook/InstanceHook.js.map +1 -0
  57. package/cjm/features/mock/MockedServiceLocator.d.ts +3 -2
  58. package/cjm/features/mock/MockedServiceLocator.js +7 -3
  59. package/cjm/features/mock/MockedServiceLocator.js.map +1 -1
  60. package/cjm/features/{scope → providers}/LevelProvider.d.ts +2 -2
  61. package/cjm/features/{scope → providers}/LevelProvider.js +0 -0
  62. package/cjm/features/providers/LevelProvider.js.map +1 -0
  63. package/{esm/features/scope → cjm/features/providers}/SingletonProvider.d.ts +2 -2
  64. package/cjm/features/{scope → providers}/SingletonProvider.js +0 -0
  65. package/cjm/features/providers/SingletonProvider.js.map +1 -0
  66. package/cjm/features/{scope → providers}/TaggedProvider.d.ts +2 -2
  67. package/cjm/features/{scope → providers}/TaggedProvider.js +0 -0
  68. package/cjm/features/providers/TaggedProvider.js.map +1 -0
  69. package/cjm/helpers/utils.d.ts +1 -0
  70. package/cjm/helpers/utils.js +3 -1
  71. package/cjm/helpers/utils.js.map +1 -1
  72. package/cjm/index.d.ts +13 -14
  73. package/cjm/index.js +10 -12
  74. package/cjm/index.js.map +1 -1
  75. package/esm/core/EmptyServiceLocator.d.ts +3 -0
  76. package/esm/core/EmptyServiceLocator.js +6 -0
  77. package/esm/core/EmptyServiceLocator.js.map +1 -1
  78. package/esm/core/IInstanceHook.d.ts +5 -4
  79. package/esm/core/IInstanceHook.js +4 -4
  80. package/esm/core/IInstanceHook.js.map +1 -1
  81. package/esm/core/IServiceLocator.d.ts +4 -2
  82. package/esm/core/IServiceLocator.js.map +1 -1
  83. package/esm/core/ProviderRepo.d.ts +9 -0
  84. package/esm/core/ProviderRepo.js +21 -0
  85. package/esm/core/ProviderRepo.js.map +1 -0
  86. package/esm/core/ServiceLocator.d.ts +12 -11
  87. package/esm/core/ServiceLocator.js +38 -43
  88. package/esm/core/ServiceLocator.js.map +1 -1
  89. package/esm/core/provider/ArgsProvider.d.ts +2 -2
  90. package/esm/core/provider/ArgsProvider.js.map +1 -1
  91. package/esm/core/provider/IProvider.d.ts +1 -6
  92. package/esm/core/provider/Provider.d.ts +4 -7
  93. package/esm/core/provider/Provider.js +2 -9
  94. package/esm/core/provider/Provider.js.map +1 -1
  95. package/esm/core/provider/ProviderDecorator.d.ts +5 -7
  96. package/esm/core/provider/ProviderDecorator.js +3 -7
  97. package/esm/core/provider/ProviderDecorator.js.map +1 -1
  98. package/esm/features/container/Container.d.ts +16 -0
  99. package/esm/features/container/Container.js +27 -0
  100. package/esm/features/container/Container.js.map +1 -0
  101. package/esm/features/container/ContainerProvider.d.ts +9 -0
  102. package/esm/features/container/ContainerProvider.js +16 -0
  103. package/esm/features/container/ContainerProvider.js.map +1 -0
  104. package/esm/features/container/IContainer.d.ts +8 -0
  105. package/esm/{core → features/container}/IContainer.js +0 -0
  106. package/esm/features/container/IContainer.js.map +1 -0
  107. package/esm/features/container/IContainerProvider.d.ts +4 -0
  108. package/esm/features/container/IContainerProvider.js +2 -0
  109. package/esm/features/container/IContainerProvider.js.map +1 -0
  110. package/{cjm/features/scope → esm/features/container}/IProvidersMetadataCollector.d.ts +2 -2
  111. package/esm/features/{scope → container}/IProvidersMetadataCollector.js +0 -0
  112. package/esm/features/container/IProvidersMetadataCollector.js.map +1 -0
  113. package/esm/features/container/ProviderBuilder.d.ts +22 -0
  114. package/esm/features/{ProviderBuilder.js → container/ProviderBuilder.js} +11 -10
  115. package/esm/features/container/ProviderBuilder.js.map +1 -0
  116. package/esm/features/{scope → container}/ProvidersMetadataCollector.d.ts +0 -0
  117. package/esm/features/{scope → container}/ProvidersMetadataCollector.js +1 -1
  118. package/esm/features/container/ProvidersMetadataCollector.js.map +1 -0
  119. package/esm/features/{scope → container}/decorators.d.ts +0 -0
  120. package/esm/features/{scope → container}/decorators.js +5 -9
  121. package/esm/features/container/decorators.js.map +1 -0
  122. package/esm/features/{proxy → injectors}/ProxyInjector.d.ts +0 -0
  123. package/esm/features/{proxy → injectors}/ProxyInjector.js +0 -0
  124. package/esm/features/injectors/ProxyInjector.js.map +1 -0
  125. package/esm/features/{simple → injectors}/SimpleInjector.d.ts +0 -0
  126. package/esm/features/{simple → injectors}/SimpleInjector.js +0 -0
  127. package/esm/features/injectors/SimpleInjector.js.map +1 -0
  128. package/esm/features/instanceHook/InstanceHook.d.ts +11 -0
  129. package/esm/features/instanceHook/InstanceHook.js +24 -0
  130. package/esm/features/instanceHook/InstanceHook.js.map +1 -0
  131. package/esm/features/mock/MockedServiceLocator.d.ts +3 -2
  132. package/esm/features/mock/MockedServiceLocator.js +7 -4
  133. package/esm/features/mock/MockedServiceLocator.js.map +1 -1
  134. package/esm/features/{scope → providers}/LevelProvider.d.ts +2 -2
  135. package/esm/features/{scope → providers}/LevelProvider.js +0 -0
  136. package/esm/features/providers/LevelProvider.js.map +1 -0
  137. package/{cjm/features/scope → esm/features/providers}/SingletonProvider.d.ts +2 -2
  138. package/esm/features/{scope → providers}/SingletonProvider.js +0 -0
  139. package/esm/features/providers/SingletonProvider.js.map +1 -0
  140. package/esm/features/{scope → providers}/TaggedProvider.d.ts +2 -2
  141. package/esm/features/{scope → providers}/TaggedProvider.js +0 -0
  142. package/esm/features/providers/TaggedProvider.js.map +1 -0
  143. package/esm/helpers/utils.d.ts +1 -0
  144. package/esm/helpers/utils.js +1 -0
  145. package/esm/helpers/utils.js.map +1 -1
  146. package/esm/index.d.ts +13 -14
  147. package/esm/index.js +9 -10
  148. package/esm/index.js.map +1 -1
  149. package/package.json +3 -3
  150. package/cjm/core/Container.d.ts +0 -11
  151. package/cjm/core/Container.js.map +0 -1
  152. package/cjm/core/ContainerBuilder.d.ts +0 -18
  153. package/cjm/core/ContainerBuilder.js +0 -42
  154. package/cjm/core/ContainerBuilder.js.map +0 -1
  155. package/cjm/core/IContainer.d.ts +0 -7
  156. package/cjm/core/IContainer.js.map +0 -1
  157. package/cjm/errors/ProviderKeyIsBusy.d.ts +0 -5
  158. package/cjm/errors/ProviderKeyIsBusy.js +0 -30
  159. package/cjm/errors/ProviderKeyIsBusy.js.map +0 -1
  160. package/cjm/features/ProviderBuilder.d.ts +0 -20
  161. package/cjm/features/ProviderBuilder.js.map +0 -1
  162. package/cjm/features/proxy/ProxyInjector.js.map +0 -1
  163. package/cjm/features/scope/IProvidersMetadataCollector.js.map +0 -1
  164. package/cjm/features/scope/LevelProvider.js.map +0 -1
  165. package/cjm/features/scope/ProvidersMetadataCollector.js.map +0 -1
  166. package/cjm/features/scope/SingletonProvider.js.map +0 -1
  167. package/cjm/features/scope/TaggedProvider.js.map +0 -1
  168. package/cjm/features/scope/decorators.js.map +0 -1
  169. package/cjm/features/simple/SimpleInjector.js.map +0 -1
  170. package/esm/core/Container.d.ts +0 -11
  171. package/esm/core/Container.js +0 -26
  172. package/esm/core/Container.js.map +0 -1
  173. package/esm/core/ContainerBuilder.d.ts +0 -18
  174. package/esm/core/ContainerBuilder.js +0 -33
  175. package/esm/core/ContainerBuilder.js.map +0 -1
  176. package/esm/core/IContainer.d.ts +0 -7
  177. package/esm/core/IContainer.js.map +0 -1
  178. package/esm/errors/ProviderKeyIsBusy.d.ts +0 -5
  179. package/esm/errors/ProviderKeyIsBusy.js +0 -8
  180. package/esm/errors/ProviderKeyIsBusy.js.map +0 -1
  181. package/esm/features/ProviderBuilder.d.ts +0 -20
  182. package/esm/features/ProviderBuilder.js.map +0 -1
  183. package/esm/features/proxy/ProxyInjector.js.map +0 -1
  184. package/esm/features/scope/IProvidersMetadataCollector.js.map +0 -1
  185. package/esm/features/scope/LevelProvider.js.map +0 -1
  186. package/esm/features/scope/ProvidersMetadataCollector.js.map +0 -1
  187. package/esm/features/scope/SingletonProvider.js.map +0 -1
  188. package/esm/features/scope/TaggedProvider.js.map +0 -1
  189. package/esm/features/scope/decorators.js.map +0 -1
  190. package/esm/features/simple/SimpleInjector.js.map +0 -1
@@ -1,9 +1,12 @@
1
1
  import { InjectionToken, IServiceLocator, ProviderKey } from './IServiceLocator';
2
2
  import { IProvider } from './provider/IProvider';
3
+ import { IInstanceHook } from "./IInstanceHook";
3
4
  export declare class EmptyServiceLocator implements IServiceLocator {
4
5
  createScope(): IServiceLocator;
5
6
  dispose(): void;
6
7
  register(): this;
7
8
  resolve<T>(key: InjectionToken<T>): T;
8
9
  entries(): Array<[ProviderKey, IProvider<any>]>;
10
+ has(key: ProviderKey): boolean;
11
+ setHook(hook: IInstanceHook): this;
9
12
  }
@@ -21,6 +21,12 @@ var EmptyServiceLocator = /** @class */ (function () {
21
21
  EmptyServiceLocator.prototype.entries = function () {
22
22
  return [];
23
23
  };
24
+ EmptyServiceLocator.prototype.has = function (key) {
25
+ return false;
26
+ };
27
+ EmptyServiceLocator.prototype.setHook = function (hook) {
28
+ throw new MethodNotImplementedError_1.MethodNotImplementedError();
29
+ };
24
30
  return EmptyServiceLocator;
25
31
  }());
26
32
  exports.EmptyServiceLocator = EmptyServiceLocator;
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyServiceLocator.js","sourceRoot":"","sources":["../../lib/core/EmptyServiceLocator.ts"],"names":[],"mappings":";;;AACA,iFAAgF;AAChF,yEAAwE;AAGxE;IAAA;IAoBA,CAAC;IAnBG,yCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,qCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,sCAAQ,GAAR;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,qCAAO,GAAP;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IACL,0BAAC;AAAD,CAAC,AApBD,IAoBC;AApBY,kDAAmB"}
1
+ {"version":3,"file":"EmptyServiceLocator.js","sourceRoot":"","sources":["../../lib/core/EmptyServiceLocator.ts"],"names":[],"mappings":";;;AACA,iFAAgF;AAChF,yEAAwE;AAIxE;IAAA;IA4BA,CAAC;IA3BG,yCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,qCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,sCAAQ,GAAR;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,qCAAO,GAAP;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,iCAAG,GAAH,UAAI,GAAgB;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,qCAAO,GAAP,UAAQ,IAAmB;QACvB,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IACL,0BAAC;AAAD,CAAC,AA5BD,IA4BC;AA5BY,kDAAmB"}
@@ -1,6 +1,7 @@
1
- export interface IInstanceHook {
2
- onConstruct<T>(instance: T): T;
3
- onResolve<T>(instance: T): T;
4
- onDispose(instance: unknown): void;
1
+ import { IDisposable } from '../helpers/types';
2
+ export interface IInstanceHook extends IDisposable {
3
+ resolve<T>(instance: T): T;
4
+ dispose(): void;
5
+ clone(): IInstanceHook;
5
6
  }
6
7
  export declare const emptyHook: IInstanceHook;
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emptyHook = void 0;
4
4
  var utils_1 = require("../helpers/utils");
5
5
  exports.emptyHook = {
6
- onResolve: utils_1.id,
7
- onConstruct: utils_1.id,
8
- onDispose: function () { },
6
+ resolve: utils_1.id,
7
+ dispose: utils_1.noop,
8
+ clone: function () { return exports.emptyHook; },
9
9
  };
10
10
  //# sourceMappingURL=IInstanceHook.js.map
@@ -1 +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
+ {"version":3,"file":"IInstanceHook.js","sourceRoot":"","sources":["../../lib/core/IInstanceHook.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAW/B,QAAA,SAAS,GAAkB;IACpC,OAAO,EAAE,UAAE;IACX,OAAO,EAAE,YAAI;IACb,KAAK,EAAE,cAAM,OAAA,iBAAS,EAAT,CAAS;CACzB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { IProvider, Tag } from './provider/IProvider';
2
2
  import { constructor, IDisposable } from '../helpers/types';
3
+ import { IInstanceHook } from './IInstanceHook';
3
4
  export declare type RegisterOptions = {
4
- noOverride: boolean;
5
+ override: boolean;
5
6
  };
6
7
  export declare type ProviderKey = string | symbol;
7
8
  export declare function isProviderKey<T>(token: InjectionToken<T>): token is ProviderKey;
@@ -11,6 +12,7 @@ export interface Resolveable {
11
12
  }
12
13
  export interface IServiceLocator extends IDisposable, Resolveable {
13
14
  createScope(tags?: Tag[], parent?: IServiceLocator): IServiceLocator;
14
- register(key: ProviderKey, provider: IProvider<unknown>, options?: Partial<RegisterOptions>): void;
15
+ register(key: ProviderKey, provider: IProvider<unknown>): void;
15
16
  entries(): Array<[ProviderKey, IProvider<any>]>;
17
+ setHook(hook: IInstanceHook): this;
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IServiceLocator.js","sourceRoot":"","sources":["../../lib/core/IServiceLocator.ts"],"names":[],"mappings":";;;AAQA,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":";;;AASA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
@@ -0,0 +1,9 @@
1
+ import { ProviderKey } from './IServiceLocator';
2
+ import { IProvider } from './provider/IProvider';
3
+ export declare class ProviderRepo {
4
+ private readonly providers;
5
+ set(key: ProviderKey, provider: IProvider<unknown>): void;
6
+ get<T>(key: ProviderKey): IProvider<T> | undefined;
7
+ entries(): Array<[ProviderKey, IProvider<any>]>;
8
+ dispose(): void;
9
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __values = (this && this.__values) || function(o) {
3
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
+ if (m) return m.call(o);
5
+ if (o && typeof o.length === "number") return {
6
+ next: function () {
7
+ if (o && i >= o.length) o = void 0;
8
+ return { value: o && o[i++], done: !o };
9
+ }
10
+ };
11
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.ProviderRepo = void 0;
15
+ var ProviderRepo = /** @class */ (function () {
16
+ function ProviderRepo() {
17
+ this.providers = new Map();
18
+ }
19
+ ProviderRepo.prototype.set = function (key, provider) {
20
+ this.providers.set(key, provider);
21
+ };
22
+ ProviderRepo.prototype.get = function (key) {
23
+ return this.providers.get(key);
24
+ };
25
+ ProviderRepo.prototype.entries = function () {
26
+ return Array.from(this.providers.entries());
27
+ };
28
+ ProviderRepo.prototype.dispose = function () {
29
+ var e_1, _a;
30
+ try {
31
+ for (var _b = __values(this.providers.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
32
+ var p = _c.value;
33
+ p.dispose();
34
+ }
35
+ }
36
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
37
+ finally {
38
+ try {
39
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
40
+ }
41
+ finally { if (e_1) throw e_1.error; }
42
+ }
43
+ this.providers.clear();
44
+ };
45
+ return ProviderRepo;
46
+ }());
47
+ exports.ProviderRepo = ProviderRepo;
48
+ //# sourceMappingURL=ProviderRepo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../lib/core/ProviderRepo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA;IAAA;QACqB,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAoBxE,CAAC;IAlBG,0BAAG,GAAH,UAAI,GAAgB,EAAE,QAA4B;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,0BAAG,GAAH,UAAO,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,8BAAO,GAAP;QACI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,8BAAO,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;IAC3B,CAAC;IACL,mBAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,oCAAY"}
@@ -1,22 +1,23 @@
1
- import { InjectionToken, IServiceLocator, ProviderKey, RegisterOptions } from './IServiceLocator';
1
+ import { InjectionToken, IServiceLocator, ProviderKey } from './IServiceLocator';
2
2
  import { IInjector } from './IInjector';
3
3
  import { IProvider, Tag } from './provider/IProvider';
4
4
  import { IInstanceHook } from './IInstanceHook';
5
5
  export declare class ServiceLocator implements IServiceLocator {
6
- private parent;
7
6
  private readonly injector;
8
- readonly level: number;
9
- readonly tags: Tag[];
10
- private hook;
11
- static fromInjector(injector: IInjector): ServiceLocator;
12
- private instances;
13
7
  private readonly providers;
14
- constructor(parent: IServiceLocator, injector: IInjector, level?: number, tags?: Tag[], hook?: IInstanceHook);
15
- register(key: ProviderKey, provider: IProvider<unknown>, options?: Partial<RegisterOptions>): void;
8
+ private parent;
9
+ level: number;
10
+ tags: Tag[];
11
+ private hook;
12
+ constructor(injector: IInjector);
13
+ setParent(parent: IServiceLocator): this;
14
+ setTags(tags: Tag[]): this;
15
+ setLevel(level?: number): this;
16
+ setHook(hook: IInstanceHook): this;
17
+ register(key: ProviderKey, provider: IProvider<unknown>): void;
16
18
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
17
- private findValidProvider;
18
19
  createScope(tags?: Tag[], parent?: IServiceLocator): ServiceLocator;
19
20
  entries(): Array<[ProviderKey, IProvider<any>]>;
20
21
  dispose(): void;
21
- private onResolve;
22
+ map<T extends IServiceLocator>(transform: (l: IServiceLocator) => T): T;
22
23
  }
@@ -38,30 +38,36 @@ var __values = (this && this.__values) || function(o) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.ServiceLocator = void 0;
40
40
  var IServiceLocator_1 = require("./IServiceLocator");
41
- var ProviderKeyIsBusy_1 = require("../errors/ProviderKeyIsBusy");
42
41
  var EmptyServiceLocator_1 = require("./EmptyServiceLocator");
43
42
  var IInstanceHook_1 = require("./IInstanceHook");
43
+ var ProviderRepo_1 = require("./ProviderRepo");
44
44
  var ServiceLocator = /** @class */ (function () {
45
- function ServiceLocator(parent, injector, level, tags, hook) {
46
- if (level === void 0) { level = 0; }
47
- if (tags === void 0) { tags = []; }
48
- if (hook === void 0) { hook = IInstanceHook_1.emptyHook; }
49
- this.parent = parent;
45
+ function ServiceLocator(injector) {
50
46
  this.injector = injector;
51
- this.level = level;
47
+ this.providers = new ProviderRepo_1.ProviderRepo();
48
+ this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
49
+ this.level = 0;
50
+ this.tags = [];
51
+ this.hook = IInstanceHook_1.emptyHook;
52
+ }
53
+ ServiceLocator.prototype.setParent = function (parent) {
54
+ this.parent = parent;
55
+ return this;
56
+ };
57
+ ServiceLocator.prototype.setTags = function (tags) {
52
58
  this.tags = tags;
59
+ return this;
60
+ };
61
+ ServiceLocator.prototype.setLevel = function (level) {
62
+ if (level === void 0) { level = 0; }
63
+ this.level = level;
64
+ return this;
65
+ };
66
+ ServiceLocator.prototype.setHook = function (hook) {
53
67
  this.hook = hook;
54
- this.instances = new Set();
55
- this.providers = new Map();
56
- }
57
- ServiceLocator.fromInjector = function (injector) {
58
- return new ServiceLocator(new EmptyServiceLocator_1.EmptyServiceLocator(), injector);
68
+ return this;
59
69
  };
60
- ServiceLocator.prototype.register = function (key, provider, options) {
61
- if (options === void 0) { options = {}; }
62
- if (options.noOverride && this.providers.has(key)) {
63
- throw new ProviderKeyIsBusy_1.ProviderKeyIsBusy(key);
64
- }
70
+ ServiceLocator.prototype.register = function (key, provider) {
65
71
  this.providers.set(key, provider);
66
72
  };
67
73
  ServiceLocator.prototype.resolve = function (key) {
@@ -71,26 +77,22 @@ var ServiceLocator = /** @class */ (function () {
71
77
  args[_i - 1] = arguments[_i];
72
78
  }
73
79
  if ((0, IServiceLocator_1.isProviderKey)(key)) {
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));
76
- }
77
- return this.onResolve((_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false)));
78
- };
79
- ServiceLocator.prototype.findValidProvider = function (key) {
80
- if (!this.providers.has(key)) {
81
- return undefined;
80
+ var provider = this.providers.get(key);
81
+ return (provider === null || provider === void 0 ? void 0 : provider.isValid(this))
82
+ ? this.hook.resolve(provider.resolve.apply(provider, __spreadArray([this], __read(args), false)))
83
+ : (_a = this.parent).resolve.apply(_a, __spreadArray([key], __read(args), false));
82
84
  }
83
- var provider = this.providers.get(key);
84
- if (!provider.isValid(this)) {
85
- return undefined;
86
- }
87
- return provider;
85
+ return this.hook.resolve((_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false)));
88
86
  };
89
87
  ServiceLocator.prototype.createScope = function (tags, parent) {
90
88
  var e_1, _a;
91
89
  if (tags === void 0) { tags = []; }
92
90
  if (parent === void 0) { parent = this; }
93
- var scope = new ServiceLocator(parent, this.injector, this.level + 1, tags, this.hook);
91
+ var scope = new ServiceLocator(this.injector)
92
+ .setParent(parent)
93
+ .setLevel(this.level + 1)
94
+ .setTags(tags)
95
+ .setHook(this.hook.clone());
94
96
  try {
95
97
  for (var _b = __values(parent.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
96
98
  var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
@@ -109,47 +111,16 @@ var ServiceLocator = /** @class */ (function () {
109
111
  return scope;
110
112
  };
111
113
  ServiceLocator.prototype.entries = function () {
112
- var localProviders = Array.from(this.providers.entries());
113
- return Array.from(new Map(__spreadArray(__spreadArray([], __read(this.parent.entries()), false), __read(localProviders), false)).entries());
114
+ return Array.from(new Map(__spreadArray(__spreadArray([], __read(this.parent.entries()), false), __read(this.providers.entries()), false)).entries());
114
115
  };
115
116
  ServiceLocator.prototype.dispose = function () {
116
- var e_2, _a, e_3, _b;
117
117
  this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
118
- try {
119
- for (var _c = __values(this.providers.values()), _d = _c.next(); !_d.done; _d = _c.next()) {
120
- var p = _d.value;
121
- p.dispose();
122
- }
123
- }
124
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
125
- finally {
126
- try {
127
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
128
- }
129
- finally { if (e_2) throw e_2.error; }
130
- }
131
- this.providers.clear();
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();
118
+ this.providers.dispose();
119
+ this.hook.dispose();
146
120
  };
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);
121
+ ServiceLocator.prototype.map = function (transform) {
122
+ this.parent = transform(this.parent);
123
+ return transform(this);
153
124
  };
154
125
  return ServiceLocator;
155
126
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAiH;AAGjH,iEAAgE;AAChE,6DAA4D;AAC5D,iDAA2D;AAE3D;IAQI,wBACY,MAAuB,EACd,QAAmB,EAC3B,KAAiB,EACjB,IAAgB,EACjB,IAA+B;QAF9B,sBAAA,EAAA,SAAiB;QACjB,qBAAA,EAAA,SAAgB;QACjB,qBAAA,EAAA,OAAsB,yBAAS;QAJ/B,WAAM,GAAN,MAAM,CAAiB;QACd,aAAQ,GAAR,QAAQ,CAAW;QAC3B,UAAK,GAAL,KAAK,CAAY;QACjB,SAAI,GAAJ,IAAI,CAAY;QACjB,SAAI,GAAJ,IAAI,CAA2B;QARnC,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACb,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAQjE,CAAC;IAbG,2BAAY,GAAnB,UAAoB,QAAmB;QACnC,OAAO,IAAI,cAAc,CAAC,IAAI,yCAAmB,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAaD,iCAAQ,GAAR,UAAS,GAAgB,EAAE,QAA4B,EAAE,OAAsC;QAAtC,wBAAA,EAAA,YAAsC;QAC3F,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC/C,MAAM,IAAI,qCAAiB,CAAC,GAAG,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,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,iBAAiB,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA,KAAA,IAAI,CAAC,MAAM,CAAA,CAAC,OAAO,0BAAI,GAAG,UAAK,IAAI,UAAC,CAAC;SAC5G;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,IAAI,EAAE,GAAG,UAAK,IAAI,WAAE,CAAC;IACxE,CAAC;IAEO,0CAAiB,GAAzB,UAA6B,GAAgB;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,SAAS,CAAC;SACpB;QAED,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;QAEzD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,oCAAW,GAAX,UAAY,IAAgB,EAAE,MAA8B;;QAAhD,qBAAA,EAAA,SAAgB;QAAE,uBAAA,EAAA,aAA8B;QACxD,IAAM,KAAK,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;YACzF,KAA8B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAArC,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;iBACzC;aACJ;;;;;;;;;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,gCAAO,GAAP;QACI,IAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,wCAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAK,cAAc,UAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,gCAAO,GAAP;;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,EAAE,CAAC;;YAExC,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;;YAEvB,KAAiB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;gBAA5B,IAAM,IAAE,WAAA;gBACT,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC;aAC3B;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,kCAAS,GAAjB,UAAqB,QAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACnC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IACL,qBAAC;AAAD,CAAC,AAlFD,IAkFC;AAlFY,wCAAc"}
1
+ {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { ProviderDecorator } from './ProviderDecorator';
2
- import { IKeyedProvider } from './IProvider';
3
2
  import { Resolveable } from '../IServiceLocator';
3
+ import { IProvider } from "./IProvider";
4
4
  export declare type ArgsFn = (l: Resolveable) => any[];
5
5
  export declare class ArgsProvider<T> extends ProviderDecorator<T> {
6
6
  private provider;
7
7
  private argsFn;
8
- constructor(provider: IKeyedProvider<T>, argsFn: ArgsFn);
8
+ constructor(provider: IProvider<T>, argsFn: ArgsFn);
9
9
  resolve(locator: Resolveable, ...args: any[]): T;
10
10
  clone(): ProviderDecorator<T>;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/ArgsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAwD;AAMxD;IAAqC,gCAAoB;IACrD,sBAAoB,QAA2B,EAAU,MAAc;QAAvE,YACI,kBAAM,QAAQ,CAAC,SAClB;QAFmB,cAAQ,GAAR,QAAQ,CAAmB;QAAU,YAAM,GAAN,MAAM,CAAQ;;IAEvE,CAAC;IAED,8BAAO,GAAP,UAAQ,OAAoB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,wCAAC,OAAO,UAAK,IAAI,kBAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAE;IAC5E,CAAC;IAED,4BAAK,GAAL;QACI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IACL,mBAAC;AAAD,CAAC,AAZD,CAAqC,qCAAiB,GAYrD;AAZY,oCAAY"}
1
+ {"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/ArgsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAsD;AAMtD;IAAqC,gCAAoB;IACrD,sBAAoB,QAAsB,EAAU,MAAc;QAAlE,YACI,kBAAM,QAAQ,CAAC,SAClB;QAFmB,cAAQ,GAAR,QAAQ,CAAc;QAAU,YAAM,GAAN,MAAM,CAAQ;;IAElE,CAAC;IAED,8BAAO,GAAP,UAAQ,OAAoB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,wCAAC,OAAO,UAAK,IAAI,kBAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAE;IAC5E,CAAC;IAED,4BAAK,GAAL;QACI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IACL,mBAAC;AAAD,CAAC,AAZD,CAAqC,qCAAiB,GAYrD;AAZY,oCAAY"}
@@ -1,4 +1,4 @@
1
- import { ProviderKey, Resolveable } from '../IServiceLocator';
1
+ import { Resolveable } from '../IServiceLocator';
2
2
  import { IDisposable } from '../../helpers/types';
3
3
  export declare type ResolveDependency<T> = (locator: Resolveable, ...args: any[]) => T;
4
4
  export declare type Tag = string | symbol;
@@ -11,8 +11,3 @@ export interface IProvider<T> extends IDisposable {
11
11
  resolve(locator: Resolveable, ...args: any[]): T;
12
12
  isValid(filters: ScopeOptions): boolean;
13
13
  }
14
- export interface IKeyedProvider<T> extends IProvider<T> {
15
- clone(): IKeyedProvider<T>;
16
- getKeys(): ProviderKey[];
17
- addKeys(...keys: ProviderKey[]): this;
18
- }
@@ -1,16 +1,13 @@
1
1
  import { constructor } from '../../helpers/types';
2
- import { IKeyedProvider, ResolveDependency, ScopeOptions } from './IProvider';
3
- import { ProviderKey, Resolveable } from '../IServiceLocator';
4
- export declare class Provider<T> implements IKeyedProvider<T> {
2
+ import { IProvider, ResolveDependency, ScopeOptions } from './IProvider';
3
+ import { Resolveable } from '../IServiceLocator';
4
+ export declare class Provider<T> implements IProvider<T> {
5
5
  private readonly resolveDependency;
6
6
  static fromClass<T>(value: constructor<T>): Provider<T>;
7
7
  static fromValue<T>(value: T): Provider<T>;
8
- private keys;
9
8
  constructor(resolveDependency: ResolveDependency<T>);
10
- clone(): IKeyedProvider<T>;
9
+ clone(): Provider<T>;
11
10
  resolve(locator: Resolveable, ...args: any[]): T;
12
11
  dispose(): void;
13
12
  isValid(filters: ScopeOptions): boolean;
14
- addKeys(...keys: ProviderKey[]): this;
15
- getKeys(): ProviderKey[];
16
13
  }
@@ -29,7 +29,6 @@ exports.Provider = void 0;
29
29
  var Provider = /** @class */ (function () {
30
30
  function Provider(resolveDependency) {
31
31
  this.resolveDependency = resolveDependency;
32
- this.keys = [];
33
32
  }
34
33
  Provider.fromClass = function (value) {
35
34
  return new Provider(function (l) {
@@ -53,22 +52,11 @@ var Provider = /** @class */ (function () {
53
52
  }
54
53
  return this.resolveDependency.apply(this, __spreadArray([locator], __read(args), false));
55
54
  };
56
- Provider.prototype.dispose = function () { };
55
+ Provider.prototype.dispose = function () {
56
+ };
57
57
  Provider.prototype.isValid = function (filters) {
58
58
  return true;
59
59
  };
60
- Provider.prototype.addKeys = function () {
61
- var _a;
62
- var keys = [];
63
- for (var _i = 0; _i < arguments.length; _i++) {
64
- keys[_i] = arguments[_i];
65
- }
66
- (_a = this.keys).push.apply(_a, __spreadArray([], __read(keys), false));
67
- return this;
68
- };
69
- Provider.prototype.getKeys = function () {
70
- return this.keys;
71
- };
72
60
  return Provider;
73
61
  }());
74
62
  exports.Provider = Provider;
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IAWI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;QAF5D,SAAI,GAAkB,EAAE,CAAC;IAEsC,CAAC;IAVjE,kBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,QAAQ,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;IACnE,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAMD,wBAAK,GAAL;QACI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,0BAAO,GAAP,UAAQ,OAAoB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,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;IAED,0BAAO,GAAP;;QAAQ,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAC1B,CAAA,KAAA,IAAI,CAAC,IAAI,CAAA,CAAC,IAAI,oCAAI,IAAI,WAAE;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0BAAO,GAAP;QACI,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACL,eAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,4BAAQ"}
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IASI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IACpE,CAAC;IATM,kBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,QAAQ,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;IACnE,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAKD,wBAAK,GAAL;QACI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,0BAAO,GAAP,UAAQ,OAAoB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IAED,0BAAO,GAAP;IACA,CAAC;IAED,0BAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,eAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,4BAAQ"}
@@ -1,12 +1,10 @@
1
- import { ProviderKey, Resolveable } from '../IServiceLocator';
2
- import { IKeyedProvider, ScopeOptions } from './IProvider';
3
- export declare abstract class ProviderDecorator<T> implements IKeyedProvider<T> {
1
+ import { Resolveable } from '../IServiceLocator';
2
+ import { IProvider, ScopeOptions } from './IProvider';
3
+ export declare abstract class ProviderDecorator<T> implements IProvider<T> {
4
4
  private decorated;
5
- constructor(decorated: IKeyedProvider<T>);
6
- abstract clone(): ProviderDecorator<T>;
5
+ constructor(decorated: IProvider<T>);
6
+ clone(): IProvider<T>;
7
7
  dispose(): void;
8
8
  isValid(filters: ScopeOptions): boolean;
9
9
  resolve(locator: Resolveable, ...args: any[]): T;
10
- addKeys(...keys: ProviderKey[]): this;
11
- getKeys(): ProviderKey[];
12
10
  }
@@ -30,6 +30,9 @@ var ProviderDecorator = /** @class */ (function () {
30
30
  function ProviderDecorator(decorated) {
31
31
  this.decorated = decorated;
32
32
  }
33
+ ProviderDecorator.prototype.clone = function () {
34
+ return this.decorated.clone();
35
+ };
33
36
  ProviderDecorator.prototype.dispose = function () {
34
37
  this.decorated.dispose();
35
38
  };
@@ -44,18 +47,6 @@ var ProviderDecorator = /** @class */ (function () {
44
47
  }
45
48
  return (_a = this.decorated).resolve.apply(_a, __spreadArray([locator], __read(args), false));
46
49
  };
47
- ProviderDecorator.prototype.addKeys = function () {
48
- var _a;
49
- var keys = [];
50
- for (var _i = 0; _i < arguments.length; _i++) {
51
- keys[_i] = arguments[_i];
52
- }
53
- (_a = this.decorated).addKeys.apply(_a, __spreadArray([], __read(keys), false));
54
- return this;
55
- };
56
- ProviderDecorator.prototype.getKeys = function () {
57
- return this.decorated.getKeys();
58
- };
59
50
  return ProviderDecorator;
60
51
  }());
61
52
  exports.ProviderDecorator = ProviderDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAIpD,mCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAoB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IAED,mCAAO,GAAP;;QAAQ,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAC1B,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,oCAAI,IAAI,WAAE;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mCAAO,GAAP;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IACL,wBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBqB,8CAAiB"}
1
+ {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAE/C,iCAAK,GAAL;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAoB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IACL,wBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBqB,8CAAiB"}
@@ -0,0 +1,16 @@
1
+ import { Tag } from '../../core/provider/IProvider';
2
+ import { InjectionToken, IServiceLocator } from '../../core/IServiceLocator';
3
+ import { IContainer } from './IContainer';
4
+ import { IContainerProvider } from './IContainerProvider';
5
+ import { IInjector } from '../../core/IInjector';
6
+ import { IInstanceHook } from '../../core/IInstanceHook';
7
+ export declare class Container implements IContainer {
8
+ private locator;
9
+ static fromInjector(injector: IInjector): Container;
10
+ constructor(locator: IServiceLocator);
11
+ setHook(hook: IInstanceHook): this;
12
+ createScope(tags?: Tag[]): IContainer;
13
+ register(provider: IContainerProvider<unknown>): this;
14
+ resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
15
+ dispose(): void;
16
+ }
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __values = (this && this.__values) || function(o) {
3
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
- if (m) return m.call(o);
5
- if (o && typeof o.length === "number") return {
6
- next: function () {
7
- if (o && i >= o.length) o = void 0;
8
- return { value: o && o[i++], done: !o };
9
- }
10
- };
11
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
- };
13
2
  var __read = (this && this.__read) || function (o, n) {
14
3
  var m = typeof Symbol === "function" && o[Symbol.iterator];
15
4
  if (!m) return o;
@@ -37,33 +26,23 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
37
26
  };
38
27
  Object.defineProperty(exports, "__esModule", { value: true });
39
28
  exports.Container = void 0;
40
- var NoRegistrationKeysProvided_1 = require("../errors/NoRegistrationKeysProvided");
29
+ var ServiceLocator_1 = require("../../core/ServiceLocator");
41
30
  var Container = /** @class */ (function () {
42
31
  function Container(locator) {
43
32
  this.locator = locator;
44
33
  }
34
+ Container.fromInjector = function (injector) {
35
+ return new Container(new ServiceLocator_1.ServiceLocator(injector));
36
+ };
37
+ Container.prototype.setHook = function (hook) {
38
+ this.locator.setHook(hook);
39
+ return this;
40
+ };
45
41
  Container.prototype.createScope = function (tags) {
46
42
  return new Container(this.locator.createScope(tags));
47
43
  };
48
- Container.prototype.register = function (provider, options) {
49
- var e_1, _a;
50
- var keys = provider.getKeys();
51
- if (keys.length === 0) {
52
- throw new NoRegistrationKeysProvided_1.NoRegistrationKeysProvided();
53
- }
54
- try {
55
- for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
56
- var key = keys_1_1.value;
57
- this.locator.register(key, provider, options);
58
- }
59
- }
60
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
61
- finally {
62
- try {
63
- if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
64
- }
65
- finally { if (e_1) throw e_1.error; }
66
- }
44
+ Container.prototype.register = function (provider) {
45
+ provider.appendTo(this.locator);
67
46
  return this;
68
47
  };
69
48
  Container.prototype.resolve = function (key) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/features/container/Container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,4DAA2D;AAG3D;IAKI,mBAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAJzC,sBAAY,GAAnB,UAAoB,QAAmB;QACnC,OAAO,IAAI,SAAS,CAAC,IAAI,+BAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAID,2BAAO,GAAP,UAAQ,IAAmB;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+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,QAAqC;QAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,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,AA5BD,IA4BC;AA5BY,8BAAS"}
@@ -0,0 +1,9 @@
1
+ import { IServiceLocator, ProviderKey } from '../../core/IServiceLocator';
2
+ import { IProvider } from '../../core/provider/IProvider';
3
+ import { IContainerProvider } from './IContainerProvider';
4
+ export declare class ContainerProvider<T> implements IContainerProvider<T> {
5
+ private provider;
6
+ private keys;
7
+ constructor(provider: IProvider<T>, keys?: Set<ProviderKey>);
8
+ appendTo(locator: IServiceLocator): void;
9
+ }