ts-ioc-container 18.0.4 → 19.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 (34) hide show
  1. package/README.md +13 -15
  2. package/cjm/automock/AutoMockedContainer.d.ts +1 -0
  3. package/cjm/automock/AutoMockedContainer.js +3 -0
  4. package/cjm/automock/AutoMockedContainer.js.map +1 -1
  5. package/cjm/core/IInjector.d.ts +3 -16
  6. package/cjm/core/IInjector.js +0 -48
  7. package/cjm/core/IInjector.js.map +1 -1
  8. package/cjm/core/container/Container.d.ts +4 -2
  9. package/cjm/core/container/Container.js +43 -10
  10. package/cjm/core/container/Container.js.map +1 -1
  11. package/cjm/core/container/EmptyContainer.d.ts +1 -0
  12. package/cjm/core/container/EmptyContainer.js +1 -0
  13. package/cjm/core/container/EmptyContainer.js.map +1 -1
  14. package/cjm/core/container/IContainer.d.ts +3 -2
  15. package/cjm/index.d.ts +1 -1
  16. package/cjm/index.js +3 -3
  17. package/cjm/index.js.map +1 -1
  18. package/esm/automock/AutoMockedContainer.d.ts +1 -0
  19. package/esm/automock/AutoMockedContainer.js +3 -0
  20. package/esm/automock/AutoMockedContainer.js.map +1 -1
  21. package/esm/core/IInjector.d.ts +3 -16
  22. package/esm/core/IInjector.js +1 -16
  23. package/esm/core/IInjector.js.map +1 -1
  24. package/esm/core/container/Container.d.ts +4 -2
  25. package/esm/core/container/Container.js +21 -9
  26. package/esm/core/container/Container.js.map +1 -1
  27. package/esm/core/container/EmptyContainer.d.ts +1 -0
  28. package/esm/core/container/EmptyContainer.js +1 -0
  29. package/esm/core/container/EmptyContainer.js.map +1 -1
  30. package/esm/core/container/IContainer.d.ts +3 -2
  31. package/esm/index.d.ts +1 -1
  32. package/esm/index.js +1 -1
  33. package/esm/index.js.map +1 -1
  34. package/package.json +2 -2
package/README.md CHANGED
@@ -12,8 +12,6 @@
12
12
  - supports scopes
13
13
  - fully test covered
14
14
  - can be used with decorators `@inject`
15
- - provides auto-factories
16
- - supports `onConstruct` and `dispose` instance hooks
17
15
  - composable and open to extend
18
16
  - awesome for testing (auto mocks)
19
17
 
@@ -40,12 +38,12 @@ yarn add ts-ioc-container ts-constructor-injector reflect-metadata
40
38
  How to create new container
41
39
 
42
40
  ```typescript
43
- import { Container, IInjector, ProviderBuilder } from "ts-ioc-container";
41
+ import { Container, IContainer, IInjector, ProviderBuilder } from "ts-ioc-container";
44
42
  import { resolve } from 'ts-constructor-injector';
45
43
 
46
44
  const injector: IInjector = {
47
- resolve<T>(locator: Resolveable, value: constructor<T>, ...deps: unknown[]): T {
48
- return resolve(locator)(value, ...deps);
45
+ resolve<T>(container: IContainer, value: constructor<T>, ...deps: unknown[]): T {
46
+ return resolve(container)(value, ...deps);
49
47
  },
50
48
  };
51
49
  const container = new Container(injector);
@@ -58,8 +56,9 @@ const logger = container.resolve<ILogger>('ILogger');
58
56
  ```typescript
59
57
  import { fromClass, ProviderBuilder } from "ts-ioc-container";
60
58
 
59
+ const container = new Container(injector, {tags: ['root']});
61
60
  container.register('ILogger', new ProviderBuilder((container, ...args) => new Logger(...args)).build());
62
- container.register('ILogger1', ProviderBuilder.fromClass(Logger).forKey('ILogger').asSingleton().forLevel(0).build()); // global singleton
61
+ container.register('ILogger1', ProviderBuilder.fromClass(Logger).forKey('ILogger').asSingleton().forTags(['root']).build()); // global singleton
63
62
  container.register('ILogger3', ProviderBuilder.fromClass(Logger).asSingleton().forTags(['tag1', 'tag2']).build()); // singleton for scope with tag1 or tag2
64
63
  container.register('ILogger4', ProviderBuilder.fromClass(Logger).withArgs('dev').asSingleton().build()); // singleton in every scope
