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.
Files changed (2) hide show
  1. package/README.md +22 -8
  2. 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
- ## Container
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
- container.register(fromClass(Logger).forKey('ILogger').build());
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
- ## Scoped containers
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).forKey('ILogger').build())
173
- .register(fromClass(Engine).forKey('IEngine').build());
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.8",
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": "3e41f7f07a8628af8585801527c14235e39af579"
51
+ "gitHead": "3b44a73ae0df9a0f57d16db6afa00bedd017ee7b"
52
52
  }