@inversifyjs/core 5.3.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/lib/cjs/binding/models/BindingConstraintsImplementation.d.ts +1 -0
- package/lib/cjs/binding/models/BindingConstraintsImplementation.d.ts.map +1 -1
- package/lib/cjs/binding/models/BindingConstraintsImplementation.js +1 -0
- package/lib/cjs/binding/models/BindingConstraintsImplementation.js.map +1 -1
- package/lib/cjs/binding/services/BindingService.d.ts +1 -0
- package/lib/cjs/binding/services/BindingService.d.ts.map +1 -1
- package/lib/cjs/binding/services/BindingService.js +9 -0
- package/lib/cjs/binding/services/BindingService.js.map +1 -1
- package/lib/cjs/index.d.ts +20 -4
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/metadata/calculations/buildClassElementMetadataFromMaybeClassElementMetadata.d.ts +11 -1
- package/lib/cjs/metadata/calculations/buildClassElementMetadataFromMaybeClassElementMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/calculations/buildClassElementMetadataFromMaybeClassElementMetadata.js.map +1 -1
- package/lib/cjs/metadata/calculations/buildDefaultManagedMetadata.d.ts +3 -1
- package/lib/cjs/metadata/calculations/buildDefaultManagedMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/calculations/buildDefaultManagedMetadata.js +21 -8
- package/lib/cjs/metadata/calculations/buildDefaultManagedMetadata.js.map +1 -1
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeClassElementMetadata.d.ts +2 -1
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeClassElementMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeClassElementMetadata.js.map +1 -1
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeManagedMetadata.d.ts +3 -1
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeManagedMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeManagedMetadata.js +17 -6
- package/lib/cjs/metadata/calculations/buildManagedMetadataFromMaybeManagedMetadata.js.map +1 -1
- package/lib/cjs/metadata/decorators/multiInject.d.ts +2 -1
- package/lib/cjs/metadata/decorators/multiInject.d.ts.map +1 -1
- package/lib/cjs/metadata/decorators/multiInject.js +2 -2
- package/lib/cjs/metadata/decorators/multiInject.js.map +1 -1
- package/lib/cjs/metadata/models/BaseManagedClassElementMetadata.d.ts +12 -0
- package/lib/cjs/metadata/models/BaseManagedClassElementMetadata.d.ts.map +1 -0
- package/lib/cjs/metadata/models/BaseManagedClassElementMetadata.js +3 -0
- package/lib/cjs/metadata/models/BaseManagedClassElementMetadata.js.map +1 -0
- package/lib/cjs/metadata/models/BaseResolvedValueElementMetadata.d.ts +7 -0
- package/lib/cjs/metadata/models/BaseResolvedValueElementMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/models/ManagedClassElementMetadata.d.ts +3 -12
- package/lib/cjs/metadata/models/ManagedClassElementMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/models/MultiInjectOptions.d.ts +4 -0
- package/lib/cjs/metadata/models/MultiInjectOptions.d.ts.map +1 -0
- package/lib/cjs/metadata/models/MultiInjectOptions.js +3 -0
- package/lib/cjs/metadata/models/MultiInjectOptions.js.map +1 -0
- package/lib/cjs/metadata/models/MultipleInjectionManagedClassElementMetadata.d.ts +6 -0
- package/lib/cjs/metadata/models/MultipleInjectionManagedClassElementMetadata.d.ts.map +1 -0
- package/lib/cjs/metadata/models/MultipleInjectionManagedClassElementMetadata.js +3 -0
- package/lib/cjs/metadata/models/MultipleInjectionManagedClassElementMetadata.js.map +1 -0
- package/lib/cjs/metadata/models/MultipleInjectionResolvedValueElementMetadata.d.ts +6 -0
- package/lib/cjs/metadata/models/MultipleInjectionResolvedValueElementMetadata.d.ts.map +1 -0
- package/lib/cjs/metadata/models/MultipleInjectionResolvedValueElementMetadata.js +3 -0
- package/lib/cjs/metadata/models/MultipleInjectionResolvedValueElementMetadata.js.map +1 -0
- package/lib/cjs/metadata/models/ResolvedValueElementMetadata.d.ts +3 -11
- package/lib/cjs/metadata/models/ResolvedValueElementMetadata.d.ts.map +1 -1
- package/lib/cjs/metadata/models/SingleInjectionManagedClassElementMetadata.d.ts +4 -0
- package/lib/cjs/metadata/models/SingleInjectionManagedClassElementMetadata.d.ts.map +1 -0
- package/lib/cjs/metadata/models/SingleInjectionManagedClassElementMetadata.js +3 -0
- package/lib/cjs/metadata/models/SingleInjectionManagedClassElementMetadata.js.map +1 -0
- package/lib/cjs/metadata/models/SingleInjectionResolvedValueElementMetadata.d.ts +4 -0
- package/lib/cjs/metadata/models/SingleInjectionResolvedValueElementMetadata.d.ts.map +1 -0
- package/lib/cjs/metadata/models/SingleInjectionResolvedValueElementMetadata.js +3 -0
- package/lib/cjs/metadata/models/SingleInjectionResolvedValueElementMetadata.js.map +1 -0
- package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.d.ts +5 -0
- package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.d.ts.map +1 -0
- package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.js +17 -0
- package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.js.map +1 -0
- package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.spec.d.ts +2 -0
- package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.spec.d.ts.map +1 -0
- package/lib/cjs/planning/actions/plan.d.ts.map +1 -0
- package/lib/cjs/planning/actions/plan.int.spec.d.ts.map +1 -0
- package/lib/cjs/planning/actions/plan.js +297 -0
- package/lib/cjs/planning/actions/plan.js.map +1 -0
- package/lib/cjs/planning/actions/plan.spec.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/buildFilteredServiceBindings.d.ts +1 -0
- package/lib/cjs/planning/calculations/buildFilteredServiceBindings.d.ts.map +1 -1
- package/lib/cjs/planning/calculations/buildFilteredServiceBindings.js +4 -4
- package/lib/cjs/planning/calculations/buildFilteredServiceBindings.js.map +1 -1
- package/lib/cjs/planning/calculations/buildGetPlanOptionsFromPlanParams.d.ts +4 -0
- package/lib/cjs/planning/calculations/buildGetPlanOptionsFromPlanParams.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/buildGetPlanOptionsFromPlanParams.js +25 -0
- package/lib/cjs/planning/calculations/buildGetPlanOptionsFromPlanParams.js.map +1 -0
- package/lib/cjs/planning/calculations/buildGetPlanOptionsFromPlanParams.spec.d.ts +2 -0
- package/lib/cjs/planning/calculations/buildGetPlanOptionsFromPlanParams.spec.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.d.ts +5 -0
- package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.js +20 -0
- package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.js.map +1 -0
- package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.spec.d.ts +2 -0
- package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.spec.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/checkPlanServiceRedirectionBindingNodeSingleInjectionBindings.d.ts +4 -2
- package/lib/cjs/planning/calculations/checkPlanServiceRedirectionBindingNodeSingleInjectionBindings.d.ts.map +1 -1
- package/lib/cjs/planning/calculations/checkPlanServiceRedirectionBindingNodeSingleInjectionBindings.js +6 -3
- package/lib/cjs/planning/calculations/checkPlanServiceRedirectionBindingNodeSingleInjectionBindings.js.map +1 -1
- package/lib/cjs/planning/calculations/checkServiceNodeSingleInjectionBindings.d.ts +3 -2
- package/lib/cjs/planning/calculations/checkServiceNodeSingleInjectionBindings.d.ts.map +1 -1
- package/lib/cjs/planning/calculations/checkServiceNodeSingleInjectionBindings.js +3 -3
- package/lib/cjs/planning/calculations/checkServiceNodeSingleInjectionBindings.js.map +1 -1
- package/lib/cjs/planning/calculations/getServiceFromMaybeLazyServiceIdentifier.d.ts +3 -0
- package/lib/cjs/planning/calculations/getServiceFromMaybeLazyServiceIdentifier.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/getServiceFromMaybeLazyServiceIdentifier.js +10 -0
- package/lib/cjs/planning/calculations/getServiceFromMaybeLazyServiceIdentifier.js.map +1 -0
- package/lib/cjs/planning/calculations/getServiceFromMaybeLazyServiceIdentifier.spec.d.ts +2 -0
- package/lib/cjs/planning/calculations/getServiceFromMaybeLazyServiceIdentifier.spec.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/throwErrorWhenUnexpectedBindingsAmountFound.d.ts +4 -3
- package/lib/cjs/planning/calculations/throwErrorWhenUnexpectedBindingsAmountFound.d.ts.map +1 -1
- package/lib/cjs/planning/calculations/throwErrorWhenUnexpectedBindingsAmountFound.js +33 -35
- package/lib/cjs/planning/calculations/throwErrorWhenUnexpectedBindingsAmountFound.js.map +1 -1
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata.d.ts +4 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata.js +43 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata.js.map +1 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata.spec.d.ts +2 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata.spec.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata.d.ts +4 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata.d.ts.map +1 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata.js +42 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata.js.map +1 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata.spec.d.ts +2 -0
- package/lib/cjs/planning/calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata.spec.d.ts.map +1 -0
- package/lib/cjs/planning/models/BaseBindingNode.d.ts +0 -2
- package/lib/cjs/planning/models/BaseBindingNode.d.ts.map +1 -1
- package/lib/cjs/planning/models/BaseGetPlanOptions.d.ts +10 -0
- package/lib/cjs/planning/models/BaseGetPlanOptions.d.ts.map +1 -0
- package/lib/cjs/planning/models/BaseGetPlanOptions.js +3 -0
- package/lib/cjs/planning/models/BaseGetPlanOptions.js.map +1 -0
- package/lib/cjs/planning/models/BasePlanParams.d.ts +3 -6
- package/lib/cjs/planning/models/BasePlanParams.d.ts.map +1 -1
- package/lib/cjs/planning/models/GetMultipleServicePlanOptions.d.ts +6 -0
- package/lib/cjs/planning/models/GetMultipleServicePlanOptions.d.ts.map +1 -0
- package/lib/cjs/planning/models/GetMultipleServicePlanOptions.js +3 -0
- package/lib/cjs/planning/models/GetMultipleServicePlanOptions.js.map +1 -0
- package/lib/cjs/planning/models/GetPlanOptions.d.ts +4 -0
- package/lib/cjs/planning/models/GetPlanOptions.d.ts.map +1 -0
- package/lib/cjs/planning/models/GetPlanOptions.js +3 -0
- package/lib/cjs/planning/models/GetPlanOptions.js.map +1 -0
- package/lib/cjs/planning/models/GetPlanOptionsTagConstraint.d.ts +6 -0
- package/lib/cjs/planning/models/GetPlanOptionsTagConstraint.d.ts.map +1 -0
- package/lib/cjs/planning/models/GetPlanOptionsTagConstraint.js +3 -0
- package/lib/cjs/planning/models/GetPlanOptionsTagConstraint.js.map +1 -0
- package/lib/cjs/planning/models/GetSingleServicePlanOptions.d.ts +5 -0
- package/lib/cjs/planning/models/GetSingleServicePlanOptions.d.ts.map +1 -0
- package/lib/cjs/planning/models/GetSingleServicePlanOptions.js +3 -0
- package/lib/cjs/planning/models/GetSingleServicePlanOptions.js.map +1 -0
- package/lib/cjs/planning/models/LazyPlanServiceNode.d.ts +21 -0
- package/lib/cjs/planning/models/LazyPlanServiceNode.d.ts.map +1 -0
- package/lib/cjs/planning/models/LazyPlanServiceNode.js +46 -0
- package/lib/cjs/planning/models/LazyPlanServiceNode.js.map +1 -0
- package/lib/cjs/planning/models/LazyPlanServiceNode.spec.d.ts +9 -0
- package/lib/cjs/planning/models/LazyPlanServiceNode.spec.d.ts.map +1 -0
- package/lib/cjs/planning/models/MultipleBindingPlanParamsConstraint.d.ts +12 -0
- package/lib/cjs/planning/models/MultipleBindingPlanParamsConstraint.d.ts.map +1 -0
- package/lib/cjs/planning/models/MultipleBindingPlanParamsConstraint.js +3 -0
- package/lib/cjs/planning/models/MultipleBindingPlanParamsConstraint.js.map +1 -0
- package/lib/cjs/planning/models/PlanParamsConstraint.d.ts +3 -10
- package/lib/cjs/planning/models/PlanParamsConstraint.d.ts.map +1 -1
- package/lib/cjs/planning/models/PlanParamsOperations.d.ts +16 -0
- package/lib/cjs/planning/models/PlanParamsOperations.d.ts.map +1 -0
- package/lib/cjs/planning/models/PlanParamsOperations.js +3 -0
- package/lib/cjs/planning/models/PlanParamsOperations.js.map +1 -0
- package/lib/cjs/planning/models/PlanServiceNode.d.ts +2 -3
- package/lib/cjs/planning/models/PlanServiceNode.d.ts.map +1 -1
- package/lib/cjs/planning/models/SingleBindingPlanParamsConstraint.d.ts +11 -0
- package/lib/cjs/planning/models/SingleBindingPlanParamsConstraint.d.ts.map +1 -0
- package/lib/cjs/planning/models/SingleBindingPlanParamsConstraint.js +3 -0
- package/lib/cjs/planning/models/SingleBindingPlanParamsConstraint.js.map +1 -0
- package/lib/cjs/planning/services/PlanResultCacheService.d.ts +4 -14
- package/lib/cjs/planning/services/PlanResultCacheService.d.ts.map +1 -1
- package/lib/cjs/planning/services/PlanResultCacheService.js +142 -18
- package/lib/cjs/planning/services/PlanResultCacheService.js.map +1 -1
- package/lib/cjs/resolution/models/GetAllOptions.d.ts +5 -0
- package/lib/cjs/resolution/models/GetAllOptions.d.ts.map +1 -0
- package/lib/cjs/resolution/models/GetAllOptions.js +3 -0
- package/lib/cjs/resolution/models/GetAllOptions.js.map +1 -0
- package/lib/cjs/resolution/models/OptionalGetAllOptions.d.ts +5 -0
- package/lib/cjs/resolution/models/OptionalGetAllOptions.d.ts.map +1 -0
- package/lib/cjs/resolution/models/OptionalGetAllOptions.js +3 -0
- package/lib/cjs/resolution/models/OptionalGetAllOptions.js.map +1 -0
- package/lib/esm/index.d.ts +98 -42
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/package.json +7 -7
- package/lib/cjs/planning/calculations/plan.d.ts.map +0 -1
- package/lib/cjs/planning/calculations/plan.int.spec.d.ts.map +0 -1
- package/lib/cjs/planning/calculations/plan.js +0 -214
- package/lib/cjs/planning/calculations/plan.js.map +0 -1
- package/lib/cjs/planning/calculations/plan.spec.d.ts.map +0 -1
- /package/lib/cjs/planning/{calculations → actions}/plan.d.ts +0 -0
- /package/lib/cjs/planning/{calculations → actions}/plan.int.spec.d.ts +0 -0
- /package/lib/cjs/planning/{calculations → actions}/plan.spec.d.ts +0 -0
package/lib/esm/index.d.ts
CHANGED
|
@@ -98,6 +98,10 @@ interface ProviderBinding<TActivated extends Provider<unknown>> extends ScopedBi
|
|
|
98
98
|
|
|
99
99
|
interface BaseResolvedValueElementMetadata<TKind> {
|
|
100
100
|
kind: TKind;
|
|
101
|
+
name: MetadataName | undefined;
|
|
102
|
+
optional: boolean;
|
|
103
|
+
tags: Map<MetadataTag, unknown>;
|
|
104
|
+
value: ServiceIdentifier | LazyServiceIdentifier;
|
|
101
105
|
}
|
|
102
106
|
|
|
103
107
|
declare enum ResolvedValueElementMetadataKind {
|
|
@@ -105,13 +109,14 @@ declare enum ResolvedValueElementMetadataKind {
|
|
|
105
109
|
singleInjection = 1
|
|
106
110
|
}
|
|
107
111
|
|
|
108
|
-
interface
|
|
109
|
-
|
|
110
|
-
optional: boolean;
|
|
111
|
-
tags: Map<MetadataTag, unknown>;
|
|
112
|
-
value: ServiceIdentifier | LazyServiceIdentifier;
|
|
112
|
+
interface MultipleInjectionResolvedValueElementMetadata extends BaseResolvedValueElementMetadata<ResolvedValueElementMetadataKind.multipleInjection> {
|
|
113
|
+
chained: boolean;
|
|
113
114
|
}
|
|
114
115
|
|
|
116
|
+
type SingleInjectionResolvedValueElementMetadata = BaseResolvedValueElementMetadata<ResolvedValueElementMetadataKind.singleInjection>;
|
|
117
|
+
|
|
118
|
+
type ResolvedValueElementMetadata = SingleInjectionResolvedValueElementMetadata | MultipleInjectionResolvedValueElementMetadata;
|
|
119
|
+
|
|
115
120
|
interface ResolvedValueMetadata {
|
|
116
121
|
arguments: ResolvedValueElementMetadata[];
|
|
117
122
|
}
|
|
@@ -156,6 +161,7 @@ declare class BindingService implements Cloneable<BindingService> {
|
|
|
156
161
|
static build(parent: BindingService | undefined): BindingService;
|
|
157
162
|
clone(): BindingService;
|
|
158
163
|
get<TResolved>(serviceIdentifier: ServiceIdentifier): Iterable<Binding<TResolved>> | undefined;
|
|
164
|
+
getChained<TResolved>(serviceIdentifier: ServiceIdentifier): Generator<Binding<TResolved>, void, unknown>;
|
|
159
165
|
getBoundServices(): Iterable<ServiceIdentifier>;
|
|
160
166
|
getById<TResolved>(id: number): Iterable<Binding<TResolved>> | undefined;
|
|
161
167
|
getByModuleId<TResolved>(moduleId: number): Iterable<Binding<TResolved>> | undefined;
|
|
@@ -194,20 +200,28 @@ interface BaseClassElementMetadata<TKind> {
|
|
|
194
200
|
kind: TKind;
|
|
195
201
|
}
|
|
196
202
|
|
|
203
|
+
interface BaseManagedClassElementMetadata<TKind> extends BaseClassElementMetadata<TKind> {
|
|
204
|
+
isFromTypescriptParamType?: true;
|
|
205
|
+
name: MetadataName | undefined;
|
|
206
|
+
optional: boolean;
|
|
207
|
+
tags: Map<MetadataTag, unknown>;
|
|
208
|
+
value: ServiceIdentifier | LazyServiceIdentifier;
|
|
209
|
+
}
|
|
210
|
+
|
|
197
211
|
declare enum ClassElementMetadataKind {
|
|
198
212
|
multipleInjection = 0,
|
|
199
213
|
singleInjection = 1,
|
|
200
214
|
unmanaged = 2
|
|
201
215
|
}
|
|
202
216
|
|
|
203
|
-
interface
|
|
204
|
-
|
|
205
|
-
name: MetadataName | undefined;
|
|
206
|
-
optional: boolean;
|
|
207
|
-
tags: Map<MetadataTag, unknown>;
|
|
208
|
-
value: ServiceIdentifier | LazyServiceIdentifier;
|
|
217
|
+
interface MultipleInjectionManagedClassElementMetadata extends BaseManagedClassElementMetadata<ClassElementMetadataKind.multipleInjection> {
|
|
218
|
+
chained: boolean;
|
|
209
219
|
}
|
|
210
220
|
|
|
221
|
+
type SingleInjectionManagedClassElementMetadata = BaseManagedClassElementMetadata<ClassElementMetadataKind.singleInjection>;
|
|
222
|
+
|
|
223
|
+
type ManagedClassElementMetadata = SingleInjectionManagedClassElementMetadata | MultipleInjectionManagedClassElementMetadata;
|
|
224
|
+
|
|
211
225
|
type UnmanagedClassElementMetadata = BaseClassElementMetadata<ClassElementMetadataKind.unmanaged>;
|
|
212
226
|
|
|
213
227
|
type ClassElementMetadata = ManagedClassElementMetadata | UnmanagedClassElementMetadata;
|
|
@@ -237,7 +251,11 @@ interface InjectFromBaseOptions {
|
|
|
237
251
|
|
|
238
252
|
declare function injectFromBase(options?: InjectFromBaseOptions): ClassDecorator;
|
|
239
253
|
|
|
240
|
-
|
|
254
|
+
interface MultiInjectOptions {
|
|
255
|
+
chained?: boolean;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
declare function multiInject(serviceIdentifier: ServiceIdentifier | LazyServiceIdentifier, options?: MultiInjectOptions): MethodDecorator & ParameterDecorator & PropertyDecorator;
|
|
241
259
|
|
|
242
260
|
declare function named(name: MetadataName): MethodDecorator & ParameterDecorator & PropertyDecorator;
|
|
243
261
|
|
|
@@ -255,39 +273,30 @@ interface BasePlanParamsAutobindOptions {
|
|
|
255
273
|
scope: BindingScope;
|
|
256
274
|
}
|
|
257
275
|
|
|
258
|
-
interface
|
|
259
|
-
autobindOptions: BasePlanParamsAutobindOptions | undefined;
|
|
260
|
-
getBindings: <TInstance>(serviceIdentifier: ServiceIdentifier<TInstance>) => Iterable<Binding<TInstance>> | undefined;
|
|
261
|
-
getClassMetadata: (type: Newable) => ClassMetadata;
|
|
262
|
-
servicesBranch: ServiceIdentifier[];
|
|
263
|
-
setBinding: <TInstance>(binding: Binding<TInstance>) => void;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
interface PlanParamsTagConstraint {
|
|
276
|
+
interface GetPlanOptionsTagConstraint {
|
|
267
277
|
key: MetadataTag;
|
|
268
278
|
value: unknown;
|
|
269
279
|
}
|
|
270
280
|
|
|
271
|
-
interface
|
|
272
|
-
name?: MetadataName;
|
|
273
|
-
isMultiple: boolean;
|
|
274
|
-
isOptional?: true;
|
|
281
|
+
interface BaseGetPlanOptions {
|
|
275
282
|
serviceIdentifier: ServiceIdentifier;
|
|
276
|
-
|
|
283
|
+
name: MetadataName | undefined;
|
|
284
|
+
optional: boolean;
|
|
285
|
+
tag: GetPlanOptionsTagConstraint | undefined;
|
|
277
286
|
}
|
|
278
287
|
|
|
279
|
-
interface
|
|
280
|
-
|
|
288
|
+
interface GetMultipleServicePlanOptions extends BaseGetPlanOptions {
|
|
289
|
+
chained: boolean;
|
|
290
|
+
isMultiple: true;
|
|
281
291
|
}
|
|
282
292
|
|
|
283
|
-
interface
|
|
284
|
-
|
|
293
|
+
interface GetSingleServicePlanOptions extends BaseGetPlanOptions {
|
|
294
|
+
isMultiple: false;
|
|
285
295
|
}
|
|
286
296
|
|
|
287
|
-
type
|
|
297
|
+
type GetPlanOptions = GetSingleServicePlanOptions | GetMultipleServicePlanOptions;
|
|
288
298
|
|
|
289
299
|
interface BaseBindingNode<TBinding extends Binding<any> = Binding<any>> {
|
|
290
|
-
readonly parent: BindingNodeParent;
|
|
291
300
|
readonly binding: TBinding;
|
|
292
301
|
}
|
|
293
302
|
|
|
@@ -305,11 +314,15 @@ interface ResolvedValueBindingNode<TBinding extends ResolvedValueBinding<any> =
|
|
|
305
314
|
|
|
306
315
|
type PlanServiceNodeParent<TActivated = any> = InstanceBindingNode<InstanceBinding<TActivated>> | ResolvedValueBindingNode<ResolvedValueBinding<TActivated>>;
|
|
307
316
|
|
|
317
|
+
interface PlanServiceRedirectionBindingNode<TBinding extends ServiceRedirectionBinding<any> = ServiceRedirectionBinding<any>> extends BaseBindingNode<TBinding> {
|
|
318
|
+
redirections: PlanBindingNode[];
|
|
319
|
+
}
|
|
320
|
+
|
|
308
321
|
type PlanBindingNode = PlanServiceNodeParent | PlanServiceRedirectionBindingNode | LeafBindingNode;
|
|
309
322
|
|
|
310
323
|
interface PlanServiceNode {
|
|
311
|
-
|
|
312
|
-
|
|
324
|
+
bindings: PlanBindingNode | PlanBindingNode[] | undefined;
|
|
325
|
+
isContextFree: boolean;
|
|
313
326
|
readonly serviceIdentifier: ServiceIdentifier;
|
|
314
327
|
}
|
|
315
328
|
|
|
@@ -321,19 +334,52 @@ interface PlanResult {
|
|
|
321
334
|
readonly tree: PlanTree;
|
|
322
335
|
}
|
|
323
336
|
|
|
324
|
-
|
|
337
|
+
interface PlanParamsOperations {
|
|
338
|
+
getBindings: <TInstance>(serviceIdentifier: ServiceIdentifier<TInstance>) => Iterable<Binding<TInstance>> | undefined;
|
|
339
|
+
getBindingsChained: <TInstance>(serviceIdentifier: ServiceIdentifier<TInstance>) => Generator<Binding<TInstance>, void, unknown>;
|
|
340
|
+
readonly getClassMetadata: (type: Newable) => ClassMetadata;
|
|
341
|
+
readonly getPlan: (options: GetPlanOptions) => PlanResult | undefined;
|
|
342
|
+
setBinding: <TInstance>(binding: Binding<TInstance>) => void;
|
|
343
|
+
readonly setNonCachedServiceNode: (node: PlanServiceNode) => void;
|
|
344
|
+
readonly setPlan: (options: GetPlanOptions, planResult: PlanResult) => void;
|
|
345
|
+
}
|
|
325
346
|
|
|
326
|
-
interface
|
|
347
|
+
interface BasePlanParams {
|
|
348
|
+
autobindOptions: BasePlanParamsAutobindOptions | undefined;
|
|
349
|
+
operations: PlanParamsOperations;
|
|
350
|
+
servicesBranch: ServiceIdentifier[];
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
interface PlanParamsTagConstraint {
|
|
327
354
|
key: MetadataTag;
|
|
328
355
|
value: unknown;
|
|
329
356
|
}
|
|
330
|
-
|
|
357
|
+
|
|
358
|
+
interface MultipleBindingPlanParamsConstraint {
|
|
359
|
+
chained: boolean;
|
|
360
|
+
name?: MetadataName;
|
|
361
|
+
isMultiple: true;
|
|
362
|
+
isOptional?: true;
|
|
331
363
|
serviceIdentifier: ServiceIdentifier;
|
|
332
|
-
|
|
333
|
-
name: MetadataName | undefined;
|
|
334
|
-
optional: boolean | undefined;
|
|
335
|
-
tag: GetPlanOptionsTagConstraint | undefined;
|
|
364
|
+
tag?: PlanParamsTagConstraint;
|
|
336
365
|
}
|
|
366
|
+
|
|
367
|
+
interface SingleBindingPlanParamsConstraint {
|
|
368
|
+
name?: MetadataName;
|
|
369
|
+
isMultiple: false;
|
|
370
|
+
isOptional?: true;
|
|
371
|
+
serviceIdentifier: ServiceIdentifier;
|
|
372
|
+
tag?: PlanParamsTagConstraint;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
type PlanParamsConstraint = SingleBindingPlanParamsConstraint | MultipleBindingPlanParamsConstraint;
|
|
376
|
+
|
|
377
|
+
interface PlanParams extends BasePlanParams {
|
|
378
|
+
rootConstraints: PlanParamsConstraint;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
declare function plan(params: PlanParams): PlanResult;
|
|
382
|
+
|
|
337
383
|
/**
|
|
338
384
|
* Service to cache plans.
|
|
339
385
|
*
|
|
@@ -349,7 +395,9 @@ declare class PlanResultCacheService {
|
|
|
349
395
|
constructor();
|
|
350
396
|
clearCache(): void;
|
|
351
397
|
get(options: GetPlanOptions): PlanResult | undefined;
|
|
398
|
+
invalidateService(serviceIdentifier: ServiceIdentifier): void;
|
|
352
399
|
set(options: GetPlanOptions, planResult: PlanResult): void;
|
|
400
|
+
setNonCachedServiceNode(node: PlanServiceNode): void;
|
|
353
401
|
subscribe(subscriber: PlanResultCacheService): void;
|
|
354
402
|
}
|
|
355
403
|
|
|
@@ -375,5 +423,13 @@ declare function resolveModuleDeactivations(params: DeactivationParams, moduleId
|
|
|
375
423
|
|
|
376
424
|
declare function resolveServiceDeactivations(params: DeactivationParams, serviceIdentifier: ServiceIdentifier): void | Promise<void>;
|
|
377
425
|
|
|
426
|
+
interface GetAllOptions extends GetOptions {
|
|
427
|
+
chained?: boolean;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
interface OptionalGetAllOptions extends GetAllOptions {
|
|
431
|
+
optional: true;
|
|
432
|
+
}
|
|
433
|
+
|
|
378
434
|
export { ActivationsService, BindingService, ClassElementMetadataKind, DeactivationsService, PlanResultCacheService, ResolvedValueElementMetadataKind, bindingScopeValues, bindingTypeValues, decorate, getBindingId, getClassMetadata, inject, injectFromBase, injectable, multiInject, named, optional, plan, postConstruct, preDestroy, resolve, resolveBindingsDeactivations, resolveModuleDeactivations, resolveServiceDeactivations, tagged, unmanaged };
|
|
379
|
-
export type { BaseBinding, BaseBindingNode, BasePlanParams, Binding, BindingActivation, BindingActivationRelation, BindingConstraints, BindingDeactivation, BindingDeactivationRelation, BindingScope, BindingType, ClassElementMetadata, ClassMetadata, ClassMetadataLifecycle, ConstantValueBinding, DeactivationParams, DynamicValueBinding, DynamicValueBuilder, Factory, FactoryBinding, GetOptions, GetOptionsTagConstraint, GetPlanOptions, InstanceBinding, InstanceBindingNode, LeafBindingNode, ManagedClassElementMetadata, MetadataName, MetadataTag, OptionalGetOptions, PlanBindingNode, PlanParams, PlanParamsConstraint, PlanParamsTagConstraint, PlanResult, PlanServiceNode, PlanServiceNodeParent, PlanServiceRedirectionBindingNode, PlanTree, Provider, ProviderBinding, ResolutionContext, ResolutionParams, Resolved, ResolvedValueBinding, ResolvedValueBindingNode, ResolvedValueElementMetadata, ResolvedValueMetadata, ScopedBinding, ServiceRedirectionBinding, UnmanagedClassElementMetadata };
|
|
435
|
+
export type { BaseBinding, BaseBindingNode, BaseGetPlanOptions, BaseManagedClassElementMetadata, BasePlanParams, Binding, BindingActivation, BindingActivationRelation, BindingConstraints, BindingDeactivation, BindingDeactivationRelation, BindingScope, BindingType, ClassElementMetadata, ClassMetadata, ClassMetadataLifecycle, ConstantValueBinding, DeactivationParams, DynamicValueBinding, DynamicValueBuilder, Factory, FactoryBinding, GetAllOptions, GetMultipleServicePlanOptions, GetOptions, GetOptionsTagConstraint, GetPlanOptions, GetPlanOptionsTagConstraint, GetSingleServicePlanOptions, InstanceBinding, InstanceBindingNode, LeafBindingNode, ManagedClassElementMetadata, MetadataName, MetadataTag, MultiInjectOptions, MultipleBindingPlanParamsConstraint, MultipleInjectionManagedClassElementMetadata, MultipleInjectionResolvedValueElementMetadata, OptionalGetAllOptions, OptionalGetOptions, PlanBindingNode, PlanParams, PlanParamsConstraint, PlanParamsOperations, PlanParamsTagConstraint, PlanResult, PlanServiceNode, PlanServiceNodeParent, PlanServiceRedirectionBindingNode, PlanTree, Provider, ProviderBinding, ResolutionContext, ResolutionParams, Resolved, ResolvedValueBinding, ResolvedValueBindingNode, ResolvedValueElementMetadata, ResolvedValueMetadata, ScopedBinding, ServiceRedirectionBinding, SingleBindingPlanParamsConstraint, SingleInjectionManagedClassElementMetadata, SingleInjectionResolvedValueElementMetadata, UnmanagedClassElementMetadata };
|
package/lib/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{getOwnReflectMetadata as e,setReflectMetadata as t,updateOwnReflectMetadata as n}from"@inversifyjs/reflect-metadata-utils";import{getBaseType as i}from"@inversifyjs/prototype-utils";import{stringifyServiceIdentifier as o,LazyServiceIdentifier as r,isPromise as a}from"@inversifyjs/common";const s="@inversifyjs/container/bindingId";function c(){const i=e(Object,s)??0;return i===Number.MAX_SAFE_INTEGER?t(Object,s,Number.MIN_SAFE_INTEGER):n(Object,s,()=>i,e=>e+1),i}const u={Request:"Request",Singleton:"Singleton",Transient:"Transient"},d={ConstantValue:"ConstantValue",DynamicValue:"DynamicValue",Factory:"Factory",Instance:"Instance",Provider:"Provider",ResolvedValue:"ResolvedValue",ServiceRedirection:"ServiceRedirection"};function*l(...e){for(const t of e)yield*t}class p{#e;#t;#n;constructor(e){this.#e=new Map,this.#t={};for(const t of Reflect.ownKeys(e))this.#t[t]=new Map;this.#n=e}add(e,t){this.#i(e).push(t);for(const n of Reflect.ownKeys(t))this.#o(n,t[n]).push(e)}clone(){const e=this.#r(),t=this.#a(),n=Reflect.ownKeys(this.#n),i=this._buildNewInstance(this.#n);this.#s(this.#e,i.#e,e,t);for(const t of n)this.#c(this.#t[t],i.#t[t],e);return i}get(e,t){return this.#t[e].get(t)}getAllKeys(e){return this.#t[e].keys()}removeByRelation(e,t){const n=this.get(e,t);if(void 0===n)return;const i=new Set(n);for(const n of i){const i=this.#e.get(n);if(void 0===i)throw new Error("Expecting model relation, none found");for(const o of i)o[e]===t&&this.#u(n,o);this.#e.delete(n)}}_buildNewInstance(e){return new p(e)}_cloneModel(e){return e}_cloneRelation(e){return e}#r(){const e=new Map;for(const t of this.#e.keys()){const n=this._cloneModel(t);e.set(t,n)}return e}#a(){const e=new Map;for(const t of this.#e.values())for(const n of t){const t=this._cloneRelation(n);e.set(n,t)}return e}#i(e){let t=this.#e.get(e);return void 0===t&&(t=[],this.#e.set(e,t)),t}#o(e,t){let n=this.#t[e].get(t);return void 0===n&&(n=[],this.#t[e].set(t,n)),n}#d(e,t){const n=t.get(e);if(void 0===n)throw new Error("Expecting model to be cloned, none found");return n}#l(e,t){const n=t.get(e);if(void 0===n)throw new Error("Expecting relation to be cloned, none found");return n}#c(e,t,n){for(const[i,o]of e){const e=new Array;for(const t of o)e.push(this.#d(t,n));t.set(i,e)}}#s(e,t,n,i){for(const[o,r]of e){const e=new Array;for(const t of r)e.push(this.#l(t,i));t.set(this.#d(o,n),e)}}#u(e,t){for(const n of Reflect.ownKeys(t))this.#p(e,n,t[n])}#p(e,t,n){const i=this.#t[t].get(n);if(void 0!==i){const o=i.indexOf(e);-1!==o&&i.splice(o,1),0===i.length&&this.#t[t].delete(n)}}}var f,g,h;!function(e){e.moduleId="moduleId",e.serviceId="serviceId"}(f||(f={}));class m{#f;#g;constructor(e,t){this.#f=t??new p({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#g=e}static build(e){return new m(e)}add(e,t){this.#f.add(e,t)}clone(){return new m(this.#g,this.#f.clone())}get(e){const t=[],n=this.#f.get(f.serviceId,e);void 0!==n&&t.push(n);const i=this.#g?.get(e);if(void 0!==i&&t.push(i),0!==t.length)return l(...t)}removeAllByModuleId(e){this.#f.removeByRelation(f.moduleId,e)}removeAllByServiceId(e){this.#f.removeByRelation(f.serviceId,e)}}function v(e){return e.isRight?{isRight:!0,value:e.value}:e}function y(e){switch(e.type){case d.ConstantValue:case d.DynamicValue:return function(e){return{cache:v(e.cache),id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type,value:e.value}}(e);case d.Factory:return function(e){return{cache:v(e.cache),factory:e.factory,id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case d.Instance:return function(e){return{cache:v(e.cache),id:e.id,implementationType:e.implementationType,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case d.Provider:return function(e){return{cache:v(e.cache),id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,provider:e.provider,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case d.ResolvedValue:return function(e){return{cache:v(e.cache),factory:e.factory,id:e.id,isSatisfiedBy:e.isSatisfiedBy,metadata:e.metadata,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case d.ServiceRedirection:return function(e){return{id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,serviceIdentifier:e.serviceIdentifier,targetServiceIdentifier:e.targetServiceIdentifier,type:e.type}}(e)}}!function(e){e.id="id",e.moduleId="moduleId",e.serviceId="serviceId"}(g||(g={}));class M extends p{_buildNewInstance(e){return new M(e)}_cloneModel(e){return y(e)}}class I{#h;#g;constructor(e,t){this.#h=t??new M({id:{isOptional:!1},moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#g=e}static build(e){return new I(e)}clone(){return new I(this.#g,this.#h.clone())}get(e){return this.getNonParentBindings(e)??this.#g?.get(e)}getBoundServices(){const e=new Set(this.#h.getAllKeys(g.serviceId));if(void 0!==this.#g)for(const t of this.#g.getBoundServices())e.add(t);return e}getById(e){return this.#h.get(g.id,e)??this.#g?.getById(e)}getByModuleId(e){return this.#h.get(g.moduleId,e)??this.#g?.getByModuleId(e)}getNonParentBindings(e){return this.#h.get(g.serviceId,e)}getNonParentBoundServices(){return this.#h.getAllKeys(g.serviceId)}removeById(e){this.#h.removeByRelation(g.id,e)}removeAllByModuleId(e){this.#h.removeByRelation(g.moduleId,e)}removeAllByServiceId(e){this.#h.removeByRelation(g.serviceId,e)}set(e){const t={[g.id]:e.id,[g.serviceId]:e.serviceIdentifier};void 0!==e.moduleId&&(t[g.moduleId]=e.moduleId),this.#h.add(e,t)}}!function(e){e.moduleId="moduleId",e.serviceId="serviceId"}(h||(h={}));class w{#m;#g;constructor(e,t){this.#m=t??new p({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#g=e}static build(e){return new w(e)}add(e,t){this.#m.add(e,t)}clone(){return new w(this.#g,this.#m.clone())}get(e){const t=[],n=this.#m.get(h.serviceId,e);void 0!==n&&t.push(n);const i=this.#g?.get(e);if(void 0!==i&&t.push(i),0!==t.length)return l(...t)}removeAllByModuleId(e){this.#m.removeByRelation(h.moduleId,e)}removeAllByServiceId(e){this.#m.removeByRelation(h.serviceId,e)}}function b(e,t,n){const i=Array.isArray(e)?e:[e];if(void 0!==n)if("number"!=typeof n)Reflect.decorate(i,t.prototype,n);else for(const e of i)e(t,void 0,n);else Reflect.decorate(i,t)}const S="@inversifyjs/core/classMetadataReflectKey";function j(){return{constructorArguments:[],lifecycle:{postConstructMethodName:void 0,preDestroyMethodName:void 0},properties:new Map,scope:void 0}}const R="@inversifyjs/core/pendingClassMetadataCountReflectKey";const T=Symbol.for("@inversifyjs/core/InversifyCoreError");class A extends Error{[T];kind;constructor(e,t,n){super(t,n),this[T]=!0,this.kind=e}static is(e){return"object"==typeof e&&null!==e&&!0===e[T]}static isErrorOfKind(e,t){return A.is(e)&&e.kind===t}}var C,B,$;function x(t){const n=e(t,S)??j();if(!function(t){const n=e(t,R);return void 0!==n&&0!==n}(t))return function(e,t){const n=[];if(t.length<e.length)throw new A(C.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}". "${e.name}" constructor requires at least ${e.length.toString()} arguments, found ${t.length.toString()} instead.\nAre you using @inject, @multiInject or @unmanaged decorators in every non optional constructor argument?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`);for(let e=0;e<t.length;++e)void 0===t[e]&&n.push(e);if(n.length>0)throw new A(C.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}" at constructor indexes "${n.join('", "')}".\n\nAre you using @inject, @multiInject or @unmanaged decorators at those indexes?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`)}(t,n.constructorArguments),n;!function(e,t){const n=[];for(let i=0;i<t.constructorArguments.length;++i){const o=t.constructorArguments[i];void 0!==o&&o.kind!==B.unknown||n.push(` - Missing or incomplete metadata for type "${e.name}" at constructor argument with index ${i.toString()}.\nEvery constructor parameter must be decorated either with @inject, @multiInject or @unmanaged decorator.`)}for(const[i,o]of t.properties)o.kind===B.unknown&&n.push(` - Missing or incomplete metadata for type "${e.name}" at property "${i.toString()}".\nThis property must be decorated either with @inject or @multiInject decorator.`);if(0===n.length)throw new A(C.unknown,`Unexpected class metadata for type "${e.name}" with uncompletion traces.\nThis might be caused by one of the following reasons:\n\n1. A third party library is targeting inversify reflection metadata.\n2. A bug is causing the issue. Consider submiting an issue to fix it.`);throw new A(C.missingInjectionDecorator,`Invalid class metadata at type ${e.name}:\n\n${n.join("\n\n")}`)}(t,n)}function D(){return 0}function k(e){return t=>{void 0!==t&&t.kind===B.unknown&&n(e,R,D,e=>e-1)}}function P(e,t){return(...n)=>i=>{if(void 0===i)return e(...n);if(i.kind===$.unmanaged)throw new A(C.injectionDecoratorConflict,"Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found");return t(i,...n)}}function O(e){if(e.kind!==B.unknown&&!0!==e.isFromTypescriptParamType)throw new A(C.injectionDecoratorConflict,"Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found")}!function(e){e[e.injectionDecoratorConflict=0]="injectionDecoratorConflict",e[e.missingInjectionDecorator=1]="missingInjectionDecorator",e[e.planning=2]="planning",e[e.resolution=3]="resolution",e[e.unknown=4]="unknown"}(C||(C={})),function(e){e[e.unknown=32]="unknown"}(B||(B={})),function(e){e[e.multipleInjection=0]="multipleInjection",e[e.singleInjection=1]="singleInjection",e[e.unmanaged=2]="unmanaged"}($||($={}));const V=P(function(e,t){return{kind:e,name:void 0,optional:!1,tags:new Map,value:t}},function(e,t,n){return O(e),{...e,kind:t,value:n}});function F(e,t){return n=>{const i=n.properties.get(t);return n.properties.set(t,e(i)),n}}var E;function N(e,t,n,i){if(A.isErrorOfKind(i,C.injectionDecoratorConflict)){const o=function(e,t,n){if(void 0===n){if(void 0===t)throw new A(C.unknown,"Unexpected undefined property and index values");return{kind:E.property,property:t,targetClass:e.constructor}}return"number"==typeof n?{index:n,kind:E.parameter,targetClass:e}:{kind:E.method,method:t,targetClass:e}}(e,t,n);throw new A(C.injectionDecoratorConflict,`Unexpected injection error.\n\nCause:\n\n${i.message}\n\nDetails\n\n${function(e){switch(e.kind){case E.method:return`[class: "${e.targetClass.name}", method: "${e.method.toString()}"]`;case E.parameter:return`[class: "${e.targetClass.name}", index: "${e.index.toString()}"]`;case E.property:return`[class: "${e.targetClass.name}", property: "${e.property.toString()}"]`}}(o)}`,{cause:i})}throw i}function U(e,t){return(i,o,r)=>{try{void 0===r?function(e,t){const i=K(e,t);return(e,t)=>{n(e.constructor,S,j,F(i(e),t))}}(e,t)(i,o):"number"==typeof r?function(e,t){const i=K(e,t);return(e,t,o)=>{if(!function(e,t){return"function"==typeof e&&void 0===t}(e,t))throw new A(C.injectionDecoratorConflict,`Found an @inject decorator in a non constructor parameter.\nFound @inject decorator at method "${t?.toString()??""}" at class "${e.constructor.name}"`);n(e,S,j,function(e,t){return n=>{const i=n.constructorArguments[t];return n.constructorArguments[t]=e(i),n}}(i(e),o))}}(e,t)(i,o,r):function(e,t){const i=K(e,t);return(e,t,o)=>{if(!function(e){return void 0!==e.set}(o))throw new A(C.injectionDecoratorConflict,`Found an @inject decorator in a non setter property method.\nFound @inject decorator at method "${t.toString()}" at class "${e.constructor.name}"`);n(e.constructor,S,j,F(i(e),t))}}(e,t)(i,o,r)}catch(e){N(i,o,r,e)}}}function K(e,t){return n=>{const i=t(n);return t=>(i(t),e(t))}}function _(e){return U(V($.singleInjection,e),k)}!function(e){e[e.method=0]="method",e[e.parameter=1]="parameter",e[e.property=2]="property"}(E||(E={}));const q="@inversifyjs/core/classIsInjectableFlagReflectKey";const z=[Array,BigInt,Boolean,Function,Number,Object,String];function G(t){const i=e(t,"design:paramtypes");void 0!==i&&n(t,S,j,function(e){return t=>(e.forEach((e,n)=>{var i;void 0!==t.constructorArguments[n]||(i=e,z.includes(i))||(t.constructorArguments[n]=function(e){return{isFromTypescriptParamType:!0,kind:$.singleInjection,name:void 0,optional:!1,tags:new Map,value:e}}(e))}),t)}(i))}function L(i){return o=>{!function(n){if(void 0!==e(n,q))throw new A(C.injectionDecoratorConflict,`Cannot apply @injectable decorator multiple times at class "${n.name}"`);t(n,q,!0)}(o),G(o),void 0!==i&&n(o,S,j,e=>({...e,scope:i}))}}function W(e,t,n){let i;return e.extendConstructorArguments??!0?(i=[...t.constructorArguments],n.constructorArguments.map((e,t)=>{i[t]=e})):i=n.constructorArguments,i}function X(e,t,n){let i;return i=e.extendProperties??!0?new Map(l(t.properties,n.properties)):n.properties,i}function H(e){return t=>{const i=x(e.type);n(t,S,j,function(e,t){const n=n=>({constructorArguments:W(e,t,n),lifecycle:n.lifecycle,properties:X(e,t,n),scope:n.scope});return n}(e,i))}}function J(e){return t=>{const n=i(t);if(void 0===n)throw new A(C.injectionDecoratorConflict,`Expected base type for type "${t.name}", none found.`);H({...e,type:n})(t)}}function Q(e){return U(V($.multipleInjection,e),k)}function Y(e){return t=>{void 0===t&&n(e,R,D,e=>e+1)}}function Z(e){return t=>{const n=t??{kind:B.unknown,name:void 0,optional:!1,tags:new Map};if(n.kind===$.unmanaged)throw new A(C.injectionDecoratorConflict,"Unexpected injection found. Found @unmanaged injection with additional @named, @optional, @tagged or @targetName injections");return e(n)}}function ee(e){const t=Z(function(e){return t=>{if(void 0!==t.name)throw new A(C.injectionDecoratorConflict,"Unexpected duplicated named decorator");return t.name=e,t}}(e));return U(t,Y)}function te(e){if(e.optional)throw new A(C.injectionDecoratorConflict,"Unexpected duplicated optional decorator");return e.optional=!0,e}function ne(){return U(Z(te),Y)}function ie(){return(e,t,i)=>{try{n(e.constructor,S,j,(o=t,e=>{if(void 0!==e.lifecycle.postConstructMethodName)throw new A(C.injectionDecoratorConflict,"Unexpected duplicated postConstruct decorator");return e.lifecycle.postConstructMethodName=o,e}))}catch(n){N(e,t,void 0,n)}var o}}function oe(){return(e,t,i)=>{try{n(e.constructor,S,j,(o=t,e=>{if(void 0!==e.lifecycle.preDestroyMethodName)throw new A(C.injectionDecoratorConflict,"Unexpected duplicated preDestroy decorator");return e.lifecycle.preDestroyMethodName=o,e}))}catch(n){N(e,t,void 0,n)}var o}}function re(e,t){const n=Z(function(e,t){return n=>{if(n.tags.has(e))throw new A(C.injectionDecoratorConflict,"Unexpected duplicated tag decorator with existing tag");return n.tags.set(e,t),n}}(e,t));return U(n,Y)}function ae(){return{kind:$.unmanaged}}const se=P(ae,function(e){if(O(e),function(e){return void 0!==e.name||e.optional||e.tags.size>0}(e))throw new A(C.injectionDecoratorConflict,"Unexpected injection found. Found @unmanaged injection with additional @named, @optional, @tagged or @targetName injections");return ae()});function ce(){return U(se(),k)}var ue;!function(e){e[e.multipleInjection=0]="multipleInjection",e[e.singleInjection=1]="singleInjection"}(ue||(ue={}));class de{#v;constructor(e){this.#v=e}get name(){return this.#v.elem.name}get serviceIdentifier(){return this.#v.elem.serviceIdentifier}get tags(){return this.#v.elem.tags}getAncestor(){if(void 0!==this.#v.previous)return new de(this.#v.previous)}}class le{last;constructor(e){this.last=e}concat(e){return new le({elem:e,previous:this.last})}[Symbol.iterator](){let e=this.last;return{next:()=>{if(void 0===e)return{done:!0,value:void 0};const t=e.elem;return e=e.previous,{done:!1,value:t}}}}}function pe(e,t,n){const i=n?.customServiceIdentifier??t.serviceIdentifier,o=[...e.getBindings(i)??[]].filter(e=>e.isSatisfiedBy(t));if(0===o.length&&void 0!==e.autobindOptions&&"function"==typeof i){const t=function(e,t){const n=x(t),i=n.scope??e.scope;return{cache:{isRight:!1,value:void 0},id:c(),implementationType:t,isSatisfiedBy:()=>!0,moduleId:void 0,onActivation:void 0,onDeactivation:void 0,scope:i,serviceIdentifier:t,type:d.Instance}}(e.autobindOptions,i);e.setBinding(t),o.push(t)}return o}function fe(e){return void 0!==e.redirections}function ge(e,t,n,i){let r,a;fe(n)?(r=n.binding.targetServiceIdentifier,a=n.binding.serviceIdentifier):(r=n.serviceIdentifier,a=n.parent?.binding.serviceIdentifier),Array.isArray(e)?function(e,t,n,i,r){if(0!==e.length){const t=`Ambiguous bindings found for service: "${o(n)}".\n\nRegistered bindings:\n\n${e.map(e=>function(e){switch(e.type){case d.Instance:return`[ type: "${e.type}", serviceIdentifier: "${o(e.serviceIdentifier)}", scope: "${e.scope}", implementationType: "${e.implementationType.name}" ]`;case d.ServiceRedirection:return`[ type: "${e.type}", serviceIdentifier: "${o(e.serviceIdentifier)}", redirection: "${o(e.targetServiceIdentifier)}" ]`;default:return`[ type: "${e.type}", serviceIdentifier: "${o(e.serviceIdentifier)}", scope: "${e.scope}" ]`}}(e.binding)).join("\n")}\n\nTrying to resolve bindings for "${me(n,i)}".\n\n${ve(r)}`;throw new A(C.planning,t)}t||he(n,i,r)}(e,t,r,a,i):function(e,t,n,i,o){if(void 0!==e||t)return;he(n,i,o)}(e,t,r,a,i)}function he(e,t,n){const i=`No bindings found for service: "${o(e)}".\n\nTrying to resolve bindings for "${me(e,t)}".\n\n${ve(n)}`;throw new A(C.planning,i)}function me(e,t){return void 0===t?`${o(e)} (Root service)`:o(t)}function ve(e){const t=0===e.tags.size?"":`\n- tags:\n - ${[...e.tags.keys()].map(e=>e.toString()).join("\n - ")}`;return`Binding constraints:\n- service identifier: ${o(e.serviceIdentifier)}\n- name: ${e.name?.toString()??"-"}${t}`}function ye(e,t,n){if(1===e.redirections.length){const[i]=e.redirections;return void(fe(i)&&ye(i,t,n))}ge(e.redirections,t,e,n)}function Me(e,t,n){if(Array.isArray(e.bindings)&&1===e.bindings.length){const[i]=e.bindings;return void(fe(i)&&ye(i,t,n))}ge(e.bindings,t,e,n)}function Ie(e,t){if(function(e){return e instanceof Error&&(e instanceof RangeError&&/stack space|call stack|too much recursion/i.test(e.message)||"InternalError"===e.name&&/too much recursion/.test(e.message))}(t)){const n=function(e){const t=[...e];if(0===t.length)return"(No dependency trace)";return t.map(o).join(" -> ")}(function(e){const t=new Set;for(const n of e.servicesBranch){if(t.has(n))return[...t,n];t.add(n)}return[...t]}(e));throw new A(C.planning,`Circular dependency found: ${n}`,{cause:t})}throw t}function we(e){try{const t=new Map;void 0!==e.rootConstraints.tag&&t.set(e.rootConstraints.tag.key,e.rootConstraints.tag.value);const n=new le({elem:{name:e.rootConstraints.name,serviceIdentifier:e.rootConstraints.serviceIdentifier,tags:t},previous:void 0}),i=new de(n.last),o=pe(e,i),r=[],a={bindings:r,parent:void 0,serviceIdentifier:e.rootConstraints.serviceIdentifier};if(r.push(...Te(e,n,o,a)),!e.rootConstraints.isMultiple){Me(a,e.rootConstraints.isOptional??!1,i);const[t]=r;a.bindings=t}return{tree:{root:a}}}catch(t){Ie(e,t)}}function be(e,t,n,i){const o={binding:t,classMetadata:e.getClassMetadata(t.implementationType),constructorParams:[],parent:i,propertyParams:new Map};return Ce({autobindOptions:e.autobindOptions,getBindings:e.getBindings,getClassMetadata:e.getClassMetadata,node:o,servicesBranch:e.servicesBranch,setBinding:e.setBinding},n)}function Se(e,t,n){if(n.kind===$.unmanaged)return;const i=r.is(n.value)?n.value.unwrap():n.value,o=t.concat({name:n.name,serviceIdentifier:i,tags:n.tags}),a=new de(o.last),s=pe(e,a),c=[],u={bindings:c,parent:e.node,serviceIdentifier:i};if(c.push(...Te(e,o,s,u)),n.kind===$.singleInjection){Me(u,n.optional,a);const[e]=c;u.bindings=e}return u}function je(e,t,n){const i=r.is(n.value)?n.value.unwrap():n.value,o=t.concat({name:n.name,serviceIdentifier:i,tags:n.tags}),a=new de(o.last),s=pe(e,a),c=[],u={bindings:c,parent:e.node,serviceIdentifier:i};if(c.push(...Te(e,o,s,u)),n.kind===ue.singleInjection){Me(u,n.optional,a);const[e]=c;u.bindings=e}return u}function Re(e,t,n,i){const o={binding:t,params:[],parent:i};return Ce({autobindOptions:e.autobindOptions,getBindings:e.getBindings,getClassMetadata:e.getClassMetadata,node:o,servicesBranch:e.servicesBranch,setBinding:e.setBinding},n)}function Te(e,t,n,i){const o=fe(i)?i.binding.targetServiceIdentifier:i.serviceIdentifier;e.servicesBranch.push(o);const r=[];for(const o of n)switch(o.type){case d.Instance:r.push(be(e,o,t,i));break;case d.ResolvedValue:r.push(Re(e,o,t,i));break;case d.ServiceRedirection:{const n=Ae(e,t,o,i);r.push(n);break}default:r.push({binding:o,parent:i})}return e.servicesBranch.pop(),r}function Ae(e,t,n,i){const o={binding:n,parent:i,redirections:[]},r=pe(e,new de(t.last),{customServiceIdentifier:n.targetServiceIdentifier});return o.redirections.push(...Te(e,t,r,o)),o}function Ce(e,t){return e.node.binding.type===d.Instance?function(e,t,n){const i=t.classMetadata;for(const[o,r]of i.constructorArguments.entries())t.constructorParams[o]=Se(e,n,r);for(const[o,r]of i.properties){const i=Se(e,n,r);void 0!==i&&t.propertyParams.set(o,i)}return e.node}(e,e.node,t):function(e,t,n){const i=t.binding.metadata;for(const[o,r]of i.arguments.entries())t.params[o]=je(e,n,r);return e.node}(e,e.node,t)}class Be{#y;#M;#I;constructor(){this.#y=[],this.#M=8,this.#I=1024}*[Symbol.iterator](){let e=0;for(const t of this.#y){const n=t.deref();void 0===n?++e:yield n}this.#y.length>=this.#M&&this.#w(e)&&this.#b(e)}push(e){const t=new WeakRef(e);if(this.#y.push(t),this.#y.length>=this.#M&&this.#y.length%this.#I===0){let e=0;for(const t of this.#y)void 0===t.deref()&&++e;this.#w(e)&&this.#b(e)}}#b(e){const t=new Array(this.#y.length-e);let n=0;for(const e of this.#y)e.deref()&&(t[n++]=e);this.#y=t}#w(e){return e>=.5*this.#y.length}}var $e;!function(e){e[e.singleMandatory=0]="singleMandatory",e[e.singleOptional=1]="singleOptional",e[e.multipleMandatory=2]="multipleMandatory",e[e.multipleOptional=3]="multipleOptional",e[e.length=4]="length"}($e||($e={}));class xe{#S;#j;#R;#T;#A;constructor(){this.#S=this.#C(),this.#j=this.#C(),this.#R=this.#C(),this.#T=this.#C(),this.#A=new Be}clearCache(){for(const e of this.#B())e.clear();for(const e of this.#A)e.clearCache()}get(e){return void 0===e.name?void 0===e.tag?this.#$(this.#S,e).get(e.serviceIdentifier):this.#$(this.#T,e).get(e.serviceIdentifier)?.get(e.tag.key)?.get(e.tag.value):void 0===e.tag?this.#$(this.#j,e).get(e.serviceIdentifier)?.get(e.name):this.#$(this.#R,e).get(e.serviceIdentifier)?.get(e.name)?.get(e.tag.key)?.get(e.tag.value)}set(e,t){void 0===e.name?void 0===e.tag?this.#$(this.#S,e).set(e.serviceIdentifier,t):this.#x(this.#x(this.#$(this.#T,e),e.serviceIdentifier),e.tag.key).set(e.tag.value,t):void 0===e.tag?this.#x(this.#$(this.#j,e),e.serviceIdentifier).set(e.name,t):this.#x(this.#x(this.#x(this.#$(this.#R,e),e.serviceIdentifier),e.name),e.tag.key).set(e.tag.value,t)}subscribe(e){this.#A.push(e)}#C(){const e=new Array($e.length);for(let t=0;t<e.length;++t)e[t]=new Map;return e}#x(e,t){let n=e.get(t);return void 0===n&&(n=new Map,e.set(t,n)),n}#$(e,t){return e[this.#D(t)]}#B(){return[...this.#S,...this.#j,...this.#R,...this.#T]}#D(e){return e.isMultiple?!0===e.optional?$e.multipleOptional:$e.multipleMandatory:!0===e.optional?$e.singleOptional:$e.singleMandatory}}function De(e,t){return a(t)?(e.cache={isRight:!0,value:t},t.then(t=>ke(e,t))):ke(e,t)}function ke(e,t){return e.cache={isRight:!0,value:t},t}function Pe(e,t,n){const i=e.getActivations(t);return void 0===i?n:a(n)?Oe(e,n,i[Symbol.iterator]()):function(e,t,n){let i=t,o=n.next();for(;!0!==o.done;){const t=o.value(e.context,i);if(a(t))return Oe(e,t,n);i=t,o=n.next()}return i}(e,n,i[Symbol.iterator]())}async function Oe(e,t,n){let i=await t,o=n.next();for(;!0!==o.done;)i=await o.value(e.context,i),o=n.next();return i}function Ve(e,t,n){let i=n;if(void 0!==t.onActivation){const n=t.onActivation;i=a(i)?i.then(t=>n(e.context,t)):n(e.context,i)}return Pe(e,t.serviceIdentifier,i)}function Fe(e){return(t,n)=>{if(n.cache.isRight)return n.cache.value;return De(n,Ve(t,n,e(t,n)))}}const Ee=Fe(function(e,t){return t.value});function Ne(e){return e}function Ue(e,t){return(n,i)=>{const o=e(i);switch(o.scope){case u.Singleton:if(o.cache.isRight)return o.cache.value;return De(o,Ve(n,o,t(n,i)));case u.Request:{if(n.requestScopeCache.has(o.id))return n.requestScopeCache.get(o.id);const e=Ve(n,o,t(n,i));return n.requestScopeCache.set(o.id,e),e}case u.Transient:return Ve(n,o,t(n,i))}}}const Ke=(e=>Ue(Ne,e))(function(e,t){return t.value(e.context)});const _e=Fe(function(e,t){return t.factory(e.context)});function qe(e,t,n){const i=function(e,t,n){if(void 0===n)return;if(!(n in e))throw new A(C.resolution,`Expecting a "${n.toString()}" property when resolving "${t.implementationType.name}" class @postConstruct decorated method, none found.`);if("function"!=typeof e[n])throw new A(C.resolution,`Expecting a "${n.toString()}" method when resolving "${t.implementationType.name}" class @postConstruct decorated method, a non function property was found instead.`);{let i;try{i=e[n]()}catch(e){throw new A(C.resolution,`Unexpected error found when calling "${n.toString()}" @postConstruct decorated method on class "${t.implementationType.name}"`,{cause:e})}if(a(i))return async function(e,t,n){try{await n}catch(n){throw new A(C.resolution,`Unexpected error found when calling "${t.toString()}" @postConstruct decorated method on class "${e.implementationType.name}"`,{cause:n})}}(t,n,i)}}(e,t,n);return a(i)?i.then(()=>e):e}function ze(e){return(t,n,i)=>{const o=new i.binding.implementationType(...t),r=e(n,o,i);return a(r)?r.then(()=>qe(o,i.binding,i.classMetadata.lifecycle.postConstructMethodName)):qe(o,i.binding,i.classMetadata.lifecycle.postConstructMethodName)}}const Ge=Fe(function(e,t){return t.provider(e.context)});function Le(e){return e.binding}function We(e){return e.binding}const Xe=function(e){return(t,n,i)=>{const o=[];for(const[r,s]of i.propertyParams){const c=i.classMetadata.properties.get(r);if(void 0===c)throw new A(C.resolution,`Expecting metadata at property "${r.toString()}", none found`);c.kind!==$.unmanaged&&void 0!==s.bindings&&(n[r]=e(t,s),a(n[r])&&o.push((async()=>{n[r]=await n[r]})()))}if(o.length>0)return Promise.all(o).then(()=>{})}}(nt),He=function(e){return function t(n,i){const o=[];for(const r of i.redirections)fe(r)?o.push(...t(n,r)):o.push(e(n,r));return o}}(tt),Je=function(e,t,n){return(i,o)=>{const r=e(i,o);return a(r)?t(r,i,o):n(r,i,o)}}(function(e){return(t,n)=>{const i=[];for(const o of n.constructorParams)void 0===o?i.push(void 0):i.push(e(t,o));return i.some(a)?Promise.all(i):i}}(nt),function(e){return async(t,n,i)=>{const o=await t;return e(o,n,i)}}(ze(Xe)),ze(Xe)),Qe=function(e){return(t,n)=>{const i=e(t,n);return a(i)?i.then(e=>n.binding.factory(...e)):n.binding.factory(...i)}}(function(e){return(t,n)=>{const i=[];for(const o of n.params)i.push(e(t,o));return i.some(a)?Promise.all(i):i}}(nt)),Ye=(e=>Ue(Le,e))(Je),Ze=(e=>Ue(We,e))(Qe);function et(e){return nt(e,e.planResult.tree.root)}function tt(e,t){switch(t.binding.type){case d.ConstantValue:return Ee(e,t.binding);case d.DynamicValue:return Ke(e,t.binding);case d.Factory:return _e(e,t.binding);case d.Instance:return Ye(e,t);case d.Provider:return Ge(e,t.binding);case d.ResolvedValue:return Ze(e,t)}}function nt(e,t){if(void 0!==t.bindings)return Array.isArray(t.bindings)?function(e,t){const n=[];for(const i of t)fe(i)?n.push(...He(e,i)):n.push(tt(e,i));if(n.some(a))return Promise.all(n);return n}(e,t.bindings):function(e,t){if(fe(t)){const n=He(e,t);if(1===n.length)return n[0];throw new A(C.resolution,"Unexpected multiple resolved values on single injection")}return tt(e,t)}(e,t.bindings)}function it(e){return void 0!==e.scope}function ot(e,t){if(void 0!==e.lifecycle.preDestroyMethodName&&"function"==typeof t[e.lifecycle.preDestroyMethodName])return t[e.lifecycle.preDestroyMethodName]()}function rt(e,t,n){const i=e.getDeactivations(t);if(void 0!==i)return a(n)?at(n,i[Symbol.iterator]()):function(e,t){let n=t.next();for(;!0!==n.done;){const i=n.value(e);if(a(i))return at(e,t);n=t.next()}}(n,i[Symbol.iterator]())}async function at(e,t){const n=await e;let i=t.next();for(;!0!==i.done;)await i.value(n),i=t.next()}function st(e,t){const n=function(e,t){if(t.type===d.Instance){const n=e.getClassMetadata(t.implementationType),i=t.cache.value;return a(i)?i.then(e=>ot(n,e)):ot(n,i)}}(e,t);return void 0===n?ct(e,t):n.then(()=>ct(e,t))}function ct(e,t){const n=t.cache;return a(n.value)?n.value.then(n=>ut(e,t,n)):ut(e,t,n.value)}function ut(e,t,n){let i;if(void 0!==t.onDeactivation){i=(0,t.onDeactivation)(n)}return void 0===i?rt(e,t.serviceIdentifier,n):i.then(()=>rt(e,t.serviceIdentifier,n))}function dt(e,t){if(void 0===t)return;const n=function(e){const t=[];for(const n of e)it(n)&&n.scope===u.Singleton&&n.cache.isRight&&t.push(n);return t}(t),i=[];for(const t of n){const n=st(e,t);void 0!==n&&i.push(n)}return i.length>0?Promise.all(i).then(()=>{}):void 0}function lt(e,t){const n=e.getBindingsFromModule(t);return dt(e,n)}function pt(e,t){const n=e.getBindings(t);return dt(e,n)}export{m as ActivationsService,I as BindingService,$ as ClassElementMetadataKind,w as DeactivationsService,xe as PlanResultCacheService,ue as ResolvedValueElementMetadataKind,u as bindingScopeValues,d as bindingTypeValues,b as decorate,c as getBindingId,x as getClassMetadata,_ as inject,J as injectFromBase,L as injectable,Q as multiInject,ee as named,ne as optional,we as plan,ie as postConstruct,oe as preDestroy,et as resolve,dt as resolveBindingsDeactivations,lt as resolveModuleDeactivations,pt as resolveServiceDeactivations,re as tagged,ce as unmanaged};
|
|
1
|
+
import{getOwnReflectMetadata as e,setReflectMetadata as t,updateOwnReflectMetadata as n}from"@inversifyjs/reflect-metadata-utils";import{getBaseType as i}from"@inversifyjs/prototype-utils";import{stringifyServiceIdentifier as o,LazyServiceIdentifier as r,isPromise as s}from"@inversifyjs/common";const a="@inversifyjs/container/bindingId";function c(){const i=e(Object,a)??0;return i===Number.MAX_SAFE_INTEGER?t(Object,a,Number.MIN_SAFE_INTEGER):n(Object,a,()=>i,e=>e+1),i}const d={Request:"Request",Singleton:"Singleton",Transient:"Transient"},u={ConstantValue:"ConstantValue",DynamicValue:"DynamicValue",Factory:"Factory",Instance:"Instance",Provider:"Provider",ResolvedValue:"ResolvedValue",ServiceRedirection:"ServiceRedirection"};function*l(...e){for(const t of e)yield*t}class p{#e;#t;#n;constructor(e){this.#e=new Map,this.#t={};for(const t of Reflect.ownKeys(e))this.#t[t]=new Map;this.#n=e}add(e,t){this.#i(e).push(t);for(const n of Reflect.ownKeys(t))this.#o(n,t[n]).push(e)}clone(){const e=this.#r(),t=this.#s(),n=Reflect.ownKeys(this.#n),i=this._buildNewInstance(this.#n);this.#a(this.#e,i.#e,e,t);for(const t of n)this.#c(this.#t[t],i.#t[t],e);return i}get(e,t){return this.#t[e].get(t)}getAllKeys(e){return this.#t[e].keys()}removeByRelation(e,t){const n=this.get(e,t);if(void 0===n)return;const i=new Set(n);for(const n of i){const i=this.#e.get(n);if(void 0===i)throw new Error("Expecting model relation, none found");for(const o of i)o[e]===t&&this.#d(n,o);this.#e.delete(n)}}_buildNewInstance(e){return new p(e)}_cloneModel(e){return e}_cloneRelation(e){return e}#r(){const e=new Map;for(const t of this.#e.keys()){const n=this._cloneModel(t);e.set(t,n)}return e}#s(){const e=new Map;for(const t of this.#e.values())for(const n of t){const t=this._cloneRelation(n);e.set(n,t)}return e}#i(e){let t=this.#e.get(e);return void 0===t&&(t=[],this.#e.set(e,t)),t}#o(e,t){let n=this.#t[e].get(t);return void 0===n&&(n=[],this.#t[e].set(t,n)),n}#u(e,t){const n=t.get(e);if(void 0===n)throw new Error("Expecting model to be cloned, none found");return n}#l(e,t){const n=t.get(e);if(void 0===n)throw new Error("Expecting relation to be cloned, none found");return n}#c(e,t,n){for(const[i,o]of e){const e=new Array;for(const t of o)e.push(this.#u(t,n));t.set(i,e)}}#a(e,t,n,i){for(const[o,r]of e){const e=new Array;for(const t of r)e.push(this.#l(t,i));t.set(this.#u(o,n),e)}}#d(e,t){for(const n of Reflect.ownKeys(t))this.#p(e,n,t[n])}#p(e,t,n){const i=this.#t[t].get(n);if(void 0!==i){const o=i.indexOf(e);-1!==o&&i.splice(o,1),0===i.length&&this.#t[t].delete(n)}}}var f,v,h;!function(e){e.moduleId="moduleId",e.serviceId="serviceId"}(f||(f={}));class g{#f;#v;constructor(e,t){this.#f=t??new p({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#v=e}static build(e){return new g(e)}add(e,t){this.#f.add(e,t)}clone(){return new g(this.#v,this.#f.clone())}get(e){const t=[],n=this.#f.get(f.serviceId,e);void 0!==n&&t.push(n);const i=this.#v?.get(e);if(void 0!==i&&t.push(i),0!==t.length)return l(...t)}removeAllByModuleId(e){this.#f.removeByRelation(f.moduleId,e)}removeAllByServiceId(e){this.#f.removeByRelation(f.serviceId,e)}}function m(e){return e.isRight?{isRight:!0,value:e.value}:e}function y(e){switch(e.type){case u.ConstantValue:case u.DynamicValue:return function(e){return{cache:m(e.cache),id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type,value:e.value}}(e);case u.Factory:return function(e){return{cache:m(e.cache),factory:e.factory,id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case u.Instance:return function(e){return{cache:m(e.cache),id:e.id,implementationType:e.implementationType,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case u.Provider:return function(e){return{cache:m(e.cache),id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,provider:e.provider,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case u.ResolvedValue:return function(e){return{cache:m(e.cache),factory:e.factory,id:e.id,isSatisfiedBy:e.isSatisfiedBy,metadata:e.metadata,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case u.ServiceRedirection:return function(e){return{id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,serviceIdentifier:e.serviceIdentifier,targetServiceIdentifier:e.targetServiceIdentifier,type:e.type}}(e)}}!function(e){e.id="id",e.moduleId="moduleId",e.serviceId="serviceId"}(v||(v={}));class M extends p{_buildNewInstance(e){return new M(e)}_cloneModel(e){return y(e)}}class I{#h;#v;constructor(e,t){this.#h=t??new M({id:{isOptional:!1},moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#v=e}static build(e){return new I(e)}clone(){return new I(this.#v,this.#h.clone())}get(e){return this.getNonParentBindings(e)??this.#v?.get(e)}*getChained(e){const t=this.getNonParentBindings(e);void 0!==t&&(yield*t),void 0!==this.#v&&(yield*this.#v.getChained(e))}getBoundServices(){const e=new Set(this.#h.getAllKeys(v.serviceId));if(void 0!==this.#v)for(const t of this.#v.getBoundServices())e.add(t);return e}getById(e){return this.#h.get(v.id,e)??this.#v?.getById(e)}getByModuleId(e){return this.#h.get(v.moduleId,e)??this.#v?.getByModuleId(e)}getNonParentBindings(e){return this.#h.get(v.serviceId,e)}getNonParentBoundServices(){return this.#h.getAllKeys(v.serviceId)}removeById(e){this.#h.removeByRelation(v.id,e)}removeAllByModuleId(e){this.#h.removeByRelation(v.moduleId,e)}removeAllByServiceId(e){this.#h.removeByRelation(v.serviceId,e)}set(e){const t={[v.id]:e.id,[v.serviceId]:e.serviceIdentifier};void 0!==e.moduleId&&(t[v.moduleId]=e.moduleId),this.#h.add(e,t)}}!function(e){e.moduleId="moduleId",e.serviceId="serviceId"}(h||(h={}));class w{#g;#v;constructor(e,t){this.#g=t??new p({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#v=e}static build(e){return new w(e)}add(e,t){this.#g.add(e,t)}clone(){return new w(this.#v,this.#g.clone())}get(e){const t=[],n=this.#g.get(h.serviceId,e);void 0!==n&&t.push(n);const i=this.#v?.get(e);if(void 0!==i&&t.push(i),0!==t.length)return l(...t)}removeAllByModuleId(e){this.#g.removeByRelation(h.moduleId,e)}removeAllByServiceId(e){this.#g.removeByRelation(h.serviceId,e)}}function b(e,t,n){const i=Array.isArray(e)?e:[e];if(void 0!==n)if("number"!=typeof n)Reflect.decorate(i,t.prototype,n);else for(const e of i)e(t,void 0,n);else Reflect.decorate(i,t)}const S="@inversifyjs/core/classMetadataReflectKey";function C(){return{constructorArguments:[],lifecycle:{postConstructMethodName:void 0,preDestroyMethodName:void 0},properties:new Map,scope:void 0}}const N="@inversifyjs/core/pendingClassMetadataCountReflectKey";const T=Symbol.for("@inversifyjs/core/InversifyCoreError");class j extends Error{[T];kind;constructor(e,t,n){super(t,n),this[T]=!0,this.kind=e}static is(e){return"object"==typeof e&&null!==e&&!0===e[T]}static isErrorOfKind(e,t){return j.is(e)&&e.kind===t}}var A,R,P;function x(t){const n=e(t,S)??C();if(!function(t){const n=e(t,N);return void 0!==n&&0!==n}(t))return function(e,t){const n=[];if(t.length<e.length)throw new j(A.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}". "${e.name}" constructor requires at least ${e.length.toString()} arguments, found ${t.length.toString()} instead.\nAre you using @inject, @multiInject or @unmanaged decorators in every non optional constructor argument?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`);for(let e=0;e<t.length;++e)void 0===t[e]&&n.push(e);if(n.length>0)throw new j(A.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}" at constructor indexes "${n.join('", "')}".\n\nAre you using @inject, @multiInject or @unmanaged decorators at those indexes?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`)}(t,n.constructorArguments),n;!function(e,t){const n=[];for(let i=0;i<t.constructorArguments.length;++i){const o=t.constructorArguments[i];void 0!==o&&o.kind!==R.unknown||n.push(` - Missing or incomplete metadata for type "${e.name}" at constructor argument with index ${i.toString()}.\nEvery constructor parameter must be decorated either with @inject, @multiInject or @unmanaged decorator.`)}for(const[i,o]of t.properties)o.kind===R.unknown&&n.push(` - Missing or incomplete metadata for type "${e.name}" at property "${i.toString()}".\nThis property must be decorated either with @inject or @multiInject decorator.`);if(0===n.length)throw new j(A.unknown,`Unexpected class metadata for type "${e.name}" with uncompletion traces.\nThis might be caused by one of the following reasons:\n\n1. A third party library is targeting inversify reflection metadata.\n2. A bug is causing the issue. Consider submiting an issue to fix it.`);throw new j(A.missingInjectionDecorator,`Invalid class metadata at type ${e.name}:\n\n${n.join("\n\n")}`)}(t,n)}function B(){return 0}function $(e){return t=>{void 0!==t&&t.kind===R.unknown&&n(e,N,B,e=>e-1)}}function D(e,t){return(...n)=>i=>{if(void 0===i)return e(...n);if(i.kind===P.unmanaged)throw new j(A.injectionDecoratorConflict,"Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found");return t(i,...n)}}function k(e){if(e.kind!==R.unknown&&!0!==e.isFromTypescriptParamType)throw new j(A.injectionDecoratorConflict,"Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found")}!function(e){e[e.injectionDecoratorConflict=0]="injectionDecoratorConflict",e[e.missingInjectionDecorator=1]="missingInjectionDecorator",e[e.planning=2]="planning",e[e.resolution=3]="resolution",e[e.unknown=4]="unknown"}(A||(A={})),function(e){e[e.unknown=32]="unknown"}(R||(R={})),function(e){e[e.multipleInjection=0]="multipleInjection",e[e.singleInjection=1]="singleInjection",e[e.unmanaged=2]="unmanaged"}(P||(P={}));const F=D(function(e,t,n){return e===P.multipleInjection?{chained:n?.chained??!1,kind:e,name:void 0,optional:!1,tags:new Map,value:t}:{kind:e,name:void 0,optional:!1,tags:new Map,value:t}},function(e,t,n,i){return k(e),t===P.multipleInjection?{...e,chained:i?.chained??!1,kind:t,value:n}:{...e,kind:t,value:n}});function V(e,t){return n=>{const i=n.properties.get(t);return n.properties.set(t,e(i)),n}}var O;function E(e,t,n,i){if(j.isErrorOfKind(i,A.injectionDecoratorConflict)){const o=function(e,t,n){if(void 0===n){if(void 0===t)throw new j(A.unknown,"Unexpected undefined property and index values");return{kind:O.property,property:t,targetClass:e.constructor}}return"number"==typeof n?{index:n,kind:O.parameter,targetClass:e}:{kind:O.method,method:t,targetClass:e}}(e,t,n);throw new j(A.injectionDecoratorConflict,`Unexpected injection error.\n\nCause:\n\n${i.message}\n\nDetails\n\n${function(e){switch(e.kind){case O.method:return`[class: "${e.targetClass.name}", method: "${e.method.toString()}"]`;case O.parameter:return`[class: "${e.targetClass.name}", index: "${e.index.toString()}"]`;case O.property:return`[class: "${e.targetClass.name}", property: "${e.property.toString()}"]`}}(o)}`,{cause:i})}throw i}function _(e,t){return(i,o,r)=>{try{void 0===r?function(e,t){const i=U(e,t);return(e,t)=>{n(e.constructor,S,C,V(i(e),t))}}(e,t)(i,o):"number"==typeof r?function(e,t){const i=U(e,t);return(e,t,o)=>{if(!function(e,t){return"function"==typeof e&&void 0===t}(e,t))throw new j(A.injectionDecoratorConflict,`Found an @inject decorator in a non constructor parameter.\nFound @inject decorator at method "${t?.toString()??""}" at class "${e.constructor.name}"`);n(e,S,C,function(e,t){return n=>{const i=n.constructorArguments[t];return n.constructorArguments[t]=e(i),n}}(i(e),o))}}(e,t)(i,o,r):function(e,t){const i=U(e,t);return(e,t,o)=>{if(!function(e){return void 0!==e.set}(o))throw new j(A.injectionDecoratorConflict,`Found an @inject decorator in a non setter property method.\nFound @inject decorator at method "${t.toString()}" at class "${e.constructor.name}"`);n(e.constructor,S,C,V(i(e),t))}}(e,t)(i,o,r)}catch(e){E(i,o,r,e)}}}function U(e,t){return n=>{const i=t(n);return t=>(i(t),e(t))}}function z(e){return _(F(P.singleInjection,e),$)}!function(e){e[e.method=0]="method",e[e.parameter=1]="parameter",e[e.property=2]="property"}(O||(O={}));const K="@inversifyjs/core/classIsInjectableFlagReflectKey";const L=[Array,BigInt,Boolean,Function,Number,Object,String];function q(t){const i=e(t,"design:paramtypes");void 0!==i&&n(t,S,C,function(e){return t=>(e.forEach((e,n)=>{var i;void 0!==t.constructorArguments[n]||(i=e,L.includes(i))||(t.constructorArguments[n]=function(e){return{isFromTypescriptParamType:!0,kind:P.singleInjection,name:void 0,optional:!1,tags:new Map,value:e}}(e))}),t)}(i))}function G(i){return o=>{!function(n){if(void 0!==e(n,K))throw new j(A.injectionDecoratorConflict,`Cannot apply @injectable decorator multiple times at class "${n.name}"`);t(n,K,!0)}(o),q(o),void 0!==i&&n(o,S,C,e=>({...e,scope:i}))}}function W(e,t,n){let i;return e.extendConstructorArguments??!0?(i=[...t.constructorArguments],n.constructorArguments.map((e,t)=>{i[t]=e})):i=n.constructorArguments,i}function X(e,t,n){let i;return i=e.extendProperties??!0?new Map(l(t.properties,n.properties)):n.properties,i}function H(e){return t=>{const i=x(e.type);n(t,S,C,function(e,t){const n=n=>({constructorArguments:W(e,t,n),lifecycle:n.lifecycle,properties:X(e,t,n),scope:n.scope});return n}(e,i))}}function J(e){return t=>{const n=i(t);if(void 0===n)throw new j(A.injectionDecoratorConflict,`Expected base type for type "${t.name}", none found.`);H({...e,type:n})(t)}}function Q(e,t){return _(F(P.multipleInjection,e,t),$)}function Y(e){return t=>{void 0===t&&n(e,N,B,e=>e+1)}}function Z(e){return t=>{const n=t??{kind:R.unknown,name:void 0,optional:!1,tags:new Map};if(n.kind===P.unmanaged)throw new j(A.injectionDecoratorConflict,"Unexpected injection found. Found @unmanaged injection with additional @named, @optional, @tagged or @targetName injections");return e(n)}}function ee(e){const t=Z(function(e){return t=>{if(void 0!==t.name)throw new j(A.injectionDecoratorConflict,"Unexpected duplicated named decorator");return t.name=e,t}}(e));return _(t,Y)}function te(e){if(e.optional)throw new j(A.injectionDecoratorConflict,"Unexpected duplicated optional decorator");return e.optional=!0,e}function ne(){return _(Z(te),Y)}function ie(){return(e,t,i)=>{try{n(e.constructor,S,C,(o=t,e=>{if(void 0!==e.lifecycle.postConstructMethodName)throw new j(A.injectionDecoratorConflict,"Unexpected duplicated postConstruct decorator");return e.lifecycle.postConstructMethodName=o,e}))}catch(n){E(e,t,void 0,n)}var o}}function oe(){return(e,t,i)=>{try{n(e.constructor,S,C,(o=t,e=>{if(void 0!==e.lifecycle.preDestroyMethodName)throw new j(A.injectionDecoratorConflict,"Unexpected duplicated preDestroy decorator");return e.lifecycle.preDestroyMethodName=o,e}))}catch(n){E(e,t,void 0,n)}var o}}function re(e,t){const n=Z(function(e,t){return n=>{if(n.tags.has(e))throw new j(A.injectionDecoratorConflict,"Unexpected duplicated tag decorator with existing tag");return n.tags.set(e,t),n}}(e,t));return _(n,Y)}function se(){return{kind:P.unmanaged}}const ae=D(se,function(e){if(k(e),function(e){return void 0!==e.name||e.optional||e.tags.size>0}(e))throw new j(A.injectionDecoratorConflict,"Unexpected injection found. Found @unmanaged injection with additional @named, @optional, @tagged or @targetName injections");return se()});function ce(){return _(ae(),$)}var de;!function(e){e[e.multipleInjection=0]="multipleInjection",e[e.singleInjection=1]="singleInjection"}(de||(de={}));class ue{#m;constructor(e){this.#m=e}get name(){return this.#m.elem.name}get serviceIdentifier(){return this.#m.elem.serviceIdentifier}get tags(){return this.#m.elem.tags}getAncestor(){if(this.#m.elem.getAncestorsCalled=!0,void 0!==this.#m.previous)return new ue(this.#m.previous)}}function le(e,t,n){const i=n?.customServiceIdentifier??t.serviceIdentifier,o=(!0===n?.chained?[...e.operations.getBindingsChained(i)]:[...e.operations.getBindings(i)??[]]).filter(e=>e.isSatisfiedBy(t));if(0===o.length&&void 0!==e.autobindOptions&&"function"==typeof i){const t=function(e,t){const n=x(t),i=n.scope??e.scope;return{cache:{isRight:!1,value:void 0},id:c(),implementationType:t,isSatisfiedBy:()=>!0,moduleId:void 0,onActivation:void 0,onDeactivation:void 0,scope:i,serviceIdentifier:t,type:u.Instance}}(e.autobindOptions,i);e.operations.setBinding(t),o.push(t)}return o}class pe{last;constructor(e){this.last=e}concat(e){return new pe({elem:e,previous:this.last})}[Symbol.iterator](){let e=this.last;return{next:()=>{if(void 0===e)return{done:!0,value:void 0};const t=e.elem;return e=e.previous,{done:!1,value:t}}}}}function fe(e){return void 0!==e.redirections}function ve(e,t,n,i){const r=n.elem.serviceIdentifier,s=n.previous?.elem.serviceIdentifier;Array.isArray(e)?function(e,t,n,i,r,s){if(0!==e.length){const t=s[s.length-1]??n,a=`Ambiguous bindings found for service: "${o(t)}".${ye(s)}\n\nRegistered bindings:\n\n${e.map(e=>function(e){switch(e.type){case u.Instance:return`[ type: "${e.type}", serviceIdentifier: "${o(e.serviceIdentifier)}", scope: "${e.scope}", implementationType: "${e.implementationType.name}" ]`;case u.ServiceRedirection:return`[ type: "${e.type}", serviceIdentifier: "${o(e.serviceIdentifier)}", redirection: "${o(e.targetServiceIdentifier)}" ]`;default:return`[ type: "${e.type}", serviceIdentifier: "${o(e.serviceIdentifier)}", scope: "${e.scope}" ]`}}(e.binding)).join("\n")}\n\nTrying to resolve bindings for "${ge(n,i)}".${me(r)}`;throw new j(A.planning,a)}t||he(n,i,r,s)}(e,t,r,s,n.elem,i):function(e,t,n,i,o,r){void 0!==e||t||he(n,i,o,r)}(e,t,r,s,n.elem,i)}function he(e,t,n,i){const r=i[i.length-1]??e,s=`No bindings found for service: "${o(r)}".\n\nTrying to resolve bindings for "${ge(e,t)}".${ye(i)}${me(n)}`;throw new j(A.planning,s)}function ge(e,t){return void 0===t?`${o(e)} (Root service)`:o(t)}function me(e){const t=0===e.tags.size?"":`\n- tags:\n - ${[...e.tags.keys()].map(e=>e.toString()).join("\n - ")}`;return`\n\nBinding constraints:\n- service identifier: ${o(e.serviceIdentifier)}\n- name: ${e.name?.toString()??"-"}${t}`}function ye(e){return 0===e.length?"":`\n\n- service redirections:\n - ${e.map(e=>o(e)).join("\n - ")}`}function Me(e,t,n,i){if(1===e.redirections.length){const[o]=e.redirections;return void(fe(o)&&Me(o,t,n,[...i,o.binding.targetServiceIdentifier]))}ve(e.redirections,t,n,i)}function Ie(e,t,n){if(Array.isArray(e.bindings)&&1===e.bindings.length){const[i]=e.bindings;return void(fe(i)&&Me(i,t,n,[i.binding.targetServiceIdentifier]))}ve(e.bindings,t,n,[])}function we(e){return r.is(e)?e.unwrap():e}function be(e,t){if(function(e){return e instanceof Error&&(e instanceof RangeError&&/stack space|call stack|too much recursion/i.test(e.message)||"InternalError"===e.name&&/too much recursion/.test(e.message))}(t)){const n=function(e){const t=[...e];if(0===t.length)return"(No dependency trace)";return t.map(o).join(" -> ")}(function(e){const t=new Set;for(const n of e.servicesBranch){if(t.has(n))return[...t,n];t.add(n)}return[...t]}(e));throw new j(A.planning,`Circular dependency found: ${n}`,{cause:t})}throw t}const Se=Symbol.for("@inversifyjs/core/LazyPlanServiceNode");class Ce{[Se];_serviceIdentifier;_serviceNode;constructor(e){this[Se]=!0,this._serviceIdentifier=e.serviceIdentifier,this._serviceNode=e}get bindings(){return this._getNode().bindings}get isContextFree(){return this._getNode().isContextFree}get serviceIdentifier(){return this._serviceIdentifier}set bindings(e){this._getNode().bindings=e}set isContextFree(e){this._getNode().isContextFree=e}static is(e){return"object"==typeof e&&null!==e&&!0===e[Se]}invalidate(){this._serviceNode=void 0}_getNode(){return void 0===this._serviceNode&&(this._serviceNode=this._buildPlanServiceNode()),this._serviceNode}}function Ne(e,t,n){if(void 0!==e&&n.isContextFree){const i={tree:{root:n}};t.setPlan(e,i)}else t.setNonCachedServiceNode(n)}class Te extends Ce{#y;constructor(e,t){super(t),this.#y=e}_buildPlanServiceNode(){return Re(this.#y)}}class je extends Ce{#y;#M;#I;constructor(e,t,n,i){super(i),this.#y=e,this.#M=t,this.#I=n}_buildPlanServiceNode(){return Be(this.#y,this.#M,this.#I)}}class Ae extends Ce{#y;#M;#w;constructor(e,t,n,i){super(i),this.#y=e,this.#M=t,this.#w=n}_buildPlanServiceNode(){return $e(this.#y,this.#M,this.#w)}}function Re(e){const t=function(e){const t=new Map;return void 0!==e.rootConstraints.tag&&t.set(e.rootConstraints.tag.key,e.rootConstraints.tag.value),new pe({elem:{getAncestorsCalled:!1,name:e.rootConstraints.name,serviceIdentifier:e.rootConstraints.serviceIdentifier,tags:t},previous:void 0})}(e),n=new ue(t.last),i=!!e.rootConstraints.isMultiple&&e.rootConstraints.chained,o=le(e,n,{chained:i}),r=[],s={bindings:r,isContextFree:!0,serviceIdentifier:e.rootConstraints.serviceIdentifier};if(r.push(...ke(e,t,o,s,i)),s.isContextFree=!t.last.elem.getAncestorsCalled,!e.rootConstraints.isMultiple){Ie(s,e.rootConstraints.isOptional??!1,t.last);const[n]=r;s.bindings=n}return s}function Pe(e){try{const t=function(e){return e.rootConstraints.isMultiple?{chained:e.rootConstraints.chained,isMultiple:!0,name:e.rootConstraints.name,optional:e.rootConstraints.isOptional??!1,serviceIdentifier:e.rootConstraints.serviceIdentifier,tag:e.rootConstraints.tag}:{isMultiple:!1,name:e.rootConstraints.name,optional:e.rootConstraints.isOptional??!1,serviceIdentifier:e.rootConstraints.serviceIdentifier,tag:e.rootConstraints.tag}}(e),n=e.operations.getPlan(t);if(void 0!==n)return n;const i=Re(e),o={tree:{root:new Te(e,i)}};return e.operations.setPlan(t,o),o}catch(t){be(e,t)}}function xe(e,t,n){const i={binding:t,classMetadata:e.operations.getClassMetadata(t.implementationType),constructorParams:[],propertyParams:new Map};return Ee({autobindOptions:e.autobindOptions,node:i,operations:e.operations,servicesBranch:e.servicesBranch},n)}function Be(e,t,n){const i=we(n.value),o=t.concat({getAncestorsCalled:!1,name:n.name,serviceIdentifier:i,tags:n.tags}),r=new ue(o.last),s=n.kind===P.multipleInjection&&n.chained,a=le(e,r,{chained:s}),c=[],d={bindings:c,isContextFree:!0,serviceIdentifier:i};if(c.push(...ke(e,o,a,d,s)),d.isContextFree=!o.last.elem.getAncestorsCalled,n.kind===P.singleInjection){Ie(d,n.optional,o.last);const[e]=c;d.bindings=e}return d}function $e(e,t,n){const i=we(n.value),o=t.concat({getAncestorsCalled:!1,name:n.name,serviceIdentifier:i,tags:n.tags}),r=new ue(o.last),s=n.kind===de.multipleInjection&&n.chained,a=le(e,r,{chained:s}),c=[],d={bindings:c,isContextFree:!0,serviceIdentifier:i};if(c.push(...ke(e,o,a,d,s)),d.isContextFree=!o.last.elem.getAncestorsCalled,n.kind===de.singleInjection){Ie(d,n.optional,o.last);const[e]=c;d.bindings=e}return d}function De(e,t,n){const i={binding:t,params:[]};return Ee({autobindOptions:e.autobindOptions,node:i,operations:e.operations,servicesBranch:e.servicesBranch},n)}function ke(e,t,n,i,o){const r=fe(i)?i.binding.targetServiceIdentifier:i.serviceIdentifier;e.servicesBranch.push(r);const s=[];for(const i of n)switch(i.type){case u.Instance:s.push(xe(e,i,t));break;case u.ResolvedValue:s.push(De(e,i,t));break;case u.ServiceRedirection:{const n=Fe(e,t,i,o);s.push(n);break}default:s.push({binding:i})}return e.servicesBranch.pop(),s}function Fe(e,t,n,i){const o={binding:n,redirections:[]},r=le(e,new ue(t.last),{chained:i,customServiceIdentifier:n.targetServiceIdentifier});return o.redirections.push(...ke(e,t,r,o,i)),o}function Ve(e,t,n){if(n.kind===P.unmanaged)return;const i=function(e){let t;if(0===e.tags.size)t=void 0;else{if(1!==e.tags.size)return;{const[n,i]=e.tags.entries().next().value;t={key:n,value:i}}}const n=r.is(e.value)?e.value.unwrap():e.value;return e.kind===P.multipleInjection?{chained:e.chained,isMultiple:!0,name:e.name,optional:e.optional,serviceIdentifier:n,tag:t}:{isMultiple:!1,name:e.name,optional:e.optional,serviceIdentifier:n,tag:t}}(n);if(void 0!==i){const t=e.operations.getPlan(i);if(void 0!==t&&t.tree.root.isContextFree)return t.tree.root}const o=Be(e,t,n),s=new je(e,t,n,o);return Ne(i,e.operations,s),s}function Oe(e,t,n){const i=function(e){let t;if(0===e.tags.size)t=void 0;else{if(1!==e.tags.size)return;{const[n,i]=e.tags.entries().next().value;t={key:n,value:i}}}const n=r.is(e.value)?e.value.unwrap():e.value;return e.kind===de.multipleInjection?{chained:e.chained,isMultiple:!0,name:e.name,optional:e.optional,serviceIdentifier:n,tag:t}:{isMultiple:!1,name:e.name,optional:e.optional,serviceIdentifier:n,tag:t}}(n);if(void 0!==i){const t=e.operations.getPlan(i);if(void 0!==t&&t.tree.root.isContextFree)return t.tree.root}const o=$e(e,t,n),s=new Ae(e,t,n,o);return Ne(i,e.operations,s),s}function Ee(e,t){return e.node.binding.type===u.Instance?function(e,t,n){const i=t.classMetadata;for(const[o,r]of i.constructorArguments.entries())t.constructorParams[o]=Ve(e,n,r);for(const[o,r]of i.properties){const i=Ve(e,n,r);void 0!==i&&t.propertyParams.set(o,i)}return e.node}(e,e.node,t):function(e,t,n){const i=t.binding.metadata;for(const[o,r]of i.arguments.entries())t.params[o]=Oe(e,n,r);return e.node}(e,e.node,t)}class _e{#b;#S;#C;constructor(){this.#b=[],this.#S=8,this.#C=1024}*[Symbol.iterator](){let e=0;for(const t of this.#b){const n=t.deref();void 0===n?++e:yield n}this.#b.length>=this.#S&&this.#N(e)&&this.#T(e)}push(e){const t=new WeakRef(e);if(this.#b.push(t),this.#b.length>=this.#S&&this.#b.length%this.#C===0){let e=0;for(const t of this.#b)void 0===t.deref()&&++e;this.#N(e)&&this.#T(e)}}#T(e){const t=new Array(this.#b.length-e);let n=0;for(const e of this.#b)e.deref()&&(t[n++]=e);this.#b=t}#N(e){return e>=.5*this.#b.length}}class Ue{#j;#A;#R;#P;#x;#B;constructor(){this.#j=new Map,this.#A=this.#$(),this.#R=this.#$(),this.#P=this.#$(),this.#x=this.#$(),this.#B=new _e}clearCache(){for(const e of this.#D())e.clear();for(const e of this.#B)e.clearCache()}get(e){return void 0===e.name?void 0===e.tag?this.#k(this.#A,e).get(e.serviceIdentifier):this.#k(this.#x,e).get(e.serviceIdentifier)?.get(e.tag.key)?.get(e.tag.value):void 0===e.tag?this.#k(this.#R,e).get(e.serviceIdentifier)?.get(e.name):this.#k(this.#P,e).get(e.serviceIdentifier)?.get(e.name)?.get(e.tag.key)?.get(e.tag.value)}invalidateService(e){this.#F(e),this.#V(e),this.#O(e),this.#E(e),this.#_(e);for(const t of this.#B)t.invalidateService(e)}set(e,t){void 0===e.name?void 0===e.tag?this.#k(this.#A,e).set(e.serviceIdentifier,t):this.#U(this.#U(this.#k(this.#x,e),e.serviceIdentifier),e.tag.key).set(e.tag.value,t):void 0===e.tag?this.#U(this.#k(this.#R,e),e.serviceIdentifier).set(e.name,t):this.#U(this.#U(this.#U(this.#k(this.#P,e),e.serviceIdentifier),e.name),e.tag.key).set(e.tag.value,t)}setNonCachedServiceNode(e){let t=this.#j.get(e.serviceIdentifier);void 0===t&&(t=new Set,this.#j.set(e.serviceIdentifier,t)),t.add(e)}subscribe(e){this.#B.push(e)}#$(){const e=new Array(8);for(let t=0;t<e.length;++t)e[t]=new Map;return e}#U(e,t){let n=e.get(t);return void 0===n&&(n=new Map,e.set(t,n)),n}#k(e,t){return e[this.#z(t)]}#D(){return[this.#j,...this.#A,...this.#R,...this.#P,...this.#x]}#z(e){return e.isMultiple?(e.chained?4:0)|(e.optional?1:0)|2:e.optional?1:0}#V(e){for(const t of this.#R){const n=t.get(e);if(void 0!==n)for(const e of n.values())Ce.is(e.tree.root)&&(this.#K(e.tree.root),e.tree.root.invalidate())}}#O(e){for(const t of this.#P){const n=t.get(e);if(void 0!==n)for(const e of n.values())for(const t of e.values())for(const e of t.values())Ce.is(e.tree.root)&&(this.#K(e.tree.root),e.tree.root.invalidate())}}#L(e){switch(e.binding.type){case u.ServiceRedirection:for(const t of e.redirections)this.#L(t);break;case u.Instance:for(const t of e.constructorParams)void 0!==t&&this.#q(t);for(const t of e.propertyParams.values())this.#q(t);break;case u.ResolvedValue:for(const t of e.params)this.#q(t)}}#q(e){const t=this.#j.get(e.serviceIdentifier);void 0!==t&&t.has(e)&&(t.delete(e),this.#K(e))}#K(e){if(void 0!==e.bindings)if(Array.isArray(e.bindings))for(const t of e.bindings)this.#L(t);else this.#L(e.bindings)}#_(e){const t=this.#j.get(e);if(void 0!==t)for(const e of t)Ce.is(e)&&(this.#K(e),e.invalidate())}#F(e){for(const t of this.#A){const n=t.get(e);void 0!==n&&Ce.is(n.tree.root)&&(this.#K(n.tree.root),n.tree.root.invalidate())}}#E(e){for(const t of this.#x){const n=t.get(e);if(void 0!==n)for(const e of n.values())for(const t of e.values())Ce.is(t.tree.root)&&(this.#K(t.tree.root),t.tree.root.invalidate())}}}function ze(e,t){return s(t)?(e.cache={isRight:!0,value:t},t.then(t=>Ke(e,t))):Ke(e,t)}function Ke(e,t){return e.cache={isRight:!0,value:t},t}function Le(e,t,n){const i=e.getActivations(t);return void 0===i?n:s(n)?qe(e,n,i[Symbol.iterator]()):function(e,t,n){let i=t,o=n.next();for(;!0!==o.done;){const t=o.value(e.context,i);if(s(t))return qe(e,t,n);i=t,o=n.next()}return i}(e,n,i[Symbol.iterator]())}async function qe(e,t,n){let i=await t,o=n.next();for(;!0!==o.done;)i=await o.value(e.context,i),o=n.next();return i}function Ge(e,t,n){let i=n;if(void 0!==t.onActivation){const n=t.onActivation;i=s(i)?i.then(t=>n(e.context,t)):n(e.context,i)}return Le(e,t.serviceIdentifier,i)}function We(e){return(t,n)=>{if(n.cache.isRight)return n.cache.value;return ze(n,Ge(t,n,e(t,n)))}}const Xe=We(function(e,t){return t.value});function He(e){return e}function Je(e,t){return(n,i)=>{const o=e(i);switch(o.scope){case d.Singleton:if(o.cache.isRight)return o.cache.value;return ze(o,Ge(n,o,t(n,i)));case d.Request:{if(n.requestScopeCache.has(o.id))return n.requestScopeCache.get(o.id);const e=Ge(n,o,t(n,i));return n.requestScopeCache.set(o.id,e),e}case d.Transient:return Ge(n,o,t(n,i))}}}const Qe=(e=>Je(He,e))(function(e,t){return t.value(e.context)});const Ye=We(function(e,t){return t.factory(e.context)});function Ze(e,t,n){const i=function(e,t,n){if(void 0===n)return;if(!(n in e))throw new j(A.resolution,`Expecting a "${n.toString()}" property when resolving "${t.implementationType.name}" class @postConstruct decorated method, none found.`);if("function"!=typeof e[n])throw new j(A.resolution,`Expecting a "${n.toString()}" method when resolving "${t.implementationType.name}" class @postConstruct decorated method, a non function property was found instead.`);{let i;try{i=e[n]()}catch(e){throw new j(A.resolution,`Unexpected error found when calling "${n.toString()}" @postConstruct decorated method on class "${t.implementationType.name}"`,{cause:e})}if(s(i))return async function(e,t,n){try{await n}catch(n){throw new j(A.resolution,`Unexpected error found when calling "${t.toString()}" @postConstruct decorated method on class "${e.implementationType.name}"`,{cause:n})}}(t,n,i)}}(e,t,n);return s(i)?i.then(()=>e):e}function et(e){return(t,n,i)=>{const o=new i.binding.implementationType(...t),r=e(n,o,i);return s(r)?r.then(()=>Ze(o,i.binding,i.classMetadata.lifecycle.postConstructMethodName)):Ze(o,i.binding,i.classMetadata.lifecycle.postConstructMethodName)}}const tt=We(function(e,t){return t.provider(e.context)});function nt(e){return e.binding}function it(e){return e.binding}const ot=function(e){return(t,n,i)=>{const o=[];for(const[r,a]of i.propertyParams){const c=i.classMetadata.properties.get(r);if(void 0===c)throw new j(A.resolution,`Expecting metadata at property "${r.toString()}", none found`);c.kind!==P.unmanaged&&void 0!==a.bindings&&(n[r]=e(t,a),s(n[r])&&o.push((async()=>{n[r]=await n[r]})()))}if(o.length>0)return Promise.all(o).then(()=>{})}}(pt),rt=function(e){return function t(n,i){const o=[];for(const r of i.redirections)fe(r)?o.push(...t(n,r)):o.push(e(n,r));return o}}(lt),st=function(e,t,n){return(i,o)=>{const r=e(i,o);return s(r)?t(r,i,o):n(r,i,o)}}(function(e){return(t,n)=>{const i=[];for(const o of n.constructorParams)void 0===o?i.push(void 0):i.push(e(t,o));return i.some(s)?Promise.all(i):i}}(pt),function(e){return async(t,n,i)=>{const o=await t;return e(o,n,i)}}(et(ot)),et(ot)),at=function(e){return(t,n)=>{const i=e(t,n);return s(i)?i.then(e=>n.binding.factory(...e)):n.binding.factory(...i)}}(function(e){return(t,n)=>{const i=[];for(const o of n.params)i.push(e(t,o));return i.some(s)?Promise.all(i):i}}(pt)),ct=(e=>Je(nt,e))(st),dt=(e=>Je(it,e))(at);function ut(e){return pt(e,e.planResult.tree.root)}function lt(e,t){switch(t.binding.type){case u.ConstantValue:return Xe(e,t.binding);case u.DynamicValue:return Qe(e,t.binding);case u.Factory:return Ye(e,t.binding);case u.Instance:return ct(e,t);case u.Provider:return tt(e,t.binding);case u.ResolvedValue:return dt(e,t)}}function pt(e,t){if(void 0!==t.bindings)return Array.isArray(t.bindings)?function(e,t){const n=[];for(const i of t)fe(i)?n.push(...rt(e,i)):n.push(lt(e,i));if(n.some(s))return Promise.all(n);return n}(e,t.bindings):function(e,t){if(fe(t)){const n=rt(e,t);if(1===n.length)return n[0];throw new j(A.resolution,"Unexpected multiple resolved values on single injection")}return lt(e,t)}(e,t.bindings)}function ft(e){return void 0!==e.scope}function vt(e,t){if(void 0!==e.lifecycle.preDestroyMethodName&&"function"==typeof t[e.lifecycle.preDestroyMethodName])return t[e.lifecycle.preDestroyMethodName]()}function ht(e,t,n){const i=e.getDeactivations(t);if(void 0!==i)return s(n)?gt(n,i[Symbol.iterator]()):function(e,t){let n=t.next();for(;!0!==n.done;){const i=n.value(e);if(s(i))return gt(e,t);n=t.next()}}(n,i[Symbol.iterator]())}async function gt(e,t){const n=await e;let i=t.next();for(;!0!==i.done;)await i.value(n),i=t.next()}function mt(e,t){const n=function(e,t){if(t.type===u.Instance){const n=e.getClassMetadata(t.implementationType),i=t.cache.value;return s(i)?i.then(e=>vt(n,e)):vt(n,i)}}(e,t);return void 0===n?yt(e,t):n.then(()=>yt(e,t))}function yt(e,t){const n=t.cache;return s(n.value)?n.value.then(n=>Mt(e,t,n)):Mt(e,t,n.value)}function Mt(e,t,n){let i;if(void 0!==t.onDeactivation){i=(0,t.onDeactivation)(n)}return void 0===i?ht(e,t.serviceIdentifier,n):i.then(()=>ht(e,t.serviceIdentifier,n))}function It(e,t){if(void 0===t)return;const n=function(e){const t=[];for(const n of e)ft(n)&&n.scope===d.Singleton&&n.cache.isRight&&t.push(n);return t}(t),i=[];for(const t of n){const n=mt(e,t);void 0!==n&&i.push(n)}return i.length>0?Promise.all(i).then(()=>{}):void 0}function wt(e,t){const n=e.getBindingsFromModule(t);return It(e,n)}function bt(e,t){const n=e.getBindings(t);return It(e,n)}export{g as ActivationsService,I as BindingService,P as ClassElementMetadataKind,w as DeactivationsService,Ue as PlanResultCacheService,de as ResolvedValueElementMetadataKind,d as bindingScopeValues,u as bindingTypeValues,b as decorate,c as getBindingId,x as getClassMetadata,z as inject,J as injectFromBase,G as injectable,Q as multiInject,ee as named,ne as optional,Pe as plan,ie as postConstruct,oe as preDestroy,ut as resolve,It as resolveBindingsDeactivations,wt as resolveModuleDeactivations,bt as resolveServiceDeactivations,re as tagged,ce as unmanaged};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|