@spinajs/di 2.0.19 → 2.0.39
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/lib/binder.d.ts +12 -1
- package/lib/binder.js +24 -2
- package/lib/binder.js.map +1 -1
- package/lib/container-cache.d.ts +4 -0
- package/lib/container-cache.js +7 -0
- package/lib/container-cache.js.map +1 -1
- package/lib/container.d.ts +10 -9
- package/lib/container.js +118 -26
- package/lib/container.js.map +1 -1
- package/lib/decorators.d.ts +23 -1
- package/lib/decorators.js +48 -7
- package/lib/decorators.js.map +1 -1
- package/lib/enums.d.ts +15 -1
- package/lib/enums.js +14 -0
- package/lib/enums.js.map +1 -1
- package/lib/exceptions.d.ts +5 -0
- package/lib/exceptions.js +7 -1
- package/lib/exceptions.js.map +1 -1
- package/lib/helpers.d.ts +10 -3
- package/lib/helpers.js +18 -8
- package/lib/helpers.js.map +1 -1
- package/lib/interfaces.d.ts +59 -11
- package/lib/interfaces.js +14 -9
- package/lib/interfaces.js.map +1 -1
- package/lib/registry.js +7 -1
- package/lib/registry.js.map +1 -1
- package/lib/root.d.ts +22 -6
- package/lib/root.js +23 -1
- package/lib/root.js.map +1 -1
- package/package.json +3 -3
package/lib/binder.d.ts
CHANGED
|
@@ -11,9 +11,20 @@ export declare class Binder<T> implements IBind {
|
|
|
11
11
|
* Add plain value to container. If value exists, it overrides content in container cache
|
|
12
12
|
*
|
|
13
13
|
* @param type - name of added value
|
|
14
|
+
* @param override - if true, any value registered before is overriden by new one
|
|
14
15
|
* @returns
|
|
15
16
|
*/
|
|
16
|
-
asValue(type: string,
|
|
17
|
+
asValue(type: string, override?: boolean): this;
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* Add plain value to container, value is stored in hashmap for quick access
|
|
21
|
+
* eg. we have multiple value converters and we wanc o(1) access, instead searching for
|
|
22
|
+
* converter for specific type
|
|
23
|
+
*
|
|
24
|
+
* @param type - name of added value
|
|
25
|
+
* @param key - hashmap key
|
|
26
|
+
*/
|
|
27
|
+
asMapValue(type: string, key: string): this;
|
|
17
28
|
asSelf(): this;
|
|
18
29
|
singleInstance(): this;
|
|
19
30
|
}
|
package/lib/binder.js
CHANGED
|
@@ -21,10 +21,11 @@ class Binder {
|
|
|
21
21
|
* Add plain value to container. If value exists, it overrides content in container cache
|
|
22
22
|
*
|
|
23
23
|
* @param type - name of added value
|
|
24
|
+
* @param override - if true, any value registered before is overriden by new one
|
|
24
25
|
* @returns
|
|
25
26
|
*/
|
|
26
|
-
asValue(type,
|
|
27
|
-
if (
|
|
27
|
+
asValue(type, override = false) {
|
|
28
|
+
if (override) {
|
|
28
29
|
if (this.container.Cache.has(type)) {
|
|
29
30
|
this.container.Cache.remove(type);
|
|
30
31
|
}
|
|
@@ -32,6 +33,27 @@ class Binder {
|
|
|
32
33
|
this.container.Cache.add(type, this.implementation);
|
|
33
34
|
return this;
|
|
34
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* Add plain value to container, value is stored in hashmap for quick access
|
|
39
|
+
* eg. we have multiple value converters and we wanc o(1) access, instead searching for
|
|
40
|
+
* converter for specific type
|
|
41
|
+
*
|
|
42
|
+
* @param type - name of added value
|
|
43
|
+
* @param key - hashmap key
|
|
44
|
+
*/
|
|
45
|
+
asMapValue(type, key) {
|
|
46
|
+
let map = null;
|
|
47
|
+
if (this.container.Cache.has(type)) {
|
|
48
|
+
map = this.container.Cache.get(type)[0];
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
map = new Map();
|
|
52
|
+
this.container.Cache.add(type, map);
|
|
53
|
+
}
|
|
54
|
+
map.set(key, this.implementation);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
35
57
|
asSelf() {
|
|
36
58
|
if (!this.isConstructor || this.isFactory) {
|
|
37
59
|
throw new exceptions_1.BindException('cannot register as self non class');
|
package/lib/binder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binder.js","sourceRoot":"","sources":["../src/binder.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,6CAAqD;AACrD,mCAAsC;AACtC,uCAAsC;AAGtC,wBAAkC;AAElC,MAAa,MAAM;IAIjB,YAAoB,cAAwD,EAAU,SAAqB;QAAvF,mBAAc,GAAd,cAAc,CAA0C;QAAU,cAAS,GAAT,SAAS,CAAY;QACzG,IAAI,CAAC,SAAS,GAAG,IAAA,mBAAS,EAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAA,gBAAa,EAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,EAAE,CAAI,IAAuB;QAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"binder.js","sourceRoot":"","sources":["../src/binder.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,6CAAqD;AACrD,mCAAsC;AACtC,uCAAsC;AAGtC,wBAAkC;AAElC,MAAa,MAAM;IAIjB,YAAoB,cAAwD,EAAU,SAAqB;QAAvF,mBAAc,GAAd,cAAc,CAA0C;QAAU,cAAS,GAAT,SAAS,CAAY;QACzG,IAAI,CAAC,SAAS,GAAG,IAAA,mBAAS,EAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAA,gBAAa,EAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,EAAE,CAAI,IAAuB;QAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,IAAY,EAAE,QAAQ,GAAG,KAAK;QACpC,IAAI,QAAQ,EAAE;YACZ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnC;SACF;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAY,EAAE,GAAW;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAkB,CAAC;SAC1D;aAAM;YACL,GAAG,GAAG,IAAI,GAAG,EAAe,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACrC;QAED,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE;YACzC,MAAM,IAAI,0BAAa,CAAC,mCAAmC,CAAC,CAAC;SAC9D;QAED,sDAAsD;QACtD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAqB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,cAAc;QACZ,MAAM,UAAU,GAA+B;YAC7C,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,mBAAW,CAAC,SAAS;SAChC,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACzC,MAAM,IAAI,0BAAa,CAAC,4CAA4C,CAAC,CAAC;SACvE;aAAM;YACJ,IAAI,CAAC,cAAsB,CAAC,GAAG,kCAAqB,EAAE,CAAC,GAAG,UAAU,CAAC;SACvE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5ED,wBA4EC"}
|
package/lib/container-cache.d.ts
CHANGED
|
@@ -5,6 +5,10 @@ export declare class ContainerCache {
|
|
|
5
5
|
private container;
|
|
6
6
|
private cache;
|
|
7
7
|
constructor(container: IContainer);
|
|
8
|
+
[Symbol.iterator](): Generator<{
|
|
9
|
+
key: string;
|
|
10
|
+
value: any;
|
|
11
|
+
}, void, unknown>;
|
|
8
12
|
remove(key: string | Class<any> | TypedArray<any>, parent?: boolean): void;
|
|
9
13
|
add(key: string | Class<any> | object, instance: any): void;
|
|
10
14
|
has(key: string | Class<any> | object | TypedArray<any>, parent?: boolean): boolean;
|
package/lib/container-cache.js
CHANGED
|
@@ -10,6 +10,13 @@ class ContainerCache {
|
|
|
10
10
|
// so we can inject container if needed
|
|
11
11
|
this.add(container, container);
|
|
12
12
|
}
|
|
13
|
+
*[Symbol.iterator]() {
|
|
14
|
+
for (const [key, value] of this.cache) {
|
|
15
|
+
for (const v of value) {
|
|
16
|
+
yield { key, value: v };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
13
20
|
remove(key, parent) {
|
|
14
21
|
if (this.has(key)) {
|
|
15
22
|
this.cache.delete((0, helpers_1.getTypeName)(key));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-cache.js","sourceRoot":"","sources":["../src/container-cache.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"container-cache.js","sourceRoot":"","sources":["../src/container-cache.ts"],"names":[],"mappings":";;;AAEA,uCAAwC;AAIxC,MAAa,cAAc;IAGzB,YAAoB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;QAEtC,yBAAyB;QACzB,uCAAuC;QACvC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACrC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aACzB;SACF;IACH,CAAC;IAEM,MAAM,CAAC,GAA0C,EAAE,MAAgB;QACxE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;SACrC;aAAM,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACpC;IACH,CAAC;IAEM,GAAG,CAAC,GAAiC,EAAE,QAAa;QACzD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtC;SACF;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;SACnC;IACH,CAAC;IAEM,GAAG,CAAC,GAAmD,EAAE,MAAgB;QAC9E,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SACrD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,GAAG,CAAC,GAA0C,EAAE,MAAgB;QACrE,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SACrD;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;CACF;AArED,wCAqEC"}
|
package/lib/container.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import 'reflect-metadata';
|
|
3
3
|
import { TypedArray } from './array';
|
|
4
|
-
import { IBind, IContainer, IInjectDescriptor, IResolvedInjection, IToInject,
|
|
4
|
+
import { IBind, IContainer, IInjectDescriptor, IResolvedInjection, IToInject, AsyncService, ResolvableObject } from './interfaces';
|
|
5
5
|
import { Class, Factory } from './types';
|
|
6
6
|
import { EventEmitter } from 'events';
|
|
7
7
|
import { Registry } from './registry';
|
|
@@ -34,6 +34,7 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
34
34
|
* Clears container registry and cache. shorthand for container.clearCache() && container.clearRegistry()
|
|
35
35
|
*/
|
|
36
36
|
clear(): void;
|
|
37
|
+
dispose(): Promise<void>;
|
|
37
38
|
/**
|
|
38
39
|
* clears container registered types information
|
|
39
40
|
*/
|
|
@@ -48,7 +49,7 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
48
49
|
* @throws {@link InvalidArgument} if type is null or undefined
|
|
49
50
|
*/
|
|
50
51
|
register<T>(implementation: Class<T> | Factory<T> | ResolvableObject): IBind;
|
|
51
|
-
unregister<T>(implementation: Class<T> | Factory<T> | ResolvableObject): void;
|
|
52
|
+
unregister<T>(implementation: string | Class<T> | Factory<T> | ResolvableObject): void;
|
|
52
53
|
uncache<T>(implementation: string | Class<T> | TypedArray<T>, parent?: boolean): void;
|
|
53
54
|
/**
|
|
54
55
|
* Creates child DI container.
|
|
@@ -85,7 +86,7 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
85
86
|
* @param type - what to resolve, can be class definition or factory function
|
|
86
87
|
* @param options - options passed to constructor / factory
|
|
87
88
|
*/
|
|
88
|
-
resolve<T>(type: string, options?: unknown[], check?: boolean): T;
|
|
89
|
+
resolve<T>(type: string, options?: unknown[], check?: boolean, tType?: Class<T>): T;
|
|
89
90
|
resolve<T>(type: string, check?: boolean): T;
|
|
90
91
|
/**
|
|
91
92
|
*
|
|
@@ -94,8 +95,8 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
94
95
|
* @param type - what to resolve, can be class definition or factory function
|
|
95
96
|
* @param options - options passed to constructor / factory
|
|
96
97
|
*/
|
|
97
|
-
resolve<T>(type: Class<T>, options?: unknown[], check?: boolean): T extends
|
|
98
|
-
resolve<T>(type: Class<T>, check?: boolean): T extends
|
|
98
|
+
resolve<T>(type: Class<T>, options?: unknown[], check?: boolean): T extends AsyncService ? Promise<T> : T;
|
|
99
|
+
resolve<T>(type: Class<T>, check?: boolean): T extends AsyncService ? Promise<T> : T;
|
|
99
100
|
/**
|
|
100
101
|
*
|
|
101
102
|
* Resolves all instances of given class. Under single definition can be registered multiple implementations.
|
|
@@ -105,8 +106,8 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
105
106
|
* @param check - strict check if serivice is registered in container before resolving. Default behavior is to not check and resolve
|
|
106
107
|
*
|
|
107
108
|
*/
|
|
108
|
-
resolve<T>(type: TypedArray<T>, options?: unknown[], check?: boolean): T extends
|
|
109
|
-
resolve<T>(type: TypedArray<T>, check?: boolean): T extends
|
|
109
|
+
resolve<T>(type: TypedArray<T>, options?: unknown[], check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
|
|
110
|
+
resolve<T>(type: TypedArray<T>, check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
|
|
110
111
|
getRegisteredTypes<T>(service: string | Class<T> | TypedArray<T>, parent?: boolean): (Class<unknown> | Factory<unknown>)[];
|
|
111
112
|
private resolveType;
|
|
112
113
|
protected getNewInstance(typeToCreate: Class<unknown> | Factory<unknown>, a?: IResolvedInjection[], options?: unknown[]): Promise<unknown> | unknown;
|
|
@@ -118,7 +119,7 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
118
119
|
}> | {
|
|
119
120
|
autoinject: boolean;
|
|
120
121
|
autoinjectKey: string;
|
|
121
|
-
instance:
|
|
122
|
+
instance: any;
|
|
122
123
|
})[] | Promise<({
|
|
123
124
|
autoinject: boolean;
|
|
124
125
|
autoinjectKey: string;
|
|
@@ -126,7 +127,7 @@ export declare class Container extends EventEmitter implements IContainer {
|
|
|
126
127
|
} | {
|
|
127
128
|
autoinject: boolean;
|
|
128
129
|
autoinjectKey: string;
|
|
129
|
-
instance:
|
|
130
|
+
instance: any;
|
|
130
131
|
})[]>;
|
|
131
132
|
protected extractDescriptor(type: Class<unknown>): IInjectDescriptor<unknown>;
|
|
132
133
|
}
|
package/lib/container.js
CHANGED
|
@@ -13,6 +13,7 @@ const binder_1 = require("./binder");
|
|
|
13
13
|
const registry_1 = require("./registry");
|
|
14
14
|
const container_cache_1 = require("./container-cache");
|
|
15
15
|
const lodash_1 = require("lodash");
|
|
16
|
+
const exceptions_2 = require("./exceptions");
|
|
16
17
|
/**
|
|
17
18
|
* Dependency injection container implementation
|
|
18
19
|
*/
|
|
@@ -41,6 +42,16 @@ class Container extends events_1.EventEmitter {
|
|
|
41
42
|
clear() {
|
|
42
43
|
this.clearCache();
|
|
43
44
|
}
|
|
45
|
+
async dispose() {
|
|
46
|
+
for (const entry of this.cache) {
|
|
47
|
+
if (entry.value instanceof interfaces_1.Service) {
|
|
48
|
+
await entry.value.dispose();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this.clearCache();
|
|
52
|
+
this.clearRegistry();
|
|
53
|
+
this.emit('di.dispose');
|
|
54
|
+
}
|
|
44
55
|
/**
|
|
45
56
|
* clears container registered types information
|
|
46
57
|
*/
|
|
@@ -108,7 +119,7 @@ class Container extends events_1.EventEmitter {
|
|
|
108
119
|
* @param options - options passed to constructor / factory
|
|
109
120
|
* @param check - strict check if serivice is registered in container before resolving. Default behavior is to not check and resolve
|
|
110
121
|
*/
|
|
111
|
-
resolve(type, options, check) {
|
|
122
|
+
resolve(type, options, check, tType) {
|
|
112
123
|
if (!type) {
|
|
113
124
|
throw new exceptions_1.InvalidArgument('argument `type` cannot be null or undefined');
|
|
114
125
|
}
|
|
@@ -155,8 +166,12 @@ class Container extends events_1.EventEmitter {
|
|
|
155
166
|
targetType = [type];
|
|
156
167
|
}
|
|
157
168
|
}
|
|
158
|
-
//
|
|
159
|
-
|
|
169
|
+
// if we have target function callback
|
|
170
|
+
// we can select whitch of targetType to resolve
|
|
171
|
+
//
|
|
172
|
+
// if not, by default last registered type is resolved
|
|
173
|
+
const fType = tType !== null && tType !== void 0 ? tType : targetType[targetType.length - 1];
|
|
174
|
+
const rValue = this.resolveType(sourceType, fType, opt);
|
|
160
175
|
return rValue;
|
|
161
176
|
}
|
|
162
177
|
}
|
|
@@ -202,6 +217,28 @@ class Container extends events_1.EventEmitter {
|
|
|
202
217
|
}
|
|
203
218
|
return null;
|
|
204
219
|
};
|
|
220
|
+
const getCachedInstances = (e, parent) => {
|
|
221
|
+
if (this.isResolved(e, parent)) {
|
|
222
|
+
const rArray = this.get(e, parent);
|
|
223
|
+
return (0, lodash_1.isArray)(rArray) ? rArray : [rArray];
|
|
224
|
+
}
|
|
225
|
+
return null;
|
|
226
|
+
};
|
|
227
|
+
const createNewInstance = (t, i, options) => {
|
|
228
|
+
const instance = this.getNewInstance(t, i, options);
|
|
229
|
+
if ((0, helpers_1.isPromise)(instance)) {
|
|
230
|
+
return instance.then((r) => {
|
|
231
|
+
setCache(r);
|
|
232
|
+
emit(r);
|
|
233
|
+
return r;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
setCache(instance);
|
|
238
|
+
emit(instance);
|
|
239
|
+
return instance;
|
|
240
|
+
}
|
|
241
|
+
};
|
|
205
242
|
const resolve = (d, t, i) => {
|
|
206
243
|
if (d.resolver === enums_1.ResolveType.NewInstance) {
|
|
207
244
|
const instance = this.getNewInstance(t, i, options);
|
|
@@ -216,22 +253,28 @@ class Container extends events_1.EventEmitter {
|
|
|
216
253
|
return instance;
|
|
217
254
|
}
|
|
218
255
|
}
|
|
256
|
+
if (d.resolver === enums_1.ResolveType.PerInstanceCheck) {
|
|
257
|
+
const cashed = getCachedInstances(tType, true);
|
|
258
|
+
if (cashed) {
|
|
259
|
+
const found = cashed.find((x) => {
|
|
260
|
+
if (!x.__checkInstance__) {
|
|
261
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
262
|
+
throw new exceptions_2.ResolveException(`service ${x.constructor.name} is marked as PerInstanceCheck resolver, but no __checkInstance__ function is provided`);
|
|
263
|
+
}
|
|
264
|
+
return x.__checkInstance__(options);
|
|
265
|
+
});
|
|
266
|
+
if (found) {
|
|
267
|
+
return found;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
return createNewInstance(t, i, options);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
219
274
|
this.Registry.register(sName, t);
|
|
220
275
|
const cashed = getCachedInstance(tType, d.resolver === enums_1.ResolveType.Singleton ? true : false);
|
|
221
276
|
if (!cashed) {
|
|
222
|
-
|
|
223
|
-
if ((0, helpers_1.isPromise)(instance)) {
|
|
224
|
-
return instance.then((r) => {
|
|
225
|
-
setCache(r);
|
|
226
|
-
emit(r);
|
|
227
|
-
return r;
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
setCache(instance);
|
|
232
|
-
emit(instance);
|
|
233
|
-
return instance;
|
|
234
|
-
}
|
|
277
|
+
return createNewInstance(t, i, options);
|
|
235
278
|
}
|
|
236
279
|
else {
|
|
237
280
|
return cashed;
|
|
@@ -290,11 +333,10 @@ class Container extends events_1.EventEmitter {
|
|
|
290
333
|
/* eslint-disable */
|
|
291
334
|
newInstance[`${ai.autoinjectKey}`] = ai.instance;
|
|
292
335
|
}
|
|
293
|
-
if ((0, helpers_1.
|
|
336
|
+
if ((0, helpers_1.isAsyncService)(newInstance)) {
|
|
294
337
|
return new Promise((res, rej) => {
|
|
295
338
|
newInstance
|
|
296
|
-
.
|
|
297
|
-
.then(() => { })
|
|
339
|
+
.resolve()
|
|
298
340
|
.then(() => {
|
|
299
341
|
res(newInstance);
|
|
300
342
|
})
|
|
@@ -302,7 +344,7 @@ class Container extends events_1.EventEmitter {
|
|
|
302
344
|
});
|
|
303
345
|
}
|
|
304
346
|
else {
|
|
305
|
-
if (newInstance instanceof interfaces_1.
|
|
347
|
+
if (newInstance instanceof interfaces_1.SyncService) {
|
|
306
348
|
newInstance.resolve();
|
|
307
349
|
}
|
|
308
350
|
}
|
|
@@ -314,28 +356,78 @@ class Container extends events_1.EventEmitter {
|
|
|
314
356
|
}
|
|
315
357
|
resolveDependencies(toInject) {
|
|
316
358
|
const dependencies = toInject.map((t) => {
|
|
317
|
-
|
|
359
|
+
var _a;
|
|
360
|
+
let tInject = null;
|
|
361
|
+
// if we have service func, retrieve target
|
|
362
|
+
// we can have multiple implementation of same interface
|
|
363
|
+
// and service can request to inject specific one
|
|
364
|
+
// ( not just last one registered )
|
|
365
|
+
// if serviceFunc returns array,
|
|
366
|
+
// all services will be resolved and mapped
|
|
367
|
+
if (t.serviceFunc) {
|
|
368
|
+
const services = t.serviceFunc(t.data, this);
|
|
369
|
+
const types = this.getRegisteredTypes(t.inject);
|
|
370
|
+
if (!types || types.length === 0) {
|
|
371
|
+
throw new exceptions_2.ServiceNotFound(`Service ${t.inject.name} is not registered in DI container`);
|
|
372
|
+
}
|
|
373
|
+
if ((0, lodash_1.isArray)(services)) {
|
|
374
|
+
tInject = services.map((x) => {
|
|
375
|
+
return {
|
|
376
|
+
type: types.find((t) => t.name === x.service),
|
|
377
|
+
options: x.options,
|
|
378
|
+
};
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
tInject = {
|
|
383
|
+
type: types.find((t) => t.name === services.service),
|
|
384
|
+
options: services.options,
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
let promiseOrVal = null;
|
|
389
|
+
if ((0, lodash_1.isArray)(tInject)) {
|
|
390
|
+
const pVals = tInject.map((x) => { var _a; return this.resolve(t.inject, [(_a = t.options) !== null && _a !== void 0 ? _a : x.options], false, x.type); });
|
|
391
|
+
if (pVals.some((x) => (0, helpers_1.isPromise)(x))) {
|
|
392
|
+
promiseOrVal = Promise.all(pVals);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
promiseOrVal = pVals;
|
|
396
|
+
}
|
|
397
|
+
t.mapFunc = (x) => x.Name || x.constructor.name;
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
promiseOrVal = this.resolve(t.inject, [(_a = t.options) !== null && _a !== void 0 ? _a : tInject === null || tInject === void 0 ? void 0 : tInject.options], false, tInject === null || tInject === void 0 ? void 0 : tInject.type);
|
|
401
|
+
}
|
|
318
402
|
if (promiseOrVal instanceof Promise) {
|
|
319
|
-
return
|
|
320
|
-
res(promiseOrVal);
|
|
321
|
-
}).then((val) => {
|
|
403
|
+
return promiseOrVal.then((val) => {
|
|
322
404
|
return {
|
|
323
405
|
autoinject: t.autoinject,
|
|
324
406
|
autoinjectKey: t.autoinjectKey,
|
|
325
|
-
instance: val,
|
|
407
|
+
instance: valOrMap(val, t),
|
|
326
408
|
};
|
|
327
409
|
});
|
|
328
410
|
}
|
|
329
411
|
return {
|
|
330
412
|
autoinject: t.autoinject,
|
|
331
413
|
autoinjectKey: t.autoinjectKey,
|
|
332
|
-
instance: promiseOrVal,
|
|
414
|
+
instance: valOrMap(promiseOrVal, t),
|
|
333
415
|
};
|
|
334
416
|
});
|
|
335
417
|
if (dependencies.some((p) => p instanceof Promise)) {
|
|
336
418
|
return Promise.all(dependencies);
|
|
337
419
|
}
|
|
338
420
|
return dependencies;
|
|
421
|
+
function valOrMap(val, t) {
|
|
422
|
+
let instance = val;
|
|
423
|
+
if ((0, lodash_1.isArray)(val) && t.mapFunc) {
|
|
424
|
+
instance = new Map();
|
|
425
|
+
for (const i of val) {
|
|
426
|
+
instance.set(t.mapFunc(i), i);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
return instance;
|
|
430
|
+
}
|
|
339
431
|
}
|
|
340
432
|
extractDescriptor(type) {
|
|
341
433
|
const descriptor = {
|
package/lib/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
package/lib/decorators.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { IAutoinjectOptions, IInjectDescriptor } from './interfaces';
|
|
1
2
|
import { Class } from './types';
|
|
2
3
|
import { TypedArray } from './array';
|
|
3
4
|
export declare const DI_DESCRIPTION_SYMBOL = "__DI_INJECTION_DESCRIPTOR__";
|
|
5
|
+
export declare function AddDependency(callback?: (descriptor: IInjectDescriptor<unknown>, target: Class<unknown>, propertyKey: string | symbol, indexOrDescriptor: number | PropertyDescriptor) => void): any;
|
|
4
6
|
/**
|
|
5
7
|
*
|
|
6
8
|
* Class with this decorator is automatically registered in DI container an can be resolved.
|
|
@@ -60,6 +62,7 @@ export declare function Inject(...args: (Class<any> | TypedArray<any>)[]): any;
|
|
|
60
62
|
* If decorator is applied to array property all registered type instances are injected, otherwise only first / only that exists
|
|
61
63
|
*
|
|
62
64
|
* @param injectType - when injecting array of some type, type must be explicitly provided. Typescript reflection cant reflect declared array types
|
|
65
|
+
* @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
|
|
63
66
|
* @example
|
|
64
67
|
* ```javascript
|
|
65
68
|
* class Foo{
|
|
@@ -80,7 +83,7 @@ export declare function Inject(...args: (Class<any> | TypedArray<any>)[]): any;
|
|
|
80
83
|
*
|
|
81
84
|
* ```
|
|
82
85
|
*/
|
|
83
|
-
export declare function Autoinject(
|
|
86
|
+
export declare function Autoinject<T>(typeOrOptions?: Class<T> | IAutoinjectOptions<T>, options?: IAutoinjectOptions<T>): any;
|
|
84
87
|
/**
|
|
85
88
|
* Lazy injects service to object. Use only with class properties
|
|
86
89
|
*
|
|
@@ -112,6 +115,25 @@ export declare function PerChildInstance(): any;
|
|
|
112
115
|
* NewInstance injection decorator - every time class is injected - its created from scratch
|
|
113
116
|
*/
|
|
114
117
|
export declare function NewInstance(): any;
|
|
118
|
+
/**
|
|
119
|
+
* If we have multiple registered types at one base type
|
|
120
|
+
* we can resolve only one by default. Per instance means, that
|
|
121
|
+
* we can resolve all types registered at base type once. Limitaiton is
|
|
122
|
+
* that, you should call resolve not on base type, but on target type.
|
|
123
|
+
*
|
|
124
|
+
* In comparison, Singleton flag means that only one instance can be resolved
|
|
125
|
+
* for base class
|
|
126
|
+
*/
|
|
127
|
+
export declare function PerInstance(): any;
|
|
128
|
+
/**
|
|
129
|
+
*
|
|
130
|
+
* Before resolve, check function on all resolved instances of given type is called with creation options
|
|
131
|
+
* It is used for ensuring that for eg. only one instance of service with provided
|
|
132
|
+
* options is resolved, but allow to create with other option set
|
|
133
|
+
*
|
|
134
|
+
* @returns
|
|
135
|
+
*/
|
|
136
|
+
export declare function PerInstanceCheck(): any;
|
|
115
137
|
/**
|
|
116
138
|
* Singleton injection decorator - every time class is resolved - its created only once globally ( even in child DI containers )
|
|
117
139
|
*/
|
package/lib/decorators.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Singleton = exports.NewInstance = exports.PerChildInstance = exports.LazyInject = exports.Autoinject = exports.Inject = exports.Injectable = exports.DI_DESCRIPTION_SYMBOL = void 0;
|
|
26
|
+
exports.Singleton = exports.PerInstanceCheck = exports.PerInstance = exports.NewInstance = exports.PerChildInstance = exports.LazyInject = exports.Autoinject = exports.Inject = exports.Injectable = exports.AddDependency = exports.DI_DESCRIPTION_SYMBOL = void 0;
|
|
27
27
|
const enums_1 = require("./enums");
|
|
28
28
|
const DI = __importStar(require("./root"));
|
|
29
29
|
const helpers_1 = require("./helpers");
|
|
@@ -43,6 +43,7 @@ function AddDependency(callback) {
|
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
+
exports.AddDependency = AddDependency;
|
|
46
47
|
/**
|
|
47
48
|
*
|
|
48
49
|
* Class with this decorator is automatically registered in DI container an can be resolved.
|
|
@@ -127,6 +128,7 @@ function Inject(...args) {
|
|
|
127
128
|
autoinject: false,
|
|
128
129
|
autoinjectKey: '',
|
|
129
130
|
inject: a,
|
|
131
|
+
mapFunc: null,
|
|
130
132
|
});
|
|
131
133
|
}
|
|
132
134
|
}
|
|
@@ -138,6 +140,7 @@ exports.Inject = Inject;
|
|
|
138
140
|
* If decorator is applied to array property all registered type instances are injected, otherwise only first / only that exists
|
|
139
141
|
*
|
|
140
142
|
* @param injectType - when injecting array of some type, type must be explicitly provided. Typescript reflection cant reflect declared array types
|
|
143
|
+
* @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
|
|
141
144
|
* @example
|
|
142
145
|
* ```javascript
|
|
143
146
|
* class Foo{
|
|
@@ -158,17 +161,26 @@ exports.Inject = Inject;
|
|
|
158
161
|
*
|
|
159
162
|
* ```
|
|
160
163
|
*/
|
|
161
|
-
function Autoinject(
|
|
164
|
+
function Autoinject(typeOrOptions, options) {
|
|
162
165
|
return AddDependency((descriptor, target, propertyKey) => {
|
|
163
|
-
|
|
164
|
-
const isArray = type.name === 'Array';
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
let type = Reflect.getMetadata('design:type', target, propertyKey);
|
|
167
|
+
const isArray = type.name === 'Array' || type.name === 'Map';
|
|
168
|
+
let opt = options;
|
|
169
|
+
if ((0, helpers_1.isConstructor)(typeOrOptions)) {
|
|
170
|
+
if (isArray && !typeOrOptions) {
|
|
171
|
+
throw new Error('you must provide inject type when injecting array');
|
|
172
|
+
}
|
|
173
|
+
type = typeOrOptions;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
opt = typeOrOptions;
|
|
167
177
|
}
|
|
168
178
|
descriptor.inject.push({
|
|
169
179
|
autoinject: true,
|
|
170
180
|
autoinjectKey: propertyKey,
|
|
171
|
-
inject: isArray ? Array.ofType(
|
|
181
|
+
inject: isArray ? Array.ofType(typeOrOptions) : type,
|
|
182
|
+
mapFunc: opt === null || opt === void 0 ? void 0 : opt.mapFunc,
|
|
183
|
+
options: opt === null || opt === void 0 ? void 0 : opt.options,
|
|
172
184
|
});
|
|
173
185
|
});
|
|
174
186
|
}
|
|
@@ -233,6 +245,35 @@ function NewInstance() {
|
|
|
233
245
|
});
|
|
234
246
|
}
|
|
235
247
|
exports.NewInstance = NewInstance;
|
|
248
|
+
/**
|
|
249
|
+
* If we have multiple registered types at one base type
|
|
250
|
+
* we can resolve only one by default. Per instance means, that
|
|
251
|
+
* we can resolve all types registered at base type once. Limitaiton is
|
|
252
|
+
* that, you should call resolve not on base type, but on target type.
|
|
253
|
+
*
|
|
254
|
+
* In comparison, Singleton flag means that only one instance can be resolved
|
|
255
|
+
* for base class
|
|
256
|
+
*/
|
|
257
|
+
function PerInstance() {
|
|
258
|
+
return AddDependency((descriptor) => {
|
|
259
|
+
descriptor.resolver = enums_1.ResolveType.PerInstance;
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
exports.PerInstance = PerInstance;
|
|
263
|
+
/**
|
|
264
|
+
*
|
|
265
|
+
* Before resolve, check function on all resolved instances of given type is called with creation options
|
|
266
|
+
* It is used for ensuring that for eg. only one instance of service with provided
|
|
267
|
+
* options is resolved, but allow to create with other option set
|
|
268
|
+
*
|
|
269
|
+
* @returns
|
|
270
|
+
*/
|
|
271
|
+
function PerInstanceCheck() {
|
|
272
|
+
return AddDependency((descriptor) => {
|
|
273
|
+
descriptor.resolver = enums_1.ResolveType.PerInstanceCheck;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
exports.PerInstanceCheck = PerInstanceCheck;
|
|
236
277
|
/**
|
|
237
278
|
* Singleton injection decorator - every time class is resolved - its created only once globally ( even in child DI containers )
|
|
238
279
|
*/
|
package/lib/decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAsC;AAItC,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/lib/enums.d.ts
CHANGED
|
@@ -13,5 +13,19 @@ export declare enum ResolveType {
|
|
|
13
13
|
/**
|
|
14
14
|
* New instance per child DI container.
|
|
15
15
|
*/
|
|
16
|
-
PerChildContainer = 2
|
|
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
|
|
17
31
|
}
|
package/lib/enums.js
CHANGED
|
@@ -18,5 +18,19 @@ var ResolveType;
|
|
|
18
18
|
* New instance per child DI container.
|
|
19
19
|
*/
|
|
20
20
|
ResolveType[ResolveType["PerChildContainer"] = 2] = "PerChildContainer";
|
|
21
|
+
/**
|
|
22
|
+
* Singleton per target type
|
|
23
|
+
*
|
|
24
|
+
* eg. if we have multiple registered types at one base type
|
|
25
|
+
* we can resolve any of it once
|
|
26
|
+
*
|
|
27
|
+
* In comparison, Singleton flag means that only one instance can be resolved
|
|
28
|
+
* for base class
|
|
29
|
+
*/
|
|
30
|
+
ResolveType[ResolveType["PerInstance"] = 3] = "PerInstance";
|
|
31
|
+
/**
|
|
32
|
+
* Only one instance with given name can exists of the same service
|
|
33
|
+
*/
|
|
34
|
+
ResolveType[ResolveType["PerInstanceCheck"] = 4] = "PerInstanceCheck";
|
|
21
35
|
})(ResolveType = exports.ResolveType || (exports.ResolveType = {}));
|
|
22
36
|
//# sourceMappingURL=enums.js.map
|
package/lib/enums.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,WA+BX;AA/BD,WAAY,WAAW;IACrB;;OAEG;IACH,uDAAS,CAAA;IAET;;OAEG;IACH,2DAAW,CAAA;IAEX;;OAEG;IACH,uEAAiB,CAAA;IAEjB;;;;;;;;OAQG;IACH,2DAAW,CAAA;IAEX;;OAEG;IACH,qEAAgB,CAAA;AAClB,CAAC,EA/BW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QA+BtB"}
|
package/lib/exceptions.d.ts
CHANGED
package/lib/exceptions.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BindException = exports.ResolveException = void 0;
|
|
3
|
+
exports.ServiceNotFound = exports.BindException = exports.ResolveException = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Exception thrown when cannot resolve type
|
|
6
6
|
*/
|
|
@@ -17,4 +17,10 @@ exports.ResolveException = ResolveException;
|
|
|
17
17
|
class BindException extends Error {
|
|
18
18
|
}
|
|
19
19
|
exports.BindException = BindException;
|
|
20
|
+
/**
|
|
21
|
+
* Service is not registered in DI container
|
|
22
|
+
*/
|
|
23
|
+
class ServiceNotFound extends Error {
|
|
24
|
+
}
|
|
25
|
+
exports.ServiceNotFound = ServiceNotFound;
|
|
20
26
|
//# sourceMappingURL=exceptions.js.map
|
package/lib/exceptions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IACzC;;;OAGG;IACH,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AARD,4CAQC;AAED,MAAa,aAAc,SAAQ,KAAK;CAAG;AAA3C,sCAA2C"}
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IACzC;;;OAGG;IACH,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AARD,4CAQC;AAED,MAAa,aAAc,SAAQ,KAAK;CAAG;AAA3C,sCAA2C;AAE3C;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;CAAG;AAA7C,0CAA6C"}
|
package/lib/helpers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TypedArray } from './array';
|
|
2
|
-
import {
|
|
2
|
+
import { AsyncService, SyncService } from './interfaces';
|
|
3
3
|
import { Factory, Class } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Checks if value is constructable type.
|
|
@@ -10,9 +10,16 @@ import { Factory, Class } from './types';
|
|
|
10
10
|
export declare function isConstructor(value: any): value is Class<unknown>;
|
|
11
11
|
export declare function isFactory(value: any): value is Factory<any>;
|
|
12
12
|
export declare function isObject(value: any): value is object;
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function isAsyncService(value: any): value is AsyncService;
|
|
14
14
|
export declare function isPromise(value: any): value is Promise<any>;
|
|
15
|
-
export declare function
|
|
15
|
+
export declare function isSyncService(value: any): value is SyncService;
|
|
16
|
+
/**
|
|
17
|
+
* For DI purpose we treat Map as array to inject. Difference is, that we fill map by some key
|
|
18
|
+
* provided by mapFunc in \@Autoinject
|
|
19
|
+
* @param value - value to check type
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
16
22
|
export declare function isTypedArray(value: any): value is TypedArray<any>;
|
|
23
|
+
export declare function isMap(value: any): value is Map<string, any>;
|
|
17
24
|
export declare function uniqBy<T>(arr: T[], comparator: (a: T, b: T) => boolean): T[];
|
|
18
25
|
export declare function getTypeName(type: TypedArray<any> | Class<any> | string | object): string;
|
package/lib/helpers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTypeName = exports.uniqBy = exports.isTypedArray = exports.
|
|
3
|
+
exports.getTypeName = exports.uniqBy = exports.isMap = exports.isTypedArray = exports.isSyncService = exports.isPromise = exports.isAsyncService = exports.isObject = exports.isFactory = exports.isConstructor = void 0;
|
|
4
4
|
const interfaces_1 = require("./interfaces");
|
|
5
5
|
/**
|
|
6
6
|
* Checks if value is constructable type.
|
|
@@ -26,22 +26,32 @@ function isObject(value) {
|
|
|
26
26
|
return typeof value === 'object';
|
|
27
27
|
}
|
|
28
28
|
exports.isObject = isObject;
|
|
29
|
-
function
|
|
30
|
-
return value instanceof interfaces_1.
|
|
29
|
+
function isAsyncService(value) {
|
|
30
|
+
return value instanceof interfaces_1.AsyncService;
|
|
31
31
|
}
|
|
32
|
-
exports.
|
|
32
|
+
exports.isAsyncService = isAsyncService;
|
|
33
33
|
function isPromise(value) {
|
|
34
34
|
return value instanceof Promise;
|
|
35
35
|
}
|
|
36
36
|
exports.isPromise = isPromise;
|
|
37
|
-
function
|
|
38
|
-
return value instanceof interfaces_1.
|
|
37
|
+
function isSyncService(value) {
|
|
38
|
+
return value instanceof interfaces_1.SyncService;
|
|
39
39
|
}
|
|
40
|
-
exports.
|
|
40
|
+
exports.isSyncService = isSyncService;
|
|
41
|
+
/**
|
|
42
|
+
* For DI purpose we treat Map as array to inject. Difference is, that we fill map by some key
|
|
43
|
+
* provided by mapFunc in \@Autoinject
|
|
44
|
+
* @param value - value to check type
|
|
45
|
+
* @returns
|
|
46
|
+
*/
|
|
41
47
|
function isTypedArray(value) {
|
|
42
|
-
return value instanceof Array && value.constructor.name === 'TypedArray';
|
|
48
|
+
return (value instanceof Array && value.constructor.name === 'TypedArray') || isMap(value);
|
|
43
49
|
}
|
|
44
50
|
exports.isTypedArray = isTypedArray;
|
|
51
|
+
function isMap(value) {
|
|
52
|
+
return value instanceof Map && value.constructor.name === 'Map';
|
|
53
|
+
}
|
|
54
|
+
exports.isMap = isMap;
|
|
45
55
|
function uniqBy(arr, comparator) {
|
|
46
56
|
const uniques = [];
|
|
47
57
|
for (const a of arr) {
|
package/lib/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AACA,6CAAyD;AAGzD;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAU;IACtC,IAAI;QACF,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACtC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AARD,sCAQC;AAED,SAAgB,SAAS,CAAC,KAAU;IAClC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9D,CAAC;AAFD,8BAEC;AAED,SAAgB,QAAQ,CAAC,KAAU;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAFD,4BAEC;AAED,SAAgB,cAAc,CAAC,KAAU;IACvC,OAAO,KAAK,YAAY,yBAAY,CAAC;AACvC,CAAC;AAFD,wCAEC;AAED,SAAgB,SAAS,CAAC,KAAU;IAClC,OAAO,KAAK,YAAY,OAAO,CAAC;AAClC,CAAC;AAFD,8BAEC;AAED,SAAgB,aAAa,CAAC,KAAU;IACtC,OAAO,KAAK,YAAY,wBAAW,CAAC;AACtC,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAU;IACrC,OAAO,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC;AAFD,oCAEC;AAED,SAAgB,KAAK,CAAC,KAAU;IAC9B,OAAO,KAAK,YAAY,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC;AAClE,CAAC;AAFD,sBAEC;AAED,SAAgB,MAAM,CAAI,GAAQ,EAAE,UAAmC;IACrE,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;QACnB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AARD,wBAQC;AAED,SAAgB,WAAW,CAAC,IAAoD;IAC9E,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACjJ,CAAC;AAFD,kCAEC"}
|
package/lib/interfaces.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ import { EventEmitter } from 'events';
|
|
|
5
5
|
import { TypedArray } from './array';
|
|
6
6
|
import { Registry } from './registry';
|
|
7
7
|
import { ContainerCache } from './container-cache';
|
|
8
|
+
export interface IInstanceCheck {
|
|
9
|
+
__checkInstance__(creationOptions: any): boolean;
|
|
10
|
+
}
|
|
8
11
|
/**
|
|
9
12
|
* Interface to describe DI binding behaviour
|
|
10
13
|
*/
|
|
@@ -21,10 +24,21 @@ export interface IBind {
|
|
|
21
24
|
asSelf(): this;
|
|
22
25
|
/**
|
|
23
26
|
* Registers as value, it wont be resolved or called, just stored as is in container
|
|
24
|
-
*
|
|
25
27
|
* @param type - name of type / key after whitch implementation will be resolved
|
|
28
|
+
* @param override - if true, any value registered before is overriden by new one
|
|
26
29
|
*/
|
|
30
|
+
asValue(type: string, override: boolean): this;
|
|
27
31
|
asValue(type: string): this;
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* Add plain value to container, value is stored in hashmap for quick access
|
|
35
|
+
* eg. we have multiple value converters and we wanc o(1) access, instead searching for
|
|
36
|
+
* converter for specific type
|
|
37
|
+
*
|
|
38
|
+
* @param type - name of added value
|
|
39
|
+
* @param key - hashmap key
|
|
40
|
+
*/
|
|
41
|
+
asMapValue(type: string, hashKey: string): this;
|
|
28
42
|
/**
|
|
29
43
|
* Registers object as single instance ( singleton )
|
|
30
44
|
*/
|
|
@@ -41,7 +55,7 @@ export interface IContainer extends EventEmitter {
|
|
|
41
55
|
clearRegistry(): void;
|
|
42
56
|
clearCache(): void;
|
|
43
57
|
register<T>(implementation: Class<T> | Factory<T> | ResolvableObject): IBind;
|
|
44
|
-
unregister<T>(implementation: Class<T> | Factory<T> | ResolvableObject): void;
|
|
58
|
+
unregister<T>(implementation: string | Class<T> | Factory<T> | ResolvableObject): void;
|
|
45
59
|
uncache<T>(source: string | Class<T> | TypedArray<T>, parent?: boolean): void;
|
|
46
60
|
child(): IContainer;
|
|
47
61
|
get<T>(service: TypedArray<T>, parent?: boolean): T[] | null;
|
|
@@ -53,11 +67,12 @@ export interface IContainer extends EventEmitter {
|
|
|
53
67
|
hasRegisteredType<T>(source: Class<any> | string | TypedArray<any>, type: Class<T> | string | TypedArray<T> | object, parent?: boolean): boolean;
|
|
54
68
|
resolve<T>(type: string, options?: unknown[], check?: boolean): T;
|
|
55
69
|
resolve<T>(type: string, check?: boolean): T;
|
|
56
|
-
resolve<T>(type: Class<T> | Factory<T>, options?: unknown[] | boolean, check?: boolean): T extends
|
|
57
|
-
resolve<T>(type: TypedArray<T>, options?: unknown[] | boolean, check?: boolean): T extends
|
|
58
|
-
resolve<T>(type: Class<T> | Factory<T>, check?: boolean): T extends
|
|
59
|
-
resolve<T>(type: TypedArray<T>, check?: boolean): T extends
|
|
70
|
+
resolve<T>(type: Class<T> | Factory<T>, options?: unknown[] | boolean, check?: boolean): T extends AsyncService ? Promise<T> : T;
|
|
71
|
+
resolve<T>(type: TypedArray<T>, options?: unknown[] | boolean, check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
|
|
72
|
+
resolve<T>(type: Class<T> | Factory<T>, check?: boolean): T extends AsyncService ? Promise<T> : T;
|
|
73
|
+
resolve<T>(type: TypedArray<T>, check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
|
|
60
74
|
resolve<T>(type: Class<T> | TypedArray<T> | string, options?: unknown[] | boolean, check?: boolean): Promise<T | T[]> | T | T[];
|
|
75
|
+
dispose(): Promise<void>;
|
|
61
76
|
}
|
|
62
77
|
/**
|
|
63
78
|
* Injection description definition structure
|
|
@@ -70,6 +85,30 @@ export interface IToInject<T> {
|
|
|
70
85
|
inject: Class<T> | TypedArray<T>;
|
|
71
86
|
autoinject: boolean;
|
|
72
87
|
autoinjectKey: string;
|
|
88
|
+
/**
|
|
89
|
+
* additional data passed to DI when resolving
|
|
90
|
+
*/
|
|
91
|
+
data?: any;
|
|
92
|
+
/**
|
|
93
|
+
* Additional options passed to resolved options
|
|
94
|
+
*/
|
|
95
|
+
options?: any;
|
|
96
|
+
/**
|
|
97
|
+
* Callback used to resolve service
|
|
98
|
+
* name of service we want to resolve
|
|
99
|
+
* eg. we have multiple \@injectable registered
|
|
100
|
+
* and we want specific one
|
|
101
|
+
*
|
|
102
|
+
* It is specifically for use with configuration module
|
|
103
|
+
* where services can be changed in configuration files
|
|
104
|
+
* and allows to use @AutoinjectService() decorator
|
|
105
|
+
*/
|
|
106
|
+
serviceFunc?: (data: string | any[], container: IContainer) => IServiceFuncResult | IServiceFuncResult[];
|
|
107
|
+
mapFunc?: (x: unknown) => string;
|
|
108
|
+
}
|
|
109
|
+
export interface IServiceFuncResult {
|
|
110
|
+
service: string;
|
|
111
|
+
options?: any;
|
|
73
112
|
}
|
|
74
113
|
export interface IResolvedInjection {
|
|
75
114
|
instance: unknown;
|
|
@@ -82,18 +121,27 @@ export interface IResolvedInjection {
|
|
|
82
121
|
* specific way but without need for factory function.
|
|
83
122
|
*
|
|
84
123
|
*
|
|
85
|
-
* @see
|
|
124
|
+
* @see FrameworkModuleSyncService implementation
|
|
86
125
|
*/
|
|
87
|
-
export declare class
|
|
126
|
+
export declare class Service {
|
|
88
127
|
protected resolved: boolean;
|
|
89
128
|
get Resolved(): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Use to dispose service, relase all resources, stop timers etc.
|
|
131
|
+
*
|
|
132
|
+
*/
|
|
133
|
+
dispose(): Promise<void>;
|
|
90
134
|
}
|
|
91
|
-
export declare abstract class
|
|
135
|
+
export declare abstract class SyncService extends Service {
|
|
92
136
|
resolve(): void;
|
|
93
137
|
}
|
|
94
|
-
export declare class
|
|
95
|
-
|
|
138
|
+
export declare class AsyncService extends Service {
|
|
139
|
+
resolve(): Promise<void>;
|
|
96
140
|
}
|
|
97
141
|
export declare abstract class Bootstrapper {
|
|
98
142
|
abstract bootstrap(): Promise<void> | void;
|
|
99
143
|
}
|
|
144
|
+
export interface IAutoinjectOptions<T> {
|
|
145
|
+
mapFunc?: (x: T) => string;
|
|
146
|
+
options?: any;
|
|
147
|
+
}
|
package/lib/interfaces.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Bootstrapper = exports.
|
|
3
|
+
exports.Bootstrapper = exports.AsyncService = exports.SyncService = exports.Service = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Interface to describe DI resolve strategies. Strategies are used do
|
|
6
6
|
* do some work at object creation eg. initialize objects that inherits from same class
|
|
7
7
|
* specific way but without need for factory function.
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
|
-
* @see
|
|
10
|
+
* @see FrameworkModuleSyncService implementation
|
|
11
11
|
*/
|
|
12
12
|
// export interface IStrategy {
|
|
13
13
|
// resolve: (target: any, container: IContainer) => void;
|
|
@@ -15,28 +15,33 @@ exports.Bootstrapper = exports.AsyncModule = exports.SyncModule = exports.Module
|
|
|
15
15
|
// export interface IAsyncStrategy {
|
|
16
16
|
// resolveA: (target: any, container: IContainer) => Promise<void>;
|
|
17
17
|
// }
|
|
18
|
-
class
|
|
18
|
+
class Service {
|
|
19
19
|
constructor() {
|
|
20
20
|
this.resolved = false;
|
|
21
21
|
}
|
|
22
22
|
get Resolved() {
|
|
23
23
|
return this.resolved;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Use to dispose service, relase all resources, stop timers etc.
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
async dispose() { }
|
|
25
30
|
}
|
|
26
|
-
exports.
|
|
27
|
-
class
|
|
31
|
+
exports.Service = Service;
|
|
32
|
+
class SyncService extends Service {
|
|
28
33
|
resolve() {
|
|
29
34
|
this.resolved = true;
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
|
-
exports.
|
|
33
|
-
class
|
|
37
|
+
exports.SyncService = SyncService;
|
|
38
|
+
class AsyncService extends Service {
|
|
34
39
|
/* eslint-disable */
|
|
35
|
-
async
|
|
40
|
+
async resolve() {
|
|
36
41
|
this.resolved = true;
|
|
37
42
|
}
|
|
38
43
|
}
|
|
39
|
-
exports.
|
|
44
|
+
exports.AsyncService = AsyncService;
|
|
40
45
|
class Bootstrapper {
|
|
41
46
|
}
|
|
42
47
|
exports.Bootstrapper = Bootstrapper;
|
package/lib/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AA2IA;;;;;;;GAOG;AACH,+BAA+B;AAC/B,6DAA6D;AAC7D,IAAI;AAEJ,oCAAoC;AACpC,uEAAuE;AACvE,IAAI;AAEJ,MAAa,OAAO;IAApB;QACY,aAAQ,GAAG,KAAK,CAAC;IAU7B,CAAC;IATC,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO,KAAI,CAAC;CAC1B;AAXD,0BAWC;AAED,MAAsB,WAAY,SAAQ,OAAO;IACxC,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF;AAJD,kCAIC;AAED,MAAa,YAAa,SAAQ,OAAO;IACvC,oBAAoB;IACb,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF;AALD,oCAKC;AAED,MAAsB,YAAY;CAEjC;AAFD,oCAEC"}
|
package/lib/registry.js
CHANGED
|
@@ -28,7 +28,13 @@ class Registry {
|
|
|
28
28
|
const tname = (0, helpers_1.getTypeName)(name);
|
|
29
29
|
const value = this.registry.get(tname);
|
|
30
30
|
if (value) {
|
|
31
|
-
|
|
31
|
+
// factory functions, we always add to registry
|
|
32
|
+
// its impossible to check for duplicates
|
|
33
|
+
// all would return 'Function' type
|
|
34
|
+
if ((0, helpers_1.isFactory)(type)) {
|
|
35
|
+
value.push(type);
|
|
36
|
+
}
|
|
37
|
+
else if (!value.find((v) => (0, helpers_1.getTypeName)(v) === (0, helpers_1.getTypeName)(type))) {
|
|
32
38
|
value.push(type);
|
|
33
39
|
}
|
|
34
40
|
}
|
package/lib/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":";;;AAAA,oDAAwE;AAExE,uCAA4E;AAI5E,MAAa,QAAQ;IAGnB,YAAsB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;QAFjC,aAAQ,GAAuB,IAAI,GAAG,EAAiB,CAAC;IAEpB,CAAC;IAExC,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,UAAU,CAAC,IAAS;QACzB,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAC/D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,QAAQ,CAAC,IAA2C,EAAE,IAAS;QACpE,IAAI,CAAC,IAAA,uBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,EAAE;YAC/D,MAAM,IAAI,6BAAgB,CAAC,8DAA8D,CAAC,CAAC;SAC5F;aAAM;YACL,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,KAAK,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/lib/root.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IBind, IContainer,
|
|
1
|
+
import { IBind, IContainer, AsyncService, ResolvableObject } from './interfaces';
|
|
2
2
|
import { Class, Factory } from './types';
|
|
3
3
|
import { TypedArray } from './array';
|
|
4
4
|
/**
|
|
@@ -46,7 +46,7 @@ export declare function clearCache(): void;
|
|
|
46
46
|
* @throws {@link InvalidArgument} if type is null or undefined
|
|
47
47
|
*/
|
|
48
48
|
export declare function register<T>(type: Class<T> | Factory<T> | ResolvableObject): IBind;
|
|
49
|
-
export declare function unregister<T>(type: Class<T> | Factory<T> | ResolvableObject): void;
|
|
49
|
+
export declare function unregister<T>(type: string | Class<T> | Factory<T> | ResolvableObject): void;
|
|
50
50
|
export declare function uncache<T>(type: string | Class<T> | TypedArray<T>, parent?: boolean): void;
|
|
51
51
|
/**
|
|
52
52
|
* Resolves specified type from root container.
|
|
@@ -57,10 +57,10 @@ export declare function uncache<T>(type: string | Class<T> | TypedArray<T>, pare
|
|
|
57
57
|
*/
|
|
58
58
|
export declare function resolve<T>(type: string, options?: unknown[], check?: boolean): T;
|
|
59
59
|
export declare function resolve<T>(type: string, check?: boolean): T;
|
|
60
|
-
export declare function resolve<T>(type: Class<T>, check?: boolean): T extends
|
|
61
|
-
export declare function resolve<T>(type: TypedArray<T>, check?: boolean): T extends
|
|
62
|
-
export declare function resolve<T>(type: Class<T>, options?: unknown[] | boolean, check?: boolean): T extends
|
|
63
|
-
export declare function resolve<T>(type: TypedArray<T>, options?: unknown[] | boolean, check?: boolean): T extends
|
|
60
|
+
export declare function resolve<T>(type: Class<T>, check?: boolean): T extends AsyncService ? Promise<T> : T;
|
|
61
|
+
export declare function resolve<T>(type: TypedArray<T>, check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
|
|
62
|
+
export declare function resolve<T>(type: Class<T>, options?: unknown[] | boolean, check?: boolean): T extends AsyncService ? Promise<T> : T;
|
|
63
|
+
export declare function resolve<T>(type: TypedArray<T>, options?: unknown[] | boolean, check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
|
|
64
64
|
/**
|
|
65
65
|
* Gets already resolved service from root container.
|
|
66
66
|
*
|
|
@@ -68,6 +68,13 @@ export declare function resolve<T>(type: TypedArray<T>, options?: unknown[] | bo
|
|
|
68
68
|
*/
|
|
69
69
|
export declare function get<T>(serviceName: TypedArray<T>): T[] | null;
|
|
70
70
|
export declare function get<T>(serviceName: string | Class<T>): T | null;
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* Returns list of types registered at given type, eg. all types/services registered under BaseService
|
|
74
|
+
*
|
|
75
|
+
* @param type - base type to check
|
|
76
|
+
*/
|
|
77
|
+
export declare function getRegisteredTypes<T>(type: string | Class<T>): Class<T>[];
|
|
71
78
|
/**
|
|
72
79
|
* Checks if service is already resolved and exists in container cache.
|
|
73
80
|
* NOTE: check is only valid for classes that are singletons.
|
|
@@ -81,6 +88,15 @@ export declare function has<T>(service: string | Class<T>): boolean;
|
|
|
81
88
|
* @param service - service class object to check
|
|
82
89
|
*/
|
|
83
90
|
export declare function check<T>(service: Class<T> | string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Checks if specific service is registered in container.
|
|
93
|
+
* Eg. we can have multiple drivers registered for queue connections with different protocol implementations
|
|
94
|
+
* and we want to check if specific driver is registered
|
|
95
|
+
*
|
|
96
|
+
* @param source - source class to check ( eg. base class )
|
|
97
|
+
* @param type - specific type to check eg. base class implementation
|
|
98
|
+
*/
|
|
99
|
+
export declare function checkType<T>(source: Class<any> | string | TypedArray<any>, type: Class<T> | string | TypedArray<T> | object): boolean;
|
|
84
100
|
/**
|
|
85
101
|
* Creates child DI container.
|
|
86
102
|
*
|
package/lib/root.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.child = exports.check = exports.has = exports.get = exports.resolve = exports.uncache = exports.unregister = exports.register = exports.clearCache = exports.clearRegistry = exports.clear = exports.eventNames = exports.prependOnceListener = exports.prependListener = exports.listenerCount = exports.emit = exports.rawListeners = exports.listeners = exports.getMaxListeners = exports.setMaxListeners = exports.removeAllListeners = exports.off = exports.removeListener = exports.once = exports.addListener = exports.on = exports.RootContainer = void 0;
|
|
3
|
+
exports.child = exports.checkType = exports.check = exports.has = exports.getRegisteredTypes = exports.get = exports.resolve = exports.uncache = exports.unregister = exports.register = exports.clearCache = exports.clearRegistry = exports.clear = exports.eventNames = exports.prependOnceListener = exports.prependListener = exports.listenerCount = exports.emit = exports.rawListeners = exports.listeners = exports.getMaxListeners = exports.setMaxListeners = exports.removeAllListeners = exports.off = exports.removeListener = exports.once = exports.addListener = exports.on = exports.RootContainer = void 0;
|
|
4
4
|
const container_1 = require("./container");
|
|
5
5
|
/**
|
|
6
6
|
* App main DI container
|
|
@@ -121,6 +121,16 @@ function get(serviceName) {
|
|
|
121
121
|
return exports.RootContainer.get(serviceName);
|
|
122
122
|
}
|
|
123
123
|
exports.get = get;
|
|
124
|
+
/**
|
|
125
|
+
*
|
|
126
|
+
* Returns list of types registered at given type, eg. all types/services registered under BaseService
|
|
127
|
+
*
|
|
128
|
+
* @param type - base type to check
|
|
129
|
+
*/
|
|
130
|
+
function getRegisteredTypes(type) {
|
|
131
|
+
return exports.RootContainer.getRegisteredTypes(type);
|
|
132
|
+
}
|
|
133
|
+
exports.getRegisteredTypes = getRegisteredTypes;
|
|
124
134
|
/**
|
|
125
135
|
* Checks if service is already resolved and exists in container cache.
|
|
126
136
|
* NOTE: check is only valid for classes that are singletons.
|
|
@@ -140,6 +150,18 @@ function check(service) {
|
|
|
140
150
|
return exports.RootContainer.hasRegistered(service);
|
|
141
151
|
}
|
|
142
152
|
exports.check = check;
|
|
153
|
+
/**
|
|
154
|
+
* Checks if specific service is registered in container.
|
|
155
|
+
* Eg. we can have multiple drivers registered for queue connections with different protocol implementations
|
|
156
|
+
* and we want to check if specific driver is registered
|
|
157
|
+
*
|
|
158
|
+
* @param source - source class to check ( eg. base class )
|
|
159
|
+
* @param type - specific type to check eg. base class implementation
|
|
160
|
+
*/
|
|
161
|
+
function checkType(source, type) {
|
|
162
|
+
return exports.RootContainer.hasRegisteredType(source, type);
|
|
163
|
+
}
|
|
164
|
+
exports.checkType = checkType;
|
|
143
165
|
/**
|
|
144
166
|
* Creates child DI container.
|
|
145
167
|
*
|
package/lib/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAKxC;;GAEG;AACU,QAAA,aAAa,GAAe,IAAI,qBAAS,EAAE,CAAC;AAEzD;;;;GAIG;AAEH,SAAgB,EAAE,CAAC,KAAa,EAAE,QAAsC;IACtE,OAAO,qBAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAFD,gBAEC;AACD,SAAgB,WAAW,CAAC,KAAsB,EAAE,QAAsC;IACxF,OAAO,qBAAa,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAFD,kCAEC;AACD,SAAgB,IAAI,CAAC,KAAsB,EAAE,QAAsC;IACjF,OAAO,qBAAa,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAFD,oBAEC;AACD,SAAgB,cAAc,CAAC,KAAsB,EAAE,QAAsC;IAC3F,OAAO,qBAAa,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAFD,wCAEC;AACD,SAAgB,GAAG,CAAC,KAAsB,EAAE,QAAsC;IAChF,OAAO,qBAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAFD,kBAEC;AACD,SAAgB,kBAAkB,CAAC,KAAuB;IACxD,OAAO,qBAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAFD,gDAEC;AACD,SAAgB,eAAe,CAAC,CAAS;IACvC,OAAO,qBAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,0CAEC;AACD,SAAgB,eAAe;IAC7B,OAAO,qBAAa,CAAC,eAAe,EAAE,CAAC;AACzC,CAAC;AAFD,0CAEC;AACD,SAAgB,SAAS,CAAC,KAAsB;IAC9C,OAAO,qBAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAFD,8BAEC;AACD,SAAgB,YAAY,CAAC,KAAsB;IACjD,OAAO,qBAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAFD,oCAEC;AACD,SAAgB,IAAI,CAAC,KAAsB,EAAE,GAAG,IAAe;IAC7D,OAAO,qBAAa,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5C,CAAC;AAFD,oBAEC;AACD,SAAgB,aAAa,CAAC,IAAqB;IACjD,OAAO,qBAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,sCAEC;AACD,SAAgB,eAAe,CAAC,KAAsB,EAAE,QAAsC;IAC5F,OAAO,qBAAa,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAFD,0CAEC;AACD,SAAgB,mBAAmB,CAAC,KAAsB,EAAE,QAAsC;IAChG,OAAO,qBAAa,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAFD,kDAEC;AACD,SAAgB,UAAU;IACxB,OAAO,qBAAa,CAAC,UAAU,EAAE,CAAC;AACpC,CAAC;AAFD,gCAEC;AAED;;GAEG;AAEH;;GAEG;AACH,SAAgB,KAAK;IACnB,qBAAa,CAAC,UAAU,EAAE,CAAC;IAC3B,qBAAa,CAAC,aAAa,EAAE,CAAC;AAChC,CAAC;AAHD,sBAGC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,qBAAa,CAAC,aAAa,EAAE,CAAC;AAChC,CAAC;AAFD,sCAEC;AAED;;GAEG;AACH,SAAgB,UAAU;IACxB,qBAAa,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAFD,gCAEC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CAAI,IAA8C;IACxE,OAAO,qBAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAI,IAAuD;IACnF,qBAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAFD,gCAEC;AAED,SAAgB,OAAO,CAAI,IAAuC,EAAE,MAAgB;IAClF,qBAAa,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAFD,0BAEC;AAeD,SAAgB,OAAO,CAAI,IAAuC,EAAE,OAA6B,EAAE,KAAe;IAChH,OAAO,qBAAa,CAAC,OAAO,CAAI,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AAFD,0BAEC;AASD,SAAgB,GAAG,CAAI,WAA8C;IACnE,OAAO,qBAAa,CAAC,GAAG,CAAC,WAAW,CAAM,CAAC;AAC7C,CAAC;AAFD,kBAEC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAI,IAAuB;IAC3D,OAAO,qBAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAFD,gDAEC;AAED;;;;;GAKG;AACH,SAAgB,GAAG,CAAI,OAA0B;IAC/C,OAAO,qBAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAFD,kBAEC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAI,OAA0B;IACjD,OAAO,qBAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAFD,sBAEC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAI,MAA6C,EAAE,IAAgD;IAC1H,OAAO,qBAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,KAAK;IACnB,OAAO,qBAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;AAFD,sBAEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spinajs/di",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.39",
|
|
4
4
|
"description": "lightweight di container ",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://github.com/spinajs/di#readme",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@spinajs/exceptions": "^2.0.
|
|
42
|
+
"@spinajs/exceptions": "^2.0.39",
|
|
43
43
|
"lodash": "^4.17.21",
|
|
44
44
|
"reflect-metadata": "^0.1.13"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/lodash": "^4.14.136"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "002dc553b0ffffd72193d0121ac425a4083bc9ee"
|
|
50
50
|
}
|