ts-ioc-container 9.0.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/cjm/core/EmptyProviderRepository.d.ts +2 -2
  2. package/cjm/core/IProviderRepository.d.ts +8 -2
  3. package/cjm/core/IProviderRepository.js +5 -0
  4. package/cjm/core/IProviderRepository.js.map +1 -1
  5. package/cjm/core/IServiceLocator.d.ts +3 -3
  6. package/cjm/core/IServiceLocator.js +0 -5
  7. package/cjm/core/IServiceLocator.js.map +1 -1
  8. package/cjm/core/ProviderRepository.d.ts +3 -3
  9. package/cjm/core/ProviderRepository.js +6 -1
  10. package/cjm/core/ProviderRepository.js.map +1 -1
  11. package/cjm/core/ServiceLocator.d.ts +3 -3
  12. package/cjm/core/ServiceLocator.js +33 -4
  13. package/cjm/core/ServiceLocator.js.map +1 -1
  14. package/cjm/core/provider/ArgsProvider.d.ts +11 -0
  15. package/cjm/core/provider/ArgsProvider.js +67 -0
  16. package/cjm/core/provider/ArgsProvider.js.map +1 -0
  17. package/cjm/core/{IProvider.d.ts → provider/IProvider.d.ts} +8 -3
  18. package/cjm/core/{IProvider.js → provider/IProvider.js} +0 -0
  19. package/cjm/core/provider/IProvider.js.map +1 -0
  20. package/cjm/core/provider/Provider.d.ts +17 -0
  21. package/cjm/core/{Provider.js → provider/Provider.js} +13 -0
  22. package/cjm/core/provider/Provider.js.map +1 -0
  23. package/cjm/core/provider/ProviderDecorator.d.ts +13 -0
  24. package/cjm/core/provider/ProviderDecorator.js +62 -0
  25. package/cjm/core/provider/ProviderDecorator.js.map +1 -0
  26. package/cjm/errors/NoRegistrationKeysProvided.d.ts +4 -0
  27. package/cjm/errors/NoRegistrationKeysProvided.js +30 -0
  28. package/cjm/errors/NoRegistrationKeysProvided.js.map +1 -0
  29. package/cjm/errors/ProviderKeyIsBusy.d.ts +5 -0
  30. package/cjm/errors/ProviderKeyIsBusy.js +30 -0
  31. package/cjm/errors/ProviderKeyIsBusy.js.map +1 -0
  32. package/cjm/features/ProviderBuilder.d.ts +9 -7
  33. package/cjm/features/ProviderBuilder.js +20 -19
  34. package/cjm/features/ProviderBuilder.js.map +1 -1
  35. package/cjm/features/instanceHook/HookedProvider.d.ts +5 -5
  36. package/cjm/features/instanceHook/HookedProvider.js +28 -12
  37. package/cjm/features/instanceHook/HookedProvider.js.map +1 -1
  38. package/cjm/features/mock/IMockProviderStorage.d.ts +2 -1
  39. package/cjm/features/mock/MockProvider.d.ts +2 -1
  40. package/cjm/features/mock/MockProvider.js.map +1 -1
  41. package/cjm/features/mock/MockProviderStorage.d.ts +1 -1
  42. package/cjm/features/mock/MockedRepository.d.ts +2 -1
  43. package/cjm/features/mock/MockedRepository.js.map +1 -1
  44. package/cjm/features/mock/VendorMockProviderStorage.d.ts +1 -1
  45. package/cjm/features/proxy/ProxyInjector.d.ts +1 -1
  46. package/cjm/features/scope/IProvidersMetadataCollector.d.ts +2 -2
  47. package/cjm/features/scope/LevelProvider.d.ts +6 -8
  48. package/cjm/features/scope/LevelProvider.js +26 -27
  49. package/cjm/features/scope/LevelProvider.js.map +1 -1
  50. package/cjm/features/scope/ProvidersMetadataCollector.d.ts +1 -1
  51. package/cjm/features/scope/ProvidersMetadataCollector.js +1 -1
  52. package/cjm/features/scope/ProvidersMetadataCollector.js.map +1 -1
  53. package/cjm/features/scope/SingletonProvider.d.ts +6 -6
  54. package/cjm/features/scope/SingletonProvider.js +27 -11
  55. package/cjm/features/scope/SingletonProvider.js.map +1 -1
  56. package/cjm/features/scope/TaggedProvider.d.ts +6 -8
  57. package/cjm/features/scope/TaggedProvider.js +26 -43
  58. package/cjm/features/scope/TaggedProvider.js.map +1 -1
  59. package/cjm/features/scope/decorators.d.ts +5 -1
  60. package/cjm/features/scope/decorators.js +54 -1
  61. package/cjm/features/scope/decorators.js.map +1 -1
  62. package/cjm/index.d.ts +5 -3
  63. package/cjm/index.js +5 -2
  64. package/cjm/index.js.map +1 -1
  65. package/esm/core/EmptyProviderRepository.d.ts +2 -2
  66. package/esm/core/IProviderRepository.d.ts +8 -2
  67. package/esm/core/IProviderRepository.js +3 -1
  68. package/esm/core/IProviderRepository.js.map +1 -1
  69. package/esm/core/IServiceLocator.d.ts +3 -3
  70. package/esm/core/IServiceLocator.js +1 -3
  71. package/esm/core/IServiceLocator.js.map +1 -1
  72. package/esm/core/ProviderRepository.d.ts +3 -3
  73. package/esm/core/ProviderRepository.js +5 -1
  74. package/esm/core/ProviderRepository.js.map +1 -1
  75. package/esm/core/ServiceLocator.d.ts +3 -3
  76. package/esm/core/ServiceLocator.js +10 -3
  77. package/esm/core/ServiceLocator.js.map +1 -1
  78. package/esm/core/provider/ArgsProvider.d.ts +11 -0
  79. package/esm/core/provider/ArgsProvider.js +15 -0
  80. package/esm/core/provider/ArgsProvider.js.map +1 -0
  81. package/esm/core/{IProvider.d.ts → provider/IProvider.d.ts} +8 -3
  82. package/esm/core/{IProvider.js → provider/IProvider.js} +0 -0
  83. package/esm/core/provider/IProvider.js.map +1 -0
  84. package/esm/core/provider/Provider.d.ts +17 -0
  85. package/esm/core/{Provider.js → provider/Provider.js} +8 -0
  86. package/esm/core/provider/Provider.js.map +1 -0
  87. package/esm/core/provider/ProviderDecorator.d.ts +13 -0
  88. package/esm/core/provider/ProviderDecorator.js +22 -0
  89. package/esm/core/provider/ProviderDecorator.js.map +1 -0
  90. package/esm/errors/NoRegistrationKeysProvided.d.ts +4 -0
  91. package/esm/errors/NoRegistrationKeysProvided.js +8 -0
  92. package/esm/errors/NoRegistrationKeysProvided.js.map +1 -0
  93. package/esm/errors/ProviderKeyIsBusy.d.ts +5 -0
  94. package/esm/errors/ProviderKeyIsBusy.js +8 -0
  95. package/esm/errors/ProviderKeyIsBusy.js.map +1 -0
  96. package/esm/features/ProviderBuilder.d.ts +9 -7
  97. package/esm/features/ProviderBuilder.js +11 -7
  98. package/esm/features/ProviderBuilder.js.map +1 -1
  99. package/esm/features/instanceHook/HookedProvider.d.ts +5 -5
  100. package/esm/features/instanceHook/HookedProvider.js +8 -9
  101. package/esm/features/instanceHook/HookedProvider.js.map +1 -1
  102. package/esm/features/mock/IMockProviderStorage.d.ts +2 -1
  103. package/esm/features/mock/MockProvider.d.ts +2 -1
  104. package/esm/features/mock/MockProvider.js.map +1 -1
  105. package/esm/features/mock/MockProviderStorage.d.ts +1 -1
  106. package/esm/features/mock/MockedRepository.d.ts +2 -1
  107. package/esm/features/mock/MockedRepository.js.map +1 -1
  108. package/esm/features/mock/VendorMockProviderStorage.d.ts +1 -1
  109. package/esm/features/proxy/ProxyInjector.d.ts +1 -1
  110. package/esm/features/scope/IProvidersMetadataCollector.d.ts +2 -2
  111. package/esm/features/scope/LevelProvider.d.ts +6 -8
  112. package/esm/features/scope/LevelProvider.js +7 -11
  113. package/esm/features/scope/LevelProvider.js.map +1 -1
  114. package/esm/features/scope/ProvidersMetadataCollector.d.ts +1 -1
  115. package/esm/features/scope/ProvidersMetadataCollector.js +1 -1
  116. package/esm/features/scope/ProvidersMetadataCollector.js.map +1 -1
  117. package/esm/features/scope/SingletonProvider.d.ts +6 -6
  118. package/esm/features/scope/SingletonProvider.js +8 -9
  119. package/esm/features/scope/SingletonProvider.js.map +1 -1
  120. package/esm/features/scope/TaggedProvider.d.ts +6 -8
  121. package/esm/features/scope/TaggedProvider.js +7 -11
  122. package/esm/features/scope/TaggedProvider.js.map +1 -1
  123. package/esm/features/scope/decorators.d.ts +5 -1
  124. package/esm/features/scope/decorators.js +11 -0
  125. package/esm/features/scope/decorators.js.map +1 -1
  126. package/esm/index.d.ts +5 -3
  127. package/esm/index.js +3 -2
  128. package/esm/index.js.map +1 -1
  129. package/package.json +2 -2
  130. package/cjm/core/IProvider.js.map +0 -1
  131. package/cjm/core/Provider.d.ts +0 -13
  132. package/cjm/core/Provider.js.map +0 -1
  133. package/esm/core/IProvider.js.map +0 -1
  134. package/esm/core/Provider.d.ts +0 -13
  135. package/esm/core/Provider.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { IProvider, ProviderKey, Tag } from './IProvider';
