ts-ioc-container 23.3.5 → 23.3.7
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.
- package/README.md +81 -48
- package/cjs/container/AutoMockedContainer.js.map +1 -1
- package/cjs/container/Container.js.map +1 -1
- package/cjs/container/ContainerDisposedError.js.map +1 -1
- package/cjs/container/DependencyNotFoundError.js.map +1 -1
- package/cjs/container/EmptyContainer.js.map +1 -1
- package/cjs/container/IContainer.js.map +1 -1
- package/cjs/container/MethodNotImplementedError.js.map +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/injector/ProxyInjector.js.map +1 -1
- package/cjs/injector/ReflectionInjector.js.map +1 -1
- package/cjs/injector/SimpleInjector.js.map +1 -1
- package/cjs/provider/ArgsProvider.js.map +1 -1
- package/cjs/provider/Provider.js.map +1 -1
- package/cjs/provider/ProviderDecorator.js.map +1 -1
- package/cjs/provider/SingletonProvider.d.ts +1 -1
- package/cjs/provider/SingletonProvider.js.map +1 -1
- package/cjs/provider/TaggedProvider.d.ts +1 -1
- package/cjs/provider/TaggedProvider.js.map +1 -1
- package/cjs/reflection.js.map +1 -1
- package/cjs/registration/DependencyMissingKeyError.js.map +1 -1
- package/cjs/registration/Registration.js.map +1 -1
- package/cjs/utils.js +1 -3
- package/cjs/utils.js.map +1 -1
- package/esm/container/AutoMockedContainer.js.map +1 -1
- package/esm/container/Container.js.map +1 -1
- package/esm/container/ContainerDisposedError.js.map +1 -1
- package/esm/container/DependencyNotFoundError.js.map +1 -1
- package/esm/container/EmptyContainer.js.map +1 -1
- package/esm/container/IContainer.js.map +1 -1
- package/esm/container/MethodNotImplementedError.js.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/injector/ProxyInjector.js.map +1 -1
- package/esm/injector/ReflectionInjector.js.map +1 -1
- package/esm/injector/SimpleInjector.js.map +1 -1
- package/esm/provider/ArgsProvider.js.map +1 -1
- package/esm/provider/Provider.js.map +1 -1
- package/esm/provider/ProviderDecorator.js.map +1 -1
- package/esm/provider/SingletonProvider.d.ts +1 -1
- package/esm/provider/SingletonProvider.js.map +1 -1
- package/esm/provider/TaggedProvider.d.ts +1 -1
- package/esm/provider/TaggedProvider.js.map +1 -1
- package/esm/reflection.js.map +1 -1
- package/esm/registration/DependencyMissingKeyError.js.map +1 -1
- package/esm/registration/Registration.js.map +1 -1
- package/esm/utils.js +1 -3
- package/esm/utils.js.map +1 -1
- package/package.json +58 -58
- package/README.template.md +0 -453
package/README.md
CHANGED
|
@@ -55,19 +55,19 @@ import 'reflect-metadata';
|
|
|
55
55
|
import { by, Container, inject, ReflectionInjector, Provider } from 'ts-ioc-container';
|
|
56
56
|
|
|
57
57
|
describe('Basic usage', function () {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
it('should inject dependencies', function () {
|
|
59
|
+
class Logger {
|
|
60
|
+
name = 'Logger';
|
|
61
|
+
}
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
class App {
|
|
64
|
+
constructor(@inject(by('ILogger')) public logger: Logger) {}
|
|
65
|
+
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
const container = new Container(new ReflectionInjector()).register('ILogger', Provider.fromClass(Logger));
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
expect(container.resolve(App).logger.name).toBe('Logger');
|
|
70
|
+
});
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
```
|
|
@@ -79,10 +79,32 @@ Sometimes you need to create a scope of container. For example, when you want to
|
|
|
79
79
|
- NOTICE: when you create a scope of container then all providers are cloned to new scope. For that reason every provider has methods `clone` and `isValid` to clone itself and check if it's valid for certain scope accordingly.
|
|
80
80
|
|
|
81
81
|
```typescript
|
|
82
|
-
import
|
|
82
|
+
import 'reflect-metadata';
|
|
83
|
+
import {
|
|
84
|
+
asSingleton,
|
|
85
|
+
perTags,
|
|
86
|
+
Container,
|
|
87
|
+
Provider,
|
|
88
|
+
ReflectionInjector,
|
|
89
|
+
DependencyNotFoundError,
|
|
90
|
+
} from 'ts-ioc-container';
|
|
91
|
+
|
|
92
|
+
class Logger {}
|
|
93
|
+
|
|
94
|
+
describe('Scopes', function () {
|
|
95
|
+
it('should resolve dependencies from scope', function () {
|
|
96
|
+
const container = new Container(new ReflectionInjector(), { tags: ['root'] }).register(
|
|
97
|
+
'ILogger',
|
|
98
|
+
Provider.fromClass(Logger).pipe(asSingleton(), perTags('child')),
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
const scope = container.createScope(['child']);
|
|
102
|
+
|
|
103
|
+
expect(scope.resolve('ILogger')).toBe(scope.resolve('ILogger'));
|
|
104
|
+
expect(() => container.resolve('ILogger')).toThrow(DependencyNotFoundError);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
83
107
|
|
|
84
|
-
const container = new Container(new ReflectionInjector());
|
|
85
|
-
const scope = container.createScope();
|
|
86
108
|
```
|
|
87
109
|
|
|
88
110
|
### Tags
|
|
@@ -110,18 +132,18 @@ Sometimes you want to get all instances from container and its scopes. For examp
|
|
|
110
132
|
import 'reflect-metadata';
|
|
111
133
|
import { Container, Provider, ReflectionInjector } from 'ts-ioc-container';
|
|
112
134
|
describe('Instances', function () {
|
|
113
|
-
|
|
114
|
-
|
|
135
|
+
it('should return injected instances', function () {
|
|
136
|
+
class Logger {}
|
|
115
137
|
|
|
116
|
-
|
|
117
|
-
|
|
138
|
+
const container = new Container(new ReflectionInjector()).register('ILogger', Provider.fromClass(Logger));
|
|
139
|
+
const scope = container.createScope();
|
|
118
140
|
|
|
119
|
-
|
|
120
|
-
|
|
141
|
+
const logger1 = container.resolve('ILogger');
|
|
142
|
+
const logger2 = scope.resolve('ILogger');
|
|
121
143
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
144
|
+
expect(scope.getInstances().length).toBe(1);
|
|
145
|
+
expect(container.getInstances().length).toBe(2);
|
|
146
|
+
});
|
|
125
147
|
});
|
|
126
148
|
|
|
127
149
|
```
|
|
@@ -134,17 +156,28 @@ Sometimes you want to dispose container and all its scopes. For example, when yo
|
|
|
134
156
|
- when container is disposed then it unregisters all providers and remove all instances
|
|
135
157
|
|
|
136
158
|
```typescript
|
|
137
|
-
import
|
|
159
|
+
import 'reflect-metadata';
|
|
160
|
+
import { Container, ContainerDisposedError, Provider, ReflectionInjector } from 'ts-ioc-container';
|
|
138
161
|
|
|
139
|
-
|
|
140
|
-
const scope = container.createScope(['child']);
|
|
162
|
+
class Logger {}
|
|
141
163
|
|
|
142
|
-
|
|
143
|
-
container
|
|
164
|
+
describe('Disposing', function () {
|
|
165
|
+
it('should container and make it unavailable for the further usage', function () {
|
|
166
|
+
const container = new Container(new ReflectionInjector(), { tags: ['root'] }).register(
|
|
167
|
+
'ILogger',
|
|
168
|
+
Provider.fromClass(Logger),
|
|
169
|
+
);
|
|
170
|
+
const scope = container.createScope(['child']);
|
|
171
|
+
|
|
172
|
+
const logger = scope.resolve('ILogger');
|
|
173
|
+
container.dispose();
|
|
174
|
+
|
|
175
|
+
expect(() => scope.resolve('ILogger')).toThrow(ContainerDisposedError);
|
|
176
|
+
expect(() => container.resolve('ILogger')).toThrow(ContainerDisposedError);
|
|
177
|
+
expect(container.getInstances().length).toBe(0);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
144
180
|
|
|
145
|
-
expect(() => scope.resolve('ILogger')).toThrow(ContainerDisposedError);
|
|
146
|
-
expect(() => container.resolve('ILogger')).toThrow(ContainerDisposedError);
|
|
147
|
-
expect(container.getInstances().length).toBe(0);
|
|
148
181
|
```
|
|
149
182
|
|
|
150
183
|
## Injectors `IInjector`
|
|
@@ -478,36 +511,36 @@ import { AutoMockedContainer, Container, DependencyKey, ReflectionInjector } fro
|
|
|
478
511
|
import { IMock, Mock } from 'moq.ts';
|
|
479
512
|
|
|
480
513
|
export class MoqContainer extends AutoMockedContainer {
|
|
481
|
-
|
|
514
|
+
private mocks = new Map<DependencyKey, IMock<any>>();
|
|
482
515
|
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
516
|
+
resolve<T>(key: DependencyKey): T {
|
|
517
|
+
return this.resolveMock<T>(key).object();
|
|
518
|
+
}
|
|
486
519
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
}
|
|
491
|
-
return this.mocks.get(key) as IMock<T>;
|
|
520
|
+
resolveMock<T>(key: DependencyKey): IMock<T> {
|
|
521
|
+
if (!this.mocks.has(key)) {
|
|
522
|
+
this.mocks.set(key, new Mock());
|
|
492
523
|
}
|
|
524
|
+
return this.mocks.get(key) as IMock<T>;
|
|
525
|
+
}
|
|
493
526
|
}
|
|
494
527
|
|
|
495
528
|
interface IEngine {
|
|
496
|
-
|
|
529
|
+
getRegistrationNumber(): string;
|
|
497
530
|
}
|
|
498
531
|
|
|
499
532
|
describe('Mocking', () => {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
533
|
+
it('should auto-mock dependencies', () => {
|
|
534
|
+
const mockContainer = new MoqContainer();
|
|
535
|
+
const container = new Container(new ReflectionInjector(), { parent: mockContainer });
|
|
503
536
|
|
|
504
|
-
|
|
505
|
-
|
|
537
|
+
const engineMock = mockContainer.resolveMock<IEngine>('IEngine');
|
|
538
|
+
engineMock.setup((i) => i.getRegistrationNumber()).returns('123');
|
|
506
539
|
|
|
507
|
-
|
|
540
|
+
const engine = container.resolve<IEngine>('IEngine');
|
|
508
541
|
|
|
509
|
-
|
|
510
|
-
|
|
542
|
+
expect(engine.getRegistrationNumber()).toBe('123');
|
|
543
|
+
});
|
|
511
544
|
});
|
|
512
545
|
|
|
513
546
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,oCAA2G;AAE3G,MAAsB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":";;;AAAA,oCAA2G;AAE3G,MAAsB,mBAAmB;IACvC,WAAW;QACT,MAAM,IAAI,iCAAyB,EAAE,CAAC;IACxC,CAAC;IAID,OAAO,KAAU,CAAC;IAElB,YAAY;QACV,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,iCAAyB,EAAE,CAAC;IACxC,CAAC;IAED,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,KAAU,CAAC;IAEtB,GAAG;QACD,MAAM,IAAI,iCAAyB,EAAE,CAAC;IACxC,CAAC;CACF;AA1BD,kDA0BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":";;;AAAA,6CAQsB;AAGtB,qDAAkD;AAClD,qEAAkE;AAGlE,MAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerDisposedError.js","sourceRoot":"","sources":["../../lib/container/ContainerDisposedError.ts"],"names":[],"mappings":";;;AAAA,MAAa,sBAAuB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"ContainerDisposedError.js","sourceRoot":"","sources":["../../lib/container/ContainerDisposedError.ts"],"names":[],"mappings":";;;AAAA,MAAa,sBAAuB,SAAQ,KAAK;IAS/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,wBAAwB,CAAC;QAK9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAZD,MAAM,CAAC,MAAM,CAAC,MAAe,EAAE,WAAmB;QAChD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,CAAC;SAC/C;IACH,CAAC;CASF;AAdD,wDAcC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyNotFoundError.js","sourceRoot":"","sources":["../../lib/container/DependencyNotFoundError.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"DependencyNotFoundError.js","sourceRoot":"","sources":["../../lib/container/DependencyNotFoundError.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IAGhD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,yBAAyB,CAAC;QAK/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACF;AARD,0DAQC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,2EAAwE;AACxE,uEAAoE;AAGpE,MAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,2EAAwE;AACxE,uEAAoE;AAGpE,MAAa,cAAc;IACzB,WAAW;QACT,MAAM,IAAI,qDAAyB,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,MAAM,IAAI,qDAAyB,EAAE,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,qDAAyB,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,CAAI,GAAsB;QAC/B,MAAM,IAAI,iDAAuB,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACV,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,KAAU,CAAC;IAEtB,GAAG;QACD,MAAM,IAAI,qDAAyB,EAAE,CAAC;IACxC,CAAC;CACF;AA9BD,wCA8BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../lib/container/IContainer.ts"],"names":[],"mappings":";;;AAWA,SAAgB,eAAe,CAAI,KAAwB;
|
|
1
|
+
{"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../lib/container/IContainer.ts"],"names":[],"mappings":";;;AAWA,SAAgB,eAAe,CAAI,KAAwB;IACzD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACrD,CAAC;AAFD,0CAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodNotImplementedError.js","sourceRoot":"","sources":["../../lib/container/MethodNotImplementedError.ts"],"names":[],"mappings":";;;AAAA,MAAa,yBAA0B,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"MethodNotImplementedError.js","sourceRoot":"","sources":["../../lib/container/MethodNotImplementedError.ts"],"names":[],"mappings":";;;AAAA,MAAa,yBAA0B,SAAQ,KAAK;IAGlD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,2BAA2B,CAAC;QAKjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AARD,8DAQC"}
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;AAAA,qDAQgC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;AAAA,qDAQgC;AAJ9B,6GAAA,eAAe,OAAA;AAMjB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAGlB,+EAA8E;AAArE,kIAAA,uBAAuB,OAAA;AAChC,mFAAkF;AAAzE,sIAAA,yBAAyB,OAAA;AAClC,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAC/B,gDAAyD;AAAhD,oGAAA,QAAQ,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAC3B,wDAAuE;AAAtD,0GAAA,UAAU,OAAA;AAAE,wGAAA,QAAQ,OAAA;AACrC,kEAA2D;AAAlD,gHAAA,WAAW,OAAA;AACpB,4DAAoD;AAA3C,yGAAA,OAAO,OAAA;AAChB,uEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAC5B,4DAAmE;AAA1D,sGAAA,MAAM,OAAA;AAAE,4GAAA,YAAY,OAAA;AAC7B,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,oEAA+E;AAAtE,wHAAA,kBAAkB,OAAA;AAAE,4GAAA,MAAM,OAAA;AAAE,wGAAA,EAAE,OAAA;AACvC,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AACvB,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,2CAA8C;AAArC,kGAAA,IAAI,OAAA;AAAE,sGAAA,QAAQ,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyInjector.js","sourceRoot":"","sources":["../../lib/injector/ProxyInjector.ts"],"names":[],"mappings":";;;AAIA,wDAAwD;AACxD,SAAS,OAAO,CAAC,MAAc,EAAE,GAAoB;
|
|
1
|
+
{"version":3,"file":"ProxyInjector.js","sourceRoot":"","sources":["../../lib/injector/ProxyInjector.ts"],"names":[],"mappings":";;;AAIA,wDAAwD;AACxD,SAAS,OAAO,CAAC,MAAc,EAAE,GAAoB;IACnD,aAAa;IACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,MAAa,aAAa;IACxB,wDAAwD;IACxD,OAAO,CAAI,SAAqB,EAAE,MAAsB,EAAE,GAAG,IAAc;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,iCAAM,GAAG,GAAK,EAAE,EAAG,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,EAAE,EACF;YACE,wDAAwD;YACxD,GAAG,CAAC,MAAU,EAAE,IAAqB;gBACnC,iDAAiD;gBACjD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnF,CAAC;SACF,CACF,CAAC;QACF,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF;AAhBD,sCAgBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReflectionInjector.js","sourceRoot":"","sources":["../../lib/injector/ReflectionInjector.ts"],"names":[],"mappings":";;;AAEA,oCAAwD;AACxD,8CAAwC;AAIxC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"ReflectionInjector.js","sourceRoot":"","sources":["../../lib/injector/ReflectionInjector.ts"],"names":[],"mappings":";;;AAEA,oCAAwD;AACxD,8CAAwC;AAIxC,MAAM,IAAI,GACR,CAAC,GAAoB,EAAE,EAAE,CACzB,CAAC,KAAe,EAAsB,EAAE,CACxC,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;;IACtC,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;IAC3D,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEG,MAAM,EAAE,GACb,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CAChB,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAHlB,QAAA,EAAE,MAGgB;AAE/B,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACzB,QAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AAEzC,MAAa,kBAAkB;IAC7B,OAAO,CAAI,SAAqB,EAAE,MAAsB,EAAE,GAAG,IAAe;QAC1E,MAAM,YAAY,GAAG,IAAA,oBAAO,EAAa,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,IAAA,aAAK,EAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAND,gDAMC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleInjector.js","sourceRoot":"","sources":["../../lib/injector/SimpleInjector.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"SimpleInjector.js","sourceRoot":"","sources":["../../lib/injector/SimpleInjector.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;IACzB,OAAO,CAAI,SAAqB,EAAE,MAAsB,EAAE,GAAG,IAAe;QAC1E,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,wCAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":";;;AAAA,2DAAwD;AAOxD,SAAgB,QAAQ,CAAc,GAAG,SAAoB;
|
|
1
|
+
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":";;;AAAA,2DAAwD;AAOxD,SAAgB,QAAQ,CAAc,GAAG,SAAoB;IAC3D,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACnE,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAc,KAAa;IACnD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAFD,gCAEC;AAED,MAAa,YAAgB,SAAQ,qCAAoB;IACvD,YAAoB,QAAsB,EAAU,MAAc;QAChE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADE,aAAQ,GAAR,QAAQ,CAAc;QAAU,WAAM,GAAN,MAAM,CAAQ;IAElE,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK;QACH,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;CACF;AAZD,oCAYC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/provider/Provider.ts"],"names":[],"mappings":";;;AAEA,oCAAoD;AACpD,8CAAiD;AAE1C,MAAM,QAAQ,GAAG,CAAC,GAAG,OAA2B,EAAkB,EAAE,CAAC,IAAA,oBAAO,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAA5F,QAAA,QAAQ,YAAoF;AAEzG,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/provider/Provider.ts"],"names":[],"mappings":";;;AAEA,oCAAoD;AACpD,8CAAiD;AAE1C,MAAM,QAAQ,GAAG,CAAC,GAAG,OAA2B,EAAkB,EAAE,CAAC,IAAA,oBAAO,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAA5F,QAAA,QAAQ,YAAoF;AAEzG,MAAa,QAAQ;IAUnB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IATxE,MAAM,CAAC,SAAS,CAAI,MAAsB;;QACxC,MAAM,OAAO,GAAG,MAAA,IAAA,oBAAO,EAAwB,MAAM,EAAE,UAAU,CAAC,mCAAI,EAAE,CAAC;QACzE,OAAO,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QAC1B,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAID,IAAI,CAAC,GAAG,OAA8B;QACpC,OAAO,IAAA,YAAI,EAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3BD,4BA2BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;AAEA,oCAAuC;AAEvC,MAAsB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;AAEA,oCAAuC;AAEvC,MAAsB,iBAAiB;IACrC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAIzD,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAW;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,GAAG,OAA8B;QACpC,OAAO,IAAA,YAAI,EAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAhBD,8CAgBC"}
|
|
@@ -2,7 +2,7 @@ import { Resolvable } from '../container/IContainer';
|
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { IProvider } from './IProvider';
|
|
4
4
|
import { MapFn } from '../utils';
|
|
5
|
-
export declare function asSingleton(): MapFn<IProvider
|
|
5
|
+
export declare function asSingleton<T = unknown>(): MapFn<IProvider<T>>;
|
|
6
6
|
export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
7
7
|
private readonly provider;
|
|
8
8
|
private instance?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAMxD,SAAgB,WAAW;
|
|
1
|
+
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAMxD,SAAgB,WAAW;IACzB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAFD,kCAEC;AAED,MAAa,iBAAqB,SAAQ,qCAAoB;IAG5D,YAA6B,QAAsB;QACjD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAc;IAEnD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;;QAC/C,IAAI,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;CACF;AAfD,8CAeC"}
|
|
@@ -2,7 +2,7 @@ import { IProvider } from './IProvider';
|
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { Tag, Tagged } from '../container/IContainer';
|
|
4
4
|
import { MapFn } from '../utils';
|
|
5
|
-
export declare function perTags(...tags: Tag[]): MapFn<IProvider
|
|
5
|
+
export declare function perTags<T = unknown>(...tags: Tag[]): MapFn<IProvider<T>>;
|
|
6
6
|
export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
7
7
|
private provider;
|
|
8
8
|
private readonly tags;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAIxD,SAAgB,OAAO,
|
|
1
|
+
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAIxD,SAAgB,OAAO,CAAc,GAAG,IAAW;IACjD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAFD,0BAEC;AAED,MAAa,cAAkB,SAAQ,qCAAoB;IACzD,YAAoB,QAAsB,EAAmB,IAAW;QACtE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADE,aAAQ,GAAR,QAAQ,CAAc;QAAmB,SAAI,GAAJ,IAAI,CAAO;IAExE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;CACF;AAZD,wCAYC"}
|
package/cjs/reflection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../lib/reflection.ts"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../lib/reflection.ts"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,GAClB,CAAI,GAAoB,EAAE,KAAQ,EAAkB,EAAE,CACtD,CAAC,MAAM,EAAE,EAAE;IACT,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC;AAJS,QAAA,OAAO,WAIhB;AAEJ,wDAAwD;AACxD,SAAgB,OAAO,CAAI,MAAc,EAAE,GAAoB;IAC7D,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAM,CAAC;AAClD,CAAC;AAFD,0BAEC;AAEM,MAAM,IAAI,GACf,CAAC,GAAoB,EAAmB,EAAE,CAC1C,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,mDAAmD;AAC/H,CAAC,CAAC;AALS,QAAA,IAAI,QAKb;AAEJ,wDAAwD;AACxD,SAAgB,QAAQ,CAAC,MAAc,EAAE,GAAoB;IAC3D,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1G,CAAC;AAFD,4BAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyMissingKeyError.js","sourceRoot":"","sources":["../../lib/registration/DependencyMissingKeyError.ts"],"names":[],"mappings":";;;AAAA,MAAa,yBAA0B,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"DependencyMissingKeyError.js","sourceRoot":"","sources":["../../lib/registration/DependencyMissingKeyError.ts"],"names":[],"mappings":";;;AAAA,MAAa,yBAA0B,SAAQ,KAAK;IAGlD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,2BAA2B,CAAC;QAKjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AARD,8DAQC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;AAAA,2EAAwE;AAGxE,8CAAiD;AACjD,mDAAgD;AAGzC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAkB,EAAE,CAAC,IAAA,oBAAO,EAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAA/E,QAAA,MAAM,UAAyE;AAE5F,MAAa,YAAY;
|
|
1
|
+
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":";;;AAAA,2EAAwE;AAGxE,8CAAiD;AACjD,mDAAgD;AAGzC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAkB,EAAE,CAAC,IAAA,oBAAO,EAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAA/E,QAAA,MAAM,UAAyE;AAE5F,MAAa,YAAY;IASvB,YAAoB,GAAkB,EAAU,QAAmB;QAA/C,QAAG,GAAH,GAAG,CAAe;QAAU,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IARvE,MAAM,CAAC,SAAS,CAAC,MAA4B;QAC3C,MAAM,aAAa,GAAG,IAAA,oBAAO,EAAgB,MAAM,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,aAAa,KAAK,SAAS,EAAE;YAC/B,MAAM,IAAI,qDAAyB,CAAC,kCAAkC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACtF;QACD,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,mBAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IAID,IAAI,CAAC,GAAG,OAA2B;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,SAAqB;QAC3B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF;AAnBD,oCAmBC"}
|
package/cjs/utils.js
CHANGED
|
@@ -14,9 +14,7 @@ function merge(baseArr, insertArr) {
|
|
|
14
14
|
}
|
|
15
15
|
const [b1, ...restBaseArr] = baseArr;
|
|
16
16
|
const [i1, ...restInsertArr] = insertArr;
|
|
17
|
-
return b1 === undefined
|
|
18
|
-
? [i1].concat(merge(restBaseArr, restInsertArr))
|
|
19
|
-
: [b1].concat(merge(restBaseArr, insertArr));
|
|
17
|
+
return b1 === undefined ? [i1].concat(merge(restBaseArr, restInsertArr)) : [b1].concat(merge(restBaseArr, insertArr));
|
|
20
18
|
}
|
|
21
19
|
exports.merge = merge;
|
|
22
20
|
const constant = (value) => () => value;
|
package/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,IAAI,CAAI,GAAG,OAAmB;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,IAAI,CAAI,GAAG,OAAmB;IAC5C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAI,OAA0B,EAAE,SAAc;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,OAAc,CAAC;KACvB;IACD,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AACxH,CAAC;AAXD,sBAWC;AAEM,MAAM,QAAQ,GACnB,CAAI,KAAQ,EAAE,EAAE,CAChB,GAAG,EAAE,CACH,KAAK,CAAC;AAHG,QAAA,QAAQ,YAGX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAiB,MAAM,UAAU,CAAC;AAE3G,MAAM,OAAgB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/container/AutoMockedContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,yBAAyB,EAAiB,MAAM,UAAU,CAAC;AAE3G,MAAM,OAAgB,mBAAmB;IACvC,WAAW;QACT,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;IAID,OAAO,KAAU,CAAC;IAElB,YAAY;QACV,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;IAED,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,KAAU,CAAC;IAEtB,GAAG;QACD,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../lib/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerDisposedError.js","sourceRoot":"","sources":["../../lib/container/ContainerDisposedError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"ContainerDisposedError.js","sourceRoot":"","sources":["../../lib/container/ContainerDisposedError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAS/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,wBAAwB,CAAC;QAK9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAZD,MAAM,CAAC,MAAM,CAAC,MAAe,EAAE,WAAmB;QAChD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,CAAC;SAC/C;IACH,CAAC;CASF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyNotFoundError.js","sourceRoot":"","sources":["../../lib/container/DependencyNotFoundError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"DependencyNotFoundError.js","sourceRoot":"","sources":["../../lib/container/DependencyNotFoundError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAGhD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,yBAAyB,CAAC;QAK/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../lib/container/EmptyContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,OAAO,cAAc;IACzB,WAAW;QACT,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,CAAI,GAAsB;QAC/B,MAAM,IAAI,uBAAuB,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACV,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,KAAU,CAAC;IAEtB,GAAG;QACD,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../lib/container/IContainer.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,eAAe,CAAI,KAAwB;
|
|
1
|
+
{"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../lib/container/IContainer.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,eAAe,CAAI,KAAwB;IACzD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodNotImplementedError.js","sourceRoot":"","sources":["../../lib/container/MethodNotImplementedError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"MethodNotImplementedError.js","sourceRoot":"","sources":["../../lib/container/MethodNotImplementedError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAGlD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,2BAA2B,CAAC;QAKjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF"}
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,eAAe,GAIhB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAU,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyInjector.js","sourceRoot":"","sources":["../../lib/injector/ProxyInjector.ts"],"names":[],"mappings":"AAIA,wDAAwD;AACxD,SAAS,OAAO,CAAC,MAAc,EAAE,GAAoB;
|
|
1
|
+
{"version":3,"file":"ProxyInjector.js","sourceRoot":"","sources":["../../lib/injector/ProxyInjector.ts"],"names":[],"mappings":"AAIA,wDAAwD;AACxD,SAAS,OAAO,CAAC,MAAc,EAAE,GAAoB;IACnD,aAAa;IACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,aAAa;IACxB,wDAAwD;IACxD,OAAO,CAAI,SAAqB,EAAE,MAAsB,EAAE,GAAG,IAAc;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,iCAAM,GAAG,GAAK,EAAE,EAAG,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,EAAE,EACF;YACE,wDAAwD;YACxD,GAAG,CAAC,MAAU,EAAE,IAAqB;gBACnC,iDAAiD;gBACjD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnF,CAAC;SACF,CACF,CAAC;QACF,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReflectionInjector.js","sourceRoot":"","sources":["../../lib/injector/ReflectionInjector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAe,KAAK,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"ReflectionInjector.js","sourceRoot":"","sources":["../../lib/injector/ReflectionInjector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAe,KAAK,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,MAAM,IAAI,GACR,CAAC,GAAoB,EAAE,EAAE,CACzB,CAAC,KAAe,EAAsB,EAAE,CACxC,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;;IACtC,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;IAC3D,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,EAAE,GACb,CAAI,GAAsB,EAAE,GAAG,IAAe,EAAE,EAAE,CAClD,CAAC,CAAa,EAAE,EAAE,CAChB,CAAC,CAAC,OAAO,CAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAE/B,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AAEzC,MAAM,OAAO,kBAAkB;IAC7B,OAAO,CAAI,SAAqB,EAAE,MAAsB,EAAE,GAAG,IAAe;QAC1E,MAAM,YAAY,GAAG,OAAO,CAAa,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleInjector.js","sourceRoot":"","sources":["../../lib/injector/SimpleInjector.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"SimpleInjector.js","sourceRoot":"","sources":["../../lib/injector/SimpleInjector.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,cAAc;IACzB,OAAO,CAAI,SAAqB,EAAE,MAAsB,EAAE,GAAG,IAAe;QAC1E,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,MAAM,UAAU,QAAQ,CAAc,GAAG,SAAoB;
|
|
1
|
+
{"version":3,"file":"ArgsProvider.js","sourceRoot":"","sources":["../../lib/provider/ArgsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,MAAM,UAAU,QAAQ,CAAc,GAAG,SAAoB;IAC3D,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,UAAU,CAAc,KAAa;IACnD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,OAAO,YAAgB,SAAQ,iBAAoB;IACvD,YAAoB,QAAsB,EAAU,MAAc;QAChE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADE,aAAQ,GAAR,QAAQ,CAAc;QAAU,WAAM,GAAN,MAAM,CAAQ;IAElE,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK;QACH,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/provider/Provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,IAAI,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAA2B,EAAkB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzG,MAAM,OAAO,QAAQ;
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/provider/Provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,IAAI,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAA2B,EAAkB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzG,MAAM,OAAO,QAAQ;IAUnB,YAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IATxE,MAAM,CAAC,SAAS,CAAI,MAAsB;;QACxC,MAAM,OAAO,GAAG,MAAA,OAAO,CAAwB,MAAM,EAAE,UAAU,CAAC,mCAAI,EAAE,CAAC;QACzE,OAAO,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAC,SAAS,CAAI,KAAQ;QAC1B,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAID,IAAI,CAAC,GAAG,OAA8B;QACpC,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,IAAI,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,OAAgB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../lib/provider/ProviderDecorator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,IAAI,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,OAAgB,iBAAiB;IACrC,YAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAIzD,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAW;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,GAAG,OAA8B;QACpC,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { Resolvable } from '../container/IContainer';
|
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { IProvider } from './IProvider';
|
|
4
4
|
import { MapFn } from '../utils';
|
|
5
|
-
export declare function asSingleton(): MapFn<IProvider
|
|
5
|
+
export declare function asSingleton<T = unknown>(): MapFn<IProvider<T>>;
|
|
6
6
|
export declare class SingletonProvider<T> extends ProviderDecorator<T> {
|
|
7
7
|
private readonly provider;
|
|
8
8
|
private instance?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,UAAU,WAAW;
|
|
1
|
+
{"version":3,"file":"SingletonProvider.js","sourceRoot":"","sources":["../../lib/provider/SingletonProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,OAAO,iBAAqB,SAAQ,iBAAoB;IAG5D,YAA6B,QAAsB;QACjD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAc;IAEnD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,SAAqB,EAAE,GAAG,IAAe;;QAC/C,IAAI,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { IProvider } from './IProvider';
|
|
|
2
2
|
import { ProviderDecorator } from './ProviderDecorator';
|
|
3
3
|
import { Tag, Tagged } from '../container/IContainer';
|
|
4
4
|
import { MapFn } from '../utils';
|
|
5
|
-
export declare function perTags(...tags: Tag[]): MapFn<IProvider
|
|
5
|
+
export declare function perTags<T = unknown>(...tags: Tag[]): MapFn<IProvider<T>>;
|
|
6
6
|
export declare class TaggedProvider<T> extends ProviderDecorator<T> {
|
|
7
7
|
private provider;
|
|
8
8
|
private readonly tags;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,UAAU,OAAO,
|
|
1
|
+
{"version":3,"file":"TaggedProvider.js","sourceRoot":"","sources":["../../lib/provider/TaggedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,UAAU,OAAO,CAAc,GAAG,IAAW;IACjD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,cAAkB,SAAQ,iBAAoB;IACzD,YAAoB,QAAsB,EAAmB,IAAW;QACtE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADE,aAAQ,GAAR,QAAQ,CAAc;QAAmB,SAAI,GAAJ,IAAI,CAAO;IAExE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;CACF"}
|
package/esm/reflection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../lib/reflection.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../lib/reflection.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAClB,CAAI,GAAoB,EAAE,KAAQ,EAAkB,EAAE,CACtD,CAAC,MAAM,EAAE,EAAE;IACT,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEJ,wDAAwD;AACxD,MAAM,UAAU,OAAO,CAAI,MAAc,EAAE,GAAoB;IAC7D,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAM,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GACf,CAAC,GAAoB,EAAmB,EAAE,CAC1C,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,mDAAmD;AAC/H,CAAC,CAAC;AAEJ,wDAAwD;AACxD,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,GAAoB;IAC3D,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1G,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyMissingKeyError.js","sourceRoot":"","sources":["../../lib/registration/DependencyMissingKeyError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"DependencyMissingKeyError.js","sourceRoot":"","sources":["../../lib/registration/DependencyMissingKeyError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAGlD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,SAAI,GAAG,2BAA2B,CAAC;QAKjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAkB,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5F,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../lib/registration/Registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAkB,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5F,MAAM,OAAO,YAAY;IASvB,YAAoB,GAAkB,EAAU,QAAmB;QAA/C,QAAG,GAAH,GAAG,CAAe;QAAU,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IARvE,MAAM,CAAC,SAAS,CAAC,MAA4B;QAC3C,MAAM,aAAa,GAAG,OAAO,CAAgB,MAAM,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,aAAa,KAAK,SAAS,EAAE;YAC/B,MAAM,IAAI,yBAAyB,CAAC,kCAAkC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACtF;QACD,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IAID,IAAI,CAAC,GAAG,OAA2B;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,SAAqB;QAC3B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
package/esm/utils.js
CHANGED
|
@@ -10,9 +10,7 @@ export function merge(baseArr, insertArr) {
|
|
|
10
10
|
}
|
|
11
11
|
const [b1, ...restBaseArr] = baseArr;
|
|
12
12
|
const [i1, ...restInsertArr] = insertArr;
|
|
13
|
-
return b1 === undefined
|
|
14
|
-
? [i1].concat(merge(restBaseArr, restInsertArr))
|
|
15
|
-
: [b1].concat(merge(restBaseArr, insertArr));
|
|
13
|
+
return b1 === undefined ? [i1].concat(merge(restBaseArr, restInsertArr)) : [b1].concat(merge(restBaseArr, insertArr));
|
|
16
14
|
}
|
|
17
15
|
export const constant = (value) => () => value;
|
|
18
16
|
//# sourceMappingURL=utils.js.map
|
package/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,IAAI,CAAI,GAAG,OAAmB;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,IAAI,CAAI,GAAG,OAAmB;IAC5C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,OAA0B,EAAE,SAAc;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,OAAc,CAAC;KACvB;IACD,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AACxH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAI,KAAQ,EAAE,EAAE,CAChB,GAAG,EAAE,CACH,KAAK,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
2
|
+
"name": "ts-ioc-container",
|
|
3
|
+
"version": "23.3.7",
|
|
4
|
+
"description": "Typescript IoC container",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public",
|
|
7
|
+
"registry": "https://registry.npmjs.org/"
|
|
8
|
+
},
|
|
9
|
+
"author": "ibabkin <igba14@gmail.com>",
|
|
10
|
+
"homepage": "https://github.com/IgorBabkin/ts-ioc-container/tree/master/packages/ts-ioc-container",
|
|
11
|
+
"license": "ISC",
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "cjs/index.js",
|
|
15
|
+
"types": "esm/index.d.ts",
|
|
16
|
+
"module": "esm/index.js",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"dependency-injection",
|
|
19
|
+
"inversion-of-control",
|
|
20
|
+
"container",
|
|
21
|
+
"typescript",
|
|
22
|
+
"ioc",
|
|
23
|
+
"di"
|
|
24
|
+
],
|
|
25
|
+
"directories": {
|
|
26
|
+
"lib": "lib",
|
|
27
|
+
"test": "__tests__"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"cjs/**/*",
|
|
31
|
+
"esm/**/*"
|
|
32
|
+
],
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/IgorBabkin/ts-ioc-container/tree/master/packages/ts-ioc-container"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build:cjs": "rimraf cjs && tsc -p tsconfig.production.json --outDir cjs --module CommonJS",
|
|
39
|
+
"build:esm": "rimraf esm && tsc -p tsconfig.production.json --outDir esm",
|
|
40
|
+
"build:readme": "ts-node --esm ./scripts/compileReadme.ts",
|
|
41
|
+
"build": "npm-run-all -p build:**",
|
|
42
|
+
"coverage": "coveralls",
|
|
43
|
+
"watch": "nodemon --watch ./lib --exec npm run build",
|
|
44
|
+
"test": "jest --coverage"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/jest": "27.0.2",
|
|
48
|
+
"handlebars": "^4.7.7",
|
|
49
|
+
"jest": "27.2.3",
|
|
50
|
+
"moq.ts": "^7.3.4",
|
|
51
|
+
"nodemon": "^2.0.13",
|
|
52
|
+
"npm-run-all": "4.1.5",
|
|
53
|
+
"reflect-metadata": "^0.1.13",
|
|
54
|
+
"rimraf": "3.0.2",
|
|
55
|
+
"ts-jest": "27.0.5",
|
|
56
|
+
"ts-node": "^10.9.1",
|
|
57
|
+
"typescript": "4.4.3"
|
|
58
|
+
},
|
|
59
|
+
"gitHead": "f19623a70ba6c19aaaec090048724984f9ba999a"
|
|
60
60
|
}
|
package/README.template.md
DELETED
|
@@ -1,453 +0,0 @@
|
|
|
1
|
-
# Typescript IoC (Inversion Of Control) container
|
|
2
|
-
|
|
3
|
-

|
|
4
|
-

|
|
5
|
-

|
|
6
|
-
[](https://coveralls.io/github/IgorBabkin/ts-ioc-container?branch=master)
|
|
7
|
-

|
|
8
|
-
|
|
9
|
-
## Advantages
|
|
10
|
-
- battle tested :boom:
|
|
11
|
-
- written on `typescript`
|
|
12
|
-
- simple and lightweight (roughly it's just one file of **~100 lines**) :heart:
|
|
13
|
-
- clean API :green_heart:
|
|
14
|
-
- supports `tagged scopes`
|
|
15
|
-
- fully test covered :100:
|
|
16
|
-
- can be used with decorators `@inject`
|
|
17
|
-
- composable and open to extend
|
|
18
|
-
- awesome for testing (auto mocking)
|
|
19
|
-
|
|
20
|
-
## Install
|
|
21
|
-
```shell script
|
|
22
|
-
npm install ts-ioc-container reflect-metadata
|
|
23
|
-
```
|
|
24
|
-
```shell script
|
|
25
|
-
yarn add ts-ioc-container reflect-metadata
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Setup
|
|
29
|
-
### reflect-metadata
|
|
30
|
-
Just put it in the main file of your project. It should be the first line of the code.
|
|
31
|
-
```typescript
|
|
32
|
-
import 'reflect-metadata';
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### tsconfig.json
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"compilerOptions": {
|
|
39
|
-
"experimentalDecorators": true,
|
|
40
|
-
"emitDecoratorMetadata": true
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Container `IContainer`
|
|
46
|
-
It consists of 2 main parts:
|
|
47
|
-
|
|
48
|
-
- Providers - describes how to create instances of dependencies
|
|
49
|
-
- Injector - describes how to inject dependencies to constructor
|
|
50
|
-
|
|
51
|
-
### Basic usage
|
|
52
|
-
|
|
53
|
-
```typescript
|
|
54
|
-
{{{include_file './__tests__/readme/basic.spec.ts'}}}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Scopes
|
|
58
|
-
Sometimes you need to create a scope of container. For example, when you want to create a scope per request in web application.
|
|
59
|
-
|
|
60
|
-
- NOTICE: remember that when scope doesn't have dependency then it will be resolved from parent container
|
|
61
|
-
- NOTICE: when you create a scope of container then all providers are cloned to new scope. For that reason every provider has methods `clone` and `isValid` to clone itself and check if it's valid for certain scope accordingly.
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
import { Container, ReflectionInjector } from "ts-ioc-container";
|
|
65
|
-
|
|
66
|
-
const container = new Container(new ReflectionInjector());
|
|
67
|
-
const scope = container.createScope();
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Tags
|
|
71
|
-
Sometimes you want to mark some providers and resolve them only from certain scope. So you can assign tags to providers and create scopes with certain tags. For that reason every scope has method `hasTag` which we invoke from provider to check if it's valid for certain scope.
|
|
72
|
-
|
|
73
|
-
- tag - is a string that we assign to provider and scope/container
|
|
74
|
-
- every provider can be registered per certain tags and cannot be resolved from container with other tags. Only from parent one with certain tags.
|
|
75
|
-
- NOTICE: when you create a scope then we clone ONLY tags-matched providers.
|
|
76
|
-
|
|
77
|
-
```typescript
|
|
78
|
-
import { Container, perTags, ReflectionInjector } from "ts-ioc-container";
|
|
79
|
-
|
|
80
|
-
const container = new Container(new ReflectionInjector(), { tags: ['root'] }).register('ILogger', Provider.fromClass(Logger).pipe(perTags('root')));
|
|
81
|
-
const scope = container.createScope(['child']);
|
|
82
|
-
|
|
83
|
-
scope.resolve('ILogger'); // it will be resolved from container, not from scope
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Instances
|
|
87
|
-
Sometimes you want to get all instances from container and its scopes. For example, when you want to dispose all instances of container.
|
|
88
|
-
|
|
89
|
-
- you can get instances from container and scope which were created by injector
|
|
90
|
-
|
|
91
|
-
```typescript
|
|
92
|
-
{{{include_file './__tests__/readme/instances.spec.ts'}}}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Disposing
|
|
96
|
-
Sometimes you want to dispose container and all its scopes. For example, when you want to prevent memory leaks. Or you want to ensure that nobody can use container after it was disposed.
|
|
97
|
-
|
|
98
|
-
- container can be disposed
|
|
99
|
-
- when container is disposed then all scopes are disposed too
|
|
100
|
-
- when container is disposed then it unregisters all providers and remove all instances
|
|
101
|
-
|
|
102
|
-
```typescript
|
|
103
|
-
import { asSingleton, Container, perTags, ReflectionInjector, ContainerDisposedError } from "ts-ioc-container";
|
|
104
|
-
|
|
105
|
-
const container = new Container(new ReflectionInjector(), { tags: ['root'] }).register('ILogger', Provider.fromClass(Logger));
|
|
106
|
-
const scope = container.createScope(['child']);
|
|
107
|
-
|
|
108
|
-
const logger = scope.resolve('ILogger');
|
|
109
|
-
container.dispose();
|
|
110
|
-
|
|
111
|
-
expect(() => scope.resolve('ILogger')).toThrow(ContainerDisposedError);
|
|
112
|
-
expect(() => container.resolve('ILogger')).toThrow(ContainerDisposedError);
|
|
113
|
-
expect(container.getInstances().length).toBe(0);
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Injectors `IInjector`
|
|
117
|
-
Injectors are used to describe how dependencies should be injected to constructor.
|
|
118
|
-
|
|
119
|
-
- `ReflectionInjector` - injects dependencies using `@inject` decorator
|
|
120
|
-
- `ProxyInjector` - injects dependencies as dictionary `Record<string, unknown>`
|
|
121
|
-
- `SimpleInjector` - just passes container to constructor with others arguments
|
|
122
|
-
|
|
123
|
-
### Reflection injector
|
|
124
|
-
This type of injector uses `@inject` decorator to mark where dependencies should be injected. It's bases on `reflect-metadata` package. That's why I call it `ReflectionInjector`.
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
import { Container, IContainer, IInjector, Provider, by, inject, resolve } from "ts-ioc-container";
|
|
128
|
-
|
|
129
|
-
class Logger implements ILogger {
|
|
130
|
-
info(message: string) {
|
|
131
|
-
console.log(message);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
class App {
|
|
136
|
-
constructor(@inject((container, ...args) => container.resolve('ILogger', ...args)) private logger: ILogger) {
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// OR
|
|
140
|
-
// constructor(@inject(by('ILogger')) private logger: ILogger) {
|
|
141
|
-
// }
|
|
142
|
-
|
|
143
|
-
run() {
|
|
144
|
-
this.logger.info('Hello world');
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
const container = new Container(new ReflectionInjector())
|
|
149
|
-
.register('ILogger', Provider.fromClass(Logger));
|
|
150
|
-
|
|
151
|
-
const app = container.resolve(App);
|
|
152
|
-
app.run();
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Simple injector
|
|
156
|
-
This type of injector just passes container to constructor with others arguments.
|
|
157
|
-
|
|
158
|
-
```typescript
|
|
159
|
-
import { SimpleInjector, IContainer } from "ts-ioc-container";
|
|
160
|
-
|
|
161
|
-
class Logger implements ILogger {
|
|
162
|
-
info(message: string) {
|
|
163
|
-
console.log(message);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
class App {
|
|
168
|
-
private logger: ILogger;
|
|
169
|
-
|
|
170
|
-
constructor(private container: IContainer) {
|
|
171
|
-
this.logger = container.resolve('ILogger');
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
run() {
|
|
175
|
-
this.logger.info('Hello world');
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const container = new Container(new SimpleInjector())
|
|
180
|
-
.register('ILogger', Provider.fromClass(Logger));
|
|
181
|
-
|
|
182
|
-
const app = container.resolve(App);
|
|
183
|
-
app.run();
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Proxy injector
|
|
187
|
-
This type of injector injects dependencies as dictionary `Record<string, unknown>`.
|
|
188
|
-
|
|
189
|
-
```typescript
|
|
190
|
-
import { ProxyInjector, IContainer } from "ts-ioc-container";
|
|
191
|
-
|
|
192
|
-
class Logger implements ILogger {
|
|
193
|
-
info(message: string) {
|
|
194
|
-
console.log(message);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
class App {
|
|
199
|
-
private logger: ILogger;
|
|
200
|
-
|
|
201
|
-
constructor({ logger }: { logger: ILogger }) {
|
|
202
|
-
this.logger = logger;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
run() {
|
|
206
|
-
this.logger.info('Hello world');
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
const container = new Container(new ProxyInjector())
|
|
211
|
-
.register('logger', Provider.fromClass(Logger));
|
|
212
|
-
|
|
213
|
-
const app = container.resolve(App);
|
|
214
|
-
app.run();
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Providers `IProvider<T>`
|
|
218
|
-
Providers are used to describe how instances should be created. It has next basic methods:
|
|
219
|
-
- `resolve` - creates instance with passed arguments
|
|
220
|
-
- `clone` - we invoke it when we create a scope. It clones provider to new scope.
|
|
221
|
-
- `isValid` - checks if provider can be resolved from container or cloned to container with certain tags
|
|
222
|
-
|
|
223
|
-
There are next types of providers:
|
|
224
|
-
- `Provider` - basic provider
|
|
225
|
-
- `SingletonProvider` - provider that creates only one instance in every scope where it's resolved
|
|
226
|
-
- `TaggedProvider` - provider that can be resolved only from container with certain tags and their sub scopes
|
|
227
|
-
- `ArgsProvider` - provider that encapsulates arguments to pass it to constructor.
|
|
228
|
-
|
|
229
|
-
### Provider
|
|
230
|
-
|
|
231
|
-
From function
|
|
232
|
-
|
|
233
|
-
```typescript
|
|
234
|
-
import { Provider } from "ts-ioc-container";
|
|
235
|
-
|
|
236
|
-
container.register('ILogger', new Provider((container, ...args) => new Logger(container, ...args)));
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
From class
|
|
240
|
-
|
|
241
|
-
```typescript
|
|
242
|
-
import { Provider } from "ts-ioc-container";
|
|
243
|
-
|
|
244
|
-
container.register('ILogger', Provider.fromClass(Logger));
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
From value
|
|
248
|
-
|
|
249
|
-
```typescript
|
|
250
|
-
import { Provider } from "ts-ioc-container";
|
|
251
|
-
|
|
252
|
-
container.register('ILogger', Provider.fromValue(new Logger()));
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
`pipe` - decorates provider by other providers
|
|
256
|
-
|
|
257
|
-
```typescript
|
|
258
|
-
import { asSingleton, perTags, Provider, SingletonProvider, TaggedProvider } from "ts-ioc-container";
|
|
259
|
-
|
|
260
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe((provider) => new SingletonProvider(provider)), (provider) => new TaggedProvider(provider, ['root']));
|
|
261
|
-
|
|
262
|
-
// OR
|
|
263
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe(asSingleton(), perTags('root')));
|
|
264
|
-
|
|
265
|
-
// OR
|
|
266
|
-
@provider(asSingleton(), perTags('root'))
|
|
267
|
-
class Logger {
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
container.register('ILogger', Provider.fromClass(Logger));
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
### Singleton provider
|
|
274
|
-
Sometimes you need to create only one instance of dependency per scope. For example, you want to create only one logger per scope.
|
|
275
|
-
|
|
276
|
-
- Singleton provider creates only one instance in every scope where it's resolved.
|
|
277
|
-
- NOTICE: if you create a scope 'A' of container 'root' then Logger of A !== Logger of root.
|
|
278
|
-
|
|
279
|
-
```typescript
|
|
280
|
-
import { Provider, SingletonProvider, asSingleton } from "ts-ioc-container";
|
|
281
|
-
|
|
282
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe((provider) => new SingletonProvider(provider)));
|
|
283
|
-
// OR
|
|
284
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe(asSingleton()));
|
|
285
|
-
|
|
286
|
-
container.resolve('ILogger') === container.resolve('ILogger'); // true
|
|
287
|
-
|
|
288
|
-
const scope = container.createScope();
|
|
289
|
-
scope.resolve('ILogger') === scope.resolve('ILogger'); // true
|
|
290
|
-
container.resolve('ILogger') !== scope.resolve('ILogger'); // true. NOTICE: because every provider is cloned for every child scope from parent one
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
### Tagged provider
|
|
294
|
-
Sometimes you need to resolve provider only from container with certain tags and their sub scopes. Especially if you want to register dependency as singleton for some tags, for example `root`
|
|
295
|
-
- NOTICE: It doesn't make clones in not tagged-matched scopes. Usually it's used with `SingletonProvider`.
|
|
296
|
-
|
|
297
|
-
```typescript
|
|
298
|
-
import { Provider, TaggedProvider, asSingleton, perTags } from "ts-ioc-container";
|
|
299
|
-
|
|
300
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe((provider) => new TaggedProvider(provider, ['root'])));
|
|
301
|
-
// OR
|
|
302
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe(perTags('root', 'parent')));
|
|
303
|
-
|
|
304
|
-
// with sigleton
|
|
305
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe(perTags('root', 'parent')).pipe(asSingleton()));
|
|
306
|
-
container.resolve('ILogger') === container.resolve('ILogger'); // true
|
|
307
|
-
|
|
308
|
-
const scope = container.createScope();
|
|
309
|
-
scope.resolve('ILogger') === scope.resolve('ILogger'); // true
|
|
310
|
-
container.resolve('ILogger') === scope.resolve('ILogger'); // true
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### Args provider
|
|
314
|
-
Sometimes you want to bind some arguments to provider. This is what `ArgsProvider` is for.
|
|
315
|
-
- NOTICE: args from this provider has higher priority than args from `resolve` method.
|
|
316
|
-
|
|
317
|
-
```typescript
|
|
318
|
-
import { Provider, ArgsProvider, withArgs, withArgsFn } from "ts-ioc-container";
|
|
319
|
-
|
|
320
|
-
class Logger {
|
|
321
|
-
constructor(public type: string, public name: string) {
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe((provider) => new ArgsProvider(provider, () => ['FileLogger'])));
|
|
326
|
-
|
|
327
|
-
// OR
|
|
328
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe(withArgsFn(() => ['FileLogger'])));
|
|
329
|
-
// OR
|
|
330
|
-
container.register('ILogger', Provider.fromClass(Logger).pipe(withArgs('FileLogger')));
|
|
331
|
-
|
|
332
|
-
container.resolve('ILogger', 'Main').type === 'FileLogger'; // true
|
|
333
|
-
container.resolve('ILogger', 'Main').name === 'Main'; // true
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
## Container modules
|
|
337
|
-
Sometimes you want to encapsulate registration logic in separate module. This is what `IContainerModule` is for.
|
|
338
|
-
|
|
339
|
-
```typescript
|
|
340
|
-
import { Registration } from "ts-ioc-container";
|
|
341
|
-
|
|
342
|
-
class Development implements IContainerModule {
|
|
343
|
-
applyTo(container: IContainer): void {
|
|
344
|
-
container.add(Registration.fromClass(DevLogger));
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
class Production implements IContainerModule {
|
|
349
|
-
applyTo(container: IContainer): void {
|
|
350
|
-
container.add(Registration.fromClass(ProdLogger));
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
const container = new Container(injector, { tags: ['root'] })
|
|
355
|
-
.add(Registration.fromClass(Logger))
|
|
356
|
-
.add(process.env.NODE_ENV === 'production' ? new Production() : new Development());
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
## Registration module (Provider + DependencyKey)
|
|
360
|
-
Sometimes you need to keep dependency key with class together. For example, you want to register class with key 'ILogger' and you want to keep this key with class. This is what `Registration` is for.
|
|
361
|
-
|
|
362
|
-
```typescript
|
|
363
|
-
import { asSingleton, perTags, forKey, Registration, Provider } from "ts-ioc-container";
|
|
364
|
-
|
|
365
|
-
@forKey('ILogger')
|
|
366
|
-
@provider(asSingleton(), perTags('root'))
|
|
367
|
-
class Logger {
|
|
368
|
-
info(message: string) {
|
|
369
|
-
console.log(message);
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
container.register(Registration.fromClass(Logger));
|
|
374
|
-
|
|
375
|
-
// OR
|
|
376
|
-
|
|
377
|
-
@provider(asSingleton(), perTags('root'))
|
|
378
|
-
class Logger {
|
|
379
|
-
info(message: string) {
|
|
380
|
-
console.log(message);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
container.register('ILogger', Provider.fromClass(Logger));
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
## Hooks
|
|
388
|
-
Sometimes you need to invoke methods after construct or dispose of class. This is what hooks are for.
|
|
389
|
-
|
|
390
|
-
```typescript
|
|
391
|
-
import {
|
|
392
|
-
Container,
|
|
393
|
-
IInjector,
|
|
394
|
-
ContainerHook,
|
|
395
|
-
Injector,
|
|
396
|
-
Registration,
|
|
397
|
-
getHooks,
|
|
398
|
-
hook,
|
|
399
|
-
} from "ts-ioc-container";
|
|
400
|
-
|
|
401
|
-
class MyInjector implements IInjector {
|
|
402
|
-
private injector = new ReflectionInjector();
|
|
403
|
-
|
|
404
|
-
resolve<T>(container: IContainer, value: constructor<T>, ...deps: unknown[]): T {
|
|
405
|
-
const instance = this.injector.resolve(container, value, ...deps);
|
|
406
|
-
for (const h of getHooks(instance, 'onConstruct')) {
|
|
407
|
-
// @ts-ignore
|
|
408
|
-
instance[h]();
|
|
409
|
-
}
|
|
410
|
-
return instance;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
@forKey('ILogger')
|
|
415
|
-
class Logger {
|
|
416
|
-
@hook('onConstruct')
|
|
417
|
-
initialize() {
|
|
418
|
-
console.log('initialized');
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
@hook('onDispose')
|
|
422
|
-
dispose() {
|
|
423
|
-
console.log('disposed');
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
const container = new Container(new MyInjector())
|
|
428
|
-
.add(Registration.fromClass(Logger));
|
|
429
|
-
const logger = container.resolve<ILogger>('ILogger'); // initialized
|
|
430
|
-
|
|
431
|
-
for (const instance of container.getInstances()) {
|
|
432
|
-
for (const h of getHooks(instance, 'onDispose')) {
|
|
433
|
-
// @ts-ignore
|
|
434
|
-
instance[h](); // disposed
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
## Mocking / Tests `AutoMockedContainer`
|
|
440
|
-
Sometimes you need to automatically mock all dependencies in container. This is what `AutoMockedContainer` is for.
|
|
441
|
-
|
|
442
|
-
```typescript
|
|
443
|
-
{{{include_file '__tests__/readme/mocking.spec.ts'}}}
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
## Errors
|
|
448
|
-
|
|
449
|
-
- [DependencyNotFoundError.ts](lib%2Fcontainer%2FDependencyNotFoundError.ts)
|
|
450
|
-
- [DependencyMissingKeyError.ts](lib%2Fregistration%2FDependencyMissingKeyError.ts)
|
|
451
|
-
- [MethodNotImplementedError.ts](lib%2FMethodNotImplementedError.ts)
|
|
452
|
-
- [ContainerDisposedError.ts](lib%2Fcontainer%2FContainerDisposedError.ts)
|
|
453
|
-
|