@spinajs/di 2.0.180 → 2.0.181

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 (60) hide show
  1. package/lib/cjs/array.d.ts +10 -10
  2. package/lib/cjs/array.js +13 -13
  3. package/lib/cjs/binder.d.ts +39 -39
  4. package/lib/cjs/binder.js +96 -96
  5. package/lib/cjs/container-cache.d.ts +17 -17
  6. package/lib/cjs/container-cache.js +63 -63
  7. package/lib/cjs/container.d.ts +133 -133
  8. package/lib/cjs/container.js +466 -466
  9. package/lib/cjs/container.js.map +1 -1
  10. package/lib/cjs/decorators.d.ts +141 -141
  11. package/lib/cjs/decorators.js +303 -303
  12. package/lib/cjs/enums.d.ts +31 -31
  13. package/lib/cjs/enums.js +35 -35
  14. package/lib/cjs/enums.js.map +1 -1
  15. package/lib/cjs/exceptions.d.ts +17 -17
  16. package/lib/cjs/exceptions.js +25 -25
  17. package/lib/cjs/helpers.d.ts +35 -35
  18. package/lib/cjs/helpers.js +86 -86
  19. package/lib/cjs/index.d.ts +12 -12
  20. package/lib/cjs/index.js +41 -41
  21. package/lib/cjs/interfaces.d.ts +172 -172
  22. package/lib/cjs/interfaces.js +53 -53
  23. package/lib/cjs/registry.d.ts +14 -14
  24. package/lib/cjs/registry.js +80 -80
  25. package/lib/cjs/root.d.ts +108 -108
  26. package/lib/cjs/root.js +216 -217
  27. package/lib/cjs/root.js.map +1 -1
  28. package/lib/cjs/types.d.ts +13 -13
  29. package/lib/cjs/types.js +2 -2
  30. package/lib/mjs/array.d.ts +10 -10
  31. package/lib/mjs/array.js +9 -9
  32. package/lib/mjs/binder.d.ts +39 -39
  33. package/lib/mjs/binder.js +92 -92
  34. package/lib/mjs/container-cache.d.ts +17 -17
  35. package/lib/mjs/container-cache.js +59 -59
  36. package/lib/mjs/container.d.ts +133 -133
  37. package/lib/mjs/container.js +459 -459
  38. package/lib/mjs/container.js.map +1 -1
  39. package/lib/mjs/decorators.d.ts +141 -141
  40. package/lib/mjs/decorators.js +266 -266
  41. package/lib/mjs/enums.d.ts +31 -31
  42. package/lib/mjs/enums.js +32 -32
  43. package/lib/mjs/enums.js.map +1 -1
  44. package/lib/mjs/exceptions.d.ts +17 -17
  45. package/lib/mjs/exceptions.js +19 -19
  46. package/lib/mjs/helpers.d.ts +35 -35
  47. package/lib/mjs/helpers.js +72 -72
  48. package/lib/mjs/index.d.ts +12 -12
  49. package/lib/mjs/index.js +12 -12
  50. package/lib/mjs/interfaces.d.ts +172 -172
  51. package/lib/mjs/interfaces.js +45 -45
  52. package/lib/mjs/registry.d.ts +14 -14
  53. package/lib/mjs/registry.js +76 -76
  54. package/lib/mjs/root.d.ts +108 -108
  55. package/lib/mjs/root.js +159 -159
  56. package/lib/mjs/types.d.ts +13 -13
  57. package/lib/mjs/types.js +1 -1
  58. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  59. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  60. package/package.json +2 -2
