@codefast/di 0.5.0-canary.4 → 0.5.0-canary.6
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 +12 -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 +87 -79
- 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/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type { ActivationHandler, BindingIdentifier, BindingKind, BindingScope, BindingTag, ConstraintContext, Constructor, DependencyKey, DeactivationHandler, ResolutionFrame, ResolveOptions, ResolutionContext, TokenValue, } from "#/types";
|
|
2
|
+
export { token, tokenName, isToken } from "#/token";
|
|
3
|
+
export type { Token } from "#/token";
|
|
4
|
+
export type { AliasBindingBuilder, BindToBuilder, BindingBuilder, ConstantBindingBuilder, ScopedBindingBuilder, SingletonBindingBuilder, SingletonLifecycleBuilder, SlotConstrainedBuilder, TransientBindingBuilder, } from "#/binding";
|
|
5
|
+
export { Container } from "#/container";
|
|
6
|
+
export type { Container as ContainerInterface, ContainerStatic } from "#/container";
|
|
7
|
+
export { effectiveBindingScope } from "#/binding-scope";
|
|
8
|
+
export { injectionSlotToResolveOptions, bindingSlotToResolveOptions } from "#/resolve-options";
|
|
9
|
+
export type { BindingSnapshot, ContainerSnapshot } from "#/inspector";
|
|
10
|
+
export type { ContainerGraphJson, GraphEdge, GraphNode, GraphOptions } from "#/dependency-graph";
|
|
11
|
+
export { AsyncModule, isSyncModule, Module, SyncModule } from "#/module";
|
|
12
|
+
export type { AsyncModuleBuilder, ModuleBuilder } from "#/module";
|
|
13
|
+
export { inject, injectAll, isInjectionDescriptor, optional } from "#/decorators/inject";
|
|
14
|
+
export type { InjectionDescriptor, InjectOptions } from "#/decorators/inject";
|
|
15
|
+
export { injectable } from "#/decorators/injectable";
|
|
16
|
+
export type { InjectableDependency, InjectableOptions } from "#/decorators/injectable";
|
|
17
|
+
export { postConstruct, preDestroy } from "#/decorators/lifecycle-decorators";
|
|
18
|
+
export { createAutoRegisterRegistry } from "#/decorators/injectable";
|
|
19
|
+
export type { AutoRegisterRegistry } from "#/decorators/injectable";
|
|
20
|
+
export { MetadataReaderToken } from "#/metadata/metadata-reader-token";
|
|
21
|
+
export type { MetadataReader, MutableLifecycleMetadata } from "#/metadata/metadata-types";
|
|
22
|
+
export { whenAnyAncestorIs, whenAnyAncestorNamed, whenAnyAncestorTagged, whenAnyAncestorTaggedAll, whenNoAncestorIs, whenNoParentIs, whenParentIs, whenParentNamed, whenParentTagged, whenParentTaggedAll, } from "#/constraints";
|
|
23
|
+
export { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError, } from "#/errors";
|
|
24
|
+
export type { ScopeViolationDetails } from "#/errors";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,SAAS,IAAI,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAG/F,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGtE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGjG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzF,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1F,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,OAAO,EACP,sBAAsB,EACtB,aAAa,EACb,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Token
|
|
2
|
+
export { token, tokenName, isToken } from "#/token";
|
|
3
|
+
// Container
|
|
4
|
+
export { Container } from "#/container";
|
|
5
|
+
export { effectiveBindingScope } from "#/binding-scope";
|
|
6
|
+
export { injectionSlotToResolveOptions, bindingSlotToResolveOptions } from "#/resolve-options";
|
|
7
|
+
// Module
|
|
8
|
+
export { AsyncModule, isSyncModule, Module, SyncModule } from "#/module";
|
|
9
|
+
// Decorators
|
|
10
|
+
export { inject, injectAll, isInjectionDescriptor, optional } from "#/decorators/inject";
|
|
11
|
+
export { injectable } from "#/decorators/injectable";
|
|
12
|
+
export { postConstruct, preDestroy } from "#/decorators/lifecycle-decorators";
|
|
13
|
+
// Auto-register
|
|
14
|
+
export { createAutoRegisterRegistry } from "#/decorators/injectable";
|
|
15
|
+
// MetadataReader
|
|
16
|
+
export { MetadataReaderToken } from "#/metadata/metadata-reader-token";
|
|
17
|
+
// Constraints — contextual injection predicates for .when()
|
|
18
|
+
export { whenAnyAncestorIs, whenAnyAncestorNamed, whenAnyAncestorTagged, whenAnyAncestorTaggedAll, whenNoAncestorIs, whenNoParentIs, whenParentIs, whenParentNamed, whenParentTagged, whenParentTaggedAll, } from "#/constraints";
|
|
19
|
+
// Errors
|
|
20
|
+
export { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError, } from "#/errors";
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAgBpD,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAQ/F,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGzE,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE9E,gBAAgB;AAChB,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAGrE,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,4DAA4D;AAC5D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,SAAS;AACT,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,OAAO,EACP,sBAAsB,EACtB,aAAa,EACb,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { BindingRegistry } from "#/registry";
|
|
2
|
+
import type { ScopeManager } from "#/scope";
|
|
3
|
+
import type { Token } from "#/token";
|
|
4
|
+
import type { BindingIdentifier, BindingKind, BindingScope, BindingTag, Constructor, ResolveOptions } from "#/types";
|
|
5
|
+
/**
|
|
6
|
+
* @since 0.3.16-canary.0
|
|
7
|
+
*/
|
|
8
|
+
export interface BindingSnapshot {
|
|
9
|
+
readonly tokenName: string;
|
|
10
|
+
readonly kind: BindingKind;
|
|
11
|
+
readonly scope: BindingScope;
|
|
12
|
+
readonly slot: {
|
|
13
|
+
readonly name?: string;
|
|
14
|
+
readonly tags: ReadonlyArray<BindingTag>;
|
|
15
|
+
};
|
|
16
|
+
readonly id: BindingIdentifier;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @since 0.3.16-canary.0
|
|
20
|
+
*/
|
|
21
|
+
export interface ContainerSnapshot {
|
|
22
|
+
readonly ownBindings: ReadonlyArray<BindingSnapshot>;
|
|
23
|
+
readonly cachedSingletonCount: number;
|
|
24
|
+
readonly hasParent: boolean;
|
|
25
|
+
readonly isDisposed: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @since 0.3.16-canary.0
|
|
29
|
+
*/
|
|
30
|
+
export declare class Inspector {
|
|
31
|
+
private readonly _registry;
|
|
32
|
+
private readonly _scope;
|
|
33
|
+
private readonly _hasParent;
|
|
34
|
+
private readonly _isDisposed;
|
|
35
|
+
constructor(_registry: BindingRegistry, _scope: ScopeManager, _hasParent: boolean, _isDisposed: () => boolean);
|
|
36
|
+
inspect(): ContainerSnapshot;
|
|
37
|
+
lookupBindings<Value>(token: Token<Value> | Constructor<Value>): ReadonlyArray<BindingSnapshot>;
|
|
38
|
+
has(token: Token<unknown> | Constructor, options?: ResolveOptions, parentHas?: () => boolean): boolean;
|
|
39
|
+
hasOwn(token: Token<unknown> | Constructor, options?: ResolveOptions): boolean;
|
|
40
|
+
private _makeConstraintContext;
|
|
41
|
+
private allBindingSnapshots;
|
|
42
|
+
private _toSnapshot;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EAEV,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;KAC1C,CAAC;IACF,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACrD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAID;;GAEG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJ9B,YACmB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,MAAM,OAAO,EACzC;IAEJ,OAAO,IAAI,iBAAiB,CAQ3B;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAG9F;IAED,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAYrG;IAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAS7E;IAED,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,WAAW;CAcpB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { effectiveBindingScope } from "#/binding-scope";
|
|
2
|
+
import { selectBinding } from "#/binding-select";
|
|
3
|
+
import { tokenName } from "#/token";
|
|
4
|
+
// ── Inspector ─────────────────────────────────────────────────────────────────
|
|
5
|
+
/**
|
|
6
|
+
* @since 0.3.16-canary.0
|
|
7
|
+
*/
|
|
8
|
+
export class Inspector {
|
|
9
|
+
_registry;
|
|
10
|
+
_scope;
|
|
11
|
+
_hasParent;
|
|
12
|
+
_isDisposed;
|
|
13
|
+
constructor(_registry, _scope, _hasParent, _isDisposed) {
|
|
14
|
+
this._registry = _registry;
|
|
15
|
+
this._scope = _scope;
|
|
16
|
+
this._hasParent = _hasParent;
|
|
17
|
+
this._isDisposed = _isDisposed;
|
|
18
|
+
}
|
|
19
|
+
inspect() {
|
|
20
|
+
const snapshots = this.allBindingSnapshots();
|
|
21
|
+
return {
|
|
22
|
+
ownBindings: snapshots,
|
|
23
|
+
cachedSingletonCount: this._scope.getAllSingletons().size,
|
|
24
|
+
hasParent: this._hasParent,
|
|
25
|
+
isDisposed: this._isDisposed(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
lookupBindings(token) {
|
|
29
|
+
const bindings = this._registry.getAll(token);
|
|
30
|
+
return bindings.map((binding) => this._toSnapshot(binding));
|
|
31
|
+
}
|
|
32
|
+
has(token, options, parentHas) {
|
|
33
|
+
const bindings = this._registry.getAll(token);
|
|
34
|
+
if (bindings.length > 0) {
|
|
35
|
+
if (options !== undefined) {
|
|
36
|
+
if (selectBinding(bindings, options, this._makeConstraintContext(options), tokenName(token)) !== undefined) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return parentHas?.() ?? false;
|
|
45
|
+
}
|
|
46
|
+
hasOwn(token, options) {
|
|
47
|
+
const bindings = this._registry.getAll(token);
|
|
48
|
+
if (bindings.length === 0) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (options !== undefined) {
|
|
52
|
+
return selectBinding(bindings, options, this._makeConstraintContext(options), tokenName(token)) !== undefined;
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
_makeConstraintContext(options) {
|
|
57
|
+
return {
|
|
58
|
+
resolutionPath: [],
|
|
59
|
+
resolutionStack: [],
|
|
60
|
+
parent: undefined,
|
|
61
|
+
ancestors: [],
|
|
62
|
+
currentResolveOptions: options,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
allBindingSnapshots() {
|
|
66
|
+
return this._registry.allBindings().map((binding) => this._toSnapshot(binding));
|
|
67
|
+
}
|
|
68
|
+
_toSnapshot(binding) {
|
|
69
|
+
const scope = effectiveBindingScope(binding);
|
|
70
|
+
const slot = binding.slot.name !== undefined
|
|
71
|
+
? { name: binding.slot.name, tags: binding.slot.tags }
|
|
72
|
+
: { tags: binding.slot.tags };
|
|
73
|
+
return {
|
|
74
|
+
tokenName: tokenName(binding.token),
|
|
75
|
+
kind: binding.kind,
|
|
76
|
+
scope,
|
|
77
|
+
slot,
|
|
78
|
+
id: binding.id,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Binding } from "#/binding";
|
|
2
|
+
import type { MetadataReader } from "#/metadata/metadata-types";
|
|
3
|
+
import type { Token } from "#/token";
|
|
4
|
+
import type { ActivationHandler, Constructor, DeactivationHandler, ResolutionContext } from "#/types";
|
|
5
|
+
/**
|
|
6
|
+
* @since 0.3.16-canary.0
|
|
7
|
+
*/
|
|
8
|
+
export declare class LifecycleManager {
|
|
9
|
+
private readonly _activationHooks;
|
|
10
|
+
private readonly _deactivationHooks;
|
|
11
|
+
private _activationVersion;
|
|
12
|
+
registerActivation<const Value>(token: Token<Value> | Constructor<Value>, handler: ActivationHandler<Value>): void;
|
|
13
|
+
hasActivationHandlers<const Value>(token: Token<Value> | Constructor<Value>): boolean;
|
|
14
|
+
get activationVersion(): number;
|
|
15
|
+
registerDeactivation<const Value>(token: Token<Value> | Constructor<Value>, handler: DeactivationHandler<Value>): void;
|
|
16
|
+
runActivation<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Promise<Value>;
|
|
17
|
+
runActivationSync<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Value;
|
|
18
|
+
runDeactivation<const Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Promise<void>;
|
|
19
|
+
runDeactivationSync<const Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEtG;;GAEG;AACH,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8E;IAC/G,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgF;IACnH,OAAO,CAAC,kBAAkB,CAAK;IAE/B,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAKjH;IAED,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAMpF;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EACxC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAClC,IAAI,CAGN;IAEK,aAAa,CAAC,KAAK,CAAC,KAAK,EAC7B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,KAAK,EACf,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,KAAK,CAAC,CAmChB;IAED,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,KAAK,EACf,cAAc,EAAE,cAAc,GAC7B,KAAK,CA0CP;IAEK,eAAe,CAAC,KAAK,CAAC,KAAK,EAC/B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,KAAK,EACf,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqCf;IAED,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAsC/G;CACF"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { AsyncActivationError, AsyncDeactivationError } from "#/errors";
|
|
2
|
+
import { tokenName } from "#/token";
|
|
3
|
+
/**
|
|
4
|
+
* @since 0.3.16-canary.0
|
|
5
|
+
*/
|
|
6
|
+
export class LifecycleManager {
|
|
7
|
+
// Container-level activation/deactivation hooks per token
|
|
8
|
+
_activationHooks = new Map();
|
|
9
|
+
_deactivationHooks = new Map();
|
|
10
|
+
_activationVersion = 0;
|
|
11
|
+
registerActivation(token, handler) {
|
|
12
|
+
this._activationVersion += 1;
|
|
13
|
+
// ✓ TS6.0: Map.getOrInsert (ES2025)
|
|
14
|
+
const list = this._activationHooks.getOrInsert(token, []);
|
|
15
|
+
list.push(handler);
|
|
16
|
+
}
|
|
17
|
+
hasActivationHandlers(token) {
|
|
18
|
+
if (this._activationHooks.size === 0) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const list = this._activationHooks.get(token);
|
|
22
|
+
return list !== undefined && list.length > 0;
|
|
23
|
+
}
|
|
24
|
+
get activationVersion() {
|
|
25
|
+
return this._activationVersion;
|
|
26
|
+
}
|
|
27
|
+
registerDeactivation(token, handler) {
|
|
28
|
+
const list = this._deactivationHooks.getOrInsert(token, []);
|
|
29
|
+
list.push(handler);
|
|
30
|
+
}
|
|
31
|
+
async runActivation(resolutionContext, binding, instance, metadataReader) {
|
|
32
|
+
let activatedInstance = instance;
|
|
33
|
+
// 1. @postConstruct() — after TC39 construction (constructor + accessor addInitializer callbacks)
|
|
34
|
+
if (binding.kind === "class") {
|
|
35
|
+
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
36
|
+
if (lifecycle?.postConstruct && lifecycle.postConstruct.length > 0) {
|
|
37
|
+
for (const methodName of lifecycle.postConstruct) {
|
|
38
|
+
const method = activatedInstance[methodName];
|
|
39
|
+
if (typeof method === "function") {
|
|
40
|
+
const hookResult = method.call(activatedInstance);
|
|
41
|
+
if (hookResult instanceof Promise) {
|
|
42
|
+
await hookResult;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// 2. per-binding onActivation
|
|
49
|
+
if (binding.kind !== "alias" && binding.onActivation !== undefined) {
|
|
50
|
+
const activationResult = binding.onActivation(resolutionContext, activatedInstance);
|
|
51
|
+
activatedInstance = activationResult instanceof Promise ? await activationResult : activationResult;
|
|
52
|
+
}
|
|
53
|
+
// 3. container-level onActivation
|
|
54
|
+
const containerHooks = this._activationHooks.get(binding.token);
|
|
55
|
+
if (containerHooks !== undefined) {
|
|
56
|
+
for (const hook of containerHooks) {
|
|
57
|
+
const activationResult = hook(resolutionContext, activatedInstance);
|
|
58
|
+
activatedInstance = (activationResult instanceof Promise ? await activationResult : activationResult);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return activatedInstance;
|
|
62
|
+
}
|
|
63
|
+
runActivationSync(resolutionContext, binding, instance, metadataReader) {
|
|
64
|
+
let activatedInstance = instance;
|
|
65
|
+
// 1. @postConstruct() — must be sync (instance fully constructed per TC39 order)
|
|
66
|
+
if (binding.kind === "class") {
|
|
67
|
+
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
68
|
+
if (lifecycle?.postConstruct && lifecycle.postConstruct.length > 0) {
|
|
69
|
+
for (const methodName of lifecycle.postConstruct) {
|
|
70
|
+
const method = activatedInstance[methodName];
|
|
71
|
+
if (typeof method === "function") {
|
|
72
|
+
const hookResult = method.call(activatedInstance);
|
|
73
|
+
if (hookResult instanceof Promise) {
|
|
74
|
+
throw new AsyncActivationError(tokenName(binding.token), "postConstruct", methodName);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// 2. per-binding onActivation (must be sync)
|
|
81
|
+
if (binding.kind !== "alias" && binding.onActivation !== undefined) {
|
|
82
|
+
const activationResult = binding.onActivation(resolutionContext, activatedInstance);
|
|
83
|
+
if (activationResult instanceof Promise) {
|
|
84
|
+
throw new AsyncActivationError(tokenName(binding.token), "onActivation");
|
|
85
|
+
}
|
|
86
|
+
activatedInstance = activationResult;
|
|
87
|
+
}
|
|
88
|
+
// 3. container-level onActivation (must be sync)
|
|
89
|
+
const tokenDisplayName = tokenName(binding.token);
|
|
90
|
+
const containerHooks = this._activationHooks.get(binding.token);
|
|
91
|
+
if (containerHooks !== undefined) {
|
|
92
|
+
for (const hook of containerHooks) {
|
|
93
|
+
const activationResult = hook(resolutionContext, activatedInstance);
|
|
94
|
+
if (activationResult instanceof Promise) {
|
|
95
|
+
throw new AsyncActivationError(tokenDisplayName, "onActivation");
|
|
96
|
+
}
|
|
97
|
+
activatedInstance = activationResult;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return activatedInstance;
|
|
101
|
+
}
|
|
102
|
+
async runDeactivation(binding, instance, metadataReader) {
|
|
103
|
+
const tokenKey = binding.token;
|
|
104
|
+
// 1. container-level onDeactivation
|
|
105
|
+
const containerHooks = this._deactivationHooks.get(tokenKey);
|
|
106
|
+
if (containerHooks !== undefined) {
|
|
107
|
+
for (const hook of containerHooks) {
|
|
108
|
+
const hookResult = hook(instance);
|
|
109
|
+
if (hookResult instanceof Promise) {
|
|
110
|
+
await hookResult;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// 2. per-binding onDeactivation
|
|
115
|
+
if (binding.kind !== "alias" && binding.onDeactivation !== undefined) {
|
|
116
|
+
const hookResult = binding.onDeactivation(instance);
|
|
117
|
+
if (hookResult instanceof Promise) {
|
|
118
|
+
await hookResult;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// 3. @preDestroy() — all methods in declaration order
|
|
122
|
+
if (binding.kind === "class") {
|
|
123
|
+
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
124
|
+
if (lifecycle?.preDestroy && lifecycle.preDestroy.length > 0) {
|
|
125
|
+
for (const methodName of lifecycle.preDestroy) {
|
|
126
|
+
const method = instance[methodName];
|
|
127
|
+
if (typeof method === "function") {
|
|
128
|
+
const hookResult = method.call(instance);
|
|
129
|
+
if (hookResult instanceof Promise) {
|
|
130
|
+
await hookResult;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
runDeactivationSync(binding, instance, metadataReader) {
|
|
138
|
+
const tokenDisplayName = tokenName(binding.token);
|
|
139
|
+
const tokenKey = binding.token;
|
|
140
|
+
// 1. container-level onDeactivation
|
|
141
|
+
const containerHooks = this._deactivationHooks.get(tokenKey);
|
|
142
|
+
if (containerHooks !== undefined) {
|
|
143
|
+
for (const hook of containerHooks) {
|
|
144
|
+
const hookResult = hook(instance);
|
|
145
|
+
if (hookResult instanceof Promise) {
|
|
146
|
+
throw new AsyncDeactivationError(tokenDisplayName);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// 2. per-binding onDeactivation
|
|
151
|
+
if (binding.kind !== "alias" && binding.onDeactivation !== undefined) {
|
|
152
|
+
const hookResult = binding.onDeactivation(instance);
|
|
153
|
+
if (hookResult instanceof Promise) {
|
|
154
|
+
throw new AsyncDeactivationError(tokenDisplayName);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// 3. @preDestroy()
|
|
158
|
+
if (binding.kind === "class") {
|
|
159
|
+
const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
|
|
160
|
+
if (lifecycle?.preDestroy && lifecycle.preDestroy.length > 0) {
|
|
161
|
+
for (const methodName of lifecycle.preDestroy) {
|
|
162
|
+
const method = instance[methodName];
|
|
163
|
+
if (typeof method === "function") {
|
|
164
|
+
const hookResult = method.call(instance);
|
|
165
|
+
if (hookResult instanceof Promise) {
|
|
166
|
+
throw new AsyncDeactivationError(tokenDisplayName);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
//#region src/metadata/metadata-keys.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* @since 0.3.16-canary.0
|
|
4
3
|
*/
|
|
5
|
-
declare const INJECTABLE_KEY: unique symbol;
|
|
4
|
+
export declare const INJECTABLE_KEY: unique symbol;
|
|
6
5
|
/**
|
|
7
6
|
* @since 0.3.16-canary.0
|
|
8
7
|
*/
|
|
9
|
-
declare const LIFECYCLE_KEY: unique symbol;
|
|
8
|
+
export declare const LIFECYCLE_KEY: unique symbol;
|
|
10
9
|
/**
|
|
11
10
|
* @since 0.3.16-canary.0
|
|
12
11
|
*/
|
|
13
|
-
declare const INJECT_ACCESSOR_KEY: unique symbol;
|
|
12
|
+
export declare const INJECT_ACCESSOR_KEY: unique symbol;
|
|
14
13
|
/**
|
|
15
14
|
* The well-known symbol used by TC39 Stage 3 decorator transforms to store class metadata.
|
|
16
15
|
*
|
|
@@ -22,6 +21,5 @@ declare const INJECT_ACCESSOR_KEY: unique symbol;
|
|
|
22
21
|
*
|
|
23
22
|
* @since 0.3.16-canary.0
|
|
24
23
|
*/
|
|
25
|
-
declare const METADATA_SYMBOL: symbol;
|
|
26
|
-
//#
|
|
27
|
-
export { INJECTABLE_KEY, INJECT_ACCESSOR_KEY, LIFECYCLE_KEY, METADATA_SYMBOL };
|
|
24
|
+
export declare const METADATA_SYMBOL: symbol;
|
|
25
|
+
//# sourceMappingURL=metadata-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-keys.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAAgC,CAAC;AACrE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,MAA+B,CAAC;AACnE;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAAqC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,MAAyD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.3.16-canary.0
|
|
3
|
+
*/
|
|
4
|
+
export const INJECTABLE_KEY = Symbol("di:injectable");
|
|
5
|
+
/**
|
|
6
|
+
* @since 0.3.16-canary.0
|
|
7
|
+
*/
|
|
8
|
+
export const LIFECYCLE_KEY = Symbol("di:lifecycle");
|
|
9
|
+
/**
|
|
10
|
+
* @since 0.3.16-canary.0
|
|
11
|
+
*/
|
|
12
|
+
export const INJECT_ACCESSOR_KEY = Symbol("di:inject-accessor");
|
|
13
|
+
/**
|
|
14
|
+
* The well-known symbol used by TC39 Stage 3 decorator transforms to store class metadata.
|
|
15
|
+
*
|
|
16
|
+
* `Symbol.metadata` is defined natively once the runtime ships the full TC39 decorator
|
|
17
|
+
* proposal. Until then (current Node.js / browsers), Babel and esbuild both fall back to
|
|
18
|
+
* `Symbol.for("Symbol.metadata")` — a global-registry symbol with the same string key.
|
|
19
|
+
* Resolving it here once keeps the reader and the decorator transforms in sync regardless
|
|
20
|
+
* of which path is taken.
|
|
21
|
+
*
|
|
22
|
+
* @since 0.3.16-canary.0
|
|
23
|
+
*/
|
|
24
|
+
export const METADATA_SYMBOL = Symbol.metadata ?? Symbol.for("Symbol.metadata");
|
|
25
|
+
//# sourceMappingURL=metadata-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-keys.js","sourceRoot":"","sources":["../../src/metadata/metadata-keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAC;AACrE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAC;AACnE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkB,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAW,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-reader-token.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-reader-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,cAAc,CAA2C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-reader-token.js","sourceRoot":"","sources":["../../src/metadata/metadata-reader-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA0B,KAAK,CAAiB,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { InjectionDescriptor } from "#/decorators/inject";
|
|
2
|
+
import type { Token } from "#/token";
|
|
3
|
+
import type { Constructor } from "#/types";
|
|
4
|
+
/**
|
|
5
|
+
* @since 0.3.16-canary.0
|
|
6
|
+
*/
|
|
7
|
+
export interface ParamMetadata {
|
|
8
|
+
readonly index: number;
|
|
9
|
+
readonly token: Token<unknown> | Constructor;
|
|
10
|
+
readonly optional: boolean;
|
|
11
|
+
readonly multi: boolean;
|
|
12
|
+
readonly name?: string;
|
|
13
|
+
readonly tags?: ReadonlyArray<readonly [string, unknown]>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @since 0.3.16-canary.0
|
|
17
|
+
*/
|
|
18
|
+
export interface ConstructorMetadata {
|
|
19
|
+
readonly params: ReadonlyArray<ParamMetadata>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @since 0.3.16-canary.0
|
|
23
|
+
*/
|
|
24
|
+
export interface LifecycleMetadata {
|
|
25
|
+
readonly postConstruct: ReadonlyArray<string>;
|
|
26
|
+
readonly preDestroy: ReadonlyArray<string>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Mutable buckets used while aggregating decorator metadata (same keys as {@link LifecycleMetadata}).
|
|
30
|
+
*
|
|
31
|
+
* @since 0.3.16-canary.0
|
|
32
|
+
*/
|
|
33
|
+
export interface MutableLifecycleMetadata {
|
|
34
|
+
postConstruct: Array<string>;
|
|
35
|
+
preDestroy: Array<string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @since 0.3.16-canary.0
|
|
39
|
+
*/
|
|
40
|
+
export interface MetadataReader {
|
|
41
|
+
getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
|
|
42
|
+
getLifecycleMetadata(target: Constructor): LifecycleMetadata | undefined;
|
|
43
|
+
getAccessorMetadata?(target: Constructor): ReadonlyArray<{
|
|
44
|
+
readonly key: string | symbol;
|
|
45
|
+
readonly descriptor: InjectionDescriptor;
|
|
46
|
+
}> | undefined;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=metadata-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-types.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC7E,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACzE,mBAAmB,CAAC,CAClB,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;CAC3G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-types.js","sourceRoot":"","sources":["../../src/metadata/metadata-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { InjectionDescriptor } from "#/decorators/inject";
|
|
2
|
+
import type { ConstructorMetadata, LifecycleMetadata, MetadataReader } from "#/metadata/metadata-types";
|
|
3
|
+
import type { Constructor } from "#/types";
|
|
4
|
+
/**
|
|
5
|
+
* @since 0.3.16-canary.0
|
|
6
|
+
*/
|
|
7
|
+
export declare class SymbolMetadataReader implements MetadataReader {
|
|
8
|
+
private _getMetadataRecord;
|
|
9
|
+
getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
|
|
10
|
+
getLifecycleMetadata(target: Constructor): LifecycleMetadata | undefined;
|
|
11
|
+
getAccessorMetadata(target: Constructor): Array<{
|
|
12
|
+
key: string | symbol;
|
|
13
|
+
descriptor: InjectionDescriptor;
|
|
14
|
+
}> | undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @since 0.3.16-canary.0
|
|
18
|
+
*/
|
|
19
|
+
export declare const defaultMetadataReader: SymbolMetadataReader;
|
|
20
|
+
//# sourceMappingURL=symbol-metadata-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-metadata-reader.d.ts","sourceRoot":"","sources":["../../src/metadata/symbol-metadata-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,kBAAkB;IAY1B,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAG3E;IAED,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAGvE;IAED,mBAAmB,CACjB,MAAM,EAAE,WAAW,GAClB,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,UAAU,EAAE,mBAAmB,CAAA;KAAE,CAAC,GAAG,SAAS,CAK9E;CACF;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { INJECT_ACCESSOR_KEY, INJECTABLE_KEY, LIFECYCLE_KEY, METADATA_SYMBOL } from "#/metadata/metadata-keys";
|
|
2
|
+
/**
|
|
3
|
+
* @since 0.3.16-canary.0
|
|
4
|
+
*/
|
|
5
|
+
export class SymbolMetadataReader {
|
|
6
|
+
_getMetadataRecord(target, key) {
|
|
7
|
+
const descriptor = Object.getOwnPropertyDescriptor(target, METADATA_SYMBOL);
|
|
8
|
+
if (descriptor === undefined) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
const record = descriptor.value;
|
|
12
|
+
if (!record || typeof record !== "object" || !Object.hasOwn(record, key)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return record;
|
|
16
|
+
}
|
|
17
|
+
getConstructorMetadata(target) {
|
|
18
|
+
const record = this._getMetadataRecord(target, INJECTABLE_KEY);
|
|
19
|
+
return record?.[INJECTABLE_KEY];
|
|
20
|
+
}
|
|
21
|
+
getLifecycleMetadata(target) {
|
|
22
|
+
const record = this._getMetadataRecord(target, LIFECYCLE_KEY);
|
|
23
|
+
return record?.[LIFECYCLE_KEY];
|
|
24
|
+
}
|
|
25
|
+
getAccessorMetadata(target) {
|
|
26
|
+
const record = this._getMetadataRecord(target, INJECT_ACCESSOR_KEY);
|
|
27
|
+
return record?.[INJECT_ACCESSOR_KEY];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @since 0.3.16-canary.0
|
|
32
|
+
*/
|
|
33
|
+
export const defaultMetadataReader = new SymbolMetadataReader();
|
|
34
|
+
//# sourceMappingURL=symbol-metadata-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-metadata-reader.js","sourceRoot":"","sources":["../../src/metadata/symbol-metadata-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI/G;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,kBAAkB,CAAC,MAAmB,EAAE,GAAoB;QAClE,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC5E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,KAA4D,CAAC;QACvF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,MAAmB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC/D,OAAO,MAAM,EAAE,CAAC,cAAc,CAAoC,CAAC;IACrE,CAAC;IAED,oBAAoB,CAAC,MAAmB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC9D,OAAO,MAAM,EAAE,CAAC,aAAa,CAAkC,CAAC;IAClE,CAAC;IAED,mBAAmB,CACjB,MAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACpE,OAAO,MAAM,EAAE,CAAC,mBAAmB,CAEtB,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|