mesh-ioc 4.2.0 → 4.3.0
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/out/main/dep.d.ts +2 -2
- package/out/main/dep.js.map +1 -1
- package/out/main/index.d.ts +1 -0
- package/out/main/index.js +1 -0
- package/out/main/index.js.map +1 -1
- package/out/main/mesh.d.ts +6 -4
- package/out/main/mesh.js +18 -2
- package/out/main/mesh.js.map +1 -1
- package/out/main/scope.d.ts +4 -0
- package/out/main/scope.js +19 -0
- package/out/main/scope.js.map +1 -0
- package/out/main/types.d.ts +11 -3
- package/out/main/util.d.ts +3 -1
- package/out/main/util.js +9 -0
- package/out/main/util.js.map +1 -1
- package/package.json +1 -1
package/out/main/dep.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import {
|
|
2
|
+
import { DepMetadata, ServiceConstructor } from './types.js';
|
|
3
3
|
export declare const depMetadata: DepMetadata[];
|
|
4
4
|
export interface DepOptions {
|
|
5
5
|
key?: string;
|
|
@@ -7,4 +7,4 @@ export interface DepOptions {
|
|
|
7
7
|
optional?: boolean;
|
|
8
8
|
}
|
|
9
9
|
export declare function dep(options?: DepOptions): (target: any, propertyName: string) => void;
|
|
10
|
-
export declare function getClassDeps(ctor:
|
|
10
|
+
export declare function getClassDeps(ctor: ServiceConstructor<any>): DepMetadata[];
|
package/out/main/dep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep.js","sourceRoot":"","sources":["../../src/main/dep.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAQ,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,CAAC,MAAM,WAAW,GAAkB,EAAE,CAAC;AAQ7C,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAE;IACxC,OAAO,UAAU,MAAW,EAAE,YAAoB;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAC5E,MAAM,EACF,GAAG,GAAG,UAAU,EAAE,IAAI,EACtB,KAAK,GAAG,IAAI,EACZ,QAAQ,GAAG,KAAK,GACnB,GAAG,OAAO,CAAC;QACZ,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QACD,WAAW,CAAC,IAAI,CAAC;YACb,KAAK,EAAE,MAAM,CAAC,WAAW;YACzB,YAAY;YACZ,GAAG;SACN,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;YACxC,YAAY,EAAE,IAAI;YAClB,GAAG;gBACC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAS,CAAC;gBACpC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,uBAAuB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,IAAI,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAC5B,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;wBACtC,YAAY,EAAE,IAAI;wBAClB,KAAK;qBACR,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"dep.js","sourceRoot":"","sources":["../../src/main/dep.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAQ,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,CAAC,MAAM,WAAW,GAAkB,EAAE,CAAC;AAQ7C,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAE;IACxC,OAAO,UAAU,MAAW,EAAE,YAAoB;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAC5E,MAAM,EACF,GAAG,GAAG,UAAU,EAAE,IAAI,EACtB,KAAK,GAAG,IAAI,EACZ,QAAQ,GAAG,KAAK,GACnB,GAAG,OAAO,CAAC;QACZ,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QACD,WAAW,CAAC,IAAI,CAAC;YACb,KAAK,EAAE,MAAM,CAAC,WAAW;YACzB,YAAY;YACZ,GAAG;SACN,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;YACxC,YAAY,EAAE,IAAI;YAClB,GAAG;gBACC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAS,CAAC;gBACpC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,uBAAuB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,IAAI,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAC5B,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;wBACtC,YAAY,EAAE,IAAI;wBAClB,KAAK;qBACR,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAA6B;IACtD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/out/main/index.d.ts
CHANGED
package/out/main/index.js
CHANGED
package/out/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/out/main/mesh.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { AbstractClass, Binding,
|
|
1
|
+
import { AbstractClass, Binding, DepMetadata, Middleware, ScopeConstructor, ServiceConstructor, ServiceKey } from './types.js';
|
|
2
2
|
export declare const MESH_REF: unique symbol;
|
|
3
3
|
/**
|
|
4
4
|
* An IoC container.
|
|
5
5
|
*
|
|
6
6
|
* Encapsulates bindings — a map that allows to associate a _service key_ with a way to obtain an instance.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* The following binding types are supported via corresponding methods:
|
|
9
9
|
*
|
|
10
10
|
* - `service` — a zero-arg constructor mapping; these will be instantiated on demand and cached in a mesh instance
|
|
11
11
|
* - `constant` — an instance of a class (can be bound by using class as service name) or an arbitrary value bound by a string key
|
|
12
|
-
* - `alias` — a "redirect" mapping, resolves a key into another key from the same mesh
|
|
12
|
+
* - `alias` — a "redirect" mapping, resolves a key into another key from the same mesh
|
|
13
|
+
* - `scope` — a constructor or a factory function that returns a mesh instance
|
|
13
14
|
*/
|
|
14
15
|
export declare class Mesh {
|
|
15
16
|
name: string;
|
|
@@ -24,6 +25,7 @@ export declare class Mesh {
|
|
|
24
25
|
use(fn: Middleware): this;
|
|
25
26
|
service<T>(impl: ServiceConstructor<T>): this;
|
|
26
27
|
service<T>(key: AbstractClass<T> | string, impl: ServiceConstructor<T>): this;
|
|
28
|
+
scope<T extends Mesh>(ctor: ScopeConstructor<T>): this;
|
|
27
29
|
constant<T>(key: ServiceKey<T>, value: T): this;
|
|
28
30
|
alias<T>(key: AbstractClass<T> | string, referenceKey: AbstractClass<T> | string): this;
|
|
29
31
|
delete<T>(key: ServiceKey<T>): this;
|
|
@@ -33,7 +35,7 @@ export declare class Mesh {
|
|
|
33
35
|
allBindings(): Iterable<[string, Binding<any>]>;
|
|
34
36
|
missingDeps(): Iterable<DepMetadata>;
|
|
35
37
|
allDeps(): Iterable<DepMetadata>;
|
|
36
|
-
traverseClassDeps(ctor:
|
|
38
|
+
traverseClassDeps(ctor: ServiceConstructor<any>, visitedKeys?: Set<string>): Iterable<DepMetadata>;
|
|
37
39
|
instantiate<T>(binding: Binding<T>): T;
|
|
38
40
|
protected applyMiddleware<T>(value: T): T;
|
|
39
41
|
protected injectRef(value: any): void;
|
package/out/main/mesh.js
CHANGED
|
@@ -7,11 +7,12 @@ export const MESH_REF = Symbol.for('MESH_REF');
|
|
|
7
7
|
*
|
|
8
8
|
* Encapsulates bindings — a map that allows to associate a _service key_ with a way to obtain an instance.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* The following binding types are supported via corresponding methods:
|
|
11
11
|
*
|
|
12
12
|
* - `service` — a zero-arg constructor mapping; these will be instantiated on demand and cached in a mesh instance
|
|
13
13
|
* - `constant` — an instance of a class (can be bound by using class as service name) or an arbitrary value bound by a string key
|
|
14
|
-
* - `alias` — a "redirect" mapping, resolves a key into another key from the same mesh
|
|
14
|
+
* - `alias` — a "redirect" mapping, resolves a key into another key from the same mesh
|
|
15
|
+
* - `scope` — a constructor or a factory function that returns a mesh instance
|
|
15
16
|
*/
|
|
16
17
|
export class Mesh {
|
|
17
18
|
constructor(name = 'default', parent = undefined) {
|
|
@@ -21,6 +22,7 @@ export class Mesh {
|
|
|
21
22
|
this.instances = new Map();
|
|
22
23
|
this.middlewares = [];
|
|
23
24
|
this.constant(Mesh, this);
|
|
25
|
+
this.injectRef(this);
|
|
24
26
|
}
|
|
25
27
|
*[Symbol.iterator]() {
|
|
26
28
|
yield* this.bindings.entries();
|
|
@@ -52,6 +54,18 @@ export class Mesh {
|
|
|
52
54
|
}
|
|
53
55
|
throw new MeshInvalidBinding(String(key));
|
|
54
56
|
}
|
|
57
|
+
scope(key, ctor) {
|
|
58
|
+
const k = keyToString(key);
|
|
59
|
+
if (typeof ctor === 'function') {
|
|
60
|
+
this.bindings.set(k, { type: 'scope', constructor: ctor });
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
else if (typeof key === 'function') {
|
|
64
|
+
this.bindings.set(k, { type: 'scope', constructor: key });
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
throw new MeshInvalidBinding(String(key));
|
|
68
|
+
}
|
|
55
69
|
constant(key, value) {
|
|
56
70
|
const k = keyToString(key);
|
|
57
71
|
this.bindings.set(k, { type: 'constant', value });
|
|
@@ -156,6 +170,8 @@ export class Mesh {
|
|
|
156
170
|
}
|
|
157
171
|
case 'constant':
|
|
158
172
|
return binding.value;
|
|
173
|
+
case 'scope':
|
|
174
|
+
return binding.constructor;
|
|
159
175
|
}
|
|
160
176
|
}
|
|
161
177
|
applyMiddleware(value) {
|
package/out/main/mesh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../src/main/mesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../src/main/mesh.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { DepInstanceNotConnected } from './errors.js';
|
|
3
|
+
import { MESH_REF } from './mesh.js';
|
|
4
|
+
export function scope(serviceKey) {
|
|
5
|
+
return function (target, propertyName) {
|
|
6
|
+
const className = target.constructor.name;
|
|
7
|
+
Object.defineProperty(target, propertyName, {
|
|
8
|
+
get() {
|
|
9
|
+
const mesh = this[MESH_REF];
|
|
10
|
+
if (!mesh) {
|
|
11
|
+
throw new DepInstanceNotConnected(className, propertyName);
|
|
12
|
+
}
|
|
13
|
+
const ctor = mesh.resolve(serviceKey);
|
|
14
|
+
return (customParent) => new ctor(customParent ?? mesh);
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/main/scope.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAQ,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,UAAU,KAAK,CAAiB,UAAwC;IAC1E,OAAO,UAAU,MAAW,EAAE,YAAoB;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;YACxC,GAAG;gBACC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,uBAAuB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACtC,OAAO,CAAC,YAAmB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;YACnE,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC"}
|
package/out/main/types.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
export type ServiceConstructor<T> = new () => T;
|
|
1
|
+
import { Mesh } from './mesh.js';
|
|
3
2
|
export interface AbstractClass<T> {
|
|
4
3
|
name: string;
|
|
5
4
|
prototype: T;
|
|
6
5
|
}
|
|
6
|
+
export type Constructor<T> = new (...args: any[]) => T;
|
|
7
|
+
export type Factory<T> = (...args: any[]) => T;
|
|
8
|
+
export type ServiceConstructor<T> = new () => T;
|
|
7
9
|
export type ServiceKey<T> = ServiceConstructor<T> | AbstractClass<T> | string;
|
|
10
|
+
export type ScopeConstructor<T extends Mesh = Mesh> = new (mesh: Mesh) => T;
|
|
11
|
+
export type ScopeProvider<T extends Mesh = Mesh> = (mesh?: Mesh) => T;
|
|
8
12
|
export type Middleware = (instance: any) => any;
|
|
9
|
-
export type Binding<T> = ConstantBinding<T> | ServiceBinding<T> | AliasBinding;
|
|
13
|
+
export type Binding<T> = ConstantBinding<T> | ServiceBinding<T> | AliasBinding | ScopeBinding;
|
|
10
14
|
export interface ConstantBinding<T> {
|
|
11
15
|
type: 'constant';
|
|
12
16
|
value: T;
|
|
@@ -19,6 +23,10 @@ export interface AliasBinding {
|
|
|
19
23
|
type: 'alias';
|
|
20
24
|
key: string;
|
|
21
25
|
}
|
|
26
|
+
export interface ScopeBinding {
|
|
27
|
+
type: 'scope';
|
|
28
|
+
constructor: ScopeConstructor<any>;
|
|
29
|
+
}
|
|
22
30
|
export interface DepMetadata {
|
|
23
31
|
class: any;
|
|
24
32
|
propertyName: string;
|
package/out/main/util.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { ServiceKey } from './types.js';
|
|
1
|
+
import { Constructor, Factory, ServiceConstructor, ServiceKey } from './types.js';
|
|
2
2
|
export declare function keyToString<T>(key: ServiceKey<T>): string;
|
|
3
|
+
export declare function isConstructor(v: unknown): v is ServiceConstructor<any>;
|
|
4
|
+
export declare function instantiate<T>(constructorOrFactory: Constructor<T> | Factory<T>, ...args: any[]): T;
|
package/out/main/util.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
export function keyToString(key) {
|
|
2
2
|
return typeof key === 'string' ? key : key.name;
|
|
3
3
|
}
|
|
4
|
+
export function isConstructor(v) {
|
|
5
|
+
return typeof v === 'function' && v.prototype != null;
|
|
6
|
+
}
|
|
7
|
+
export function instantiate(constructorOrFactory, ...args) {
|
|
8
|
+
if (isConstructor(constructorOrFactory)) {
|
|
9
|
+
return new constructorOrFactory(...args);
|
|
10
|
+
}
|
|
11
|
+
return constructorOrFactory(...args);
|
|
12
|
+
}
|
|
4
13
|
//# sourceMappingURL=util.js.map
|
package/out/main/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/main/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAI,GAAkB;IAC7C,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/main/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAI,GAAkB;IAC7C,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAU;IACpC,OAAO,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,oBAAiD,EAAE,GAAG,IAAW;IAC5F,IAAI,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;AACzC,CAAC"}
|