@venizia/ignis-inversion 0.2.0-5 → 0.2.0-7
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/dist/cjs/modules/container/container.d.ts +8 -1
- package/dist/cjs/modules/container/container.d.ts.map +1 -1
- package/dist/cjs/modules/container/container.js +33 -2
- package/dist/cjs/modules/container/container.js.map +1 -1
- package/dist/cjs/modules/metadata/common/constants.d.ts +1 -0
- package/dist/cjs/modules/metadata/common/constants.d.ts.map +1 -1
- package/dist/cjs/modules/metadata/common/constants.js +1 -0
- package/dist/cjs/modules/metadata/common/constants.js.map +1 -1
- package/dist/cjs/modules/metadata/injectors.d.ts +12 -5
- package/dist/cjs/modules/metadata/injectors.d.ts.map +1 -1
- package/dist/cjs/modules/metadata/injectors.js +10 -2
- package/dist/cjs/modules/metadata/injectors.js.map +1 -1
- package/dist/cjs/modules/registry/common/types.d.ts +12 -3
- package/dist/cjs/modules/registry/common/types.d.ts.map +1 -1
- package/dist/cjs/modules/registry/registry.d.ts +10 -0
- package/dist/cjs/modules/registry/registry.d.ts.map +1 -1
- package/dist/cjs/modules/registry/registry.js +16 -0
- package/dist/cjs/modules/registry/registry.js.map +1 -1
- package/dist/esm/modules/container/container.d.ts +8 -1
- package/dist/esm/modules/container/container.d.ts.map +1 -1
- package/dist/esm/modules/container/container.js +33 -2
- package/dist/esm/modules/container/container.js.map +1 -1
- package/dist/esm/modules/metadata/common/constants.d.ts +1 -0
- package/dist/esm/modules/metadata/common/constants.d.ts.map +1 -1
- package/dist/esm/modules/metadata/common/constants.js +1 -0
- package/dist/esm/modules/metadata/common/constants.js.map +1 -1
- package/dist/esm/modules/metadata/injectors.d.ts +12 -5
- package/dist/esm/modules/metadata/injectors.d.ts.map +1 -1
- package/dist/esm/modules/metadata/injectors.js +10 -2
- package/dist/esm/modules/metadata/injectors.js.map +1 -1
- package/dist/esm/modules/registry/common/types.d.ts +12 -3
- package/dist/esm/modules/registry/common/types.d.ts.map +1 -1
- package/dist/esm/modules/registry/registry.d.ts +10 -0
- package/dist/esm/modules/registry/registry.d.ts.map +1 -1
- package/dist/esm/modules/registry/registry.js +16 -0
- package/dist/esm/modules/registry/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { TClass } from '../../common/types';
|
|
1
|
+
import { AnyType, TBindingKey, TClass } from '../../common/types';
|
|
2
2
|
import { BaseContainer } from './base';
|
|
3
3
|
/** Default container: constructor + property injection driven by the decorator metadata registry. */
|
|
4
4
|
export declare class Container extends BaseContainer {
|
|
5
5
|
constructor(opts?: {
|
|
6
6
|
scope: string;
|
|
7
7
|
});
|
|
8
|
+
/** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
|
|
9
|
+
protected resolveBindingKey(opts: {
|
|
10
|
+
key?: TBindingKey;
|
|
11
|
+
target?: TClass<AnyType>;
|
|
12
|
+
cls: TClass<AnyType>;
|
|
13
|
+
at: string;
|
|
14
|
+
}): TBindingKey;
|
|
8
15
|
instantiate<T>(cls: TClass<T>): T;
|
|
9
16
|
}
|
|
10
17
|
//# sourceMappingURL=container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAIpC,+IAA+I;IAC/I,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAChC,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,WAAW;IAuBN,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;CAwD3C"}
|
|
@@ -8,6 +8,25 @@ class Container extends base_1.BaseContainer {
|
|
|
8
8
|
constructor(opts) {
|
|
9
9
|
super({ scope: opts?.scope ?? Container.name });
|
|
10
10
|
}
|
|
11
|
+
/** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
|
|
12
|
+
resolveBindingKey(opts) {
|
|
13
|
+
const { key, target, cls, at } = opts;
|
|
14
|
+
if (key !== undefined) {
|
|
15
|
+
return key;
|
|
16
|
+
}
|
|
17
|
+
if (target === undefined) {
|
|
18
|
+
throw (0, error_1.getError)({
|
|
19
|
+
message: `[${cls.name}] ${at} has neither an @inject key nor a class`,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const recorded = this.getMetadataRegistry().getBindingKey({ target });
|
|
23
|
+
if (recorded === undefined) {
|
|
24
|
+
throw (0, error_1.getError)({
|
|
25
|
+
message: `[${cls.name}] ${at} names '${target.name}', which is not registered as an artifact | Decorate it (@service, @repository, ...) or register it on the application before it is injected`,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return recorded;
|
|
29
|
+
}
|
|
11
30
|
instantiate(cls) {
|
|
12
31
|
const registry = this.getMetadataRegistry();
|
|
13
32
|
const injectMetadata = registry.getInjectMetadata({
|
|
@@ -21,7 +40,13 @@ class Container extends base_1.BaseContainer {
|
|
|
21
40
|
message: `[${cls.name}] Constructor parameter ${index} has no @inject | Every parameter of a container-instantiated class must be decorated - the container cannot supply an undecorated one`,
|
|
22
41
|
});
|
|
23
42
|
}
|
|
24
|
-
|
|
43
|
+
const key = this.resolveBindingKey({
|
|
44
|
+
key: meta.key,
|
|
45
|
+
target: meta.target,
|
|
46
|
+
cls,
|
|
47
|
+
at: `Constructor parameter ${index}`,
|
|
48
|
+
});
|
|
49
|
+
args[meta.index] = this.get({ key, isOptional: meta.isOptional ?? false });
|
|
25
50
|
}
|
|
26
51
|
const instance = new cls(...args);
|
|
27
52
|
const propertyMetadata = registry.getPropertiesMetadata({
|
|
@@ -32,8 +57,14 @@ class Container extends base_1.BaseContainer {
|
|
|
32
57
|
}
|
|
33
58
|
const properties = propertyMetadata.entries();
|
|
34
59
|
for (const [propertyKey, metadata] of properties) {
|
|
35
|
-
const
|
|
60
|
+
const key = this.resolveBindingKey({
|
|
36
61
|
key: metadata.bindingKey,
|
|
62
|
+
target: metadata.target,
|
|
63
|
+
cls,
|
|
64
|
+
at: `Property '${String(propertyKey)}'`,
|
|
65
|
+
});
|
|
66
|
+
const dep = this.get({
|
|
67
|
+
key,
|
|
37
68
|
isOptional: metadata.isOptional ?? false,
|
|
38
69
|
});
|
|
39
70
|
instance[propertyKey] = dep;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAEpC,iCAAuC;AAEvC,qGAAqG;AACrG,MAAa,SAAU,SAAQ,oBAAa;IAC1C,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAEQ,WAAW,CAAI,GAAc;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YAChD,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAU,EAAE,CAAC;QAEvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;YAErC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAA,gBAAQ,EAAC;oBACb,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,2BAA2B,KAAK,wIAAwI;iBAC9L,CAAC,CAAC;YACL,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;CAIxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;CAC7C,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { TBindingKey } from '../../common/types';
|
|
1
|
+
import { AnyType, TBindingKey, TClass } from '../../common/types';
|
|
2
2
|
import { MetadataRegistry } from '../registry';
|
|
3
|
-
/**
|
|
4
|
-
export
|
|
5
|
-
key: TBindingKey;
|
|
3
|
+
/** Either a key or the class bound under it - never both. */
|
|
4
|
+
export type TInjectOptions = {
|
|
6
5
|
isOptional?: boolean;
|
|
7
6
|
registry?: MetadataRegistry;
|
|
8
|
-
}
|
|
7
|
+
} & ({
|
|
8
|
+
key: TBindingKey;
|
|
9
|
+
target?: never;
|
|
10
|
+
} | {
|
|
11
|
+
target: TClass<AnyType>;
|
|
12
|
+
key?: never;
|
|
13
|
+
});
|
|
14
|
+
/** Marks a property or constructor parameter for dependency injection. */
|
|
15
|
+
export declare const inject: (opts: TInjectOptions) => (target: any, propertyName: string | symbol | undefined, parameterIndex?: number) => void;
|
|
9
16
|
//# sourceMappingURL=injectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAExE,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,GAAG,CAAC;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEtF,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAAI,MAAM,cAAc,MAUjC,QAAQ,GAAG,EAAE,cAAc,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,iBAAiB,MAAM,SAgCxF,CAAC"}
|
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.inject = void 0;
|
|
4
4
|
const error_1 = require("../error");
|
|
5
|
+
const utilities_1 = require("../../common/utilities");
|
|
5
6
|
const registry_1 = require("../registry");
|
|
6
7
|
/** Marks a property or constructor parameter for dependency injection. */
|
|
7
8
|
const inject = (opts) => {
|
|
9
|
+
const { key, target: injected } = opts;
|
|
10
|
+
// A circular import leaves `target` undefined; fail here, not at resolve time.
|
|
11
|
+
if (key === undefined && !(0, utilities_1.isClass)(injected)) {
|
|
12
|
+
throw (0, error_1.getError)({
|
|
13
|
+
message: `@inject was given no binding key and no class | target: ${String(injected)}`,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
8
16
|
return (target, propertyName, parameterIndex) => {
|
|
9
17
|
const registry = opts.registry ?? registry_1.metadataRegistry;
|
|
10
18
|
if (typeof parameterIndex === 'number') {
|
|
@@ -12,7 +20,7 @@ const inject = (opts) => {
|
|
|
12
20
|
target,
|
|
13
21
|
index: parameterIndex,
|
|
14
22
|
metadata: {
|
|
15
|
-
key:
|
|
23
|
+
...(key === undefined ? { target: injected } : { key }),
|
|
16
24
|
index: parameterIndex,
|
|
17
25
|
isOptional: opts.isOptional ?? false,
|
|
18
26
|
},
|
|
@@ -24,7 +32,7 @@ const inject = (opts) => {
|
|
|
24
32
|
target,
|
|
25
33
|
propertyName: propertyName,
|
|
26
34
|
metadata: {
|
|
27
|
-
bindingKey:
|
|
35
|
+
...(key === undefined ? { target: injected } : { bindingKey: key }),
|
|
28
36
|
isOptional: opts.isOptional ?? false,
|
|
29
37
|
},
|
|
30
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;
|
|
1
|
+
{"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,kDAA6C;AAE7C,iDAAwE;AAQxE,0EAA0E;AACnE,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAE,EAAE;IAC7C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvC,+EAA+E;IAC/E,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAA,gBAAQ,EAAC;YACb,OAAO,EAAE,2DAA2D,MAAM,CAAC,QAAQ,CAAC,EAAE;SACvF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAW,EAAE,YAAyC,EAAE,cAAuB,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,2BAAgB,CAAC;QAEnD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,CAAC,iBAAiB,CAAC;gBACzB,MAAM;gBACN,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE;oBACR,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;oBACvD,KAAK,EAAE,cAAc;oBACrB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,mBAAmB,CAAC;gBAC3B,MAAM;gBACN,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE;oBACR,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;oBACnE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,IAAA,gBAAQ,EAAC;YACb,OAAO,EAAE,kFAAkF;SAC5F,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,MAAM,UA0CjB"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import type { TBindingKey } from '../../../common/types';
|
|
1
|
+
import type { AnyType, TBindingKey, TClass } from '../../../common/types';
|
|
2
2
|
export interface IPropertyMetadata {
|
|
3
|
-
bindingKey
|
|
3
|
+
bindingKey?: TBindingKey;
|
|
4
|
+
/** Named by class; the key is read off the class at resolve time. */
|
|
5
|
+
target?: TClass<AnyType>;
|
|
4
6
|
isOptional?: boolean;
|
|
5
7
|
}
|
|
6
8
|
export interface IInjectMetadata {
|
|
7
|
-
key
|
|
9
|
+
key?: TBindingKey;
|
|
10
|
+
/** Named by class; the key is read off the class at resolve time. */
|
|
11
|
+
target?: TClass<AnyType>;
|
|
8
12
|
index: number;
|
|
9
13
|
isOptional?: boolean;
|
|
10
14
|
}
|
|
15
|
+
/** What `MetadataKeys.BINDING_KEY` holds. */
|
|
16
|
+
export interface IBindingKeyRecord {
|
|
17
|
+
key: TBindingKey;
|
|
18
|
+
isProvisional: boolean;
|
|
19
|
+
}
|
|
11
20
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGnE,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,WAAW,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB"}
|
|
@@ -50,6 +50,16 @@ export declare class MetadataRegistry extends BaseHelper {
|
|
|
50
50
|
getInjectMetadata<T extends object = object>(opts: {
|
|
51
51
|
target: T;
|
|
52
52
|
}): IInjectMetadata[] | undefined;
|
|
53
|
+
/** `isProvisional` marks a DERIVED key; a registration replaces it silently, having seen the call-site override. */
|
|
54
|
+
setBindingKey<T extends object = object>(opts: {
|
|
55
|
+
target: T;
|
|
56
|
+
key: TBindingKey;
|
|
57
|
+
isProvisional?: boolean;
|
|
58
|
+
}): void;
|
|
59
|
+
/** Own metadata only: a subclass is not registered, and the parent key would resolve the wrong binding. */
|
|
60
|
+
getBindingKey<T extends object = object>(opts: {
|
|
61
|
+
target: T;
|
|
62
|
+
}): TBindingKey | undefined;
|
|
53
63
|
}
|
|
54
64
|
export declare const metadataRegistry: MetadataRegistry;
|
|
55
65
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,22 @@ class MetadataRegistry extends base_helper_1.BaseHelper {
|
|
|
71
71
|
const { target } = opts;
|
|
72
72
|
return Reflect.getMetadata(constants_1.MetadataKeys.INJECT, target);
|
|
73
73
|
}
|
|
74
|
+
/** `isProvisional` marks a DERIVED key; a registration replaces it silently, having seen the call-site override. */
|
|
75
|
+
setBindingKey(opts) {
|
|
76
|
+
const { target, key, isProvisional = false } = opts;
|
|
77
|
+
const current = Reflect.getOwnMetadata(constants_1.MetadataKeys.BINDING_KEY, target);
|
|
78
|
+
// Two apps in one process, one class, two keys: the last registration would decide for both.
|
|
79
|
+
if (current !== undefined && current.key !== key && !current.isProvisional && !isProvisional) {
|
|
80
|
+
logger_1.Logger.warn('[setBindingKey] Rebound under a different key | target: %s | was: %s | now: %s', target.name, current.key.toString(), key.toString());
|
|
81
|
+
}
|
|
82
|
+
Reflect.defineMetadata(constants_1.MetadataKeys.BINDING_KEY, { key, isProvisional }, target);
|
|
83
|
+
}
|
|
84
|
+
/** Own metadata only: a subclass is not registered, and the parent key would resolve the wrong binding. */
|
|
85
|
+
getBindingKey(opts) {
|
|
86
|
+
const { target } = opts;
|
|
87
|
+
const record = Reflect.getOwnMetadata(constants_1.MetadataKeys.BINDING_KEY, target);
|
|
88
|
+
return record?.key;
|
|
89
|
+
}
|
|
74
90
|
}
|
|
75
91
|
exports.MetadataRegistry = MetadataRegistry;
|
|
76
92
|
exports.metadataRegistry = new MetadataRegistry();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAClD,4CAAyC;AAEzC,4DAA4D;AAG5D,+EAA+E;AAC/E,MAAa,gBAAiB,SAAQ,wBAAU;IAC9C;QACE,KAAK,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAA8C,IAInD;QACC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEpC,eAAM,CAAC,KAAK,CACV,0DAA0D,EAC1D,MAAM,CAAC,WAAW,CAAC,IAAI,EACvB,GAAG,CAAC,QAAQ,EAAE,EACd,KAAK,CACN,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAA8C,IAGhD;QACC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC7B,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAiC,IAA0C;QAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC7B,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAiC,IAA0C;QAC/E,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC7B,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAiC,IAAwB;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,CACL,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;QAC5D,CAAC,CAAC,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;IAED,cAAc,CAAU,IAA2B;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAC1D,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,CACxE,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,aAAa,CAA4B,IAAmB;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,mBAAmB,CAA4B,IAI9C;QACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEhD,IAAI,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,UAAU,KAAK,IAAI,GAAG,EAAsC,CAAC;QAE7D,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,wBAAY,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAClF,CAAC;IAED,qBAAqB,CAA4B,IAEhD;QACC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,OAAO,CAAC,WAAW,CAAC,wBAAY,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1E,CAAC;IAED,mBAAmB,CAA4B,IAG9C;QACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB,CAA4B,IAI5C;QACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,wBAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;QAC1B,OAAO,CAAC,cAAc,CAAC,wBAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB,CAA4B,IAAmB;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,OAAO,CAAC,WAAW,CAAC,wBAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { TClass } from '../../common/types';
|
|
1
|
+
import { AnyType, TBindingKey, TClass } from '../../common/types';
|
|
2
2
|
import { BaseContainer } from './base';
|
|
3
3
|
/** Default container: constructor + property injection driven by the decorator metadata registry. */
|
|
4
4
|
export declare class Container extends BaseContainer {
|
|
5
5
|
constructor(opts?: {
|
|
6
6
|
scope: string;
|
|
7
7
|
});
|
|
8
|
+
/** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
|
|
9
|
+
protected resolveBindingKey(opts: {
|
|
10
|
+
key?: TBindingKey;
|
|
11
|
+
target?: TClass<AnyType>;
|
|
12
|
+
cls: TClass<AnyType>;
|
|
13
|
+
at: string;
|
|
14
|
+
}): TBindingKey;
|
|
8
15
|
instantiate<T>(cls: TClass<T>): T;
|
|
9
16
|
}
|
|
10
17
|
//# sourceMappingURL=container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAIpC,+IAA+I;IAC/I,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAChC,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,WAAW;IAuBN,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;CAwD3C"}
|
|
@@ -5,6 +5,25 @@ export class Container extends BaseContainer {
|
|
|
5
5
|
constructor(opts) {
|
|
6
6
|
super({ scope: opts?.scope ?? Container.name });
|
|
7
7
|
}
|
|
8
|
+
/** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
|
|
9
|
+
resolveBindingKey(opts) {
|
|
10
|
+
const { key, target, cls, at } = opts;
|
|
11
|
+
if (key !== undefined) {
|
|
12
|
+
return key;
|
|
13
|
+
}
|
|
14
|
+
if (target === undefined) {
|
|
15
|
+
throw getError({
|
|
16
|
+
message: `[${cls.name}] ${at} has neither an @inject key nor a class`,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const recorded = this.getMetadataRegistry().getBindingKey({ target });
|
|
20
|
+
if (recorded === undefined) {
|
|
21
|
+
throw getError({
|
|
22
|
+
message: `[${cls.name}] ${at} names '${target.name}', which is not registered as an artifact | Decorate it (@service, @repository, ...) or register it on the application before it is injected`,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return recorded;
|
|
26
|
+
}
|
|
8
27
|
instantiate(cls) {
|
|
9
28
|
const registry = this.getMetadataRegistry();
|
|
10
29
|
const injectMetadata = registry.getInjectMetadata({
|
|
@@ -18,7 +37,13 @@ export class Container extends BaseContainer {
|
|
|
18
37
|
message: `[${cls.name}] Constructor parameter ${index} has no @inject | Every parameter of a container-instantiated class must be decorated - the container cannot supply an undecorated one`,
|
|
19
38
|
});
|
|
20
39
|
}
|
|
21
|
-
|
|
40
|
+
const key = this.resolveBindingKey({
|
|
41
|
+
key: meta.key,
|
|
42
|
+
target: meta.target,
|
|
43
|
+
cls,
|
|
44
|
+
at: `Constructor parameter ${index}`,
|
|
45
|
+
});
|
|
46
|
+
args[meta.index] = this.get({ key, isOptional: meta.isOptional ?? false });
|
|
22
47
|
}
|
|
23
48
|
const instance = new cls(...args);
|
|
24
49
|
const propertyMetadata = registry.getPropertiesMetadata({
|
|
@@ -29,8 +54,14 @@ export class Container extends BaseContainer {
|
|
|
29
54
|
}
|
|
30
55
|
const properties = propertyMetadata.entries();
|
|
31
56
|
for (const [propertyKey, metadata] of properties) {
|
|
32
|
-
const
|
|
57
|
+
const key = this.resolveBindingKey({
|
|
33
58
|
key: metadata.bindingKey,
|
|
59
|
+
target: metadata.target,
|
|
60
|
+
cls,
|
|
61
|
+
at: `Property '${String(propertyKey)}'`,
|
|
62
|
+
});
|
|
63
|
+
const dep = this.get({
|
|
64
|
+
key,
|
|
34
65
|
isOptional: metadata.isOptional ?? false,
|
|
35
66
|
});
|
|
36
67
|
instance[propertyKey] = dep;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,MAAM,OAAO,SAAU,SAAQ,aAAa;IAC1C,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAEQ,WAAW,CAAI,GAAc;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YAChD,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAU,EAAE,CAAC;QAEvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;YAErC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,QAAQ,CAAC;oBACb,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,2BAA2B,KAAK,wIAAwI;iBAC9L,CAAC,CAAC;YACL,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;CAIxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;CAC7C,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { TBindingKey } from '../../common/types';
|
|
1
|
+
import { AnyType, TBindingKey, TClass } from '../../common/types';
|
|
2
2
|
import { MetadataRegistry } from '../registry';
|
|
3
|
-
/**
|
|
4
|
-
export
|
|
5
|
-
key: TBindingKey;
|
|
3
|
+
/** Either a key or the class bound under it - never both. */
|
|
4
|
+
export type TInjectOptions = {
|
|
6
5
|
isOptional?: boolean;
|
|
7
6
|
registry?: MetadataRegistry;
|
|
8
|
-
}
|
|
7
|
+
} & ({
|
|
8
|
+
key: TBindingKey;
|
|
9
|
+
target?: never;
|
|
10
|
+
} | {
|
|
11
|
+
target: TClass<AnyType>;
|
|
12
|
+
key?: never;
|
|
13
|
+
});
|
|
14
|
+
/** Marks a property or constructor parameter for dependency injection. */
|
|
15
|
+
export declare const inject: (opts: TInjectOptions) => (target: any, propertyName: string | symbol | undefined, parameterIndex?: number) => void;
|
|
9
16
|
//# sourceMappingURL=injectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAExE,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,GAAG,CAAC;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEtF,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAAI,MAAM,cAAc,MAUjC,QAAQ,GAAG,EAAE,cAAc,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,iBAAiB,MAAM,SAgCxF,CAAC"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { getError } from '../error';
|
|
2
|
+
import { isClass } from '../../common/utilities';
|
|
2
3
|
import { metadataRegistry } from '../registry';
|
|
3
4
|
/** Marks a property or constructor parameter for dependency injection. */
|
|
4
5
|
export const inject = (opts) => {
|
|
6
|
+
const { key, target: injected } = opts;
|
|
7
|
+
// A circular import leaves `target` undefined; fail here, not at resolve time.
|
|
8
|
+
if (key === undefined && !isClass(injected)) {
|
|
9
|
+
throw getError({
|
|
10
|
+
message: `@inject was given no binding key and no class | target: ${String(injected)}`,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
5
13
|
return (target, propertyName, parameterIndex) => {
|
|
6
14
|
const registry = opts.registry ?? metadataRegistry;
|
|
7
15
|
if (typeof parameterIndex === 'number') {
|
|
@@ -9,7 +17,7 @@ export const inject = (opts) => {
|
|
|
9
17
|
target,
|
|
10
18
|
index: parameterIndex,
|
|
11
19
|
metadata: {
|
|
12
|
-
key:
|
|
20
|
+
...(key === undefined ? { target: injected } : { key }),
|
|
13
21
|
index: parameterIndex,
|
|
14
22
|
isOptional: opts.isOptional ?? false,
|
|
15
23
|
},
|
|
@@ -21,7 +29,7 @@ export const inject = (opts) => {
|
|
|
21
29
|
target,
|
|
22
30
|
propertyName: propertyName,
|
|
23
31
|
metadata: {
|
|
24
|
-
bindingKey:
|
|
32
|
+
...(key === undefined ? { target: injected } : { bindingKey: key }),
|
|
25
33
|
isOptional: opts.isOptional ?? false,
|
|
26
34
|
},
|
|
27
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAQxE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAE,EAAE;IAC7C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvC,+EAA+E;IAC/E,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,2DAA2D,MAAM,CAAC,QAAQ,CAAC,EAAE;SACvF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAW,EAAE,YAAyC,EAAE,cAAuB,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAEnD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,CAAC,iBAAiB,CAAC;gBACzB,MAAM;gBACN,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE;oBACR,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;oBACvD,KAAK,EAAE,cAAc;oBACrB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,mBAAmB,CAAC;gBAC3B,MAAM;gBACN,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE;oBACR,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;oBACnE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,kFAAkF;SAC5F,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import type { TBindingKey } from '../../../common/types';
|
|
1
|
+
import type { AnyType, TBindingKey, TClass } from '../../../common/types';
|
|
2
2
|
export interface IPropertyMetadata {
|
|
3
|
-
bindingKey
|
|
3
|
+
bindingKey?: TBindingKey;
|
|
4
|
+
/** Named by class; the key is read off the class at resolve time. */
|
|
5
|
+
target?: TClass<AnyType>;
|
|
4
6
|
isOptional?: boolean;
|
|
5
7
|
}
|
|
6
8
|
export interface IInjectMetadata {
|
|
7
|
-
key
|
|
9
|
+
key?: TBindingKey;
|
|
10
|
+
/** Named by class; the key is read off the class at resolve time. */
|
|
11
|
+
target?: TClass<AnyType>;
|
|
8
12
|
index: number;
|
|
9
13
|
isOptional?: boolean;
|
|
10
14
|
}
|
|
15
|
+
/** What `MetadataKeys.BINDING_KEY` holds. */
|
|
16
|
+
export interface IBindingKeyRecord {
|
|
17
|
+
key: TBindingKey;
|
|
18
|
+
isProvisional: boolean;
|
|
19
|
+
}
|
|
11
20
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGnE,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,WAAW,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB"}
|
|
@@ -50,6 +50,16 @@ export declare class MetadataRegistry extends BaseHelper {
|
|
|
50
50
|
getInjectMetadata<T extends object = object>(opts: {
|
|
51
51
|
target: T;
|
|
52
52
|
}): IInjectMetadata[] | undefined;
|
|
53
|
+
/** `isProvisional` marks a DERIVED key; a registration replaces it silently, having seen the call-site override. */
|
|
54
|
+
setBindingKey<T extends object = object>(opts: {
|
|
55
|
+
target: T;
|
|
56
|
+
key: TBindingKey;
|
|
57
|
+
isProvisional?: boolean;
|
|
58
|
+
}): void;
|
|
59
|
+
/** Own metadata only: a subclass is not registered, and the parent key would resolve the wrong binding. */
|
|
60
|
+
getBindingKey<T extends object = object>(opts: {
|
|
61
|
+
target: T;
|
|
62
|
+
}): TBindingKey | undefined;
|
|
53
63
|
}
|
|
54
64
|
export declare const metadataRegistry: MetadataRegistry;
|
|
55
65
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,6 +68,22 @@ export class MetadataRegistry extends BaseHelper {
|
|
|
68
68
|
const { target } = opts;
|
|
69
69
|
return Reflect.getMetadata(MetadataKeys.INJECT, target);
|
|
70
70
|
}
|
|
71
|
+
/** `isProvisional` marks a DERIVED key; a registration replaces it silently, having seen the call-site override. */
|
|
72
|
+
setBindingKey(opts) {
|
|
73
|
+
const { target, key, isProvisional = false } = opts;
|
|
74
|
+
const current = Reflect.getOwnMetadata(MetadataKeys.BINDING_KEY, target);
|
|
75
|
+
// Two apps in one process, one class, two keys: the last registration would decide for both.
|
|
76
|
+
if (current !== undefined && current.key !== key && !current.isProvisional && !isProvisional) {
|
|
77
|
+
Logger.warn('[setBindingKey] Rebound under a different key | target: %s | was: %s | now: %s', target.name, current.key.toString(), key.toString());
|
|
78
|
+
}
|
|
79
|
+
Reflect.defineMetadata(MetadataKeys.BINDING_KEY, { key, isProvisional }, target);
|
|
80
|
+
}
|
|
81
|
+
/** Own metadata only: a subclass is not registered, and the parent key would resolve the wrong binding. */
|
|
82
|
+
getBindingKey(opts) {
|
|
83
|
+
const { target } = opts;
|
|
84
|
+
const record = Reflect.getOwnMetadata(MetadataKeys.BINDING_KEY, target);
|
|
85
|
+
return record?.key;
|
|
86
|
+
}
|
|
71
87
|
}
|
|
72
88
|
export const metadataRegistry = new MetadataRegistry();
|
|
73
89
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis-inversion",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-7",
|
|
4
4
|
"description": "Lightweight, high-performance Dependency Injection and Inversion of Control container for TypeScript (~350 lines). Features decorator-based constructor and property injection, fluent Binding API, singleton/transient scoping, namespace auto-tagging, Provider pattern, tag-based discovery, and reflect-metadata integration. Inspired by LoopBack 4 and InversifyJS but simpler. Zero framework lock-in — works standalone or with Ignis.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"architecture",
|