ts-ioc-container 19.2.0 → 20.0.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 (51) hide show
  1. package/cjm/AutoMockedContainer.d.ts +2 -2
  2. package/cjm/AutoMockedContainer.js +1 -1
  3. package/cjm/AutoMockedContainer.js.map +1 -1
  4. package/cjm/core/container/Container.d.ts +4 -4
  5. package/cjm/core/container/Container.js +8 -5
  6. package/cjm/core/container/Container.js.map +1 -1
  7. package/cjm/core/container/EmptyContainer.d.ts +2 -2
  8. package/cjm/core/container/EmptyContainer.js +1 -1
  9. package/cjm/core/container/EmptyContainer.js.map +1 -1
  10. package/cjm/core/container/IContainer.d.ts +6 -2
  11. package/cjm/core/provider/IProvider.d.ts +0 -2
  12. package/cjm/core/provider/IProvider.js.map +1 -1
  13. package/cjm/core/provider/Provider.d.ts +0 -1
  14. package/cjm/core/provider/Provider.js +1 -8
  15. package/cjm/core/provider/Provider.js.map +1 -1
  16. package/cjm/core/provider/ProviderDecorator.d.ts +1 -3
  17. package/cjm/core/provider/ProviderDecorator.js +0 -7
  18. package/cjm/core/provider/ProviderDecorator.js.map +1 -1
  19. package/cjm/core/provider/ProviderRepo.d.ts +2 -2
  20. package/cjm/core/provider/ProviderRepo.js +40 -11
  21. package/cjm/core/provider/ProviderRepo.js.map +1 -1
  22. package/cjm/providers/ProviderBuilder.d.ts +4 -2
  23. package/cjm/providers/ProviderBuilder.js +7 -3
  24. package/cjm/providers/ProviderBuilder.js.map +1 -1
  25. package/cjm/providers/TaggedProvider.js +1 -1
  26. package/esm/AutoMockedContainer.d.ts +2 -2
  27. package/esm/AutoMockedContainer.js +1 -1
  28. package/esm/AutoMockedContainer.js.map +1 -1
  29. package/esm/core/container/Container.d.ts +4 -4
  30. package/esm/core/container/Container.js +6 -4
  31. package/esm/core/container/Container.js.map +1 -1
  32. package/esm/core/container/EmptyContainer.d.ts +2 -2
  33. package/esm/core/container/EmptyContainer.js +1 -1
  34. package/esm/core/container/EmptyContainer.js.map +1 -1
  35. package/esm/core/container/IContainer.d.ts +6 -2
  36. package/esm/core/provider/IProvider.d.ts +0 -2
  37. package/esm/core/provider/IProvider.js.map +1 -1
  38. package/esm/core/provider/Provider.d.ts +0 -1
  39. package/esm/core/provider/Provider.js +1 -8
  40. package/esm/core/provider/Provider.js.map +1 -1
  41. package/esm/core/provider/ProviderDecorator.d.ts +1 -3
  42. package/esm/core/provider/ProviderDecorator.js +0 -7
  43. package/esm/core/provider/ProviderDecorator.js.map +1 -1
  44. package/esm/core/provider/ProviderRepo.d.ts +2 -2
  45. package/esm/core/provider/ProviderRepo.js +8 -5
  46. package/esm/core/provider/ProviderRepo.js.map +1 -1
  47. package/esm/providers/ProviderBuilder.d.ts +4 -2
  48. package/esm/providers/ProviderBuilder.js +7 -3
  49. package/esm/providers/ProviderBuilder.js.map +1 -1
  50. package/esm/providers/TaggedProvider.js +1 -1
  51. package/package.json +2 -2