65
64
  ```
@@ -107,15 +106,15 @@ class Logger {
107
106
  }
108
107
  }
109
108
 
110
- class IocInjector extends Injector {
111
- resolve<T>(locator: Resolveable, value: constructor<T>, ...deps: unknown[]): T {
112
- const instance = super.resolve(locator, value, ...deps);
113
- onConstructReflector.invokeHooksOf(instance)
114
- return instance;
115
- }
109
+ const injector: IInjector = {
110
+ resolve<T>(container: IContainer, value: constructor<T>, ...deps: unknown[]): T {
111
+ const instance = resolve(container)(value, ...deps);
112
+ onConstructReflector.invokeHooksOf(instance)
113
+ return instance;
114
+ },
116
115
  }
117
116
 
118
- const container = new Container(new IocInjector());
117
+ const container = new Container(injector);
119
118
  container.register('ILogger', ProviderBuilder.fromClass(Logger).build());
120
119
  const logger = container.resolve<ILogger>('ILogger');
121
120
  for (const instance of container.getInstances()) {
@@ -140,7 +139,6 @@ scope.dispose();
140
139
  import {
141
140
  IMockRepository,
142
141
  Container,
143
- SimpleInjector,
144
142
  } from "ts-ioc-container";
145
143
  import { Mock } from "moq.ts";
146
144
 
@@ -165,7 +163,7 @@ export class MoqRepository implements IMockRepository {
165
163
 
166
164
  describe('test', () => {
167
165
  const mockRepository = new MoqRepository();
168
- const container = new Container(new SimpleInjector()).map((l) => new AutoMockedContainer(l, mockRepository));
166
+ const container = new Container(injector).map((l) => new AutoMockedContainer(l, mockRepository));
169
167
 
170
168
  const engineMock = mockRepository.resolveMock<IEngine>('IEngine');
171
169
  engineMock.setup(i => i.getRegistrationNumber()).return('123');
@@ -10,4 +10,5 @@ export declare class AutoMockedContainer implements IContainer {
10
10
  getProviders(): IProvider<unknown>[];
11
11
  register(provider: IProvider<unknown>): this;
12
12
  getInstances(): unknown[];
13
+ removeScope(child: IContainer): void;
13
14
  }
@@ -65,6 +65,9 @@ var AutoMockedContainer = /** @class */ (function () {
65
65
  AutoMockedContainer.prototype.getInstances = function () {
66
66
  return this.decorated.getInstances();
67
67
  };
68
+ AutoMockedContainer.prototype.removeScope = function (child) {
69
+ return this.decorated.removeScope(child);
70
+ };
68
71
  return AutoMockedContainer;
69
72
  }());
70
73
  exports.AutoMockedContainer = AutoMockedContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/automock/AutoMockedContainer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAA6F;AAG7F;IACI,6BAAoB,SAAqB,EAAU,cAA+B;QAA9D,cAAS,GAAT,SAAS,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAiB;IAAG,CAAC;IAEtF,yCAAW,GAAX,UAAY,IAAY,EAAE,MAAyB;QAAzB,uBAAA,EAAA,aAAyB;QAC/C,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,CAAC;IAED,qCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI;YACA,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,GAAG,UAAK,IAAI,WAAE;SAC/C;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,6BAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;aAC9C;YAED,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,qCAAO,GAAP;QACI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,sCAAQ,GAAR,UAAS,QAA4B;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IACL,0BAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,kDAAmB"}
1
+ {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/automock/AutoMockedContainer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAA6F;AAG7F;IACI,6BAAoB,SAAqB,EAAU,cAA+B;QAA9D,cAAS,GAAT,SAAS,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAiB;IAAG,CAAC;IAEtF,yCAAW,GAAX,UAAY,IAAY,EAAE,MAAyB;QAAzB,uBAAA,EAAA,aAAyB;QAC/C,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,CAAC;IAED,qCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI;YACA,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,GAAG,UAAK,IAAI,WAAE;SAC/C;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,6BAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;aAC9C;YAED,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,qCAAO,GAAP;QACI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,sCAAQ,GAAR,UAAS,QAA4B;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,yCAAW,GAAX,UAAY,KAAiB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IACL,0BAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,kDAAmB"}
@@ -1,18 +1,5 @@
1
- import { constructor, Disposable } from './utils/types';
1
+ import { constructor } from './utils/types';
2
2
  import { IContainer } from './container/IContainer';
3
- export declare type VisitInstance = (instance: unknown) => Promise<void>;
4
- export interface Traversable {
5
- getInstances(): unknown[];
6
- }
7
- export interface IInjector extends Disposable, Traversable {
8
- resolve<T>(container: IContainer, value: constructor<T>, ...deps: any[]): T;
9
- clone(): IInjector;
10
- }
11
- export declare abstract class Injector implements IInjector {
12
- private values;
13
- abstract clone(): IInjector;
14
- getInstances(): unknown[];
15
- dispose(): void;
16
- resolve<T>(container: IContainer, value: constructor<T>, ...deps: any[]): T;
17
- protected abstract resolver<T>(container: IContainer, value: constructor<T>, ...args: any[]): T;
3
+ export interface IInjector {
4
+ resolve<T>(container: IContainer, value: constructor<T>, ...deps: unknown[]): T;
18
5
  }
@@ -1,51 +1,3 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.Injector = void 0;
29
- var Injector = /** @class */ (function () {
30
- function Injector() {
31
- this.values = [];
32
- }
33
- Injector.prototype.getInstances = function () {
34
- return this.values;
35
- };
36
- Injector.prototype.dispose = function () {
37
- this.values = [];
38
- };
39
- Injector.prototype.resolve = function (container, value) {
40
- var deps = [];
41
- for (var _i = 2; _i < arguments.length; _i++) {
42
- deps[_i - 2] = arguments[_i];
43
- }
44
- var instance = this.resolver.apply(this, __spreadArray([container, value], __read(deps), false));
45
- this.values.push(instance);
46
- return instance;
47
- };
48
- return Injector;
49
- }());
50
- exports.Injector = Injector;
51
3
  //# sourceMappingURL=IInjector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IInjector.js","sourceRoot":"","sources":["../../lib/core/IInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;IAAA;QACY,WAAM,GAAc,EAAE,CAAC;IAmBnC,CAAC;IAfG,+BAAY,GAAZ;QACI,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,0BAAO,GAAP;QACI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,0BAAO,GAAP,UAAW,SAAqB,EAAE,KAAqB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACnE,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,OAAb,IAAI,iBAAU,SAAS,EAAE,KAAK,UAAK,IAAI,UAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGL,eAAC;AAAD,CAAC,AApBD,IAoBC;AApBqB,4BAAQ"}
1
+ {"version":3,"file":"IInjector.js","sourceRoot":"","sources":["../../lib/core/IInjector.ts"],"names":[],"mappings":""}
@@ -7,16 +7,18 @@ export declare class Container implements IContainer, Tagged {
7
7
  readonly tags: Tag[];
8
8
  private isDisposed;
9
9
  private parent;
10
+ private children;
11
+ private instances;
10
12
  constructor(injector: IInjector, options?: {
11
13
  parent?: IContainer;
12
14
  tags?: Tag[];
13
15
  });
14
16
  register(provider: IProvider<unknown>): this;
15
17
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
16
- createScope(tags?: Tag[], parent?: IContainer): Container;
18
+ createScope(tags?: Tag[]): Container;
17
19
  dispose(): void;
18
20
  getProviders(): IProvider<unknown>[];
19
21
  getInstances(): unknown[];
20
- map<T extends IContainer>(transform: (l: IContainer) => T): T;
22
+ removeScope(child: IContainer): void;
21
23
  private validateContainer;
22
24
  }
@@ -48,6 +48,8 @@ var Container = /** @class */ (function () {
48
48
  this.injector = injector;
49
49
  this.providers = new ProviderRepo_1.ProviderRepo();
50
50
  this.isDisposed = false;
51
+ this.children = new Set();
52
+ this.instances = new Set();
51
53
  this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer_1.EmptyContainer();
52
54
  this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
53
55
  }
@@ -67,16 +69,17 @@ var Container = /** @class */ (function () {
67
69
  var provider = this.providers.get(key);
68
70
  return (provider === null || provider === void 0 ? void 0 : provider.isValid(this)) ? provider.resolve.apply(provider, __spreadArray([this], __read(args), false)) : (_a = this.parent).resolve.apply(_a, __spreadArray([key], __read(args), false));
69
71
  }
70
- return (_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false));
72
+ var instance = (_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false));
73
+ this.instances.add(instance);
74
+ return instance;
71
75
  };
72
- Container.prototype.createScope = function (tags, parent) {
76
+ Container.prototype.createScope = function (tags) {
73
77
  var e_1, _a;
74
78
  if (tags === void 0) { tags = []; }
75
- if (parent === void 0) { parent = this; }
76
79
  this.validateContainer();
77
- var scope = new Container(this.injector.clone(), { parent: parent, tags: tags });
80
+ var scope = new Container(this.injector, { parent: this, tags: tags });
78
81
  try {
79
- for (var _b = __values(parent.getProviders().filter(function (p) { return p.isValid(scope); })), _c = _b.next(); !_c.done; _c = _b.next()) {
82
+ for (var _b = __values(this.getProviders().filter(function (p) { return p.isValid(scope); })), _c = _b.next(); !_c.done; _c = _b.next()) {
80
83
  var provider = _c.value;
81
84
  scope.register(provider.clone());
82
85
  }
@@ -88,23 +91,53 @@ var Container = /** @class */ (function () {
88
91
  }
89
92
  finally { if (e_1) throw e_1.error; }
90
93
  }
94
+ this.children.add(scope);
91
95
  return scope;
92
96
  };
93
97
  Container.prototype.dispose = function () {
98
+ var e_2, _a;
94
99
  this.isDisposed = true;
100
+ this.parent.removeScope(this);
95
101
  this.parent = new EmptyContainer_1.EmptyContainer();
102
+ try {
103
+ for (var _b = __values(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {
104
+ var child = _c.value;
105
+ child.dispose();
106
+ }
107
+ }
108
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
109
+ finally {
110
+ try {
111
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
112
+ }
113
+ finally { if (e_2) throw e_2.error; }
114
+ }
96
115
  this.providers.dispose();
97
- this.injector.dispose();
116
+ this.instances.clear();
98
117
  };
99
118
  Container.prototype.getProviders = function () {
100
119
  return this.providers.merge(this.parent.getProviders());
101
120
  };
102
121
  Container.prototype.getInstances = function () {
103
- return this.injector.getInstances();
122
+ var e_3, _a;
123
+ var instances = Array.from(this.instances);
124
+ try {
125
+ for (var _b = __values(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {
126
+ var child = _c.value;
127
+ instances = instances.concat(child.getInstances());
128
+ }
129
+ }
130
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
131
+ finally {
132
+ try {
133
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
134
+ }
135
+ finally { if (e_3) throw e_3.error; }
136
+ }
137
+ return instances;
104
138
  };
105
- Container.prototype.map = function (transform) {
106
- this.parent = transform(this.parent);
107
- return transform(this);
139
+ Container.prototype.removeScope = function (child) {
140
+ this.children.delete(child);
108
141
  };
109
142
  Container.prototype.validateContainer = function () {
110
143
  ContainerDisposedError_1.ContainerDisposedError.assert(!this.isDisposed, 'Container is already disposed');
@@ -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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"}
@@ -7,4 +7,5 @@ export declare class EmptyContainer implements IContainer {
7
7
  resolve<T>(key: InjectionToken<T>): T;
8
8
  getProviders(): IProvider<unknown>[];
9
9
  getInstances(): unknown[];
10
+ removeScope(): void;
10
11
  }
@@ -24,6 +24,7 @@ var EmptyContainer = /** @class */ (function () {
24
24
  EmptyContainer.prototype.getInstances = function () {
25
25
  return [];
26
26
  };
27
+ EmptyContainer.prototype.removeScope = function () { };
27
28
  return EmptyContainer;
28
29
  }());
29
30
  exports.EmptyContainer = EmptyContainer;
@@ -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;IAwBA,CAAC;IAvBG,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;IACL,qBAAC;AAAD,CAAC,AAxBD,IAwBC;AAxBY,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,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,12 +1,13 @@
1
1
  import { IProvider, ProviderKey, Tag } from '../provider/IProvider';
2
2
  import { constructor, Disposable } from '../utils/types';
3
- import { Traversable } from '../IInjector';
4
3
  export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
5
4
  export interface Resolveable {
6
5
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
7
6
  }
8
- export interface IContainer extends Disposable, Resolveable, Traversable {
7
+ export interface IContainer extends Disposable, Resolveable {
9
8
  createScope(tags?: Tag[], parent?: IContainer): IContainer;
10
9
  register(provider: IProvider<unknown>): this;
11
10
  getProviders(): IProvider<unknown>[];
11
+ removeScope(child: IContainer): void;
12
+ getInstances(): unknown[];
12
13
  }
package/cjm/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { IContainer, InjectionToken } from './core/container/IContainer';
2
2
  export { ProviderReducer } from './core/provider/IProviderReflector';
3
3
  export { IContainer, Resolveable } from './core/container/IContainer';
4
+ export { EmptyContainer } from './core/container/EmptyContainer';
4
5
  export { constructor } from './core/utils/types';
5
6
  export { Container } from './core/container/Container';
6
7
  export { Tagged, ResolveDependency, Tag, IProvider } from './core/provider/IProvider';
@@ -27,5 +28,4 @@ export { isProviderKey } from './core/provider/IProvider';
27
28
  export { perTags } from './providers/TaggedProvider';
28
29
  export { asSingleton } from './providers/SingletonProvider';
29
30
  export { forKey } from './core/provider/Provider';
30
- export { VisitInstance, Injector } from './core/IInjector';
31
31
  export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
package/cjm/index.js CHANGED
@@ -25,7 +25,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.by = exports.Injector = exports.forKey = exports.asSingleton = exports.perTags = exports.isProviderKey = exports.ProviderReflector = exports.ProviderBuilder = exports.SingletonProvider = exports.AutoMockedContainer = exports.TaggedProvider = exports.createArgsFnDecorator = exports.ArgsProvider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.AsyncMethodReflector = exports.MethodReflector = exports.Container = void 0;
28
+ exports.by = exports.forKey = exports.asSingleton = exports.perTags = exports.isProviderKey = exports.ProviderReflector = exports.ProviderBuilder = exports.SingletonProvider = exports.AutoMockedContainer = exports.TaggedProvider = exports.createArgsFnDecorator = exports.ArgsProvider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.AsyncMethodReflector = exports.MethodReflector = exports.Container = exports.EmptyContainer = void 0;
29
+ var EmptyContainer_1 = require("./core/container/EmptyContainer");
30
+ Object.defineProperty(exports, "EmptyContainer", { enumerable: true, get: function () { return EmptyContainer_1.EmptyContainer; } });
29
31
  var Container_1 = require("./core/container/Container");
30
32
  Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return Container_1.Container; } });
31
33
  var MethodReflector_1 = require("./hooks/MethodReflector");
@@ -61,8 +63,6 @@ var SingletonProvider_2 = require("./providers/SingletonProvider");
61
63
  Object.defineProperty(exports, "asSingleton", { enumerable: true, get: function () { return SingletonProvider_2.asSingleton; } });
62
64
  var Provider_2 = require("./core/provider/Provider");
63
65
  Object.defineProperty(exports, "forKey", { enumerable: true, get: function () { return Provider_2.forKey; } });
64
- var IInjector_1 = require("./core/IInjector");
65
- Object.defineProperty(exports, "Injector", { enumerable: true, get: function () { return IInjector_1.Injector; } });
66
66
  var by = function (key) {
67
67
  var args = [];
68
68
  for (var _i = 1; _i < arguments.length; _i++) {
package/cjm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wDAAuD;AAA9C,sGAAA,SAAS,OAAA;AAIlB,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AACxB,qEAAoE;AAA3D,4HAAA,oBAAoB,OAAA;AAE7B,+EAA8E;AAArE,8HAAA,qBAAqB,OAAA;AAC9B,oFAAmF;AAA1E,sIAAA,yBAAyB,OAAA;AAClC,kFAAiF;AAAxE,gIAAA,sBAAsB,OAAA;AAC/B,qDAAoD;AAA3C,oGAAA,QAAQ,OAAA;AACjB,yDAAuF;AAA9E,4GAAA,YAAY,OAAA;AAAU,qHAAA,qBAAqB,OAAA;AACpD,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAC5B,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAExB,uEAAsE;AAA7D,sHAAA,iBAAiB,OAAA;AAG1B,uDAA0D;AAAjD,0GAAA,aAAa,OAAA;AACtB,6DAAqD;AAA5C,yGAAA,OAAO,OAAA;AAChB,mEAA4D;AAAnD,gHAAA,WAAW,OAAA;AACpB,qDAAkD;AAAzC,kGAAA,MAAM,OAAA;AACf,8CAA2D;AAAnC,qGAAA,QAAQ,OAAA;AAEzB,IAAM,EAAE,GACX,UAAI,GAAsB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAC9C,OAAA,UAAC,CAAa;QACV,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAY,GAAG,UAAK,IAAI;IAAzB,CAA0B;AAD9B,CAC8B,CAAC;AAHtB,QAAA,EAAE,MAGoB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kEAAiE;AAAxD,gHAAA,cAAc,OAAA;AAEvB,wDAAuD;AAA9C,sGAAA,SAAS,OAAA;AAIlB,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AACxB,qEAAoE;AAA3D,4HAAA,oBAAoB,OAAA;AAE7B,+EAA8E;AAArE,8HAAA,qBAAqB,OAAA;AAC9B,oFAAmF;AAA1E,sIAAA,yBAAyB,OAAA;AAClC,kFAAiF;AAAxE,gIAAA,sBAAsB,OAAA;AAC/B,qDAAoD;AAA3C,oGAAA,QAAQ,OAAA;AACjB,yDAAuF;AAA9E,4GAAA,YAAY,OAAA;AAAU,qHAAA,qBAAqB,OAAA;AACpD,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAC5B,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAExB,uEAAsE;AAA7D,sHAAA,iBAAiB,OAAA;AAG1B,uDAA0D;AAAjD,0GAAA,aAAa,OAAA;AACtB,6DAAqD;AAA5C,yGAAA,OAAO,OAAA;AAChB,mEAA4D;AAAnD,gHAAA,WAAW,OAAA;AACpB,qDAAkD;AAAzC,kGAAA,MAAM,OAAA;AAER,IAAM,EAAE,GACX,UAAI,GAAsB;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAC9C,OAAA,UAAC,CAAa;QACV,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAY,GAAG,UAAK,IAAI;IAAzB,CAA0B;AAD9B,CAC8B,CAAC;AAHtB,QAAA,EAAE,MAGoB"}
@@ -10,4 +10,5 @@ export declare class AutoMockedContainer implements IContainer {
10
10
  getProviders(): IProvider<unknown>[];
11
11
  register(provider: IProvider<unknown>): this;
12
12
  getInstances(): unknown[];
13
+ removeScope(child: IContainer): void;
13
14
  }
@@ -31,5 +31,8 @@ export class AutoMockedContainer {
31
31
  getInstances() {
32
32
  return this.decorated.getInstances();
33
33
  }
34
+ removeScope(child) {
35
+ return this.decorated.removeScope(child);
36
+ }
34
37
  }
35
38
  //# sourceMappingURL=AutoMockedContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/automock/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,qBAAqB,EAAO,MAAM,UAAU,CAAC;AAG7F,MAAM,OAAO,mBAAmB;IAC5B,YAAoB,SAAqB,EAAU,cAA+B;QAA9D,cAAS,GAAT,SAAS,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAiB;IAAG,CAAC;IAEtF,WAAW,CAAC,IAAY,EAAE,SAAqB,IAAI;QAC/C,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,CAAI,GAAsB,EAAE,GAAG,IAAW;QAC7C,IAAI;YACA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SAC/C;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,qBAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;aAC9C;YAED,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,QAA4B;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;CACJ"}
1
+ {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/automock/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,qBAAqB,EAAO,MAAM,UAAU,CAAC;AAG7F,MAAM,OAAO,mBAAmB;IAC5B,YAAoB,SAAqB,EAAU,cAA+B;QAA9D,cAAS,GAAT,SAAS,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAiB;IAAG,CAAC;IAEtF,WAAW,CAAC,IAAY,EAAE,SAAqB,IAAI;QAC/C,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,CAAI,GAAsB,EAAE,GAAG,IAAW;QAC7C,IAAI;YACA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SAC/C;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,qBAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;aAC9C;YAED,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,QAA4B;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,WAAW,CAAC,KAAiB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACJ"}
@@ -1,18 +1,5 @@
1
- import { constructor, Disposable } from './utils/types';
1
+ import { constructor } from './utils/types';
2
2
  import { IContainer } from './container/IContainer';
3
- export declare type VisitInstance = (instance: unknown) => Promise<void>;
4
- export interface Traversable {
5
- getInstances(): unknown[];
6
- }
7
- export interface IInjector extends Disposable, Traversable {
8
- resolve<T>(container: IContainer, value: constructor<T>, ...deps: any[]): T;
9
- clone(): IInjector;
10
- }
11
- export declare abstract class Injector implements IInjector {
12
- private values;
13
- abstract clone(): IInjector;
14
- getInstances(): unknown[];
15
- dispose(): void;
16
- resolve<T>(container: IContainer, value: constructor<T>, ...deps: any[]): T;
17
- protected abstract resolver<T>(container: IContainer, value: constructor<T>, ...args: any[]): T;
3
+ export interface IInjector {
4
+ resolve<T>(container: IContainer, value: constructor<T>, ...deps: unknown[]): T;
18
5
  }
@@ -1,17 +1,2 @@
1
- export class Injector {
2
- constructor() {
3
- this.values = [];
4
- }
5
- getInstances() {
6
- return this.values;
7
- }
8
- dispose() {
9
- this.values = [];
10
- }
11
- resolve(container, value, ...deps) {
12
- const instance = this.resolver(container, value, ...deps);
13
- this.values.push(instance);
14
- return instance;
15
- }
16
- }
1
+ export {};
17
2
  //# sourceMappingURL=IInjector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IInjector.js","sourceRoot":"","sources":["../../lib/core/IInjector.ts"],"names":[],"mappings":"AAeA,MAAM,OAAgB,QAAQ;IAA9B;QACY,WAAM,GAAc,EAAE,CAAC;IAmBnC,CAAC;IAfG,YAAY;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,CAAI,SAAqB,EAAE,KAAqB,EAAE,GAAG,IAAW;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACpB,CAAC;CAGJ"}
1
+ {"version":3,"file":"IInjector.js","sourceRoot":"","sources":["../../lib/core/IInjector.ts"],"names":[],"mappings":""}
@@ -7,16 +7,18 @@ export declare class Container implements IContainer, Tagged {
7
7
  readonly tags: Tag[];
8
8
  private isDisposed;
9
9
  private parent;
10
+ private children;
11
+ private instances;
10
12
  constructor(injector: IInjector, options?: {
11
13
  parent?: IContainer;
12
14
  tags?: Tag[];
13
15
  });
14
16
  register(provider: IProvider<unknown>): this;
15
17
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
16
- createScope(tags?: Tag[], parent?: IContainer): Container;
18
+ createScope(tags?: Tag[]): Container;
17
19
  dispose(): void;
18
20
  getProviders(): IProvider<unknown>[];
19
21
  getInstances(): unknown[];
20
- map<T extends IContainer>(transform: (l: IContainer) => T): T;
22
+ removeScope(child: IContainer): void;
21
23
  private validateContainer;
22
24
  }
@@ -8,6 +8,8 @@ export class Container {
8
8
  this.injector = injector;
9
9
  this.providers = new ProviderRepo();
10
10
  this.isDisposed = false;
11
+ this.children = new Set();
12
+ this.instances = new Set();
11
13
  this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer();
12
14
  this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
13
15
  }
@@ -22,31 +24,41 @@ export class Container {
22
24
  const provider = this.providers.get(key);
23
25
  return (provider === null || provider === void 0 ? void 0 : provider.isValid(this)) ? provider.resolve(this, ...args) : this.parent.resolve(key, ...args);
24
26
  }
25
- return this.injector.resolve(this, key, ...args);
27
+ const instance = this.injector.resolve(this, key, ...args);
28
+ this.instances.add(instance);
29
+ return instance;
26
30
  }
27
- createScope(tags = [], parent = this) {
31
+ createScope(tags = []) {
28
32
  this.validateContainer();
29
- const scope = new Container(this.injector.clone(), { parent, tags });
30
- for (const provider of parent.getProviders().filter((p) => p.isValid(scope))) {
33
+ const scope = new Container(this.injector, { parent: this, tags });
34
+ for (const provider of this.getProviders().filter((p) => p.isValid(scope))) {
31
35
  scope.register(provider.clone());
32
36
  }
37
+ this.children.add(scope);
33
38
  return scope;
34
39
  }
35
40
  dispose() {
36
41
  this.isDisposed = true;
42
+ this.parent.removeScope(this);
37
43
  this.parent = new EmptyContainer();
44
+ for (const child of this.children) {
45
+ child.dispose();
46
+ }
38
47
  this.providers.dispose();
39
- this.injector.dispose();
48
+ this.instances.clear();
40
49
  }
41
50
  getProviders() {
42
51
  return this.providers.merge(this.parent.getProviders());
43
52
  }
44
53
  getInstances() {
45
- return this.injector.getInstances();
54
+ let instances = Array.from(this.instances);
55
+ for (const child of this.children) {
56
+ instances = instances.concat(child.getInstances());
57
+ }
58
+ return instances;
46
59
  }
47
- map(transform) {
48
- this.parent = transform(this.parent);
49
- return transform(this);
60
+ removeScope(child) {
61
+ this.children.delete(child);
50
62
  }
51
63
  validateContainer() {
52
64
  ContainerDisposedError.assert(!this.isDisposed, 'Container is already disposed');
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,aAAa,EAAe,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,SAAS;IAMlB,YAA6B,QAAmB,EAAE,UAAiD,EAAE;;QAAxE,aAAQ,GAAR,QAAQ,CAAW;QAL/B,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,eAAU,GAAG,KAAK,CAAC;QAIvB,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,IAAI,cAAc,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,EAAE,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,QAA4B;QACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAI,GAAsB,EAAE,GAAG,IAAW;QAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SAC3G;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,OAAc,EAAE,EAAE,SAAqB,IAAI;QACnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1E,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;SACpC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED,GAAG,CAAuB,SAA+B;QACrD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACrB,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IACrF,CAAC;CACJ"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,aAAa,EAAe,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,SAAS;IAQlB,YAA6B,QAAmB,EAAE,UAAiD,EAAE;;QAAxE,aAAQ,GAAR,QAAQ,CAAW;QAP/B,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,eAAU,GAAG,KAAK,CAAC;QAEnB,aAAQ,GAAoB,IAAI,GAAG,EAAE,CAAC;QACtC,cAAS,GAAiB,IAAI,GAAG,EAAE,CAAC;QAGxC,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,IAAI,cAAc,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,EAAE,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,QAA4B;QACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAI,GAAsB,EAAE,GAAG,IAAW;QAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SAC3G;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,OAAc,EAAE;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;YACxE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,KAAK,CAAC,OAAO,EAAE,CAAC;SACnB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY;QACR,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW,CAAC,KAAiB;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEO,iBAAiB;QACrB,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IACrF,CAAC;CACJ"}
@@ -7,4 +7,5 @@ export declare class EmptyContainer implements IContainer {
7
7
  resolve<T>(key: InjectionToken<T>): T;
8
8
  getProviders(): IProvider<unknown>[];
9
9
  getInstances(): unknown[];
10
+ removeScope(): void;
10
11
  }
@@ -19,5 +19,6 @@ export class EmptyContainer {
19
19
  getInstances() {
20
20
  return [];
21
21
  }
22
+ removeScope() { }
22
23
  }
23
24
  //# sourceMappingURL=EmptyContainer.js.map
@@ -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;CACJ"}
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,12 +1,13 @@
1
1
  import { IProvider, ProviderKey, Tag } from '../provider/IProvider';
2
2
  import { constructor, Disposable } from '../utils/types';
3
- import { Traversable } from '../IInjector';
4
3
  export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
5
4
  export interface Resolveable {
6
5
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
7
6
  }
8
- export interface IContainer extends Disposable, Resolveable, Traversable {
7
+ export interface IContainer extends Disposable, Resolveable {
9
8
  createScope(tags?: Tag[], parent?: IContainer): IContainer;
10
9
  register(provider: IProvider<unknown>): this;
11
10
  getProviders(): IProvider<unknown>[];
11
+ removeScope(child: IContainer): void;
12
+ getInstances(): unknown[];
12
13
  }
package/esm/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { IContainer, InjectionToken } from './core/container/IContainer';
2
2
  export { ProviderReducer } from './core/provider/IProviderReflector';
3
3
  export { IContainer, Resolveable } from './core/container/IContainer';
4
+ export { EmptyContainer } from './core/container/EmptyContainer';
4
5
  export { constructor } from './core/utils/types';
5
6
  export { Container } from './core/container/Container';
6
7
  export { Tagged, ResolveDependency, Tag, IProvider } from './core/provider/IProvider';
@@ -27,5 +28,4 @@ export { isProviderKey } from './core/provider/IProvider';
27
28
  export { perTags } from './providers/TaggedProvider';
28
29
  export { asSingleton } from './providers/SingletonProvider';
29
30
  export { forKey } from './core/provider/Provider';
30
- export { VisitInstance, Injector } from './core/IInjector';
31
31
  export declare const by: <T>(key: InjectionToken<T>, ...args: unknown[]) => (l: IContainer) => T;
package/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { EmptyContainer } from './core/container/EmptyContainer';
1
2
  export { Container } from './core/container/Container';
2
3
  export { MethodReflector } from './hooks/MethodReflector';
3
4
  export { AsyncMethodReflector } from './hooks/AsyncMethodReflector';
@@ -15,6 +16,5 @@ export { isProviderKey } from './core/provider/IProvider';
15
16
  export { perTags } from './providers/TaggedProvider';
16
17
  export { asSingleton } from './providers/SingletonProvider';
17
18
  export { forKey } from './core/provider/Provider';
18
- export { Injector } from './core/IInjector';
19
19
  export const by = (key, ...args) => (l) => l.resolve(key, ...args);
20
20
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAU,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAiB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,CAAC,MAAM,EAAE,GACX,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CACd,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAU,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,MAAM,CAAC,MAAM,EAAE,GACX,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CACd,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ioc-container",
3
- "version": "18.0.4",
3
+ "version": "19.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": "897666753d6e03f2fec691bf09e2ac9046689294"
49
+ "gitHead": "0f37a1d8402abed2af90cd74f0e47e182899fb2f"
50
50
  }