ts-ioc-container 21.0.8 → 21.0.10
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 +22 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -34,21 +34,29 @@ yarn add ts-ioc-container ts-constructor-injector reflect-metadata
|
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Injector
|
|
38
38
|
How to create new container
|
|
39
39
|
|
|
40
40
|
```typescript
|
|
41
41
|
import { Container, IContainer, IInjector, fromClass } from "ts-ioc-container";
|
|
42
42
|
import { resolve } from 'ts-constructor-injector';
|
|
43
43
|
|
|
44
|
+
class Logger {
|
|
45
|
+
info(message: string) {
|
|
46
|
+
console.log(message);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
44
50
|
const injector: IInjector = {
|
|
45
51
|
resolve<T>(container: IContainer, value: constructor<T>, ...deps: unknown[]): T {
|
|
46
52
|
return resolve(container)(value, ...deps);
|
|
47
53
|
},
|
|
48
54
|
};
|
|
55
|
+
|
|
49
56
|
const container = new Container(injector);
|
|
50
57
|
container.register(fromClass(Logger).forKey('ILogger').build());
|
|
51
58
|
const logger = container.resolve<ILogger>('ILogger');
|
|
59
|
+
logger.info('Hello world');
|
|
52
60
|
```
|
|
53
61
|
|
|
54
62
|
## Registration builder
|
|
@@ -102,6 +110,9 @@ class Engine {
|
|
|
102
110
|
constructor(@inject(by('ILogger')) private logger: ILogger) {
|
|
103
111
|
}
|
|
104
112
|
}
|
|
113
|
+
|
|
114
|
+
const container = new Container(injector, { tags: ['root'] })
|
|
115
|
+
.register(fromClass(Engine).build());
|
|
105
116
|
```
|
|
106
117
|
|
|
107
118
|
## Hooks
|
|
@@ -122,13 +133,16 @@ export const onConstruct = onConstructReflector.createMethodHookDecorator();
|
|
|
122
133
|
export const onDisposeReflector = new MethodReflector('OnDisposeHook');
|
|
123
134
|
export const onDispose = onDisposeReflector.createMethodHookDecorator();
|
|
124
135
|
|
|
136
|
+
@forKey('ILogger')
|
|
125
137
|
class Logger {
|
|
126
138
|
@onConstruct
|
|
127
139
|
initialize() {
|
|
140
|
+
console.log('initialized');
|
|
128
141
|
}
|
|
129
142
|
|
|
130
143
|
@onDispose
|
|
131
144
|
dispose() {
|
|
145
|
+
console.log('disposed');
|
|
132
146
|
}
|
|
133
147
|
}
|
|
134
148
|
|
|
@@ -140,15 +154,15 @@ const injector: IInjector = {
|
|
|
140
154
|
},
|
|
141
155
|
}
|
|
142
156
|
|
|
143
|
-
const container = new Container(injector)
|
|
144
|
-
|
|
145
|
-
const logger = container.resolve<ILogger>('ILogger');
|
|
157
|
+
const container = new Container(injector)
|
|
158
|
+
.register(fromClass(Logger).build());
|
|
159
|
+
const logger = container.resolve<ILogger>('ILogger'); // initialized
|
|
146
160
|
for (const instance of container.getInstances()) {
|
|
147
|
-
onDisposeReflector.invokeHooksOf(instance);
|
|
161
|
+
onDisposeReflector.invokeHooksOf(instance); // disposed
|
|
148
162
|
}
|
|
149
163
|
```
|
|
150
164
|
|
|
151
|
-
##
|
|
165
|
+
## Scopes (child containers)
|
|
152
166
|
|
|
153
167
|
- tags - you can add tag to scope and root container. And register provider per tag.
|
|
154
168
|
|
|
@@ -169,8 +183,8 @@ class Engine {
|
|
|
169
183
|
}
|
|
170
184
|
|
|
171
185
|
const container = new Container(injector, { tags: ['root'] })
|
|
172
|
-
.register(fromClass(Logger).
|
|
173
|
-
.register(fromClass(Engine).
|
|
186
|
+
.register(fromClass(Logger).build())
|
|
187
|
+
.register(fromClass(Engine).build());
|
|
174
188
|
|
|
175
189
|
const scope = container.createScope(['home', 'child']);
|
|
176
190
|
const logger = scope.resolve('ILogger');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "21.0.
|
|
3
|
+
"version": "21.0.10",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"author": "ibabkin <igba14@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/IgorBabkin/ts-ioc-container/tree/master/packages/ts-ioc-container",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"ts-jest": "27.0.5",
|
|
49
49
|
"typescript": "4.4.3"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "3b44a73ae0df9a0f57d16db6afa00bedd017ee7b"
|
|
52
52
|
}
|