@@ -1,9 +1,9 @@
1
- import { IContainer, InjectionToken, IProvider } from './index';
1
+ import { IContainer, InjectionToken, IProvider, ProviderKey } from './index';
2
2
  export declare abstract class AutoMockedContainer implements IContainer {
3
3
  createScope(): IContainer;
4
4
  abstract resolve<T>(key: InjectionToken<T>): T;
5
5
  abstract dispose(): void;
6
- getProviders(): IProvider<unknown>[];
6
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
7
7
  register(): this;
8
8
  getInstances(): unknown[];
9
9
  removeScope(): void;
@@ -9,7 +9,7 @@ var AutoMockedContainer = /** @class */ (function () {
9
9
  throw new index_1.MethodNotImplementedError();
10
10
  };
11
11
  AutoMockedContainer.prototype.getProviders = function () {
12
- return [];
12
+ return new Map();
13
13
  };
14
14
  AutoMockedContainer.prototype.register = function () {
15
15
  throw new index_1.MethodNotImplementedError();
@@ -1 +1 @@
1
- {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,iCAA2F;AAE3F;IAAA;IAsBA,CAAC;IArBG,yCAAW,GAAX;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,0CAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,sCAAQ,GAAR;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,yCAAW,GAAX,cAAqB,CAAC;IAC1B,0BAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBqB,kDAAmB"}
1
+ {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,iCAAwG;AAExG;IAAA;IAsBA,CAAC;IArBG,yCAAW,GAAX;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,0CAAY,GAAZ;QACI,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,sCAAQ,GAAR;QACI,MAAM,IAAI,iCAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,yCAAW,GAAX,cAAqB,CAAC;IAC1B,0BAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBqB,kDAAmB"}
@@ -1,6 +1,6 @@
1
- import { IContainer, InjectionToken } from './IContainer';
1
+ import { IContainer, InjectionToken, Registration } from './IContainer';
2
2
  import { IInjector } from '../IInjector';
3
- import { IProvider, Tagged, Tag } from '../provider/IProvider';
3
+ import { IProvider, Tagged, Tag, ProviderKey } from '../provider/IProvider';
4
4
  export declare class Container implements IContainer, Tagged {
5
5
  private readonly injector;
6
6
  private readonly providers;
@@ -13,11 +13,11 @@ export declare class Container implements IContainer, Tagged {
13
13
  parent?: IContainer;
14
14
  tags?: Tag[];
15
15
  });
16
- register(provider: IProvider<unknown>): this;
16
+ register({ key, value }: Registration<unknown>): this;
17
17
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
18
18
  createScope(tags?: Tag[]): Container;
19
19
  dispose(): void;
20
- getProviders(): IProvider<unknown>[];
20
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
21
21
  getInstances(): unknown[];
22
22
  removeScope(child: IContainer): void;
23
23
  private validateContainer;
@@ -53,9 +53,10 @@ var Container = /** @class */ (function () {
53
53
  this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer_1.EmptyContainer();
54
54
  this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
55
55
  }
56
- Container.prototype.register = function (provider) {
56
+ Container.prototype.register = function (_a) {
57
+ var key = _a.key, value = _a.value;
57
58
  this.validateContainer();
58
- this.providers.add(provider);
59
+ this.providers.add(key, value);
59
60
  return this;
60
61
  };
61
62
  Container.prototype.resolve = function (key) {
@@ -79,9 +80,11 @@ var Container = /** @class */ (function () {
79
80
  this.validateContainer();
80
81
  var scope = new Container(this.injector, { parent: this, tags: tags });
81
82
  try {
82
- for (var _b = __values(this.getProviders().filter(function (p) { return p.isValid(scope); })), _c = _b.next(); !_c.done; _c = _b.next()) {
83
- var provider = _c.value;
84
- scope.register(provider.clone());
83
+ for (var _b = __values(this.getProviders().entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
84
+ var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
85
+ if (provider.isValid(scope)) {
86
+ scope.register({ key: key, value: provider.clone() });
87
+ }
85
88
  }
86
89
  }
87
90
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { IContainer, InjectionToken } from './IContainer';
2
- import { IProvider } from '../provider/IProvider';
2
+ import { IProvider, ProviderKey } from '../provider/IProvider';
3
3
  export declare class EmptyContainer implements IContainer {
4
4
  createScope(): IContainer;
5
5
  dispose(): void;
6
6
  register(): this;
7
7
  resolve<T>(key: InjectionToken<T>): T;
8
- getProviders(): IProvider<unknown>[];
8
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
9
9
  getInstances(): unknown[];
10
10
  removeScope(): void;
11
11
  }
@@ -19,7 +19,7 @@ var EmptyContainer = /** @class */ (function () {
19
19
  throw new ProviderNotFoundError_1.ProviderNotFoundError("Cannot find " + key.toString());
20
20
  };
21
21
  EmptyContainer.prototype.getProviders = function () {
22
- return [];
22
+ return new Map();
23
23
  };
24
24
  EmptyContainer.prototype.getInstances = function () {
25
25
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,gFAA+E;AAC/E,2EAA0E;AAG1E;IAAA;IA0BA,CAAC;IAzBG,oCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAQ,GAAR;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,iBAAe,GAAG,CAAC,QAAQ,EAAI,CAAC,CAAC;IACrE,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,oCAAW,GAAX,cAAqB,CAAC;IAC1B,qBAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,wCAAc"}
1
+ {"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,gFAA+E;AAC/E,2EAA0E;AAG1E;IAAA;IA0BA,CAAC;IAzBG,oCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAQ,GAAR;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,iBAAe,GAAG,CAAC,QAAQ,EAAI,CAAC,CAAC;IACrE,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,oCAAW,GAAX,cAAqB,CAAC;IAC1B,qBAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,wCAAc"}
@@ -4,10 +4,14 @@ export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
4
4
  export interface Resolveable {
5
5
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
6
6
  }
7
+ export interface Registration<T> {
8
+ key: ProviderKey;
9
+ value: IProvider<T>;
10
+ }
7
11
  export interface IContainer extends Disposable, Resolveable {
8
12
  createScope(tags?: Tag[]): IContainer;
9
- register(provider: IProvider<unknown>): this;
10
- getProviders(): IProvider<unknown>[];
13
+ register(value: Registration<unknown>): this;
14
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
11
15
  removeScope(child: IContainer): void;
12
16
  getInstances(): unknown[];
13
17
  }
@@ -6,8 +6,6 @@ export interface Tagged {
6
6
  readonly tags: Tag[];
7
7
  }
8
8
  export interface IProvider<T> extends Disposable {
9
- setKey(key: ProviderKey): this;
10
- getKeyOrFail(): ProviderKey;
11
9
  clone(): IProvider<T>;
12
10
  resolve(container: Resolveable, ...args: any[]): T;
13
11
  isValid(filters: Tagged): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":";;;AAuBA,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":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
@@ -7,7 +7,6 @@ export declare class Provider<T> implements IProvider<T> {
7
7
  static fromValue<T>(value: T): Provider<T>;
8
8
  private key?;
9
9
  constructor(resolveDependency: ResolveDependency<T>);
10
- setKey(key: ProviderKey): this;
11
10
  clone(): Provider<T>;
12
11
  resolve(container: Resolveable, ...args: any[]): T;
13
12
  dispose(): void;
@@ -44,15 +44,8 @@ var Provider = /** @class */ (function () {
44
44
  Provider.fromValue = function (value) {
45
45
  return new Provider(function () { return value; });
46
46
  };
47
- Provider.prototype.setKey = function (key) {
48
- this.key = key;
49
- return this;
50
- };
51
47
  Provider.prototype.clone = function () {
52
- if (!this.key) {
53
- throw new ProviderHasNoKeyError_1.ProviderHasNoKeyError('Pls provide registration keys for current provider');
54
- }
55
- return new Provider(this.resolveDependency).setKey(this.key);
48
+ return new Provider(this.resolveDependency);
56
49
  };
57
50
  Provider.prototype.resolve = function (container) {
58
51
  var args = [];
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;AAChE,yDAAwD;AAExD;IAWI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,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,yBAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wBAAK,GAAL;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,0BAAO,GAAP,UAAQ,SAAsB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAY,GAAZ;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACL,eAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,4BAAQ;AA2Cd,IAAM,MAAM,GACf,UAAC,GAAgB;IACjB,OAAA,UAAC,MAAM;QACH,IAAM,WAAW,GAAG,MAAqC,CAAC;QAC1D,IAAM,EAAE,GAAG,qCAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9D,qCAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,UAAC,OAAO,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAvB,CAAuB,CAAC,CAAC;IACpF,CAAC;AAJD,CAIC,CAAC;AANO,QAAA,MAAM,UAMb"}
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;AAChE,yDAAwD;AAExD;IAWI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,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,SAAsB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAY,GAAZ;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACL,eAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,4BAAQ;AAmCd,IAAM,MAAM,GACf,UAAC,GAAgB;IACjB,OAAA,UAAC,MAAM;QACH,IAAM,WAAW,GAAG,MAAqC,CAAC;QAC1D,IAAM,EAAE,GAAG,qCAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9D,qCAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,UAAC,OAAO,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAvB,CAAuB,CAAC,CAAC;IACpF,CAAC;AAJD,CAIC,CAAC;AANO,QAAA,MAAM,UAMb"}
@@ -1,5 +1,5 @@
1
1
  import { Resolveable } from '../container/IContainer';
2
- import { IProvider, ProviderKey, Tagged } from './IProvider';
2
+ import { IProvider, Tagged } from './IProvider';
3
3
  export declare abstract class ProviderDecorator<T> implements IProvider<T> {
4
4
  private decorated;
5
5
  protected constructor(decorated: IProvider<T>);
@@ -7,6 +7,4 @@ export declare abstract class ProviderDecorator<T> implements IProvider<T> {
7
7
  dispose(): void;
8
8
  isValid(filters: Tagged): boolean;
9
9
  resolve(container: Resolveable, ...args: any[]): T;
10
- getKeyOrFail(): ProviderKey;
11
- setKey(key: ProviderKey): this;
12
10
  }
@@ -47,13 +47,6 @@ var ProviderDecorator = /** @class */ (function () {
47
47
  }
48
48
  return (_a = this.decorated).resolve.apply(_a, __spreadArray([container], __read(args), false));
49
49
  };
50
- ProviderDecorator.prototype.getKeyOrFail = function () {
51
- return this.decorated.getKeyOrFail();
52
- };
53
- ProviderDecorator.prototype.setKey = function (key) {
54
- this.decorated.setKey(key);
55
- return this;
56
- };
57
50
  return ProviderDecorator;
58
51
  }());
59
52
  exports.ProviderDecorator = ProviderDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,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,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,wCAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,kCAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,wBAAC;AAAD,CAAC,AA3BD,IA2BC;AA3BqB,8CAAiB"}
1
+ {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,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,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IACL,wBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBqB,8CAAiB"}
@@ -1,8 +1,8 @@
1
1
  import { IProvider, ProviderKey } from './IProvider';
2
2
  export declare class ProviderRepo {
3
3
  private readonly providers;
4
- add(provider: IProvider<unknown>): this;
4
+ add(key: ProviderKey, provider: IProvider<unknown>): this;
5
5
  get<T>(key: ProviderKey): IProvider<T> | undefined;
6
- merge(providers: IProvider<unknown>[]): IProvider<unknown>[];
6
+ merge(providers: Map<ProviderKey, IProvider<unknown>>): Map<ProviderKey, IProvider<unknown>>;
7
7
  dispose(): void;
8
8
  }
@@ -10,51 +10,80 @@ var __values = (this && this.__values) || function(o) {
10
10
  };
11
11
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
12
  };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
13
29
  Object.defineProperty(exports, "__esModule", { value: true });
14
30
  exports.ProviderRepo = void 0;
15
31
  var ProviderRepo = /** @class */ (function () {
16
32
  function ProviderRepo() {
17
33
  this.providers = new Map();
18
34
  }
19
- ProviderRepo.prototype.add = function (provider) {
20
- this.providers.set(provider.getKeyOrFail(), provider);
35
+ ProviderRepo.prototype.add = function (key, provider) {
36
+ this.providers.set(key, provider);
21
37
  return this;
22
38
  };
23
39
  ProviderRepo.prototype.get = function (key) {
24
40
  return this.providers.get(key);
25
41
  };
26
42
  ProviderRepo.prototype.merge = function (providers) {
27
- var e_1, _a;
43
+ var e_1, _a, e_2, _b;
28
44
  var map = new Map();
29
45
  try {
30
- for (var _b = __values(providers.concat(Array.from(this.providers.values()))), _c = _b.next(); !_c.done; _c = _b.next()) {
31
- var p = _c.value;
32
- map.set(p.getKeyOrFail(), p);
46
+ for (var _c = __values(providers.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {
47
+ var _e = __read(_d.value, 2), key = _e[0], value = _e[1];
48
+ map.set(key, value);
33
49
  }
34
50
  }
35
51
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
36
52
  finally {
37
53
  try {
38
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
54
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
39
55
  }
40
56
  finally { if (e_1) throw e_1.error; }
41
57
  }
42
- return Array.from(map.values());
58
+ try {
59
+ for (var _f = __values(this.providers.entries()), _g = _f.next(); !_g.done; _g = _f.next()) {
60
+ var _h = __read(_g.value, 2), key = _h[0], value = _h[1];
61
+ map.set(key, value);
62
+ }
63
+ }
64
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
65
+ finally {
66
+ try {
67
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
68
+ }
69
+ finally { if (e_2) throw e_2.error; }
70
+ }
71
+ return map;
43
72
  };
44
73
  ProviderRepo.prototype.dispose = function () {
45
- var e_2, _a;
74
+ var e_3, _a;
46
75
  try {
47
76
  for (var _b = __values(this.providers.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
48
77
  var p = _c.value;
49
78
  p.dispose();
50
79
  }
51
80
  }
52
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
81
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
53
82
  finally {
54
83
  try {
55
84
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
56
85
  }
57
- finally { if (e_2) throw e_2.error; }
86
+ finally { if (e_3) throw e_3.error; }
58
87
  }
59
88
  this.providers.clear();
60
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA;IAAA;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAyB5E,CAAC;IAvBG,0BAAG,GAAH,UAAI,QAA4B;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0BAAG,GAAH,UAAO,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;IACnD,CAAC;IAED,4BAAK,GAAL,UAAM,SAA+B;;QACjC,IAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;;YACvD,KAAgB,IAAA,KAAA,SAAA,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,gBAAA,4BAAE;gBAAlE,IAAM,CAAC,WAAA;gBACR,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;aAChC;;;;;;;;;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,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,AA1BD,IA0BC;AA1BY,oCAAY"}
1
+ {"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IAAA;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IA4B5E,CAAC;IA1BG,0BAAG,GAAH,UAAI,GAAgB,EAAE,QAA4B;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0BAAG,GAAH,UAAO,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;IACnD,CAAC;IAED,4BAAK,GAAL,UAAM,SAA+C;;QACjD,IAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;;YACvD,KAA2B,IAAA,KAAA,SAAA,SAAS,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAArC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACvB;;;;;;;;;;YACD,KAA2B,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAA1C,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACvB;;;;;;;;;QACD,OAAO,GAAG,CAAC;IACf,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,AA7BD,IA6BC;AA7BY,oCAAY"}
@@ -2,17 +2,19 @@ import { IProvider, ProviderKey, Tag } from '../core/provider/IProvider';
2
2
  import { ProviderReducer } from '../core/provider/IProviderReflector';
3
3
  import { ArgsFn } from './ArgsProvider';
4
4
  import { constructor } from '../core/utils/types';
5
+ import { Registration } from '../core/container/IContainer';
5
6
  export declare class ProviderBuilder<T> {
6
7
  private provider;
7
8
  static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
8
9
  static fromValue<T>(value: T): ProviderBuilder<T>;
9
10
  static fromFn<T>(fn: (...args: any[]) => T): ProviderBuilder<T>;
11
+ private key?;
10
12
  constructor(provider: IProvider<T>);
11
13
  withArgs(...extraArgs: any[]): this;
12
14
  withArgsFn(argsFn: ArgsFn): this;
13
15
  map(reducer: ProviderReducer<T>): ProviderBuilder<T>;
14
- forTags(...tags: Tag[]): this;
16
+ perTags(...tags: Tag[]): this;
15
17
  asSingleton(): this;
16
18
  forKey(key: ProviderKey): this;
17
- build(): IProvider<T>;
19
+ build(): Registration<T>;
18
20
  }
@@ -6,6 +6,7 @@ var TaggedProvider_1 = require("./TaggedProvider");
6
6
  var ArgsProvider_1 = require("./ArgsProvider");
7
7
  var Provider_1 = require("../core/provider/Provider");
8
8
  var ProviderReflector_1 = require("../core/provider/ProviderReflector");
9
+ var ProviderHasNoKeyError_1 = require("../core/provider/ProviderHasNoKeyError");
9
10
  var ProviderBuilder = /** @class */ (function () {
10
11
  function ProviderBuilder(provider) {
11
12
  this.provider = provider;
@@ -34,7 +35,7 @@ var ProviderBuilder = /** @class */ (function () {
34
35
  ProviderBuilder.prototype.map = function (reducer) {
35
36
  return reducer(this);
36
37
  };
37
- ProviderBuilder.prototype.forTags = function () {
38
+ ProviderBuilder.prototype.perTags = function () {
38
39
  var tags = [];
39
40
  for (var _i = 0; _i < arguments.length; _i++) {
40
41
  tags[_i] = arguments[_i];
@@ -47,11 +48,14 @@ var ProviderBuilder = /** @class */ (function () {
47
48
  return this;
48
49
  };
49
50
  ProviderBuilder.prototype.forKey = function (key) {
50
- this.provider.setKey(key);
51
+ this.key = key;
51
52
  return this;
52
53
  };
53
54
  ProviderBuilder.prototype.build = function () {
54
- return this.provider;
55
+ if (!this.key) {
56
+ throw new ProviderHasNoKeyError_1.ProviderHasNoKeyError('Pls provide registration keys for current provider');
57
+ }
58
+ return { key: this.key, value: this.provider };
55
59
  };
56
60
  return ProviderBuilder;
57
61
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,mDAAkD;AAElD,+CAAsD;AACtD,sDAAqD;AAErD,wEAAuE;AAEvE;IAaI,yBAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAZvC,yBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,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,EAAyB;QACtC,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,6BAAG,GAAH,UAAI,OAA2B;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,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,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AA/CD,IA+CC;AA/CY,0CAAe"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,mDAAkD;AAElD,+CAAsD;AACtD,sDAAqD;AAErD,wEAAuE;AAEvE,gFAA+E;AAE/E;IAeI,yBAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAdvC,yBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,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,EAAyB;QACtC,OAAO,IAAI,eAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAMD,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,6BAAG,GAAH,UAAI,OAA2B;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,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,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IACL,sBAAC;AAAD,CAAC,AApDD,IAoDC;AApDY,0CAAe"}
@@ -71,7 +71,7 @@ var perTags = function () {
71
71
  var fn = ProviderReflector_1.providerReflector.findReducerOrCreate(targetClass);
72
72
  ProviderReflector_1.providerReflector.addReducer(targetClass, function (builder) {
73
73
  var _a;
74
- return (_a = fn(builder)).forTags.apply(_a, __spreadArray([], __read(tags), false));
74
+ return (_a = fn(builder)).perTags.apply(_a, __spreadArray([], __read(tags), false));
75
75
  });
76
76
  };
77
77
  };
@@ -1,9 +1,9 @@
1
- import { IContainer, InjectionToken, IProvider } from './index';
1
+ import { IContainer, InjectionToken, IProvider, ProviderKey } from './index';
2
2
  export declare abstract class AutoMockedContainer implements IContainer {
3
3
  createScope(): IContainer;
4
4
  abstract resolve<T>(key: InjectionToken<T>): T;
5
5
  abstract dispose(): void;
6
- getProviders(): IProvider<unknown>[];
6
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
7
7
  register(): this;
8
8
  getInstances(): unknown[];
9
9
  removeScope(): void;
@@ -4,7 +4,7 @@ export class AutoMockedContainer {
4
4
  throw new MethodNotImplementedError();
5
5
  }
6
6
  getProviders() {
7
- return [];
7
+ return new Map();
8
8
  }
9
9
  register() {
10
10
  throw new MethodNotImplementedError();
@@ -1 +1 @@
1
- {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE3F,MAAM,OAAgB,mBAAmB;IACrC,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,KAAU,CAAC;CACzB"}
1
+ {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../lib/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAe,MAAM,SAAS,CAAC;AAExG,MAAM,OAAgB,mBAAmB;IACrC,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAMD,YAAY;QACR,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,KAAU,CAAC;CACzB"}
@@ -1,6 +1,6 @@
1
- import { IContainer, InjectionToken } from './IContainer';
1
+ import { IContainer, InjectionToken, Registration } from './IContainer';
2
2
  import { IInjector } from '../IInjector';
3
- import { IProvider, Tagged, Tag } from '../provider/IProvider';
3
+ import { IProvider, Tagged, Tag, ProviderKey } from '../provider/IProvider';
4
4
  export declare class Container implements IContainer, Tagged {
5
5
  private readonly injector;
6
6
  private readonly providers;
@@ -13,11 +13,11 @@ export declare class Container implements IContainer, Tagged {
13
13
  parent?: IContainer;
14
14
  tags?: Tag[];
15
15
  });
16
- register(provider: IProvider<unknown>): this;
16
+ register({ key, value }: Registration<unknown>): this;
17
17
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
18
18
  createScope(tags?: Tag[]): Container;
19
19
  dispose(): void;
20
- getProviders(): IProvider<unknown>[];
20
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
21
21
  getInstances(): unknown[];
22
22
  removeScope(child: IContainer): void;
23
23
  private validateContainer;
@@ -13,9 +13,9 @@ export class Container {
13
13
  this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer();
14
14
  this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
15
15
  }
16
- register(provider) {
16
+ register({ key, value }) {
17
17
  this.validateContainer();
18
- this.providers.add(provider);
18
+ this.providers.add(key, value);
19
19
  return this;
20
20
  }
21
21
  resolve(key, ...args) {
@@ -31,8 +31,10 @@ export class Container {
31
31
  createScope(tags = []) {
32
32
  this.validateContainer();
33
33
  const scope = new Container(this.injector, { parent: this, tags });
34
- for (const provider of this.getProviders().filter((p) => p.isValid(scope))) {
35
- scope.register(provider.clone());
34
+ for (const [key, provider] of this.getProviders().entries()) {
35
+ if (provider.isValid(scope)) {
36
+ scope.register({ key, value: provider.clone() });
37
+ }
36
38
  }
37
39
  this.children.add(scope);
38
40
  return scope;
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { IContainer, InjectionToken } from './IContainer';
2
- import { IProvider } from '../provider/IProvider';
2
+ import { IProvider, ProviderKey } from '../provider/IProvider';
3
3
  export declare class EmptyContainer implements IContainer {
4
4
  createScope(): IContainer;
5
5
  dispose(): void;
6
6
  register(): this;
7
7
  resolve<T>(key: InjectionToken<T>): T;
8
- getProviders(): IProvider<unknown>[];
8
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
9
9
  getInstances(): unknown[];
10
10
  removeScope(): void;
11
11
  }
@@ -14,7 +14,7 @@ export class EmptyContainer {
14
14
  throw new ProviderNotFoundError(`Cannot find ${key.toString()}`);
15
15
  }
16
16
  getProviders() {
17
- return [];
17
+ return new Map();
18
18
  }
19
19
  getInstances() {
20
20
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,OAAO,cAAc;IACvB,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO;QACH,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,CAAI,GAAsB;QAC7B,MAAM,IAAI,qBAAqB,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,KAAU,CAAC;CACzB"}
1
+ {"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,OAAO,cAAc;IACvB,WAAW;QACP,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO;QACH,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,yBAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,CAAI,GAAsB;QAC7B,MAAM,IAAI,qBAAqB,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACR,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,KAAU,CAAC;CACzB"}
@@ -4,10 +4,14 @@ export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
4
4
  export interface Resolveable {
5
5
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
6
6
  }
7
+ export interface Registration<T> {
8
+ key: ProviderKey;
9
+ value: IProvider<T>;
10
+ }
7
11
  export interface IContainer extends Disposable, Resolveable {
8
12
  createScope(tags?: Tag[]): IContainer;
9
- register(provider: IProvider<unknown>): this;
10
- getProviders(): IProvider<unknown>[];
13
+ register(value: Registration<unknown>): this;
14
+ getProviders(): Map<ProviderKey, IProvider<unknown>>;
11
15
  removeScope(child: IContainer): void;
12
16
  getInstances(): unknown[];
13
17
  }
@@ -6,8 +6,6 @@ export interface Tagged {
6
6
  readonly tags: Tag[];
7
7
  }
8
8
  export interface IProvider<T> extends Disposable {
9
- setKey(key: ProviderKey): this;
10
- getKeyOrFail(): ProviderKey;
11
9
  clone(): IProvider<T>;
12
10
  resolve(container: Resolveable, ...args: any[]): T;
13
11
  isValid(filters: Tagged): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC"}
@@ -7,7 +7,6 @@ export declare class Provider<T> implements IProvider<T> {
7
7
  static fromValue<T>(value: T): Provider<T>;
8
8
  private key?;
9
9
  constructor(resolveDependency: ResolveDependency<T>);
10
- setKey(key: ProviderKey): this;
11
10
  clone(): Provider<T>;
12
11
  resolve(container: Resolveable, ...args: any[]): T;
13
12
  dispose(): void;
@@ -10,15 +10,8 @@ export class Provider {
10
10
  static fromValue(value) {
11
11
  return new Provider(() => value);
12
12
  }
13
- setKey(key) {
14
- this.key = key;
15
- return this;
16
- }
17
13
  clone() {
18
- if (!this.key) {
19
- throw new ProviderHasNoKeyError('Pls provide registration keys for current provider');
20
- }
21
- return new Provider(this.resolveDependency).setKey(this.key);
14
+ return new Provider(this.resolveDependency);
22
15
  }
23
16
  resolve(container, ...args) {
24
17
  return this.resolveDependency(container, ...args);
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,QAAQ;IAWjB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVxE,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAMD,MAAM,CAAC,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAU,CAAC;IAElB,OAAO;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,MAAM,GACf,CAAC,GAAgB,EAAkB,EAAE,CACrC,CAAC,MAAM,EAAE,EAAE;IACP,MAAM,WAAW,GAAG,MAAqC,CAAC;IAC1D,MAAM,EAAE,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9D,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC"}
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,QAAQ;IAWjB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVxE,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAMD,KAAK;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAU,CAAC;IAElB,OAAO;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,MAAM,GACf,CAAC,GAAgB,EAAkB,EAAE,CACrC,CAAC,MAAM,EAAE,EAAE;IACP,MAAM,WAAW,GAAG,MAAqC,CAAC;IAC1D,MAAM,EAAE,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9D,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Resolveable } from '../container/IContainer';
2
- import { IProvider, ProviderKey, Tagged } from './IProvider';
2
+ import { IProvider, Tagged } from './IProvider';
3
3
  export declare abstract class ProviderDecorator<T> implements IProvider<T> {
4
4
  private decorated;
5
5
  protected constructor(decorated: IProvider<T>);
@@ -7,6 +7,4 @@ export declare abstract class ProviderDecorator<T> implements IProvider<T> {
7
7
  dispose(): void;
8
8
  isValid(filters: Tagged): boolean;
9
9
  resolve(container: Resolveable, ...args: any[]): T;
10
- getKeyOrFail(): ProviderKey;
11
- setKey(key: ProviderKey): this;
12
10
  }
@@ -14,12 +14,5 @@ export class ProviderDecorator {
14
14
  resolve(container, ...args) {
15
15
  return this.decorated.resolve(container, ...args);
16
16
  }
17
- getKeyOrFail() {
18
- return this.decorated.getKeyOrFail();
19
- }
20
- setKey(key) {
21
- this.decorated.setKey(key);
22
- return this;
23
- }
24
17
  }
25
18
  //# sourceMappingURL=ProviderDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,iBAAiB;IACnC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,KAAK;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,GAAgB;QACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,iBAAiB;IACnC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,KAAK;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,SAAsB,EAAE,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;CACJ"}
@@ -1,8 +1,8 @@
1
1
  import { IProvider, ProviderKey } from './IProvider';
2
2
  export declare class ProviderRepo {
3
3
  private readonly providers;
4
- add(provider: IProvider<unknown>): this;
4
+ add(key: ProviderKey, provider: IProvider<unknown>): this;
5
5
  get<T>(key: ProviderKey): IProvider<T> | undefined;
6
- merge(providers: IProvider<unknown>[]): IProvider<unknown>[];
6
+ merge(providers: Map<ProviderKey, IProvider<unknown>>): Map<ProviderKey, IProvider<unknown>>;
7
7
  dispose(): void;
8
8
  }
@@ -2,8 +2,8 @@ export class ProviderRepo {
2
2
  constructor() {
3
3
  this.providers = new Map();
4
4
  }
5
- add(provider) {
6
- this.providers.set(provider.getKeyOrFail(), provider);
5
+ add(key, provider) {
6
+ this.providers.set(key, provider);
7
7
  return this;
8
8
  }
9
9
  get(key) {
@@ -11,10 +11,13 @@ export class ProviderRepo {
11
11
  }
12
12
  merge(providers) {
13
13
  const map = new Map();
14
- for (const p of providers.concat(Array.from(this.providers.values()))) {
15
- map.set(p.getKeyOrFail(), p);
14
+ for (const [key, value] of providers.entries()) {
15
+ map.set(key, value);
16
16
  }
17
- return Array.from(map.values());
17
+ for (const [key, value] of this.providers.entries()) {
18
+ map.set(key, value);
19
+ }
20
+ return map;
18
21
  }
19
22
  dispose() {
20
23
  for (const p of this.providers.values()) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAAzB;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAyB5E,CAAC;IAvBG,GAAG,CAAC,QAA4B;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAI,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAA+B;QACjC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;YACnE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;YACrC,CAAC,CAAC,OAAO,EAAE,CAAC;SACf;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"ProviderRepo.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderRepo.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAAzB;QACqB,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IA4B5E,CAAC;IA1BG,GAAG,CAAC,GAAgB,EAAE,QAA4B;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAI,GAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAA+C;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACvB;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;YACjD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO;QACH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;YACrC,CAAC,CAAC,OAAO,EAAE,CAAC;SACf;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ"}
@@ -2,17 +2,19 @@ import { IProvider, ProviderKey, Tag } from '../core/provider/IProvider';
2
2
  import { ProviderReducer } from '../core/provider/IProviderReflector';
3
3
  import { ArgsFn } from './ArgsProvider';
4
4
  import { constructor } from '../core/utils/types';
5
+ import { Registration } from '../core/container/IContainer';
5
6
  export declare class ProviderBuilder<T> {
6
7
  private provider;
7
8
  static fromClass<T>(value: constructor<T>): ProviderBuilder<T>;
8
9
  static fromValue<T>(value: T): ProviderBuilder<T>;
9
10
  static fromFn<T>(fn: (...args: any[]) => T): ProviderBuilder<T>;
11
+ private key?;
10
12
  constructor(provider: IProvider<T>);
11
13
  withArgs(...extraArgs: any[]): this;
12
14
  withArgsFn(argsFn: ArgsFn): this;
13
15
  map(reducer: ProviderReducer<T>): ProviderBuilder<T>;
14
- forTags(...tags: Tag[]): this;
16
+ perTags(...tags: Tag[]): this;
15
17
  asSingleton(): this;
16
18
  forKey(key: ProviderKey): this;
17
- build(): IProvider<T>;
19
+ build(): Registration<T>;
18
20
  }
@@ -3,6 +3,7 @@ import { TaggedProvider } from './TaggedProvider';
3
3
  import { ArgsProvider } from './ArgsProvider';
4
4
  import { Provider } from '../core/provider/Provider';
5
5
  import { providerReflector } from '../core/provider/ProviderReflector';
6
+ import { ProviderHasNoKeyError } from '../core/provider/ProviderHasNoKeyError';
6
7
  export class ProviderBuilder {
7
8
  constructor(provider) {
8
9
  this.provider = provider;
@@ -27,7 +28,7 @@ export class ProviderBuilder {
27
28
  map(reducer) {
28
29
  return reducer(this);
29
30
  }
30
- forTags(...tags) {
31
+ perTags(...tags) {
31
32
  this.provider = new TaggedProvider(this.provider, tags);
32
33
  return this;
33
34
  }
@@ -36,11 +37,14 @@ export class ProviderBuilder {
36
37
  return this;
37
38
  }
38
39
  forKey(key) {
39
- this.provider.setKey(key);
40
+ this.key = key;
40
41
  return this;
41
42
  }
42
43
  build() {
43
- return this.provider;
44
+ if (!this.key) {
45
+ throw new ProviderHasNoKeyError('Pls provide registration keys for current provider');
46
+ }
47
+ return { key: this.key, value: this.provider };
44
48
  }
45
49
  }
46
50
  //# sourceMappingURL=ProviderBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,OAAO,eAAe;IAaxB,YAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAZ9C,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAI,EAAyB;QACtC,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,QAAQ,CAAC,GAAG,SAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,OAA2B;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAgB;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/providers/ProviderBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,MAAM,OAAO,eAAe;IAexB,YAAoB,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAd9C,MAAM,CAAC,SAAS,CAAI,KAAqB;QACrC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QACxB,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,CAAI,EAAyB;QACtC,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAMD,QAAQ,CAAC,GAAG,SAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,OAA2B;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;CACJ"}
@@ -17,6 +17,6 @@ export class TaggedProvider extends ProviderDecorator {
17
17
  export const perTags = (...tags) => (target) => {
18
18
  const targetClass = target;
19
19
  const fn = providerReflector.findReducerOrCreate(targetClass);
20
- providerReflector.addReducer(targetClass, (builder) => fn(builder).forTags(...tags));
20
+ providerReflector.addReducer(targetClass, (builder) => fn(builder).perTags(...tags));
21
21
  };
22
22
  //# sourceMappingURL=TaggedProvider.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ioc-container",
3
- "version": "19.2.0",
3
+ "version": "20.0.0",
4
4
  "description": "Typescript IoC container",
5
5
  "author": "ibabkin <igba14@gmail.com>",
6
6
  "homepage": "https://github.com/IgorBabkin/ts-ioc-container/tree/master/packages/ts-ioc-container",
@@ -46,5 +46,5 @@
46
46
  "ts-jest": "27.0.5",
47
47
  "typescript": "4.4.3"
48
48
  },
49
- "gitHead": "9fe51a7dffe575072f90c5a0f23369577e806b7e"
49
+ "gitHead": "e633ef33be09ddec0c2af39d3b2d48a74459df10"
50
50
  }