2
- import { IProviderRepository } from './IProviderRepository';
1
+ import { IProvider, Tag } from './provider/IProvider';
2
+ import { IProviderRepository, ProviderKey } from './IProviderRepository';
3
3
  export declare class EmptyProviderRepository implements IProviderRepository {
4
4
  level: number;
5
5
  tags: Tag[];
@@ -1,8 +1,14 @@
1
- import { IProvider, ProviderKey, ScopeOptions, Tag } from './IProvider';
1
+ import { IProvider, ScopeOptions, Tag } from './provider/IProvider';
2
2
  import { IDisposable } from '../helpers/types';
3
+ import { InjectionToken } from './IServiceLocator';
4
+ export declare type RegisterOptions = {
5
+ noOverride: boolean;
6
+ };
7
+ export declare type ProviderKey = string | symbol;
8
+ export declare function isProviderKey<T>(token: InjectionToken<T>): token is ProviderKey;
3
9
  export interface IProviderRepository extends IDisposable, ScopeOptions {
4
10
  clone(tags?: Tag[], parent?: IProviderRepository): IProviderRepository;
5
11
  find<T>(key: ProviderKey): IProvider<T>;
6
- add<T>(key: ProviderKey, provider: IProvider<T>): void;
12
+ add<T>(key: ProviderKey, provider: IProvider<T>, options?: Partial<RegisterOptions>): void;
7
13
  entries(): Array<[ProviderKey, IProvider<any>]>;
8
14
  }
@@ -1,3 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isProviderKey = void 0;
4
+ function isProviderKey(token) {
5
+ return ['string', 'symbol'].includes(typeof token);
6
+ }
7
+ exports.isProviderKey = isProviderKey;
3
8
  //# sourceMappingURL=IProviderRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IProviderRepository.js","sourceRoot":"","sources":["../../lib/core/IProviderRepository.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"IProviderRepository.js","sourceRoot":"","sources":["../../lib/core/IProviderRepository.ts"],"names":[],"mappings":";;;AAUA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
@@ -1,11 +1,11 @@
1
- import { IProvider, ProviderKey, Tag } from './IProvider';
1
+ import { IKeyedProvider, Tag } from './provider/IProvider';
2
2
  import { constructor, IDisposable } from '../helpers/types';
3
+ import { ProviderKey, RegisterOptions } from './IProviderRepository';
3
4
  export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
4
5
  export interface Resolveable {
5
6
  resolve<T>(key: InjectionToken<T>, ...deps: any[]): T;
6
7
  }
7
8
  export interface IServiceLocator extends Resolveable, IDisposable {
8
9
  createScope(tags?: Tag[]): IServiceLocator;
9
- register(key: ProviderKey, provider: IProvider<unknown>): this;
10
+ register(provider: IKeyedProvider<unknown>, options?: Partial<RegisterOptions>): this;
10
11
  }
11
- export declare function isProviderKey<T>(token: InjectionToken<T>): token is ProviderKey;
@@ -1,8 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isProviderKey = void 0;
4
- function isProviderKey(token) {
5
- return ['string', 'symbol'].includes(typeof token);
6
- }
7
- exports.isProviderKey = isProviderKey;
8
3
  //# sourceMappingURL=IServiceLocator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IServiceLocator.js","sourceRoot":"","sources":["../../lib/core/IServiceLocator.ts"],"names":[],"mappings":";;;AAeA,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":""}
@@ -1,5 +1,5 @@
1
- import { IProvider, ProviderKey, Tag } from './IProvider';
2
- import { IProviderRepository } from './IProviderRepository';
1
+ import { IProvider, Tag } from './provider/IProvider';
2
+ import { IProviderRepository, ProviderKey, RegisterOptions } from './IProviderRepository';
3
3
  export declare class ProviderRepository implements IProviderRepository {
4
4
  private parent;
5
5
  readonly level: number;
@@ -7,7 +7,7 @@ export declare class ProviderRepository implements IProviderRepository {
7
7
  static root(tags?: Tag[]): ProviderRepository;
8
8
  private readonly providers;
9
9
  constructor(parent: IProviderRepository, level: number, tags: Tag[]);
10
- add<T>(key: ProviderKey, provider: IProvider<T>): void;
10
+ add<T>(key: ProviderKey, provider: IProvider<T>, options?: Partial<RegisterOptions>): void;
11
11
  clone(tags?: Tag[], parent?: IProviderRepository): IProviderRepository;
12
12
  entries(): Array<[ProviderKey, IProvider<any>]>;
13
13
  dispose(): void;
@@ -38,6 +38,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.ProviderRepository = void 0;
40
40
  var EmptyProviderRepository_1 = require("./EmptyProviderRepository");
41
+ var ProviderKeyIsBusy_1 = require("../errors/ProviderKeyIsBusy");
41
42
  var ProviderRepository = /** @class */ (function () {
42
43
  function ProviderRepository(parent, level, tags) {
43
44
  this.parent = parent;
@@ -49,7 +50,11 @@ var ProviderRepository = /** @class */ (function () {
49
50
  if (tags === void 0) { tags = []; }
50
51
  return new ProviderRepository(new EmptyProviderRepository_1.EmptyProviderRepository(), 0, tags);
51
52
  };
52
- ProviderRepository.prototype.add = function (key, provider) {
53
+ ProviderRepository.prototype.add = function (key, provider, options) {
54
+ if (options === void 0) { options = {}; }
55
+ if (options.noOverride && this.providers.has(key)) {
56
+ throw new ProviderKeyIsBusy_1.ProviderKeyIsBusy(key);
57
+ }
53
58
  this.providers.set(key, provider);
54
59
  };
55
60
  ProviderRepository.prototype.clone = function (tags, parent) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qEAAoE;AAEpE;IAOI,4BAAoB,MAA2B,EAAW,KAAa,EAAW,IAAW;QAAzE,WAAM,GAAN,MAAM,CAAqB;QAAW,UAAK,GAAL,KAAK,CAAQ;QAAW,SAAI,GAAJ,IAAI,CAAO;QAF5E,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE4B,CAAC;IAN1F,uBAAI,GAAX,UAAY,IAAgB;QAAhB,qBAAA,EAAA,SAAgB;QACxB,OAAO,IAAI,kBAAkB,CAAC,IAAI,iDAAuB,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAMD,gCAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,kCAAK,GAAL,UAAM,IAAgB,EAAE,MAAkC;;QAApD,qBAAA,EAAA,SAAgB;QAAE,uBAAA,EAAA,aAAkC;QACtD,IAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;YACpE,KAA8B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAArC,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;iBACnC;aACJ;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAO,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,oCAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,iDAAuB,EAAE,CAAC;IAChD,CAAC;IAED,iCAAI,GAAJ,UAAQ,GAAgB;QACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;QACzD,OAAO,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;IACpF,CAAC;IACL,yBAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,gDAAkB"}
1
+ {"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qEAAoE;AACpE,iEAAgE;AAEhE;IAOI,4BAAoB,MAA2B,EAAW,KAAa,EAAW,IAAW;QAAzE,WAAM,GAAN,MAAM,CAAqB;QAAW,UAAK,GAAL,KAAK,CAAQ;QAAW,SAAI,GAAJ,IAAI,CAAO;QAF5E,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE4B,CAAC;IAN1F,uBAAI,GAAX,UAAY,IAAgB;QAAhB,qBAAA,EAAA,SAAgB;QACxB,OAAO,IAAI,kBAAkB,CAAC,IAAI,iDAAuB,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAMD,gCAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB,EAAE,OAAsC;QAAtC,wBAAA,EAAA,YAAsC;QACnF,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,kCAAK,GAAL,UAAM,IAAgB,EAAE,MAAkC;;QAApD,qBAAA,EAAA,SAAgB;QAAE,uBAAA,EAAA,aAAkC;QACtD,IAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;YACpE,KAA8B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAArC,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;iBACnC;aACJ;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAO,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,oCAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,iDAAuB,EAAE,CAAC;IAChD,CAAC;IAED,iCAAI,GAAJ,UAAQ,GAAgB;QACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;QACzD,OAAO,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;IACpF,CAAC;IACL,yBAAC;AAAD,CAAC,AA3CD,IA2CC;AA3CY,gDAAkB"}
@@ -1,13 +1,13 @@
1
1
  import { InjectionToken, IServiceLocator } from './IServiceLocator';
2
2
  import { IInjector } from './IInjector';
3
- import { IProvider, ProviderKey, Tag } from './IProvider';
4
- import { IProviderRepository } from './IProviderRepository';
3
+ import { IKeyedProvider, Tag } from './provider/IProvider';
4
+ import { IProviderRepository, RegisterOptions } from './IProviderRepository';
5
5
  export declare class ServiceLocator implements IServiceLocator {
6
6
  private readonly injector;
7
7
  private readonly providerRepo;
8
8
  static root(injector: IInjector, tags?: Tag[]): ServiceLocator;
9
9
  constructor(injector: IInjector, providerRepo: IProviderRepository);
10
- register(key: ProviderKey, provider: IProvider<unknown>): this;
10
+ register(provider: IKeyedProvider<unknown>, options?: Partial<RegisterOptions>): this;
11
11
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
12
12
  createScope(tags?: Tag[]): IServiceLocator;
13
13
  dispose(): void;
@@ -1,4 +1,15 @@
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
+ };
2
13
  var __read = (this && this.__read) || function (o, n) {
3
14
  var m = typeof Symbol === "function" && o[Symbol.iterator];
4
15
  if (!m) return o;
@@ -26,8 +37,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
37
  };
27
38
  Object.defineProperty(exports, "__esModule", { value: true });
28
39
  exports.ServiceLocator = void 0;
29
- var IServiceLocator_1 = require("./IServiceLocator");
40
+ var IProviderRepository_1 = require("./IProviderRepository");
30
41
  var ProviderRepository_1 = require("./ProviderRepository");
42
+ var NoRegistrationKeysProvided_1 = require("../errors/NoRegistrationKeysProvided");
31
43
  var ServiceLocator = /** @class */ (function () {
32
44
  function ServiceLocator(injector, providerRepo) {
33
45
  this.injector = injector;
@@ -36,8 +48,25 @@ var ServiceLocator = /** @class */ (function () {
36
48
  ServiceLocator.root = function (injector, tags) {
37
49
  return new ServiceLocator(injector, ProviderRepository_1.ProviderRepository.root(tags));
38
50
  };
39
- ServiceLocator.prototype.register = function (key, provider) {
40
- this.providerRepo.add(key, provider);
51
+ ServiceLocator.prototype.register = function (provider, options) {
52
+ var e_1, _a;
53
+ var keys = provider.getKeys();
54
+ if (keys.length === 0) {
55
+ throw new NoRegistrationKeysProvided_1.NoRegistrationKeysProvided();
56
+ }
57
+ try {
58
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
59
+ var key = keys_1_1.value;
60
+ this.providerRepo.add(key, provider, options);
61
+ }
62
+ }
63
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
64
+ finally {
65
+ try {
66
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
67
+ }
68
+ finally { if (e_1) throw e_1.error; }
69
+ }
41
70
  return this;
42
71
  };
43
72
  ServiceLocator.prototype.resolve = function (key) {
@@ -46,7 +75,7 @@ var ServiceLocator = /** @class */ (function () {
46
75
  for (var _i = 1; _i < arguments.length; _i++) {
47
76
  args[_i - 1] = arguments[_i];
48
77
  }
49
- if ((0, IServiceLocator_1.isProviderKey)(key)) {
78
+ if ((0, IProviderRepository_1.isProviderKey)(key)) {
50
79
  var provider = this.providerRepo.find(key);
51
80
  return provider.resolve.apply(provider, __spreadArray([this], __read(args), false));
52
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAmF;AAInF,2DAA0D;AAE1D;IAKI,wBAA6B,QAAmB,EAAmB,YAAiC;QAAvE,aAAQ,GAAR,QAAQ,CAAW;QAAmB,iBAAY,GAAZ,YAAY,CAAqB;IAAG,CAAC;IAJjG,mBAAI,GAAX,UAAY,QAAmB,EAAE,IAAY;QACzC,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,uCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAID,iCAAQ,GAAR,UAAS,GAAgB,EAAE,QAA4B;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE;SAC1C;QAED,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,IAAI,EAAE,GAAG,UAAK,IAAI,WAAE;IACxD,CAAC;IAED,oCAAW,GAAX,UAAY,IAAY;QACpB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,gCAAO,GAAP;QACI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACL,qBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,wCAAc"}
1
+ {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,6DAA4F;AAC5F,2DAA0D;AAC1D,mFAAkF;AAElF;IAKI,wBAA6B,QAAmB,EAAmB,YAAiC;QAAvE,aAAQ,GAAR,QAAQ,CAAW;QAAmB,iBAAY,GAAZ,YAAY,CAAqB;IAAG,CAAC;IAJjG,mBAAI,GAAX,UAAY,QAAmB,EAAE,IAAY;QACzC,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,uCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAID,iCAAQ,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,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;aACjD;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI,IAAA,mCAAa,EAAC,GAAG,CAAC,EAAE;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE;SAC1C;QAED,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,IAAI,EAAE,GAAG,UAAK,IAAI,WAAE;IACxD,CAAC;IAED,oCAAW,GAAX,UAAY,IAAY;QACpB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,gCAAO,GAAP;QACI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACL,qBAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,wCAAc"}
@@ -0,0 +1,11 @@
1
+ import { ProviderDecorator } from './ProviderDecorator';
2
+ import { IKeyedProvider } from './IProvider';
3
+ import { Resolveable } from '../IServiceLocator';
4
+ export declare type ArgsFn = (l: Resolveable) => any[];
5
+ export declare class ArgsProvider<T> extends ProviderDecorator<T> {
6
+ private provider;
7
+ private argsFn;
8
+ constructor(provider: IKeyedProvider<T>, argsFn: ArgsFn);
9
+ resolve(locator: Resolveable, ...args: any[]): T;
10
+ clone(): ProviderDecorator<T>;
11
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.ArgsProvider = void 0;
44
+ var ProviderDecorator_1 = require("./ProviderDecorator");
45
+ var ArgsProvider = /** @class */ (function (_super) {
46
+ __extends(ArgsProvider, _super);
47
+ function ArgsProvider(provider, argsFn) {
48
+ var _this = _super.call(this, provider) || this;
49
+ _this.provider = provider;
50
+ _this.argsFn = argsFn;
51
+ return _this;
52
+ }
53
+ ArgsProvider.prototype.resolve = function (locator) {
54
+ var _a;
55
+ var args = [];
56
+ for (var _i = 1; _i < arguments.length; _i++) {
57
+ args[_i - 1] = arguments[_i];
58
+ }
59
+ return (_a = this.provider).resolve.apply(_a, __spreadArray(__spreadArray([locator], __read(args), false), __read(this.argsFn(locator)), false));
60
+ };
61
+ ArgsProvider.prototype.clone = function () {
62
+ return new ArgsProvider(this.provider.clone(), this.argsFn);
63
+ };
64
+ return ArgsProvider;
65
+ }(ProviderDecorator_1.ProviderDecorator));
66
+ exports.ArgsProvider = ArgsProvider;
67
+ //# sourceMappingURL=ArgsProvider.js.map
@@ -0,0 +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,5 +1,6 @@
1
- import { IServiceLocator, Resolveable } from './IServiceLocator';
2
- import { IDisposable } from '../helpers/types';
1
+ import { IServiceLocator, Resolveable } from '../IServiceLocator';
2
+ import { IDisposable } from '../../helpers/types';
3
+ import { ProviderKey } from '../IProviderRepository';
3
4
  export declare type ResolveDependency<T> = (locator: IServiceLocator, ...args: any[]) => T;
4
5
  export declare type Tag = string | symbol;
5
6
  export interface ScopeOptions {
@@ -11,4 +12,8 @@ export interface IProvider<T> extends IDisposable {
11
12
  resolve(locator: Resolveable, ...args: any[]): T;
12
13
  isValid(filters: ScopeOptions): boolean;
13
14
  }
14
- export declare type ProviderKey = string | symbol;
15
+ export interface IKeyedProvider<T> extends IProvider<T> {
16
+ clone(): IKeyedProvider<T>;
17
+ getKeys(): ProviderKey[];
18
+ addKeys(...keys: ProviderKey[]): this;
19
+ }
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { constructor } from '../../helpers/types';
2
+ import { IKeyedProvider, ResolveDependency, ScopeOptions } from './IProvider';
3
+ import { IServiceLocator } from '../IServiceLocator';
4
+ import { ProviderKey } from '../IProviderRepository';
5
+ export declare class Provider<T> implements IKeyedProvider<T> {
6
+ private readonly resolveDependency;
7
+ static fromClass<T>(value: constructor<T>): Provider<T>;
8
+ static fromValue<T>(value: T): Provider<T>;
9
+ private keys;
10
+ constructor(resolveDependency: ResolveDependency<T>);
11
+ clone(): IKeyedProvider<T>;
12
+ resolve(locator: IServiceLocator, ...args: any[]): T;
13
+ dispose(): void;
14
+ isValid(filters: ScopeOptions): boolean;
15
+ addKeys(...keys: ProviderKey[]): this;
16
+ getKeys(): ProviderKey[];
17
+ }
@@ -29,6 +29,7 @@ exports.Provider = void 0;
29
29
  var Provider = /** @class */ (function () {
30
30
  function Provider(resolveDependency) {
31
31
  this.resolveDependency = resolveDependency;
32
+ this.keys = [];
32
33
  }
33
34
  Provider.fromClass = function (value) {
34
35
  return new Provider(function (l) {
@@ -56,6 +57,18 @@ var Provider = /** @class */ (function () {
56
57
  Provider.prototype.isValid = function (filters) {
57
58
  return true;
58
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
+ };
59
72
  return Provider;
60
73
  }());
61
74
  exports.Provider = Provider;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;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,OAAwB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;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"}
@@ -0,0 +1,13 @@
1
+ import { Resolveable } from '../IServiceLocator';
2
+ import { IKeyedProvider, ScopeOptions } from './IProvider';
3
+ import { ProviderKey } from '../IProviderRepository';
4
+ export declare abstract class ProviderDecorator<T> implements IKeyedProvider<T> {
5
+ private decorated;
6
+ constructor(decorated: IKeyedProvider<T>);
7
+ abstract clone(): ProviderDecorator<T>;
8
+ dispose(): void;
9
+ isValid(filters: ScopeOptions): boolean;
10
+ resolve(locator: Resolveable, ...args: any[]): T;
11
+ addKeys(...keys: ProviderKey[]): this;
12
+ getKeys(): ProviderKey[];
13
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.ProviderDecorator = void 0;
29
+ var ProviderDecorator = /** @class */ (function () {
30
+ function ProviderDecorator(decorated) {
31
+ this.decorated = decorated;
32
+ }
33
+ ProviderDecorator.prototype.dispose = function () {
34
+ this.decorated.dispose();
35
+ };
36
+ ProviderDecorator.prototype.isValid = function (filters) {
37
+ return this.decorated.isValid(filters);
38
+ };
39
+ ProviderDecorator.prototype.resolve = function (locator) {
40
+ var _a;
41
+ var args = [];
42
+ for (var _i = 1; _i < arguments.length; _i++) {
43
+ args[_i - 1] = arguments[_i];
44
+ }
45
+ return (_a = this.decorated).resolve.apply(_a, __spreadArray([locator], __read(args), false));
46
+ };
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
+ return ProviderDecorator;
60
+ }());
61
+ exports.ProviderDecorator = ProviderDecorator;
62
+ //# sourceMappingURL=ProviderDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;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"}
@@ -0,0 +1,4 @@
1
+ export declare class NoRegistrationKeysProvided extends Error {
2
+ name: string;
3
+ constructor();
4
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.NoRegistrationKeysProvided = void 0;
19
+ var NoRegistrationKeysProvided = /** @class */ (function (_super) {
20
+ __extends(NoRegistrationKeysProvided, _super);
21
+ function NoRegistrationKeysProvided() {
22
+ var _this = _super.call(this, "Pls provide registration keys for current provider") || this;
23
+ _this.name = 'NoRegistrationKeysProvided';
24
+ Object.setPrototypeOf(_this, NoRegistrationKeysProvided.prototype);
25
+ return _this;
26
+ }
27
+ return NoRegistrationKeysProvided;
28
+ }(Error));
29
+ exports.NoRegistrationKeysProvided = NoRegistrationKeysProvided;
30
+ //# sourceMappingURL=NoRegistrationKeysProvided.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoRegistrationKeysProvided.js","sourceRoot":"","sources":["../../lib/errors/NoRegistrationKeysProvided.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAAgD,8CAAK;IAGjD;QAAA,YACI,kBAAM,oDAAoD,CAAC,SAG9D;QAND,UAAI,GAAG,4BAA4B,CAAC;QAKhC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;;IACtE,CAAC;IACL,iCAAC;AAAD,CAAC,AARD,CAAgD,KAAK,GAQpD;AARY,gEAA0B"}
@@ -0,0 +1,5 @@
1
+ import { ProviderKey } from '../core/IProviderRepository';
2
+ export declare class ProviderKeyIsBusy extends Error {
3
+ name: string;
4
+ constructor(key: ProviderKey);
5
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ProviderKeyIsBusy = void 0;
19
+ var ProviderKeyIsBusy = /** @class */ (function (_super) {
20
+ __extends(ProviderKeyIsBusy, _super);
21
+ function ProviderKeyIsBusy(key) {
22
+ var _this = _super.call(this, "Provider key (" + key.toString() + ") is busy") || this;
23
+ _this.name = 'ProviderKeyIsBusy';
24
+ Object.setPrototypeOf(_this, ProviderKeyIsBusy.prototype);
25
+ return _this;
26
+ }
27
+ return ProviderKeyIsBusy;
28
+ }(Error));
29
+ exports.ProviderKeyIsBusy = ProviderKeyIsBusy;
30
+ //# sourceMappingURL=ProviderKeyIsBusy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderKeyIsBusy.js","sourceRoot":"","sources":["../../lib/errors/ProviderKeyIsBusy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA;IAAuC,qCAAK;IAGxC,2BAAY,GAAgB;QAA5B,YACI,kBAAM,mBAAiB,GAAG,CAAC,QAAQ,EAAE,cAAW,CAAC,SAGpD;QAND,UAAI,GAAG,mBAAmB,CAAC;QAKvB,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;;IAC7D,CAAC;IACL,wBAAC;AAAD,CAAC,AARD,CAAuC,KAAK,GAQ3C;AARY,8CAAiB"}
@@ -1,20 +1,22 @@
1
- import { IProvider, ResolveDependency, Tag } from '../core/IProvider';
1
+ import { IKeyedProvider, ResolveDependency, Tag } from '../core/provider/IProvider';
2
2
  import { constructor } from '../helpers/types';
3
- import { IServiceLocator } from '../core/IServiceLocator';
4
3
  import { IInstanceHook } from './instanceHook/IInstanceHook';
5
4
  import { ProviderReducer } from './scope/IProvidersMetadataCollector';
5
+ import { ProviderKey } from '../core/IProviderRepository';
6
+ import { ArgsFn } from '../core/provider/ArgsProvider';
6
7
  export declare class ProviderBuilder<T> {
7
8
  private provider;
8
9
  static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
9
10
  static fromValue<T>(value: T): ProviderBuilder<T>;
10
11
  static fromFn<T>(fn: ResolveDependency<T>): ProviderBuilder<T>;
11
- constructor(provider: IProvider<T>);
12
+ constructor(provider: IKeyedProvider<T>);
12
13
  withArgs(...extraArgs: any[]): this;
13
14
  withHook(hook: IInstanceHook): this;
14
- withArgsFn(argsFn: (l: IServiceLocator) => any[]): this;
15
+ withArgsFn(argsFn: ArgsFn): this;
15
16
  withReducer(reducer: ProviderReducer<T>): this;
16
- forTags(tags: Tag[]): this;
17
+ forTags(...tags: Tag[]): this;
17
18
  forLevel(level: number): this;
18
- asSingleton(): IProvider<T>;
19
- build(): IProvider<T>;
19
+ asSingleton(): this;
20
+ forKeys(...keys: ProviderKey[]): this;
21
+ build(): IKeyedProvider<T>;
20
22
  }