@@ -1,304 +1,304 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Singleton = exports.PerInstanceCheck = exports.PerInstance = exports.NewInstance = exports.PerChildInstance = exports.LazyInject = exports.Autoinject = exports.Inject = exports.Injectable = exports.AddDependency = exports.AddDependencyForProperty = exports.DI_DESCRIPTION_SYMBOL = void 0;
27
- const enums_js_1 = require("./enums.js");
28
- const DI = __importStar(require("./root.js"));
29
- const helpers_js_1 = require("./helpers.js");
30
- exports.DI_DESCRIPTION_SYMBOL = '__DI_INJECTION_DESCRIPTOR__';
31
- function AddDependencyForProperty(callback) {
32
- return (target, propertyKey, indexOrDescriptor) => {
33
- let descriptor = Reflect.getOwnMetadata(exports.DI_DESCRIPTION_SYMBOL, target.constructor);
34
- if (!descriptor) {
35
- descriptor = {
36
- inject: [],
37
- resolver: enums_js_1.ResolveType.Singleton,
38
- };
39
- Reflect.defineMetadata(exports.DI_DESCRIPTION_SYMBOL, descriptor, target.constructor);
40
- }
41
- if (callback) {
42
- callback(descriptor, target, propertyKey, indexOrDescriptor);
43
- }
44
- };
45
- }
46
- exports.AddDependencyForProperty = AddDependencyForProperty;
47
- function AddDependency(callback) {
48
- return (target, propertyKey, indexOrDescriptor) => {
49
- let descriptor = Reflect.getOwnMetadata(exports.DI_DESCRIPTION_SYMBOL, target);
50
- if (!descriptor) {
51
- descriptor = {
52
- inject: [],
53
- resolver: enums_js_1.ResolveType.Singleton,
54
- };
55
- Reflect.defineMetadata(exports.DI_DESCRIPTION_SYMBOL, descriptor, target);
56
- }
57
- if (callback) {
58
- callback(descriptor, target, propertyKey, indexOrDescriptor);
59
- }
60
- };
61
- }
62
- exports.AddDependency = AddDependency;
63
- /**
64
- *
65
- * Class with this decorator is automatically registered in DI container an can be resolved.
66
- * NOTE: we dont need to register class before resolving. Injectable decorator is mainly used in extensions & plugins
67
- * to register implementation that can be resolved by framework or other parts without knowing about specific implementations eg.
68
- * avaible database drivers.
69
- *
70
- * @param as - register class in DI container as something else.
71
- *
72
- * @example
73
- * ```typescript
74
- *
75
- * @Injectable(OrmDriver)
76
- * class MysqlOrmDriver{
77
- *
78
- * // implementation ...
79
- * }
80
- *
81
- *
82
- * // somewhere else in code
83
- * const avaibleDrivers = DI.resolve(Array.of(OrmDriver));
84
- *
85
- *
86
- * ```
87
- *
88
- */
89
- function Injectable(as) {
90
- return (target) => {
91
- if (as) {
92
- DI.register(target).as(as);
93
- }
94
- else {
95
- DI.register(target).asSelf();
96
- }
97
- };
98
- }
99
- exports.Injectable = Injectable;
100
- /**
101
- * Sets dependency injection guidelines - what to inject for specified class. If multiple instances are registered at specified type,
102
- * only first one is resolved and injected
103
- * @param args - what to inject - class definitions
104
- * @example
105
- * ```javascript
106
- *
107
- * @Inject(Bar)
108
- * class Foo{
109
- *
110
- * @Inject(Bar)
111
- * barInstance : Bar;
112
- *
113
- * constructor(bar : Bar){
114
- * // bar is injected when Foo is created via DI container
115
- * this.barInstance = bar;
116
- * }
117
- *
118
- * someFunc(){
119
- *
120
- * this._barInstance.doSmth();
121
- * }
122
- * }
123
- *
124
- * ```
125
- */
126
- function Inject(...args) {
127
- return AddDependency((descriptor) => {
128
- for (const a of args) {
129
- // avoid injecting duplicates
130
- if (!descriptor.inject.find((i) => {
131
- if ((0, helpers_js_1.isTypedArray)(i)) {
132
- if ((0, helpers_js_1.isTypedArray)(a)) {
133
- return i.Type === a.Type;
134
- }
135
- else {
136
- return i.Type === a;
137
- }
138
- }
139
- else {
140
- return i.inject === a;
141
- }
142
- })) {
143
- descriptor.inject.push({
144
- autoinject: false,
145
- autoinjectKey: '',
146
- inject: a,
147
- mapFunc: null,
148
- });
149
- }
150
- }
151
- });
152
- }
153
- exports.Inject = Inject;
154
- /**
155
- * Automatically injects dependency based on reflected property type. Uses experimental typescript reflection api
156
- * If decorator is applied to array property all registered type instances are injected, otherwise only first / only that exists
157
- *
158
- * @param injectType - when injecting array of some type, type must be explicitly provided. Typescript reflection cant reflect declared array types
159
- * @param mapFunc - when injecting array we sometimes need services mapped by some kind of key, so later we dont need to search o(n) elements for specific service, but reference by key/name
160
- * @example
161
- * ```javascript
162
- * class Foo{
163
- *
164
- * @Autoinject
165
- * barInstance : Bar;
166
- *
167
- * constructor(){
168
- * // ....
169
- * }
170
- *
171
- * someFunc(){
172
- *
173
- * // automatically injected dependency is avaible now
174
- * this.barInstance.doSmth();
175
- * }
176
- * }
177
- *
178
- * ```
179
- */
180
- function Autoinject(typeOrOptions, options) {
181
- return AddDependencyForProperty((descriptor, target, propertyKey) => {
182
- let type = Reflect.getMetadata('design:type', target, propertyKey);
183
- const isArray = type.name === 'Array' || type.name === 'Map';
184
- let opt = options;
185
- if ((0, helpers_js_1.isConstructor)(typeOrOptions)) {
186
- if (isArray && !typeOrOptions) {
187
- throw new Error('you must provide inject type when injecting array');
188
- }
189
- type = typeOrOptions;
190
- }
191
- else {
192
- opt = typeOrOptions;
193
- }
194
- descriptor.inject.push({
195
- autoinject: true,
196
- autoinjectKey: propertyKey,
197
- inject: isArray ? Array.ofType(typeOrOptions) : type,
198
- mapFunc: opt?.mapFunc,
199
- options: opt?.options,
200
- });
201
- });
202
- }
203
- exports.Autoinject = Autoinject;
204
- /**
205
- * Lazy injects service to object. Use only with class properties
206
- *
207
- * @param service - class or name of service to inject
208
- *
209
- * @example
210
- * ```javascript
211
- *
212
- * class Foo{
213
- * ...
214
- *
215
- * @LazyInject(Bar)
216
- * _barInstance : Bar; // _barInstance is not yet resolved
217
- *
218
- * someFunc(){
219
- * // barInstance is resolved only when first accessed
220
- * this._barInstance.doSmth();
221
- * }
222
- * }
223
- *
224
- * ```
225
- */
226
- function LazyInject(service) {
227
- return (target, key) => {
228
- const type = Reflect.getMetadata('design:type', target, key);
229
- // property getter
230
- const getter = () => {
231
- if (!service) {
232
- return DI.resolve(type);
233
- }
234
- else {
235
- if (typeof service === 'string') {
236
- return DI.get(service);
237
- }
238
- else {
239
- return DI.resolve(service);
240
- }
241
- }
242
- };
243
- // Create new property with getter and setter
244
- Object.defineProperty(target, key, {
245
- get: getter,
246
- });
247
- };
248
- }
249
- exports.LazyInject = LazyInject;
250
- /**
251
- * Per child instance injection decorator - object is resolved once per container - child containers have own instances.
252
- */
253
- function PerChildInstance() {
254
- return AddDependency((descriptor) => {
255
- descriptor.resolver = enums_js_1.ResolveType.PerChildContainer;
256
- });
257
- }
258
- exports.PerChildInstance = PerChildInstance;
259
- /**
260
- * NewInstance injection decorator - every time class is injected - its created from scratch
261
- */
262
- function NewInstance() {
263
- return AddDependency((descriptor) => {
264
- descriptor.resolver = enums_js_1.ResolveType.NewInstance;
265
- });
266
- }
267
- exports.NewInstance = NewInstance;
268
- /**
269
- * If we have multiple registered types at one base type
270
- * we can resolve only one by default. Per instance means, that
271
- * we can resolve all types registered at base type once. Limitaiton is
272
- * that, you should call resolve not on base type, but on target type.
273
- *
274
- * In comparison, Singleton flag means that only one instance can be resolved
275
- * for base class
276
- */
277
- function PerInstance() {
278
- return AddDependency((descriptor) => {
279
- descriptor.resolver = enums_js_1.ResolveType.PerInstance;
280
- });
281
- }
282
- exports.PerInstance = PerInstance;
283
- /**
284
- *
285
- * Before resolve, check function on all resolved instances of given type is called with creation options
286
- * It is used for ensuring that for eg. only one instance of service with provided
287
- * options is resolved, but allow to create with other option set
288
- *
289
- * @returns
290
- */
291
- function PerInstanceCheck() {
292
- return AddDependency((descriptor) => {
293
- descriptor.resolver = enums_js_1.ResolveType.PerInstanceCheck;
294
- });
295
- }
296
- exports.PerInstanceCheck = PerInstanceCheck;
297
- /**
298
- * Singleton injection decorator - every time class is resolved - its created only once globally ( even in child DI containers )
299
- */
300
- function Singleton() {
301
- return AddDependency();
302
- }
303
- exports.Singleton = Singleton;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Singleton = exports.PerInstanceCheck = exports.PerInstance = exports.NewInstance = exports.PerChildInstance = exports.LazyInject = exports.Autoinject = exports.Inject = exports.Injectable = exports.AddDependency = exports.AddDependencyForProperty = exports.DI_DESCRIPTION_SYMBOL = void 0;
27
+ const enums_js_1 = require("./enums.js");
28
+ const DI = __importStar(require("./root.js"));
29
+ const helpers_js_1 = require("./helpers.js");
30
+ exports.DI_DESCRIPTION_SYMBOL = '__DI_INJECTION_DESCRIPTOR__';
31
+ function AddDependencyForProperty(callback) {
32
+ return (target, propertyKey, indexOrDescriptor) => {
33
+ let descriptor = Reflect.getOwnMetadata(exports.DI_DESCRIPTION_SYMBOL, target.constructor);
34
+ if (!descriptor) {
35
+ descriptor = {
36
+ inject: [],
37
+ resolver: enums_js_1.ResolveType.Singleton,
38
+ };
39
+ Reflect.defineMetadata(exports.DI_DESCRIPTION_SYMBOL, descriptor, target.constructor);
40
+ }
41
+ if (callback) {
42
+ callback(descriptor, target, propertyKey, indexOrDescriptor);
43
+ }
44
+ };
45
+ }
46
+ exports.AddDependencyForProperty = AddDependencyForProperty;
47
+ function AddDependency(callback) {
48
+ return (target, propertyKey, indexOrDescriptor) => {
49
+ let descriptor = Reflect.getOwnMetadata(exports.DI_DESCRIPTION_SYMBOL, target);
50
+ if (!descriptor) {
51
+ descriptor = {
52
+ inject: [],
53
+ resolver: enums_js_1.ResolveType.Singleton,
54
+ };
55
+ Reflect.defineMetadata(exports.DI_DESCRIPTION_SYMBOL, descriptor, target);
56
+ }
57
+ if (callback) {
58
+ callback(descriptor, target, propertyKey, indexOrDescriptor);
59
+ }
60
+ };
61
+ }
62
+ exports.AddDependency = AddDependency;
63
+ /**
64
+ *
65
+ * Class with this decorator is automatically registered in DI container an can be resolved.
66
+ * NOTE: we dont need to register class before resolving. Injectable decorator is mainly used in extensions & plugins
67
+ * to register implementation that can be resolved by framework or other parts without knowing about specific implementations eg.
68
+ * avaible database drivers.
69
+ *
70
+ * @param as - register class in DI container as something else.
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ *
75
+ * @Injectable(OrmDriver)
76
+ * class MysqlOrmDriver{
77
+ *
78
+ * // implementation ...
79
+ * }
80
+ *
81
+ *
82
+ * // somewhere else in code
83
+ * const avaibleDrivers = DI.resolve(Array.of(OrmDriver));
84
+ *
85
+ *
86
+ * ```
87
+ *
88
+ */
89
+ function Injectable(as) {
90
+ return (target) => {
91
+ if (as) {
92
+ DI.register(target).as(as);
93
+ }
94
+ else {
95
+ DI.register(target).asSelf();
96
+ }
97
+ };
98
+ }
99
+ exports.Injectable = Injectable;
100
+ /**
101
+ * Sets dependency injection guidelines - what to inject for specified class. If multiple instances are registered at specified type,
102
+ * only first one is resolved and injected
103
+ * @param args - what to inject - class definitions
104
+ * @example
105
+ * ```javascript
106
+ *
107
+ * @Inject(Bar)
108
+ * class Foo{
109
+ *
110
+ * @Inject(Bar)
111
+ * barInstance : Bar;
112
+ *
113
+ * constructor(bar : Bar){
114
+ * // bar is injected when Foo is created via DI container
115
+ * this.barInstance = bar;
116
+ * }
117
+ *
118
+ * someFunc(){
119
+ *
120
+ * this._barInstance.doSmth();
121
+ * }
122
+ * }
123
+ *
124
+ * ```
125
+ */
126
+ function Inject(...args) {
127
+ return AddDependency((descriptor) => {
128
+ for (const a of args) {
129
+ // avoid injecting duplicates
130
+ if (!descriptor.inject.find((i) => {
131
+ if ((0, helpers_js_1.isTypedArray)(i)) {
132
+ if ((0, helpers_js_1.isTypedArray)(a)) {
133
+ return i.Type === a.Type;
134
+ }
135
+ else {
136
+ return i.Type === a;
137
+ }
138
+ }
139
+ else {
140
+ return i.inject === a;
141
+ }
142
+ })) {
143
+ descriptor.inject.push({
144
+ autoinject: false,
145
+ autoinjectKey: '',
146
+ inject: a,
147
+ mapFunc: null,
148
+ });
149
+ }
150
+ }
151
+ });
152
+ }
153
+ exports.Inject = Inject;
154
+ /**
155
+ * Automatically injects dependency based on reflected property type. Uses experimental typescript reflection api
156
+ * If decorator is applied to array property all registered type instances are injected, otherwise only first / only that exists
157
+ *
158
+ * @param injectType - when injecting array of some type, type must be explicitly provided. Typescript reflection cant reflect declared array types
159
+ * @param mapFunc - when injecting array we sometimes need services mapped by some kind of key, so later we dont need to search o(n) elements for specific service, but reference by key/name
160
+ * @example
161
+ * ```javascript
162
+ * class Foo{
163
+ *
164
+ * @Autoinject
165
+ * barInstance : Bar;
166
+ *
167
+ * constructor(){
168
+ * // ....
169
+ * }
170
+ *
171
+ * someFunc(){
172
+ *
173
+ * // automatically injected dependency is avaible now
174
+ * this.barInstance.doSmth();
175
+ * }
176
+ * }
177
+ *
178
+ * ```
179
+ */
180
+ function Autoinject(typeOrOptions, options) {
181
+ return AddDependencyForProperty((descriptor, target, propertyKey) => {
182
+ let type = Reflect.getMetadata('design:type', target, propertyKey);
183
+ const isArray = type.name === 'Array' || type.name === 'Map';
184
+ let opt = options;
185
+ if ((0, helpers_js_1.isConstructor)(typeOrOptions)) {
186
+ if (isArray && !typeOrOptions) {
187
+ throw new Error('you must provide inject type when injecting array');
188
+ }
189
+ type = typeOrOptions;
190
+ }
191
+ else {
192
+ opt = typeOrOptions;
193
+ }
194
+ descriptor.inject.push({
195
+ autoinject: true,
196
+ autoinjectKey: propertyKey,
197
+ inject: isArray ? Array.ofType(typeOrOptions) : type,
198
+ mapFunc: opt?.mapFunc,
199
+ options: opt?.options,
200
+ });
201
+ });
202
+ }
203
+ exports.Autoinject = Autoinject;
204
+ /**
205
+ * Lazy injects service to object. Use only with class properties
206
+ *
207
+ * @param service - class or name of service to inject
208
+ *
209
+ * @example
210
+ * ```javascript
211
+ *
212
+ * class Foo{
213
+ * ...
214
+ *
215
+ * @LazyInject(Bar)
216
+ * _barInstance : Bar; // _barInstance is not yet resolved
217
+ *
218
+ * someFunc(){
219
+ * // barInstance is resolved only when first accessed
220
+ * this._barInstance.doSmth();
221
+ * }
222
+ * }
223
+ *
224
+ * ```
225
+ */
226
+ function LazyInject(service) {
227
+ return (target, key) => {
228
+ const type = Reflect.getMetadata('design:type', target, key);
229
+ // property getter
230
+ const getter = () => {
231
+ if (!service) {
232
+ return DI.resolve(type);
233
+ }
234
+ else {
235
+ if (typeof service === 'string') {
236
+ return DI.get(service);
237
+ }
238
+ else {
239
+ return DI.resolve(service);
240
+ }
241
+ }
242
+ };
243
+ // Create new property with getter and setter
244
+ Object.defineProperty(target, key, {
245
+ get: getter,
246
+ });
247
+ };
248
+ }
249
+ exports.LazyInject = LazyInject;
250
+ /**
251
+ * Per child instance injection decorator - object is resolved once per container - child containers have own instances.
252
+ */
253
+ function PerChildInstance() {
254
+ return AddDependency((descriptor) => {
255
+ descriptor.resolver = enums_js_1.ResolveType.PerChildContainer;
256
+ });
257
+ }
258
+ exports.PerChildInstance = PerChildInstance;
259
+ /**
260
+ * NewInstance injection decorator - every time class is injected - its created from scratch
261
+ */
262
+ function NewInstance() {
263
+ return AddDependency((descriptor) => {
264
+ descriptor.resolver = enums_js_1.ResolveType.NewInstance;
265
+ });
266
+ }
267
+ exports.NewInstance = NewInstance;
268
+ /**
269
+ * If we have multiple registered types at one base type
270
+ * we can resolve only one by default. Per instance means, that
271
+ * we can resolve all types registered at base type once. Limitaiton is
272
+ * that, you should call resolve not on base type, but on target type.
273
+ *
274
+ * In comparison, Singleton flag means that only one instance can be resolved
275
+ * for base class
276
+ */
277
+ function PerInstance() {
278
+ return AddDependency((descriptor) => {
279
+ descriptor.resolver = enums_js_1.ResolveType.PerInstance;
280
+ });
281
+ }
282
+ exports.PerInstance = PerInstance;
283
+ /**
284
+ *
285
+ * Before resolve, check function on all resolved instances of given type is called with creation options
286
+ * It is used for ensuring that for eg. only one instance of service with provided
287
+ * options is resolved, but allow to create with other option set
288
+ *
289
+ * @returns
290
+ */
291
+ function PerInstanceCheck() {
292
+ return AddDependency((descriptor) => {
293
+ descriptor.resolver = enums_js_1.ResolveType.PerInstanceCheck;
294
+ });
295
+ }
296
+ exports.PerInstanceCheck = PerInstanceCheck;
297
+ /**
298
+ * Singleton injection decorator - every time class is resolved - its created only once globally ( even in child DI containers )
299
+ */
300
+ function Singleton() {
301
+ return AddDependency();
302
+ }
303
+ exports.Singleton = Singleton;
304
304
  //# sourceMappingURL=decorators.js.map
