ts-ioc-container 14.0.0 → 14.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -198
- package/cjm/hooks/ContainerHook.d.ts +0 -1
- package/cjm/hooks/ContainerHook.js +0 -3
- package/cjm/hooks/ContainerHook.js.map +1 -1
- package/cjm/index.d.ts +1 -0
- package/cjm/index.js +3 -1
- package/cjm/index.js.map +1 -1
- package/esm/hooks/ContainerHook.d.ts +0 -1
- package/esm/hooks/ContainerHook.js +0 -3
- package/esm/hooks/ContainerHook.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -19,26 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
## Install
|
|
21
21
|
```shell script
|
|
22
|
-
npm install ts-ioc-container
|
|
22
|
+
npm install ts-ioc-container reflect-metadata
|
|
23
23
|
```
|
|
24
24
|
```shell script
|
|
25
|
-
yarn add ts-ioc-container
|
|
25
|
+
yarn add ts-ioc-container reflect-metadata
|
|
26
26
|
```
|
|
27
|
-
Add `reflect-metadata` for IoC
|
|
28
|
-
```shell script
|
|
29
|
-
npm install reflect-metadata
|
|
30
|
-
```
|
|
31
|
-
```shell script
|
|
32
|
-
yarn add reflect-metadata
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Bundled size
|
|
36
|
-
Full-featured IoC bundle (decorators `@inject`, hooks `@onDispose` `@onConstruct`)
|
|
37
|
-
- Stat size: **13.34 KB**
|
|
38
|
-
- Parsed size: **5.44 KB**
|
|
39
|
-
- Gzipped size: **1.63 KB**
|
|
40
27
|
|
|
41
|
-
##
|
|
28
|
+
## tsconfig.json
|
|
42
29
|
```json
|
|
43
30
|
{
|
|
44
31
|
"compilerOptions": {
|
|
@@ -48,186 +35,98 @@ Full-featured IoC bundle (decorators `@inject`, hooks `@onDispose` `@onConstruct
|
|
|
48
35
|
}
|
|
49
36
|
```
|
|
50
37
|
|
|
51
|
-
## Recipes
|
|
52
38
|
|
|
53
|
-
|
|
54
|
-
How to create new
|
|
39
|
+
## Container
|
|
40
|
+
How to create new container
|
|
55
41
|
|
|
56
42
|
```typescript
|
|
57
|
-
import {
|
|
43
|
+
import { Container, fromClass, IInjector } from "ts-ioc-container";
|
|
44
|
+
import { resolve } from 'ts-constructor-injector';
|
|
58
45
|
|
|
59
|
-
const
|
|
60
|
-
locator
|
|
61
|
-
|
|
46
|
+
const injector: IInjector = {
|
|
47
|
+
resolve<T>(locator: Resolveable, value: constructor<T>, ...deps: unknown[]): T {
|
|
48
|
+
return resolve(locator)(value, ...deps);
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
const container = new Container(injector);
|
|
52
|
+
container.register('ILogger', fromClass(Logger).build());
|
|
53
|
+
const logger = container.resolve<ILogger>('ILogger');
|
|
62
54
|
```
|
|
63
|
-
### Injectors
|
|
64
|
-
Simple injector
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
import {ProviderBuilder, SimpleLocatorBuilder} from "ts-ioc-container";
|
|
68
55
|
|
|
69
|
-
|
|
70
|
-
constructor(locator: IServiceLocator) {
|
|
71
|
-
const engine = locator.resolve<IEngine>('IEngine')
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const locator = new SimpleLocatorBuilder().build();
|
|
76
|
-
locator.register('IEngine', ProviderBuilder.fromConstructor(Engine).build());
|
|
77
|
-
const car = locator.resolve(Car);
|
|
78
|
-
```
|
|
79
|
-
IoC injector. Compose `@inject` decorator as you need. Or use default `createInjectDecorator`;
|
|
56
|
+
## ProviderBuilder
|
|
80
57
|
|
|
81
58
|
```typescript
|
|
82
|
-
import
|
|
83
|
-
import {
|
|
84
|
-
metadataCollector,
|
|
85
|
-
InjectFnDecorator,
|
|
86
|
-
InjectMetadataCollector,
|
|
87
|
-
ProviderBuilder,
|
|
88
|
-
InjectionToken,
|
|
89
|
-
IocLocatorBuilder
|
|
90
|
-
} from 'ts-ioc-container';
|
|
91
|
-
import { InjectFn } from "./InjectFn";
|
|
92
|
-
import { IServiceLocator } from "./IServiceLocator";
|
|
93
|
-
import { IocLocatorBuilder } from "./IocLocatorBuilder";
|
|
94
|
-
|
|
95
|
-
export const constructorMetadataCollector = new InjectMetadataCollector(Symbol.for('CONSTRUCTOR_METADATA_KEY'));
|
|
96
|
-
export const inject: InjectFnDecorator = (injectionFn) => (target, propertyKey, parameterIndex) => {
|
|
97
|
-
constructorMetadataCollector.addMetadata(target, parameterIndex, injectionFn);
|
|
98
|
-
};
|
|
99
|
-
export const Factory = <T>(key: InjectionToken<T>, ...args1) => l => (...args2: any[]) => l.resolve(key, ...args1, ...args2);
|
|
100
|
-
export const Item = <T>(key: InjectionToken<T>, ...args: any[]) => l => l.resolve(key, ...args);
|
|
101
|
-
export const Collection = <T>(...injections: InjectFn<T>[]) => l => injections.map(fn => fn(l));
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* OR
|
|
105
|
-
* export const inject = createInjectDecorator(constructorMetadataCollector);
|
|
106
|
-
* export const inject = createInjectFnDecorator(constructorMetadataCollector);
|
|
107
|
-
*/
|
|
108
|
-
|
|
109
|
-
const locator = new IocLocatorBuilder(constructorMetadataCollector).build();
|
|
110
|
-
locator.register<IEngine>('IEngine', ProviderBuilder.fromConstructor(Engine).asRequested().build());
|
|
111
|
-
|
|
112
|
-
class Car {
|
|
113
|
-
constructor(
|
|
114
|
-
@inject(l => l.resolve('IEngine', 'V1')) private engine1: IEngine,
|
|
115
|
-
@inject(l => l) private locator: IServiceLocator,
|
|
116
|
-
/**
|
|
117
|
-
* OR
|
|
118
|
-
* @inject('IEngine', 'V8') private engine8: IEngine, // by using createInjectDecorator
|
|
119
|
-
*/
|
|
120
|
-
@inject(Item('IEngine', 'V8')) private engine8: IEngine,
|
|
121
|
-
@inject(Collection(Item('IEngine', 'V2'), Item('IEngine', 'V4'), Item('IEngine', 'V6'))) private engines: IEngine[],
|
|
122
|
-
@inject(Factory('IEngine', 'V12')) private engineFactory: (model: string) => IEngine,
|
|
123
|
-
) {
|
|
124
|
-
const newEngine = engineFactory('SuperCharger');
|
|
125
|
-
}
|
|
126
|
-
}
|
|
59
|
+
import { fromClass } from "ts-ioc-container";
|
|
127
60
|
|
|
128
|
-
|
|
61
|
+
container.register('ILogger', new ProviderBuilder((container, ...args) => new Logger(...args)).build());
|
|
62
|
+
container.register('ILogger1', fromClass(Logger).forKey('ILogger').asSingleton().forLevel(0).build()); // global singleton
|
|
63
|
+
container.register('ILogger2', fromClass(Logger).asSingleton().forLevel(1).build()); // first scope singleton
|
|
64
|
+
container.register('ILogger3', fromClass(Logger).asSingleton().forTags(['tag1', 'tag2']).build()); // singleton for scope with tag1 or tag2
|
|
65
|
+
container.register('ILogger4', fromClass(Logger).withArgs('dev').asSingleton().build()); // singleton in every scope
|
|
129
66
|
```
|
|
130
67
|
|
|
131
|
-
##
|
|
68
|
+
## Decorators
|
|
132
69
|
|
|
133
70
|
```typescript
|
|
134
|
-
import {
|
|
71
|
+
import { asSingleton, perTags, forKey, by } from "ts-ioc-container";
|
|
72
|
+
import { inject } from "ts-constructor-injector";
|
|
135
73
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
74
|
+
@asSingleton
|
|
75
|
+
@forKey('IEngine')
|
|
76
|
+
@perTags('tag1', 'tag2')
|
|
77
|
+
class Engine {
|
|
78
|
+
constructor(@inject(by('ILogger')) private logger: ILogger) {
|
|
79
|
+
}
|
|
80
|
+
}
|
|
141
81
|
```
|
|
142
82
|
|
|
143
83
|
## Hooks
|
|
144
84
|
|
|
145
85
|
```typescript
|
|
146
86
|
import {
|
|
147
|
-
IocLocatorBuilder,
|
|
148
|
-
ProviderKey,
|
|
149
|
-
InjectMetadataCollector,
|
|
150
87
|
MethodsMetadataCollector,
|
|
151
|
-
|
|
152
|
-
|
|
88
|
+
createMethodHookDecorator,
|
|
89
|
+
Container,
|
|
90
|
+
IInjector,
|
|
91
|
+
ContainerHook,
|
|
153
92
|
} from "ts-ioc-container";
|
|
154
|
-
import { Mock } from "moq.ts";
|
|
155
|
-
import { ProviderBuilder } from "./ProviderBuilder";
|
|
156
|
-
import { IocLocatorBuilder } from "./IocLocatorBuilder";
|
|
157
|
-
|
|
158
|
-
export const constructorMetadataCollector = new InjectMetadataCollector(Symbol.for('CONSTRUCTOR_METADATA_KEY'));
|
|
159
|
-
export const onConstructMetadataCollector = new MethodsMetadataCollector(Symbol.for('OnConstructHook'));
|
|
160
|
-
export const onConstruct: MethodDecorator = (target, propertyKey) => {
|
|
161
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
162
|
-
onConstructMetadataCollector.addHook(target, propertyKey);
|
|
163
|
-
};
|
|
164
93
|
|
|
165
|
-
export const
|
|
166
|
-
export const
|
|
167
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
168
|
-
onDisposeMetadataCollector.addHook(target, propertyKey);
|
|
169
|
-
};
|
|
94
|
+
export const onConstructMetadataCollector = new MethodsMetadataCollector('OnConstructHook');
|
|
95
|
+
export const onConstruct = createMethodHookDecorator(onConstructMetadataCollector);
|
|
170
96
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
* export const onConstruct = createHookDecorator(onConstructMetadataCollector)
|
|
174
|
-
* export const onDispose = createHookDecorator(onDisposeMetadataCollector)
|
|
175
|
-
*/
|
|
176
|
-
|
|
177
|
-
const hook: IInstanceHook = {
|
|
178
|
-
onConstruct<GInstance>(instance: GInstance): void {
|
|
179
|
-
onConstructMetadataCollector.invokeHooksOf(instance);
|
|
180
|
-
},
|
|
181
|
-
onDispose<GInstance>(instance: GInstance): void {
|
|
182
|
-
onDisposeMetadataCollector.invokeHooksOf(instance);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
const locator = new IocLocatorBuilder(constructorMetadataCollector).withInjectorHook(hook).build();
|
|
187
|
-
|
|
188
|
-
class Car {
|
|
189
|
-
constructor() {
|
|
190
|
-
}
|
|
97
|
+
export const onDisposeMetadataCollector = new MethodsMetadataCollector('OnDisposeHook');
|
|
98
|
+
export const onDispose = createMethodHookDecorator(onDisposeMetadataCollector);
|
|
191
99
|
|
|
100
|
+
class Logger {
|
|
192
101
|
@onConstruct
|
|
193
|
-
|
|
194
|
-
console('initialized!');
|
|
102
|
+
initialize() {
|
|
195
103
|
}
|
|
196
104
|
|
|
197
105
|
@onDispose
|
|
198
|
-
|
|
199
|
-
console('disposed!');
|
|
200
|
-
}
|
|
106
|
+
dispose() {}
|
|
201
107
|
}
|
|
202
108
|
|
|
203
|
-
const
|
|
204
|
-
locator
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
@onDispose
|
|
216
|
-
public dispose() {
|
|
217
|
-
console('disposed!');
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// in the case if you don't want to use locator.resolve to instanciate Engine you should use .withHook
|
|
222
|
-
locator.register('IEngine', new ProviderBuilder(() => new Engine()).withHook(hook).build())
|
|
223
|
-
const engine = locator.resolve(Engine); // output: initialized!
|
|
224
|
-
locator.dispose(); // output: disposed!
|
|
109
|
+
const injector: IInjector = {
|
|
110
|
+
resolve<T>(locator: Resolveable, value: constructor<T>, ...deps: unknown[]): T {
|
|
111
|
+
const instance = resolve(locator)(value, ...deps);
|
|
112
|
+
onConstructMetadataCollector.invokeHooksOf(instance)
|
|
113
|
+
return instance;
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
const container = new Container(injector).setHook(new ContainerHook((instance) => {
|
|
117
|
+
onDisposeMetadataCollector.invokeHooksOf(instance);
|
|
118
|
+
}));
|
|
119
|
+
container.register('ILogger', fromClass(Logger).build());
|
|
120
|
+
const logger = container.resolve<ILogger>('ILogger');
|
|
225
121
|
```
|
|
226
122
|
|
|
227
123
|
## Scoped locators
|
|
228
124
|
|
|
125
|
+
- levels - every scope has level (0, 1, 2, 3). 0 is root. And register provider per level.
|
|
126
|
+
- tags - you can add tag to scope and root container. And register provider per tag.
|
|
127
|
+
|
|
229
128
|
```typescript
|
|
230
|
-
const scope =
|
|
129
|
+
const scope = container.createScope(['tag1', 'tag2']);
|
|
231
130
|
const logger = scope.resolve('ILogger');
|
|
232
131
|
scope.dispose();
|
|
233
132
|
```
|
|
@@ -235,60 +134,49 @@ scope.dispose();
|
|
|
235
134
|
## Mocking / Tests
|
|
236
135
|
|
|
237
136
|
```typescript
|
|
238
|
-
import { MoqRepository } from "./MoqRepository";
|
|
239
137
|
import {
|
|
240
|
-
|
|
241
|
-
|
|
138
|
+
IMockRepository,
|
|
139
|
+
Container,
|
|
140
|
+
SimpleInjector,
|
|
242
141
|
} from "ts-ioc-container";
|
|
243
|
-
import {
|
|
244
|
-
import { IEngine } from "./IEngine";
|
|
245
|
-
import { SimpleLocatorBuilder } from "./SimpleLocatorBuilder";
|
|
246
|
-
|
|
247
|
-
describe('test', () => {
|
|
248
|
-
const mockProviderStorage = new MoqProviderStorage(new MockProviderStorage(() => new MoqProvider()));
|
|
249
|
-
const locator = new SimpleLocatorBuilder().withMockedRepository(mockProviderStorage).build();
|
|
250
|
-
|
|
251
|
-
const engineMock = mockProviderStorage.findMock<IEngine>('IEngine');
|
|
252
|
-
engineMock.setup(i => i.getRegistrationNumber()).return('123');
|
|
142
|
+
import { Mock } from "moq.ts";
|
|
253
143
|
|
|
254
|
-
|
|
144
|
+
export class MoqRepository implements IMockRepository {
|
|
145
|
+
private mocks = new Map<ProviderKey, IMock<any>>();
|
|
255
146
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
MoqStorage
|
|
260
|
-
```typescript
|
|
261
|
-
import { VendorMockProviderStorage, ProviderKey } from 'ts-ioc-container';
|
|
262
|
-
import { MoqProvider } from './MoqProvider';
|
|
263
|
-
import { IMock } from 'moq.ts';
|
|
147
|
+
resolve<T>(key: ProviderKey): T {
|
|
148
|
+
return this.resolveMock<T>(key).object();
|
|
149
|
+
}
|
|
264
150
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
return this.storage.findOrCreate(key) as MoqProvider<T>;
|
|
151
|
+
dispose(): void {
|
|
152
|
+
this.mocks.clear();
|
|
268
153
|
}
|
|
269
154
|
|
|
270
|
-
|
|
271
|
-
|
|
155
|
+
resolveMock<T>(key: ProviderKey): IMock<T> {
|
|
156
|
+
if (!this.mocks.has(key)) {
|
|
157
|
+
this.mocks.set(key, new Mock());
|
|
158
|
+
}
|
|
159
|
+
return this.mocks.get(key) as IMock<T>;
|
|
272
160
|
}
|
|
273
161
|
}
|
|
274
|
-
```
|
|
275
162
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
import { Mock } from 'moq.ts';
|
|
163
|
+
describe('test', () => {
|
|
164
|
+
const mockRepository = new MoqRepository();
|
|
165
|
+
const container = new Container(new SimpleInjector()).map((l) => new AutoMockedContainer(l, mockRepository));
|
|
280
166
|
|
|
281
|
-
|
|
282
|
-
|
|
167
|
+
const engineMock = mockRepository.resolveMock<IEngine>('IEngine');
|
|
168
|
+
engineMock.setup(i => i.getRegistrationNumber()).return('123');
|
|
283
169
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
170
|
+
const engine = container.resolve<IEngine>('IEngine');
|
|
171
|
+
|
|
172
|
+
expect(engine.getRegistrationNumber()).toBe('123');
|
|
173
|
+
})
|
|
288
174
|
```
|
|
289
175
|
|
|
290
176
|
|
|
291
177
|
## Errors
|
|
292
178
|
|
|
293
179
|
- ProviderNotFoundError
|
|
180
|
+
- ProviderHasNoKeyError
|
|
294
181
|
- MethodNotImplementedError
|
|
182
|
+
- ContainerDisposedError
|
|
@@ -19,9 +19,6 @@ var ContainerHook = /** @class */ (function () {
|
|
|
19
19
|
this.onDisposeFn = onDisposeFn;
|
|
20
20
|
this.instances = new Set();
|
|
21
21
|
}
|
|
22
|
-
ContainerHook.prototype.onDispose = function (hook) {
|
|
23
|
-
this.onDisposeFn = hook;
|
|
24
|
-
};
|
|
25
22
|
ContainerHook.prototype.resolve = function (instance) {
|
|
26
23
|
this.instances.add(instance);
|
|
27
24
|
return instance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerHook.js","sourceRoot":"","sources":["../../lib/hooks/ContainerHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,+CAA4C;AAI5C;IAGI,uBAAoB,WAAiC;QAAjC,4BAAA,EAAA,cAA6B,aAAI;QAAjC,gBAAW,GAAX,WAAW,CAAsB;QAF7C,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAE0B,CAAC;IAEzD
|
|
1
|
+
{"version":3,"file":"ContainerHook.js","sourceRoot":"","sources":["../../lib/hooks/ContainerHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,+CAA4C;AAI5C;IAGI,uBAAoB,WAAiC;QAAjC,4BAAA,EAAA,cAA6B,aAAI;QAAjC,gBAAW,GAAX,WAAW,CAAsB;QAF7C,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAE0B,CAAC;IAEzD,+BAAO,GAAP,UAAW,QAAW;QAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,+BAAO,GAAP;;;YACI,KAAiB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;gBAA5B,IAAM,IAAE,WAAA;gBACT,IAAI,CAAC,WAAW,CAAC,IAAE,CAAC,CAAC;aACxB;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,6BAAK,GAAL;QACI,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IACL,oBAAC;AAAD,CAAC,AApBD,IAoBC;AApBY,sCAAa"}
|
package/cjm/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { constructor } from './core/utils/types';
|
|
|
2
2
|
import { ProviderBuilder } from './providers/ProviderBuilder';
|
|
3
3
|
import { ResolveDependency } from './core/provider/IProvider';
|
|
4
4
|
import { IContainer, InjectionToken } from './core/container/IContainer';
|
|
5
|
+
export { ContainerHook } from './hooks/ContainerHook';
|
|
5
6
|
export { ProviderReducer } from './core/provider/IProvidersMetadataCollector';
|
|
6
7
|
export { IContainer, Resolveable } from './core/container/IContainer';
|
|
7
8
|
export { constructor } from './core/utils/types';
|
package/cjm/index.js
CHANGED
|
@@ -25,12 +25,14 @@ 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.createMethodHookDecorator = exports.fromFn = exports.fromValue = exports.fromClass = exports.perTags = exports.asSingleton = exports.forKey = exports.createAddKeyDecorator = exports.createSingletonDecorator = exports.createTagsDecorator = exports.isProviderKey = exports.ProvidersMetadataCollector = exports.ProviderBuilder = exports.SingletonProvider = exports.AutoMockedContainer = exports.createLevelDecorator = exports.LevelProvider = exports.ProxyInjector = exports.TaggedProvider = exports.createArgsFnDecorator = exports.ArgsProvider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.MethodsMetadataCollector = exports.SimpleInjector = exports.Container = void 0;
|
|
28
|
+
exports.by = exports.createMethodHookDecorator = exports.fromFn = exports.fromValue = exports.fromClass = exports.perTags = exports.asSingleton = exports.forKey = exports.createAddKeyDecorator = exports.createSingletonDecorator = exports.createTagsDecorator = exports.isProviderKey = exports.ProvidersMetadataCollector = exports.ProviderBuilder = exports.SingletonProvider = exports.AutoMockedContainer = exports.createLevelDecorator = exports.LevelProvider = exports.ProxyInjector = exports.TaggedProvider = exports.createArgsFnDecorator = exports.ArgsProvider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.ProviderNotFoundError = exports.MethodsMetadataCollector = exports.SimpleInjector = exports.Container = exports.ContainerHook = void 0;
|
|
29
29
|
var Provider_1 = require("./core/provider/Provider");
|
|
30
30
|
var ProvidersMetadataCollector_1 = require("./core/provider/ProvidersMetadataCollector");
|
|
31
31
|
var SingletonProvider_1 = require("./providers/SingletonProvider");
|
|
32
32
|
var TaggedProvider_1 = require("./providers/TaggedProvider");
|
|
33
33
|
var ProviderBuilder_1 = require("./providers/ProviderBuilder");
|
|
34
|
+
var ContainerHook_1 = require("./hooks/ContainerHook");
|
|
35
|
+
Object.defineProperty(exports, "ContainerHook", { enumerable: true, get: function () { return ContainerHook_1.ContainerHook; } });
|
|
34
36
|
var Container_1 = require("./core/container/Container");
|
|
35
37
|
Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return Container_1.Container; } });
|
|
36
38
|
var SimpleInjector_1 = require("./injectors/SimpleInjector");
|
package/cjm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA2E;AAC3E,yFAAwF;AACxF,mEAAyE;AACzE,6DAAiE;AAEjE,+DAA8D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA2E;AAC3E,yFAAwF;AACxF,mEAAyE;AACzE,6DAAiE;AAEjE,+DAA8D;AAI9D,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AAItB,wDAAuD;AAA9C,sGAAA,SAAS,OAAA;AAGlB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,6EAA4E;AAAnE,oIAAA,wBAAwB,OAAA;AAEjC,+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;AAEpD,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AACvB,2DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,2DAAgF;AAAvE,8GAAA,aAAa,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAE5C,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAC5B,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAExB,yFAAwF;AAA/E,wIAAA,0BAA0B,OAAA;AAGnC,uDAA0D;AAAjD,0GAAA,aAAa,OAAA;AACtB,6DAAiE;AAAxD,qHAAA,mBAAmB,OAAA;AAC5B,mEAAyE;AAAhE,6HAAA,wBAAwB,OAAA;AACjC,qDAAiE;AAAxD,iHAAA,qBAAqB,OAAA;AAE9B,IAAM,yBAAyB,GAAG,uDAA0B,CAAC,MAAM,EAAE,CAAC;AACzD,QAAA,MAAM,GAAG,IAAA,gCAAqB,EAAC,yBAAyB,CAAC,CAAC;AAE1D,QAAA,WAAW,GAAG,IAAA,4CAAwB,EAAC,yBAAyB,CAAC,CAAC;AAClE,QAAA,OAAO,GAAG,IAAA,oCAAmB,EAAC,yBAAyB,CAAC,CAAC;AAEtE,SAAgB,SAAS,CAAI,KAAqB;IAC9C,OAAO,IAAI,iCAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpH,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAI,KAAQ;IACjC,OAAO,IAAI,iCAAe,CAAC,mBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,8BAEC;AAED,SAAgB,MAAM,CAAI,EAAwB;IAC9C,OAAO,IAAI,iCAAe,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAFD,wBAEC;AAED,+EAA8E;AAArE,sIAAA,yBAAyB,OAAA;AAE3B,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerHook.js","sourceRoot":"","sources":["../../lib/hooks/ContainerHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAI5C,MAAM,OAAO,aAAa;IAGtB,YAAoB,cAA6B,IAAI;QAAjC,gBAAW,GAAX,WAAW,CAAsB;QAF7C,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAE0B,CAAC;IAEzD,
|
|
1
|
+
{"version":3,"file":"ContainerHook.js","sourceRoot":"","sources":["../../lib/hooks/ContainerHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAI5C,MAAM,OAAO,aAAa;IAGtB,YAAoB,cAA6B,IAAI;QAAjC,gBAAW,GAAX,WAAW,CAAsB;QAF7C,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAE0B,CAAC;IAEzD,OAAO,CAAI,QAAW;QAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO;QACH,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;SACxB;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;CACJ"}
|
package/esm/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { constructor } from './core/utils/types';
|
|
|
2
2
|
import { ProviderBuilder } from './providers/ProviderBuilder';
|
|
3
3
|
import { ResolveDependency } from './core/provider/IProvider';
|
|
4
4
|
import { IContainer, InjectionToken } from './core/container/IContainer';
|
|
5
|
+
export { ContainerHook } from './hooks/ContainerHook';
|
|
5
6
|
export { ProviderReducer } from './core/provider/IProvidersMetadataCollector';
|
|
6
7
|
export { IContainer, Resolveable } from './core/container/IContainer';
|
|
7
8
|
export { constructor } from './core/utils/types';
|
package/esm/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { ProvidersMetadataCollector } from './core/provider/ProvidersMetadataCol
|
|
|
3
3
|
import { createSingletonDecorator } from './providers/SingletonProvider';
|
|
4
4
|
import { createTagsDecorator } from './providers/TaggedProvider';
|
|
5
5
|
import { ProviderBuilder } from './providers/ProviderBuilder';
|
|
6
|
+
export { ContainerHook } from './hooks/ContainerHook';
|
|
6
7
|
export { Container } from './core/container/Container';
|
|
7
8
|
export { SimpleInjector } from './injectors/SimpleInjector';
|
|
8
9
|
export { MethodsMetadataCollector } from './hooks/MethodsMetadataCollector';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,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;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,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,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC;AACtE,MAAM,CAAC,MAAM,MAAM,GAAG,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,OAAO,GAAG,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;AAEtE,MAAM,UAAU,SAAS,CAAI,KAAqB;IAC9C,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,KAAQ;IACjC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,EAAwB;IAC9C,OAAO,IAAI,eAAe,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,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": "14.0.
|
|
3
|
+
"version": "14.0.2",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"author": "ibabkin <igba14@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/IgorBabkin/service-locator/tree/master/packages/ts-ioc-container",
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"npm-run-all": "4.1.5",
|
|
46
46
|
"reflect-metadata": "^0.1.13",
|
|
47
47
|
"rimraf": "3.0.2",
|
|
48
|
-
"ts-constructor-injector": "^3.0.
|
|
48
|
+
"ts-constructor-injector": "^3.0.1",
|
|
49
49
|
"ts-jest": "27.0.5",
|
|
50
50
|
"typescript": "4.4.3"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "7896510f0b09f17a8cb1f5f2023b7810cabc36e0"
|
|
53
53
|
}
|