@codefast/di 1.0.0-canary.6 → 1.0.0-canary.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/CHANGELOG.md +2 -0
- package/README.md +67 -499
- package/dist/binding-scope.d.ts +10 -0
- package/dist/binding-scope.d.ts.map +1 -0
- package/dist/binding-scope.js +24 -0
- package/dist/binding-scope.js.map +1 -0
- package/dist/binding-select.d.ts +16 -0
- package/dist/binding-select.d.ts.map +1 -0
- package/dist/binding-select.js +130 -0
- package/dist/binding-select.js.map +1 -0
- package/dist/binding.d.ts +194 -0
- package/dist/binding.d.ts.map +1 -0
- package/dist/binding.js +46 -0
- package/dist/binding.js.map +1 -0
- package/dist/constraints.d.ts +51 -0
- package/dist/constraints.d.ts.map +1 -0
- package/dist/constraints.js +88 -0
- package/dist/constraints.js.map +1 -0
- package/dist/{constructor-type.d.mts → constructor-type.d.ts} +3 -5
- package/dist/constructor-type.d.ts.map +1 -0
- package/dist/constructor-type.js +2 -0
- package/dist/constructor-type.js.map +1 -0
- package/dist/container.d.ts +58 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +853 -0
- package/dist/container.js.map +1 -0
- package/dist/decorators/inject.d.ts +46 -0
- package/dist/decorators/inject.d.ts.map +1 -0
- package/dist/decorators/inject.js +145 -0
- package/dist/decorators/inject.js.map +1 -0
- package/dist/decorators/injectable.d.ts +29 -0
- package/dist/decorators/injectable.d.ts.map +1 -0
- package/dist/decorators/injectable.js +53 -0
- package/dist/decorators/injectable.js.map +1 -0
- package/dist/decorators/lifecycle-decorators.d.ts +9 -0
- package/dist/decorators/lifecycle-decorators.d.ts.map +1 -0
- package/dist/decorators/lifecycle-decorators.js +40 -0
- package/dist/decorators/lifecycle-decorators.js.map +1 -0
- package/dist/dependency-graph.d.ts +40 -0
- package/dist/dependency-graph.d.ts.map +1 -0
- package/dist/dependency-graph.js +66 -0
- package/dist/dependency-graph.js.map +1 -0
- package/dist/environment.d.ts +51 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +100 -0
- package/dist/environment.js.map +1 -0
- package/dist/errors.d.ts +150 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +197 -0
- package/dist/errors.js.map +1 -0
- package/dist/graph-adapters/cytoscape.d.ts +33 -0
- package/dist/graph-adapters/cytoscape.d.ts.map +1 -0
- package/dist/graph-adapters/cytoscape.js +30 -0
- package/dist/graph-adapters/cytoscape.js.map +1 -0
- package/dist/graph-adapters/dot.d.ts +6 -0
- package/dist/graph-adapters/dot.d.ts.map +1 -0
- package/dist/graph-adapters/dot.js +18 -0
- package/dist/graph-adapters/dot.js.map +1 -0
- package/dist/graph-adapters/reactflow.d.ts +38 -0
- package/dist/graph-adapters/reactflow.d.ts.map +1 -0
- package/dist/graph-adapters/reactflow.js +23 -0
- package/dist/graph-adapters/reactflow.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector.d.ts +44 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +82 -0
- package/dist/inspector.js.map +1 -0
- package/dist/lifecycle.d.ts +21 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +174 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/metadata/{metadata-keys.d.mts → metadata-keys.d.ts} +5 -7
- package/dist/metadata/metadata-keys.d.ts.map +1 -0
- package/dist/metadata/metadata-keys.js +25 -0
- package/dist/metadata/metadata-keys.js.map +1 -0
- package/dist/metadata/metadata-reader-token.d.ts +7 -0
- package/dist/metadata/metadata-reader-token.d.ts.map +1 -0
- package/dist/metadata/metadata-reader-token.js +6 -0
- package/dist/metadata/metadata-reader-token.js.map +1 -0
- package/dist/metadata/metadata-types.d.ts +48 -0
- package/dist/metadata/metadata-types.d.ts.map +1 -0
- package/dist/metadata/metadata-types.js +2 -0
- package/dist/metadata/metadata-types.js.map +1 -0
- package/dist/metadata/symbol-metadata-reader.d.ts +20 -0
- package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -0
- package/dist/metadata/symbol-metadata-reader.js +34 -0
- package/dist/metadata/symbol-metadata-reader.js.map +1 -0
- package/dist/module.d.ts +60 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +47 -0
- package/dist/module.js.map +1 -0
- package/dist/registry.d.ts +41 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +208 -0
- package/dist/registry.js.map +1 -0
- package/dist/resolve-options.d.ts +19 -0
- package/dist/resolve-options.d.ts.map +1 -0
- package/dist/resolve-options.js +32 -0
- package/dist/resolve-options.js.map +1 -0
- package/dist/resolver.d.ts +90 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +1208 -0
- package/dist/resolver.js.map +1 -0
- package/dist/scope.d.ts +25 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +61 -0
- package/dist/scope.js.map +1 -0
- package/dist/token.d.ts +23 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +25 -0
- package/dist/token.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +89 -80
- package/dist/binding-scope.d.mts +0 -13
- package/dist/binding-scope.mjs +0 -21
- package/dist/binding-select.d.mts +0 -19
- package/dist/binding-select.mjs +0 -72
- package/dist/binding.d.mts +0 -191
- package/dist/binding.mjs +0 -36
- package/dist/constraints.d.mts +0 -55
- package/dist/constraints.mjs +0 -87
- package/dist/constructor-type.mjs +0 -1
- package/dist/container.d.mts +0 -62
- package/dist/container.mjs +0 -741
- package/dist/decorators/inject.d.mts +0 -49
- package/dist/decorators/inject.mjs +0 -136
- package/dist/decorators/injectable.d.mts +0 -32
- package/dist/decorators/injectable.mjs +0 -57
- package/dist/decorators/lifecycle-decorators.d.mts +0 -11
- package/dist/decorators/lifecycle-decorators.mjs +0 -38
- package/dist/dependency-graph.d.mts +0 -43
- package/dist/dependency-graph.mjs +0 -63
- package/dist/environment.d.mts +0 -55
- package/dist/environment.mjs +0 -98
- package/dist/errors.d.mts +0 -153
- package/dist/errors.mjs +0 -197
- package/dist/graph-adapters/cytoscape.d.mts +0 -36
- package/dist/graph-adapters/cytoscape.mjs +0 -26
- package/dist/graph-adapters/dot.d.mts +0 -9
- package/dist/graph-adapters/dot.mjs +0 -20
- package/dist/graph-adapters/reactflow.d.mts +0 -41
- package/dist/graph-adapters/reactflow.mjs +0 -29
- package/dist/index.d.mts +0 -18
- package/dist/index.mjs +0 -12
- package/dist/inspector.d.mts +0 -48
- package/dist/inspector.mjs +0 -71
- package/dist/lifecycle.d.mts +0 -25
- package/dist/lifecycle.mjs +0 -118
- package/dist/metadata/metadata-keys.mjs +0 -27
- package/dist/metadata/metadata-reader-token.d.mts +0 -10
- package/dist/metadata/metadata-reader-token.mjs +0 -8
- package/dist/metadata/metadata-types.d.mts +0 -51
- package/dist/metadata/metadata-types.mjs +0 -1
- package/dist/metadata/symbol-metadata-reader.d.mts +0 -23
- package/dist/metadata/symbol-metadata-reader.mjs +0 -29
- package/dist/module.d.mts +0 -62
- package/dist/module.mjs +0 -42
- package/dist/registry.d.mts +0 -45
- package/dist/registry.mjs +0 -163
- package/dist/resolve-options.d.mts +0 -22
- package/dist/resolve-options.mjs +0 -28
- package/dist/resolver.d.mts +0 -94
- package/dist/resolver.mjs +0 -767
- package/dist/scope.d.mts +0 -28
- package/dist/scope.mjs +0 -58
- package/dist/token.d.mts +0 -25
- package/dist/token.mjs +0 -22
- package/dist/types.d.mts +0 -92
- package/dist/types.mjs +0 -1
package/dist/lifecycle.d.mts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Constructor } from "./constructor-type.mjs";
|
|
2
|
-
import { Token } from "./token.mjs";
|
|
3
|
-
import { ActivationHandler, DeactivationHandler, ResolutionContext } from "./types.mjs";
|
|
4
|
-
import { Binding } from "./binding.mjs";
|
|
5
|
-
import { MetadataReader } from "./metadata/metadata-types.mjs";
|
|
6
|
-
|
|
7
|
-
//#region src/lifecycle.d.ts
|
|
8
|
-
/**
|
|
9
|
-
* @since 0.3.16-canary.0
|
|
10
|
-
*/
|
|
11
|
-
declare class LifecycleManager {
|
|
12
|
-
private readonly _activationHooks;
|
|
13
|
-
private readonly _deactivationHooks;
|
|
14
|
-
private _activationVersion;
|
|
15
|
-
registerActivation<const Value>(token: Token<Value> | Constructor<Value>, handler: ActivationHandler<Value>): void;
|
|
16
|
-
hasActivationHandlers<const Value>(token: Token<Value> | Constructor<Value>): boolean;
|
|
17
|
-
get activationVersion(): number;
|
|
18
|
-
registerDeactivation<const Value>(token: Token<Value> | Constructor<Value>, handler: DeactivationHandler<Value>): void;
|
|
19
|
-
runActivation<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Promise<Value>;
|
|
20
|
-
runActivationSync<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Value;
|
|
21
|
-
runDeactivation<const Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Promise<void>;
|
|
22
|
-
runDeactivationSync<const Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): void;
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
|
-
export { LifecycleManager };
|
package/dist/lifecycle.mjs
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { AsyncActivationError, AsyncDeactivationError } from "./errors.mjs";
|
|
2
|
-
import { tokenName } from "./token.mjs";
|
|
3
|
-
//#region src/lifecycle.ts
|
|
4
|
-
/**
|
|
5
|
-
* @since 0.3.16-canary.0
|
|
6
|
-
*/
|
|
7
|
-
var LifecycleManager = class {
|
|
8
|
-
_activationHooks = /* @__PURE__ */ new Map();
|
|
9
|
-
_deactivationHooks = /* @__PURE__ */ new Map();
|
|
10
|
-
_activationVersion = 0;
|
|
11
|
-
registerActivation(token, handler) {
|
|
12
|
-
this._activationVersion += 1;
|
|
13
|
-
this._activationHooks.getOrInsert(token, []).push(handler);
|
|
14
|
-
}
|
|
15
|
-
hasActivationHandlers(token) {
|
|
16
|
-
if (this._activationHooks.size === 0) return false;
|
|
17
|
-
const list = this._activationHooks.get(token);
|
|
18
|
-
return list !== void 0 && list.length > 0;
|
|
19
|
-
}
|
|
20
|
-
get activationVersion() {
|
|
21
|
-
return this._activationVersion;
|
|
22
|
-
}
|
|
23
|
-
registerDeactivation(token, handler) {
|
|
24
|
-
this._deactivationHooks.getOrInsert(token, []).push(handler);
|
|
25
|
-
}
|
|
26
|
-
async runActivation(resolutionContext, binding, instance, metadataReader) {
|
|
27
|
-
let activatedInstance = instance;
|
|
28
|
-
if (binding.kind === "class") {
|
|
29
|
-
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
30
|
-
if (lifecycle?.postConstruct && lifecycle.postConstruct.length > 0) for (const methodName of lifecycle.postConstruct) {
|
|
31
|
-
const method = activatedInstance[methodName];
|
|
32
|
-
if (typeof method === "function") {
|
|
33
|
-
const hookResult = method.call(activatedInstance);
|
|
34
|
-
if (hookResult instanceof Promise) await hookResult;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (binding.kind !== "alias" && binding.onActivation !== void 0) {
|
|
39
|
-
const activationResult = binding.onActivation(resolutionContext, activatedInstance);
|
|
40
|
-
activatedInstance = activationResult instanceof Promise ? await activationResult : activationResult;
|
|
41
|
-
}
|
|
42
|
-
const containerHooks = this._activationHooks.get(binding.token);
|
|
43
|
-
if (containerHooks !== void 0) for (const hook of containerHooks) {
|
|
44
|
-
const activationResult = hook(resolutionContext, activatedInstance);
|
|
45
|
-
activatedInstance = activationResult instanceof Promise ? await activationResult : activationResult;
|
|
46
|
-
}
|
|
47
|
-
return activatedInstance;
|
|
48
|
-
}
|
|
49
|
-
runActivationSync(resolutionContext, binding, instance, metadataReader) {
|
|
50
|
-
let activatedInstance = instance;
|
|
51
|
-
if (binding.kind === "class") {
|
|
52
|
-
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
53
|
-
if (lifecycle?.postConstruct && lifecycle.postConstruct.length > 0) for (const methodName of lifecycle.postConstruct) {
|
|
54
|
-
const method = activatedInstance[methodName];
|
|
55
|
-
if (typeof method === "function") {
|
|
56
|
-
if (method.call(activatedInstance) instanceof Promise) throw new AsyncActivationError(tokenName(binding.token), "postConstruct", methodName);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (binding.kind !== "alias" && binding.onActivation !== void 0) {
|
|
61
|
-
const activationResult = binding.onActivation(resolutionContext, activatedInstance);
|
|
62
|
-
if (activationResult instanceof Promise) throw new AsyncActivationError(tokenName(binding.token), "onActivation");
|
|
63
|
-
activatedInstance = activationResult;
|
|
64
|
-
}
|
|
65
|
-
const tokenDisplayName = tokenName(binding.token);
|
|
66
|
-
const containerHooks = this._activationHooks.get(binding.token);
|
|
67
|
-
if (containerHooks !== void 0) for (const hook of containerHooks) {
|
|
68
|
-
const activationResult = hook(resolutionContext, activatedInstance);
|
|
69
|
-
if (activationResult instanceof Promise) throw new AsyncActivationError(tokenDisplayName, "onActivation");
|
|
70
|
-
activatedInstance = activationResult;
|
|
71
|
-
}
|
|
72
|
-
return activatedInstance;
|
|
73
|
-
}
|
|
74
|
-
async runDeactivation(binding, instance, metadataReader) {
|
|
75
|
-
const tokenKey = binding.token;
|
|
76
|
-
const containerHooks = this._deactivationHooks.get(tokenKey);
|
|
77
|
-
if (containerHooks !== void 0) for (const hook of containerHooks) {
|
|
78
|
-
const hookResult = hook(instance);
|
|
79
|
-
if (hookResult instanceof Promise) await hookResult;
|
|
80
|
-
}
|
|
81
|
-
if (binding.kind !== "alias" && binding.onDeactivation !== void 0) {
|
|
82
|
-
const hookResult = binding.onDeactivation(instance);
|
|
83
|
-
if (hookResult instanceof Promise) await hookResult;
|
|
84
|
-
}
|
|
85
|
-
if (binding.kind === "class") {
|
|
86
|
-
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
87
|
-
if (lifecycle?.preDestroy && lifecycle.preDestroy.length > 0) for (const methodName of lifecycle.preDestroy) {
|
|
88
|
-
const method = instance[methodName];
|
|
89
|
-
if (typeof method === "function") {
|
|
90
|
-
const hookResult = method.call(instance);
|
|
91
|
-
if (hookResult instanceof Promise) await hookResult;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
runDeactivationSync(binding, instance, metadataReader) {
|
|
97
|
-
const tokenDisplayName = tokenName(binding.token);
|
|
98
|
-
const tokenKey = binding.token;
|
|
99
|
-
const containerHooks = this._deactivationHooks.get(tokenKey);
|
|
100
|
-
if (containerHooks !== void 0) {
|
|
101
|
-
for (const hook of containerHooks) if (hook(instance) instanceof Promise) throw new AsyncDeactivationError(tokenDisplayName);
|
|
102
|
-
}
|
|
103
|
-
if (binding.kind !== "alias" && binding.onDeactivation !== void 0) {
|
|
104
|
-
if (binding.onDeactivation(instance) instanceof Promise) throw new AsyncDeactivationError(tokenDisplayName);
|
|
105
|
-
}
|
|
106
|
-
if (binding.kind === "class") {
|
|
107
|
-
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
108
|
-
if (lifecycle?.preDestroy && lifecycle.preDestroy.length > 0) for (const methodName of lifecycle.preDestroy) {
|
|
109
|
-
const method = instance[methodName];
|
|
110
|
-
if (typeof method === "function") {
|
|
111
|
-
if (method.call(instance) instanceof Promise) throw new AsyncDeactivationError(tokenDisplayName);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
//#endregion
|
|
118
|
-
export { LifecycleManager };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
//#region src/metadata/metadata-keys.ts
|
|
2
|
-
/**
|
|
3
|
-
* @since 0.3.16-canary.0
|
|
4
|
-
*/
|
|
5
|
-
const INJECTABLE_KEY = Symbol("di:injectable");
|
|
6
|
-
/**
|
|
7
|
-
* @since 0.3.16-canary.0
|
|
8
|
-
*/
|
|
9
|
-
const LIFECYCLE_KEY = Symbol("di:lifecycle");
|
|
10
|
-
/**
|
|
11
|
-
* @since 0.3.16-canary.0
|
|
12
|
-
*/
|
|
13
|
-
const INJECT_ACCESSOR_KEY = Symbol("di:inject-accessor");
|
|
14
|
-
/**
|
|
15
|
-
* The well-known symbol used by TC39 Stage 3 decorator transforms to store class metadata.
|
|
16
|
-
*
|
|
17
|
-
* `Symbol.metadata` is defined natively once the runtime ships the full TC39 decorator
|
|
18
|
-
* proposal. Until then (current Node.js / browsers), Babel and esbuild both fall back to
|
|
19
|
-
* `Symbol.for("Symbol.metadata")` — a global-registry symbol with the same string key.
|
|
20
|
-
* Resolving it here once keeps the reader and the decorator transforms in sync regardless
|
|
21
|
-
* of which path is taken.
|
|
22
|
-
*
|
|
23
|
-
* @since 0.3.16-canary.0
|
|
24
|
-
*/
|
|
25
|
-
const METADATA_SYMBOL = Symbol.metadata ?? Symbol.for("Symbol.metadata");
|
|
26
|
-
//#endregion
|
|
27
|
-
export { INJECTABLE_KEY, INJECT_ACCESSOR_KEY, LIFECYCLE_KEY, METADATA_SYMBOL };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Token } from "../token.mjs";
|
|
2
|
-
import { MetadataReader } from "./metadata-types.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/metadata/metadata-reader-token.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* @since 0.3.16-canary.0
|
|
7
|
-
*/
|
|
8
|
-
declare const MetadataReaderToken: Token<MetadataReader>;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { MetadataReaderToken };
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Constructor } from "../constructor-type.mjs";
|
|
2
|
-
import { Token } from "../token.mjs";
|
|
3
|
-
import { InjectionDescriptor } from "../decorators/inject.mjs";
|
|
4
|
-
|
|
5
|
-
//#region src/metadata/metadata-types.d.ts
|
|
6
|
-
/**
|
|
7
|
-
* @since 0.3.16-canary.0
|
|
8
|
-
*/
|
|
9
|
-
interface ParamMetadata {
|
|
10
|
-
readonly index: number;
|
|
11
|
-
readonly token: Token<unknown> | Constructor;
|
|
12
|
-
readonly optional: boolean;
|
|
13
|
-
readonly multi: boolean;
|
|
14
|
-
readonly name?: string;
|
|
15
|
-
readonly tags?: ReadonlyArray<readonly [string, unknown]>;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* @since 0.3.16-canary.0
|
|
19
|
-
*/
|
|
20
|
-
interface ConstructorMetadata {
|
|
21
|
-
readonly params: ReadonlyArray<ParamMetadata>;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @since 0.3.16-canary.0
|
|
25
|
-
*/
|
|
26
|
-
interface LifecycleMetadata {
|
|
27
|
-
readonly postConstruct: ReadonlyArray<string>;
|
|
28
|
-
readonly preDestroy: ReadonlyArray<string>;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Mutable buckets used while aggregating decorator metadata (same keys as {@link LifecycleMetadata}).
|
|
32
|
-
*
|
|
33
|
-
* @since 0.3.16-canary.0
|
|
34
|
-
*/
|
|
35
|
-
interface MutableLifecycleMetadata {
|
|
36
|
-
postConstruct: Array<string>;
|
|
37
|
-
preDestroy: Array<string>;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* @since 0.3.16-canary.0
|
|
41
|
-
*/
|
|
42
|
-
interface MetadataReader {
|
|
43
|
-
getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
|
|
44
|
-
getLifecycleMetadata(target: Constructor): LifecycleMetadata | undefined;
|
|
45
|
-
getAccessorMetadata?(target: Constructor): ReadonlyArray<{
|
|
46
|
-
readonly key: string | symbol;
|
|
47
|
-
readonly descriptor: InjectionDescriptor;
|
|
48
|
-
}> | undefined;
|
|
49
|
-
}
|
|
50
|
-
//#endregion
|
|
51
|
-
export { ConstructorMetadata, LifecycleMetadata, MetadataReader, MutableLifecycleMetadata, ParamMetadata };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Constructor } from "../constructor-type.mjs";
|
|
2
|
-
import { InjectionDescriptor } from "../decorators/inject.mjs";
|
|
3
|
-
import { ConstructorMetadata, LifecycleMetadata, MetadataReader } from "./metadata-types.mjs";
|
|
4
|
-
|
|
5
|
-
//#region src/metadata/symbol-metadata-reader.d.ts
|
|
6
|
-
/**
|
|
7
|
-
* @since 0.3.16-canary.0
|
|
8
|
-
*/
|
|
9
|
-
declare class SymbolMetadataReader implements MetadataReader {
|
|
10
|
-
private _getMetadataRecord;
|
|
11
|
-
getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
|
|
12
|
-
getLifecycleMetadata(target: Constructor): LifecycleMetadata | undefined;
|
|
13
|
-
getAccessorMetadata(target: Constructor): Array<{
|
|
14
|
-
key: string | symbol;
|
|
15
|
-
descriptor: InjectionDescriptor;
|
|
16
|
-
}> | undefined;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @since 0.3.16-canary.0
|
|
20
|
-
*/
|
|
21
|
-
declare const defaultMetadataReader: SymbolMetadataReader;
|
|
22
|
-
//#endregion
|
|
23
|
-
export { SymbolMetadataReader, defaultMetadataReader };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { INJECTABLE_KEY, INJECT_ACCESSOR_KEY, LIFECYCLE_KEY, METADATA_SYMBOL } from "./metadata-keys.mjs";
|
|
2
|
-
//#region src/metadata/symbol-metadata-reader.ts
|
|
3
|
-
/**
|
|
4
|
-
* @since 0.3.16-canary.0
|
|
5
|
-
*/
|
|
6
|
-
var SymbolMetadataReader = class {
|
|
7
|
-
_getMetadataRecord(target, key) {
|
|
8
|
-
const descriptor = Object.getOwnPropertyDescriptor(target, METADATA_SYMBOL);
|
|
9
|
-
if (descriptor === void 0) return;
|
|
10
|
-
const record = descriptor.value;
|
|
11
|
-
if (!record || typeof record !== "object" || !Object.hasOwn(record, key)) return;
|
|
12
|
-
return record;
|
|
13
|
-
}
|
|
14
|
-
getConstructorMetadata(target) {
|
|
15
|
-
return this._getMetadataRecord(target, INJECTABLE_KEY)?.[INJECTABLE_KEY];
|
|
16
|
-
}
|
|
17
|
-
getLifecycleMetadata(target) {
|
|
18
|
-
return this._getMetadataRecord(target, LIFECYCLE_KEY)?.[LIFECYCLE_KEY];
|
|
19
|
-
}
|
|
20
|
-
getAccessorMetadata(target) {
|
|
21
|
-
return this._getMetadataRecord(target, INJECT_ACCESSOR_KEY)?.[INJECT_ACCESSOR_KEY];
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* @since 0.3.16-canary.0
|
|
26
|
-
*/
|
|
27
|
-
const defaultMetadataReader = new SymbolMetadataReader();
|
|
28
|
-
//#endregion
|
|
29
|
-
export { SymbolMetadataReader, defaultMetadataReader };
|
package/dist/module.d.mts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Constructor } from "./constructor-type.mjs";
|
|
2
|
-
import { Token } from "./token.mjs";
|
|
3
|
-
import { BindToBuilder } from "./binding.mjs";
|
|
4
|
-
|
|
5
|
-
//#region src/module.d.ts
|
|
6
|
-
declare const SYNC_MODULE_BRAND: unique symbol;
|
|
7
|
-
declare const ASYNC_MODULE_BRAND: unique symbol;
|
|
8
|
-
/**
|
|
9
|
-
* @since 0.3.16-canary.0
|
|
10
|
-
*/
|
|
11
|
-
interface SyncModule {
|
|
12
|
-
readonly name: string;
|
|
13
|
-
readonly [SYNC_MODULE_BRAND]: true;
|
|
14
|
-
readonly _setup: (builder: ModuleBuilder) => void;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* @since 0.3.16-canary.0
|
|
18
|
-
*/
|
|
19
|
-
interface AsyncModule {
|
|
20
|
-
readonly name: string;
|
|
21
|
-
readonly [ASYNC_MODULE_BRAND]: true;
|
|
22
|
-
readonly _setup: (builder: AsyncModuleBuilder) => Promise<void>;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @since 0.3.16-canary.0
|
|
26
|
-
*/
|
|
27
|
-
interface ModuleBuilder {
|
|
28
|
-
bind<const Value>(token: Token<Value> | Constructor<Value>): BindToBuilder<Value>;
|
|
29
|
-
import(...modules: Array<SyncModule>): void;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* @since 0.3.16-canary.0
|
|
33
|
-
*/
|
|
34
|
-
interface AsyncModuleBuilder {
|
|
35
|
-
bind<const Value>(token: Token<Value> | Constructor<Value>): BindToBuilder<Value>;
|
|
36
|
-
import(...modules: Array<SyncModule | AsyncModule>): void;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* @since 0.3.16-canary.0
|
|
40
|
-
*/
|
|
41
|
-
declare const SyncModule: {
|
|
42
|
-
create(name: string, setup: (builder: ModuleBuilder) => void): SyncModule;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* @since 0.3.16-canary.0
|
|
46
|
-
*/
|
|
47
|
-
declare const AsyncModule: {
|
|
48
|
-
create(name: string, setup: (builder: AsyncModuleBuilder) => Promise<void>): AsyncModule;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* @since 0.3.16-canary.0
|
|
52
|
-
*/
|
|
53
|
-
declare const Module: {
|
|
54
|
-
create(name: string, setup: (builder: ModuleBuilder) => void): SyncModule;
|
|
55
|
-
createAsync(name: string, setup: (builder: AsyncModuleBuilder) => Promise<void>): AsyncModule;
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* @since 0.3.16-canary.0
|
|
59
|
-
*/
|
|
60
|
-
declare function isSyncModule(module: SyncModule | AsyncModule): module is SyncModule;
|
|
61
|
-
//#endregion
|
|
62
|
-
export { AsyncModule, AsyncModuleBuilder, Module, ModuleBuilder, SyncModule, isSyncModule };
|
package/dist/module.mjs
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
//#region src/module.ts
|
|
2
|
-
const SYNC_MODULE_BRAND = Symbol("di:sync-module");
|
|
3
|
-
const ASYNC_MODULE_BRAND = Symbol("di:async-module");
|
|
4
|
-
/**
|
|
5
|
-
* @since 0.3.16-canary.0
|
|
6
|
-
*/
|
|
7
|
-
const SyncModule = { create(name, setup) {
|
|
8
|
-
return {
|
|
9
|
-
name,
|
|
10
|
-
[SYNC_MODULE_BRAND]: true,
|
|
11
|
-
_setup: setup
|
|
12
|
-
};
|
|
13
|
-
} };
|
|
14
|
-
/**
|
|
15
|
-
* @since 0.3.16-canary.0
|
|
16
|
-
*/
|
|
17
|
-
const AsyncModule = { create(name, setup) {
|
|
18
|
-
return {
|
|
19
|
-
name,
|
|
20
|
-
[ASYNC_MODULE_BRAND]: true,
|
|
21
|
-
_setup: setup
|
|
22
|
-
};
|
|
23
|
-
} };
|
|
24
|
-
/**
|
|
25
|
-
* @since 0.3.16-canary.0
|
|
26
|
-
*/
|
|
27
|
-
const Module = {
|
|
28
|
-
create(name, setup) {
|
|
29
|
-
return SyncModule.create(name, setup);
|
|
30
|
-
},
|
|
31
|
-
createAsync(name, setup) {
|
|
32
|
-
return AsyncModule.create(name, setup);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* @since 0.3.16-canary.0
|
|
37
|
-
*/
|
|
38
|
-
function isSyncModule(module) {
|
|
39
|
-
return module[SYNC_MODULE_BRAND];
|
|
40
|
-
}
|
|
41
|
-
//#endregion
|
|
42
|
-
export { AsyncModule, Module, SyncModule, isSyncModule };
|
package/dist/registry.d.mts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Constructor } from "./constructor-type.mjs";
|
|
2
|
-
import { Token } from "./token.mjs";
|
|
3
|
-
import { BindingIdentifier } from "./types.mjs";
|
|
4
|
-
import { Binding } from "./binding.mjs";
|
|
5
|
-
|
|
6
|
-
//#region src/registry.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* @since 0.3.16-canary.0
|
|
9
|
-
*/
|
|
10
|
-
declare class BindingRegistry {
|
|
11
|
-
private readonly _bindings;
|
|
12
|
-
private readonly _byId;
|
|
13
|
-
private readonly _simpleNamed;
|
|
14
|
-
private readonly _fastDefault;
|
|
15
|
-
private readonly _simpleTagged;
|
|
16
|
-
/** Add or replace binding using slot-aware last-wins. */
|
|
17
|
-
add(binding: Binding): void;
|
|
18
|
-
/** Remove all bindings for a token. Returns removed bindings. */
|
|
19
|
-
removeByToken(token: Token<unknown> | Constructor): Array<Binding>;
|
|
20
|
-
/** Remove a specific binding by ID. Returns the removed binding or undefined. */
|
|
21
|
-
removeById(id: BindingIdentifier): Binding | undefined;
|
|
22
|
-
/** Get all bindings for a token. */
|
|
23
|
-
getAll(token: Token<unknown> | Constructor): ReadonlyArray<Binding>;
|
|
24
|
-
/** Get binding by ID. */
|
|
25
|
-
getById(id: BindingIdentifier): Binding | undefined;
|
|
26
|
-
/** Check if any binding exists for token. */
|
|
27
|
-
has(token: Token<unknown> | Constructor): boolean;
|
|
28
|
-
/** All bindings in the registry. */
|
|
29
|
-
allBindings(): ReadonlyArray<Binding>;
|
|
30
|
-
/** Remove all bindings. Returns all removed. */
|
|
31
|
-
clear(): ReadonlyArray<Binding>;
|
|
32
|
-
getSimpleNamed(token: Token<unknown> | Constructor, name: string): Binding | undefined;
|
|
33
|
-
getSimpleTagged(token: Token<unknown> | Constructor, tagKey: string, tagValue: unknown): Binding | undefined;
|
|
34
|
-
getFastDefault(token: Token<unknown> | Constructor): Binding | undefined;
|
|
35
|
-
/** Summarize available slot strings for a token (for error messages). */
|
|
36
|
-
availableSlotStrings(token: Token<unknown> | Constructor): Array<string>;
|
|
37
|
-
private _indexSimpleTaggedBinding;
|
|
38
|
-
private _deindexSimpleTaggedBinding;
|
|
39
|
-
private _isPurePredicateBinding;
|
|
40
|
-
private _indexSimpleNamedBinding;
|
|
41
|
-
private _deindexSimpleNamedBinding;
|
|
42
|
-
private _refreshFastDefaultForToken;
|
|
43
|
-
}
|
|
44
|
-
//#endregion
|
|
45
|
-
export { BindingRegistry };
|
package/dist/registry.mjs
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { bindingSlotEquals, bindingSlotToString } from "./binding.mjs";
|
|
2
|
-
//#region src/registry.ts
|
|
3
|
-
/**
|
|
4
|
-
* @since 0.3.16-canary.0
|
|
5
|
-
*/
|
|
6
|
-
var BindingRegistry = class {
|
|
7
|
-
_bindings = /* @__PURE__ */ new Map();
|
|
8
|
-
_byId = /* @__PURE__ */ new Map();
|
|
9
|
-
_simpleNamed = /* @__PURE__ */ new Map();
|
|
10
|
-
_fastDefault = /* @__PURE__ */ new Map();
|
|
11
|
-
_simpleTagged = /* @__PURE__ */ new Map();
|
|
12
|
-
/** Add or replace binding using slot-aware last-wins. */
|
|
13
|
-
add(binding) {
|
|
14
|
-
const key = binding.token;
|
|
15
|
-
const bindingsForToken = this._bindings.getOrInsert(key, []);
|
|
16
|
-
if (!this._isPurePredicateBinding(binding)) {
|
|
17
|
-
const existingIndex = bindingsForToken.findIndex((candidate) => !this._isPurePredicateBinding(candidate) && bindingSlotEquals(candidate.slot, binding.slot));
|
|
18
|
-
if (existingIndex !== -1) {
|
|
19
|
-
const replacedBinding = bindingsForToken[existingIndex];
|
|
20
|
-
this._byId.delete(replacedBinding.id);
|
|
21
|
-
bindingsForToken.splice(existingIndex, 1);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
bindingsForToken.push(binding);
|
|
25
|
-
this._byId.set(binding.id, binding);
|
|
26
|
-
this._indexSimpleNamedBinding(key, binding);
|
|
27
|
-
this._indexSimpleTaggedBinding(key, binding);
|
|
28
|
-
this._refreshFastDefaultForToken(key);
|
|
29
|
-
}
|
|
30
|
-
/** Remove all bindings for a token. Returns removed bindings. */
|
|
31
|
-
removeByToken(token) {
|
|
32
|
-
const key = token;
|
|
33
|
-
const bindingsForToken = this._bindings.get(key) ?? [];
|
|
34
|
-
this._bindings.delete(key);
|
|
35
|
-
this._simpleNamed.delete(key);
|
|
36
|
-
this._simpleTagged.delete(key);
|
|
37
|
-
this._fastDefault.delete(key);
|
|
38
|
-
for (const binding of bindingsForToken) this._byId.delete(binding.id);
|
|
39
|
-
return bindingsForToken;
|
|
40
|
-
}
|
|
41
|
-
/** Remove a specific binding by ID. Returns the removed binding or undefined. */
|
|
42
|
-
removeById(id) {
|
|
43
|
-
const binding = this._byId.get(id);
|
|
44
|
-
if (binding === void 0) return;
|
|
45
|
-
this._byId.delete(id);
|
|
46
|
-
const key = binding.token;
|
|
47
|
-
const bindingsForToken = this._bindings.get(key);
|
|
48
|
-
if (bindingsForToken !== void 0) {
|
|
49
|
-
const bindingIndex = bindingsForToken.findIndex((candidate) => candidate.id === id);
|
|
50
|
-
if (bindingIndex !== -1) bindingsForToken.splice(bindingIndex, 1);
|
|
51
|
-
this._deindexSimpleNamedBinding(key, binding);
|
|
52
|
-
this._deindexSimpleTaggedBinding(key, binding);
|
|
53
|
-
if (bindingsForToken.length === 0) {
|
|
54
|
-
this._bindings.delete(key);
|
|
55
|
-
this._simpleNamed.delete(key);
|
|
56
|
-
this._simpleTagged.delete(key);
|
|
57
|
-
this._fastDefault.delete(key);
|
|
58
|
-
} else this._refreshFastDefaultForToken(key);
|
|
59
|
-
}
|
|
60
|
-
return binding;
|
|
61
|
-
}
|
|
62
|
-
/** Get all bindings for a token. */
|
|
63
|
-
getAll(token) {
|
|
64
|
-
return this._bindings.get(token) ?? [];
|
|
65
|
-
}
|
|
66
|
-
/** Get binding by ID. */
|
|
67
|
-
getById(id) {
|
|
68
|
-
return this._byId.get(id);
|
|
69
|
-
}
|
|
70
|
-
/** Check if any binding exists for token. */
|
|
71
|
-
has(token) {
|
|
72
|
-
const key = token;
|
|
73
|
-
const list = this._bindings.get(key);
|
|
74
|
-
return list !== void 0 && list.length > 0;
|
|
75
|
-
}
|
|
76
|
-
/** All bindings in the registry. */
|
|
77
|
-
allBindings() {
|
|
78
|
-
const allBindings = [];
|
|
79
|
-
for (const bindingsForToken of this._bindings.values()) allBindings.push(...bindingsForToken);
|
|
80
|
-
return allBindings;
|
|
81
|
-
}
|
|
82
|
-
/** Remove all bindings. Returns all removed. */
|
|
83
|
-
clear() {
|
|
84
|
-
const all = this.allBindings();
|
|
85
|
-
this._bindings.clear();
|
|
86
|
-
this._byId.clear();
|
|
87
|
-
this._simpleNamed.clear();
|
|
88
|
-
this._simpleTagged.clear();
|
|
89
|
-
this._fastDefault.clear();
|
|
90
|
-
return all;
|
|
91
|
-
}
|
|
92
|
-
getSimpleNamed(token, name) {
|
|
93
|
-
return this._simpleNamed.get(token)?.get(name);
|
|
94
|
-
}
|
|
95
|
-
getSimpleTagged(token, tagKey, tagValue) {
|
|
96
|
-
return this._simpleTagged.get(token)?.get(tagKey)?.get(tagValue);
|
|
97
|
-
}
|
|
98
|
-
getFastDefault(token) {
|
|
99
|
-
return this._fastDefault.get(token);
|
|
100
|
-
}
|
|
101
|
-
/** Summarize available slot strings for a token (for error messages). */
|
|
102
|
-
availableSlotStrings(token) {
|
|
103
|
-
return (this._bindings.get(token) ?? []).map((binding) => bindingSlotToString(binding.slot));
|
|
104
|
-
}
|
|
105
|
-
_indexSimpleTaggedBinding(tokenKey, binding) {
|
|
106
|
-
const slot = binding.slot;
|
|
107
|
-
if (slot.name !== void 0 || slot.tags.length !== 1 || binding.predicate !== void 0) return;
|
|
108
|
-
const [tagKey, tagValue] = slot.tags[0];
|
|
109
|
-
this._simpleTagged.getOrInsert(tokenKey, /* @__PURE__ */ new Map()).getOrInsert(tagKey, /* @__PURE__ */ new Map()).set(tagValue, binding);
|
|
110
|
-
}
|
|
111
|
-
_deindexSimpleTaggedBinding(tokenKey, binding) {
|
|
112
|
-
const slot = binding.slot;
|
|
113
|
-
if (slot.name !== void 0 || slot.tags.length !== 1 || binding.predicate !== void 0) return;
|
|
114
|
-
const [tagKey, tagValue] = slot.tags[0];
|
|
115
|
-
const byTagKey = this._simpleTagged.get(tokenKey);
|
|
116
|
-
if (byTagKey === void 0) return;
|
|
117
|
-
const byTagValue = byTagKey.get(tagKey);
|
|
118
|
-
if (byTagValue === void 0) return;
|
|
119
|
-
if (byTagValue.get(tagValue)?.id === binding.id) {
|
|
120
|
-
byTagValue.delete(tagValue);
|
|
121
|
-
if (byTagValue.size === 0) {
|
|
122
|
-
byTagKey.delete(tagKey);
|
|
123
|
-
if (byTagKey.size === 0) this._simpleTagged.delete(tokenKey);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
_isPurePredicateBinding(binding) {
|
|
128
|
-
const slot = binding.slot;
|
|
129
|
-
const hasPredicate = binding.predicate !== void 0;
|
|
130
|
-
const hasConstraint = slot.name !== void 0 || slot.tags.length > 0;
|
|
131
|
-
return hasPredicate && !hasConstraint;
|
|
132
|
-
}
|
|
133
|
-
_indexSimpleNamedBinding(tokenKey, binding) {
|
|
134
|
-
const slot = binding.slot;
|
|
135
|
-
if (slot.name === void 0 || slot.tags.length > 0) return;
|
|
136
|
-
this._simpleNamed.getOrInsert(tokenKey, /* @__PURE__ */ new Map()).set(slot.name, binding);
|
|
137
|
-
}
|
|
138
|
-
_deindexSimpleNamedBinding(tokenKey, binding) {
|
|
139
|
-
const slot = binding.slot;
|
|
140
|
-
if (slot.name === void 0 || slot.tags.length > 0) return;
|
|
141
|
-
const bindingsByName = this._simpleNamed.get(tokenKey);
|
|
142
|
-
if (bindingsByName === void 0) return;
|
|
143
|
-
if (bindingsByName.get(slot.name)?.id === binding.id) {
|
|
144
|
-
bindingsByName.delete(slot.name);
|
|
145
|
-
if (bindingsByName.size === 0) this._simpleNamed.delete(tokenKey);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
_refreshFastDefaultForToken(tokenKey) {
|
|
149
|
-
const bindingsForToken = this._bindings.get(tokenKey);
|
|
150
|
-
if (bindingsForToken === void 0 || bindingsForToken.length !== 1) {
|
|
151
|
-
this._fastDefault.delete(tokenKey);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
const onlyBinding = bindingsForToken[0];
|
|
155
|
-
if (!(onlyBinding.slot.name === void 0 && onlyBinding.slot.tags.length === 0) || onlyBinding.predicate !== void 0) {
|
|
156
|
-
this._fastDefault.delete(tokenKey);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
this._fastDefault.set(tokenKey, onlyBinding);
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
//#endregion
|
|
163
|
-
export { BindingRegistry };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BindingTag, ResolveOptions } from "./types.mjs";
|
|
2
|
-
import { BindingSlot } from "./binding.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/resolve-options.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Builds a {@link ResolveOptions} safe for `exactOptionalPropertyTypes`:
|
|
7
|
-
* omits keys instead of assigning `undefined`.
|
|
8
|
-
*
|
|
9
|
-
* @since 0.3.16-canary.0
|
|
10
|
-
*/
|
|
11
|
-
declare function injectionSlotToResolveOptions(injectionSlot: {
|
|
12
|
-
readonly name?: string;
|
|
13
|
-
readonly tags?: ReadonlyArray<BindingTag>;
|
|
14
|
-
}): ResolveOptions | undefined;
|
|
15
|
-
/**
|
|
16
|
-
* Resolve options derived from a binding {@link BindingSlot} (tags may be empty; omits when nothing to match).
|
|
17
|
-
*
|
|
18
|
-
* @since 0.3.16-canary.0
|
|
19
|
-
*/
|
|
20
|
-
declare function bindingSlotToResolveOptions(bindingSlot: BindingSlot): ResolveOptions | undefined;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { bindingSlotToResolveOptions, injectionSlotToResolveOptions };
|
package/dist/resolve-options.mjs
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region src/resolve-options.ts
|
|
2
|
-
/** Shared core: build a ResolveOptions from already-normalised name + tags. */
|
|
3
|
-
function buildOptions(name, tags) {
|
|
4
|
-
if (name === void 0 && tags === void 0) return;
|
|
5
|
-
const options = {};
|
|
6
|
-
if (name !== void 0) options.name = name;
|
|
7
|
-
if (tags !== void 0) options.tags = tags;
|
|
8
|
-
return options;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Builds a {@link ResolveOptions} safe for `exactOptionalPropertyTypes`:
|
|
12
|
-
* omits keys instead of assigning `undefined`.
|
|
13
|
-
*
|
|
14
|
-
* @since 0.3.16-canary.0
|
|
15
|
-
*/
|
|
16
|
-
function injectionSlotToResolveOptions(injectionSlot) {
|
|
17
|
-
return buildOptions(injectionSlot.name, injectionSlot.tags);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Resolve options derived from a binding {@link BindingSlot} (tags may be empty; omits when nothing to match).
|
|
21
|
-
*
|
|
22
|
-
* @since 0.3.16-canary.0
|
|
23
|
-
*/
|
|
24
|
-
function bindingSlotToResolveOptions(bindingSlot) {
|
|
25
|
-
return buildOptions(bindingSlot.name, bindingSlot.tags.length > 0 ? bindingSlot.tags : void 0);
|
|
26
|
-
}
|
|
27
|
-
//#endregion
|
|
28
|
-
export { bindingSlotToResolveOptions, injectionSlotToResolveOptions };
|