@@ -1,32 +1,32 @@
1
- /**
2
- * How to resolve class
3
- */
4
- export declare enum ResolveType {
5
- /**
6
- * Application wise single instance. Default behaviour
7
- */
8
- Singleton = 0,
9
- /**
10
- * New instance every time is requested
11
- */
12
- NewInstance = 1,
13
- /**
14
- * New instance per child DI container.
15
- */
16
- PerChildContainer = 2,
17
- /**
18
- * Singleton per target type
19
- *
20
- * eg. if we have multiple registered types at one base type
21
- * we can resolve any of it once
22
- *
23
- * In comparison, Singleton flag means that only one instance can be resolved
24
- * for base class
25
- */
26
- PerInstance = 3,
27
- /**
28
- * Only one instance with given name can exists of the same service
29
- */
30
- PerInstanceCheck = 4
31
- }
1
+ /**
2
+ * How to resolve class
3
+ */
4
+ export declare enum ResolveType {
5
+ /**
6
+ * Application wise single instance. Default behaviour
7
+ */
8
+ Singleton = 0,
9
+ /**
10
+ * New instance every time is requested
11
+ */
12
+ NewInstance = 1,
13
+ /**
14
+ * New instance per child DI container.
15
+ */
16
+ PerChildContainer = 2,
17
+ /**
18
+ * Singleton per target type
19
+ *
20
+ * eg. if we have multiple registered types at one base type
21
+ * we can resolve any of it once
22
+ *
23
+ * In comparison, Singleton flag means that only one instance can be resolved
24
+ * for base class
25
+ */
26
+ PerInstance = 3,
27
+ /**
28
+ * Only one instance with given name can exists of the same service
29
+ */
30
+ PerInstanceCheck = 4
31
+ }
32
32
  //# sourceMappingURL=enums.d.ts.map