inversify 6.1.2 → 6.1.4-beta.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.
Files changed (165) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/amd/annotation/decorator_utils.d.ts +16 -0
  3. package/amd/annotation/inject.d.ts +5 -0
  4. package/amd/annotation/inject_base.d.ts +4 -0
  5. package/amd/annotation/injectable.d.ts +2 -0
  6. package/amd/annotation/multi_inject.d.ts +5 -0
  7. package/amd/annotation/named.d.ts +2 -0
  8. package/amd/annotation/optional.d.ts +2 -0
  9. package/amd/annotation/post_construct.d.ts +4 -0
  10. package/amd/annotation/pre_destroy.d.ts +4 -0
  11. package/amd/annotation/property_event_decorator.d.ts +4 -0
  12. package/amd/annotation/tagged.d.ts +2 -0
  13. package/amd/annotation/target_name.d.ts +3 -0
  14. package/amd/annotation/unmanaged.d.ts +3 -0
  15. package/amd/bindings/binding.d.ts +20 -0
  16. package/amd/bindings/binding_count.d.ts +5 -0
  17. package/amd/constants/error_msgs.d.ts +30 -0
  18. package/amd/constants/error_msgs.js +3 -2
  19. package/amd/constants/literal_types.d.ts +5 -0
  20. package/amd/constants/metadata_keys.d.ts +13 -0
  21. package/amd/container/container.d.ts +73 -0
  22. package/amd/container/container_module.d.ts +11 -0
  23. package/amd/container/container_snapshot.d.ts +10 -0
  24. package/amd/container/lookup.d.ts +17 -0
  25. package/amd/container/module_activation_store.d.ts +10 -0
  26. package/amd/interfaces/interfaces.d.ts +269 -0
  27. package/amd/inversify.d.ts +24 -0
  28. package/amd/planning/context.d.ts +11 -0
  29. package/amd/planning/metadata.d.ts +8 -0
  30. package/amd/planning/metadata_reader.d.ts +6 -0
  31. package/amd/planning/plan.d.ts +7 -0
  32. package/amd/planning/planner.d.ts +5 -0
  33. package/amd/planning/planner.js +5 -2
  34. package/amd/planning/queryable_string.d.ts +10 -0
  35. package/amd/planning/reflection_utils.d.ts +5 -0
  36. package/amd/planning/request.d.ts +14 -0
  37. package/amd/resolution/instantiation.d.ts +3 -0
  38. package/amd/resolution/resolver.d.ts +3 -0
  39. package/amd/scope/scope.d.ts +3 -0
  40. package/amd/syntax/binding_in_syntax.d.ts +9 -0
  41. package/amd/syntax/binding_in_when_on_syntax.d.ts +29 -0
  42. package/amd/syntax/binding_on_syntax.d.ts +8 -0
  43. package/amd/syntax/binding_to_syntax.d.ts +18 -0
  44. package/amd/syntax/binding_when_on_syntax.d.ts +25 -0
  45. package/amd/syntax/binding_when_syntax.d.ts +21 -0
  46. package/amd/syntax/constraint_helpers.d.ts +6 -0
  47. package/amd/utils/async.d.ts +3 -0
  48. package/amd/utils/binding_utils.d.ts +4 -0
  49. package/amd/utils/clonable.d.ts +3 -0
  50. package/amd/utils/exceptions.d.ts +2 -0
  51. package/amd/utils/factory_type.d.ts +5 -0
  52. package/amd/utils/id.d.ts +2 -0
  53. package/amd/utils/js.d.ts +1 -0
  54. package/amd/utils/serialization.d.ts +10 -0
  55. package/es/annotation/decorator_utils.d.ts +16 -0
  56. package/es/annotation/inject.d.ts +5 -0
  57. package/es/annotation/inject_base.d.ts +4 -0
  58. package/es/annotation/injectable.d.ts +2 -0
  59. package/es/annotation/multi_inject.d.ts +5 -0
  60. package/es/annotation/named.d.ts +2 -0
  61. package/es/annotation/optional.d.ts +2 -0
  62. package/es/annotation/post_construct.d.ts +4 -0
  63. package/es/annotation/pre_destroy.d.ts +4 -0
  64. package/es/annotation/property_event_decorator.d.ts +4 -0
  65. package/es/annotation/tagged.d.ts +2 -0
  66. package/es/annotation/target_name.d.ts +3 -0
  67. package/es/annotation/unmanaged.d.ts +3 -0
  68. package/es/bindings/binding.d.ts +20 -0
  69. package/es/bindings/binding_count.d.ts +5 -0
  70. package/es/constants/error_msgs.d.ts +30 -0
  71. package/es/constants/error_msgs.js +1 -1
  72. package/es/constants/literal_types.d.ts +5 -0
  73. package/es/constants/metadata_keys.d.ts +13 -0
  74. package/es/container/container.d.ts +73 -0
  75. package/es/container/container_module.d.ts +11 -0
  76. package/es/container/container_snapshot.d.ts +10 -0
  77. package/es/container/lookup.d.ts +17 -0
  78. package/es/container/module_activation_store.d.ts +10 -0
  79. package/es/interfaces/interfaces.d.ts +269 -0
  80. package/es/inversify.d.ts +24 -0
  81. package/es/package.json +3 -0
  82. package/es/planning/context.d.ts +11 -0
  83. package/es/planning/metadata.d.ts +8 -0
  84. package/es/planning/metadata_reader.d.ts +6 -0
  85. package/es/planning/plan.d.ts +7 -0
  86. package/es/planning/planner.d.ts +5 -0
  87. package/es/planning/planner.js +5 -2
  88. package/es/planning/queryable_string.d.ts +10 -0
  89. package/es/planning/reflection_utils.d.ts +5 -0
  90. package/es/planning/request.d.ts +14 -0
  91. package/es/resolution/instantiation.d.ts +3 -0
  92. package/es/resolution/resolver.d.ts +3 -0
  93. package/es/scope/scope.d.ts +3 -0
  94. package/es/syntax/binding_in_syntax.d.ts +9 -0
  95. package/es/syntax/binding_in_when_on_syntax.d.ts +29 -0
  96. package/es/syntax/binding_on_syntax.d.ts +8 -0
  97. package/es/syntax/binding_to_syntax.d.ts +18 -0
  98. package/es/syntax/binding_when_on_syntax.d.ts +25 -0
  99. package/es/syntax/binding_when_syntax.d.ts +21 -0
  100. package/es/syntax/constraint_helpers.d.ts +6 -0
  101. package/es/utils/async.d.ts +3 -0
  102. package/es/utils/binding_utils.d.ts +4 -0
  103. package/es/utils/clonable.d.ts +3 -0
  104. package/es/utils/exceptions.d.ts +2 -0
  105. package/es/utils/factory_type.d.ts +5 -0
  106. package/es/utils/id.d.ts +2 -0
  107. package/es/utils/js.d.ts +1 -0
  108. package/es/utils/serialization.d.ts +10 -0
  109. package/es6/annotation/decorator_utils.d.ts +16 -0
  110. package/es6/annotation/inject.d.ts +5 -0
  111. package/es6/annotation/inject_base.d.ts +4 -0
  112. package/es6/annotation/injectable.d.ts +2 -0
  113. package/es6/annotation/multi_inject.d.ts +5 -0
  114. package/es6/annotation/named.d.ts +2 -0
  115. package/es6/annotation/optional.d.ts +2 -0
  116. package/es6/annotation/post_construct.d.ts +4 -0
  117. package/es6/annotation/pre_destroy.d.ts +4 -0
  118. package/es6/annotation/property_event_decorator.d.ts +4 -0
  119. package/es6/annotation/tagged.d.ts +2 -0
  120. package/es6/annotation/target_name.d.ts +3 -0
  121. package/es6/annotation/unmanaged.d.ts +3 -0
  122. package/es6/bindings/binding.d.ts +20 -0
  123. package/es6/bindings/binding_count.d.ts +5 -0
  124. package/es6/constants/error_msgs.d.ts +30 -0
  125. package/es6/constants/error_msgs.js +3 -2
  126. package/es6/constants/literal_types.d.ts +5 -0
  127. package/es6/constants/metadata_keys.d.ts +13 -0
  128. package/es6/container/container.d.ts +73 -0
  129. package/es6/container/container_module.d.ts +11 -0
  130. package/es6/container/container_snapshot.d.ts +10 -0
  131. package/es6/container/lookup.d.ts +17 -0
  132. package/es6/container/module_activation_store.d.ts +10 -0
  133. package/es6/interfaces/interfaces.d.ts +269 -0
  134. package/es6/inversify.d.ts +24 -0
  135. package/es6/planning/context.d.ts +11 -0
  136. package/es6/planning/metadata.d.ts +8 -0
  137. package/es6/planning/metadata_reader.d.ts +6 -0
  138. package/es6/planning/plan.d.ts +7 -0
  139. package/es6/planning/planner.d.ts +5 -0
  140. package/es6/planning/planner.js +5 -2
  141. package/es6/planning/queryable_string.d.ts +10 -0
  142. package/es6/planning/reflection_utils.d.ts +5 -0
  143. package/es6/planning/request.d.ts +14 -0
  144. package/es6/resolution/instantiation.d.ts +3 -0
  145. package/es6/resolution/resolver.d.ts +3 -0
  146. package/es6/scope/scope.d.ts +3 -0
  147. package/es6/syntax/binding_in_syntax.d.ts +9 -0
  148. package/es6/syntax/binding_in_when_on_syntax.d.ts +29 -0
  149. package/es6/syntax/binding_on_syntax.d.ts +8 -0
  150. package/es6/syntax/binding_to_syntax.d.ts +18 -0
  151. package/es6/syntax/binding_when_on_syntax.d.ts +25 -0
  152. package/es6/syntax/binding_when_syntax.d.ts +21 -0
  153. package/es6/syntax/constraint_helpers.d.ts +6 -0
  154. package/es6/utils/async.d.ts +3 -0
  155. package/es6/utils/binding_utils.d.ts +4 -0
  156. package/es6/utils/clonable.d.ts +3 -0
  157. package/es6/utils/exceptions.d.ts +2 -0
  158. package/es6/utils/factory_type.d.ts +5 -0
  159. package/es6/utils/id.d.ts +2 -0
  160. package/es6/utils/js.d.ts +1 -0
  161. package/es6/utils/serialization.d.ts +10 -0
  162. package/lib/constants/error_msgs.d.ts +1 -1
  163. package/lib/constants/error_msgs.js +3 -2
  164. package/lib/planning/planner.js +5 -2
  165. package/package.json +2 -2
@@ -70,7 +70,7 @@ function _getActiveBindings(metadataReader, avoidConstraints, context, parentReq
70
70
  else {
71
71
  activeBindings = bindings;
72
72
  }
73
- _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);
73
+ _validateActiveBindingCount(target.serviceIdentifier, activeBindings, parentRequest, target, context.container);
74
74
  return activeBindings;
75
75
  }
76
76
  function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
@@ -85,7 +85,7 @@ function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
85
85
  }
86
86
  return metadataList;
87
87
  }
88
- function _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {
88
+ function _validateActiveBindingCount(serviceIdentifier, bindings, parentRequest, target, container) {
89
89
  switch (bindings.length) {
90
90
  case binding_count_1.BindingCount.NoBindingsAvailable:
91
91
  if (target.isOptional()) {
@@ -96,6 +96,9 @@ function _validateActiveBindingCount(serviceIdentifier, bindings, target, contai
96
96
  let msg = ERROR_MSGS.NOT_REGISTERED;
97
97
  msg += (0, serialization_1.listMetadataForTarget)(serviceIdentifierString, target);
98
98
  msg += (0, serialization_1.listRegisteredBindingsForServiceIdentifier)(container, serviceIdentifierString, getBindings);
99
+ if (parentRequest !== null) {
100
+ msg += `\n${ERROR_MSGS.TRYING_TO_RESOLVE_BINDINGS((0, serialization_1.getServiceIdentifierAsString)(parentRequest.serviceIdentifier))}`;
101
+ }
99
102
  throw new Error(msg);
100
103
  }
101
104
  case binding_count_1.BindingCount.OnlyOneBindingAvailable:
@@ -0,0 +1,10 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ export declare class QueryableString implements interfaces.QueryableString {
3
+ private readonly str;
4
+ constructor(str: string);
5
+ startsWith(searchString: string): boolean;
6
+ endsWith(searchString: string): boolean;
7
+ contains(searchString: string): boolean;
8
+ equals(compareString: string): boolean;
9
+ value(): string;
10
+ }
@@ -0,0 +1,5 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ import { getFunctionName } from '../utils/serialization';
3
+ declare function getDependencies(metadataReader: interfaces.MetadataReader, func: NewableFunction): interfaces.Target[];
4
+ declare function getBaseClassDependencyCount(metadataReader: interfaces.MetadataReader, func: NewableFunction): number;
5
+ export { getDependencies, getBaseClassDependencyCount, getFunctionName };
@@ -0,0 +1,14 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare class Request implements interfaces.Request {
3
+ id: number;
4
+ serviceIdentifier: interfaces.ServiceIdentifier;
5
+ parentContext: interfaces.Context;
6
+ parentRequest: interfaces.Request | null;
7
+ bindings: interfaces.Binding<unknown>[];
8
+ childRequests: interfaces.Request[];
9
+ target: interfaces.Target;
10
+ requestScope: interfaces.RequestScope | null;
11
+ constructor(serviceIdentifier: interfaces.ServiceIdentifier, parentContext: interfaces.Context, parentRequest: interfaces.Request | null, bindings: interfaces.Binding<any> | interfaces.Binding<any>[], target: interfaces.Target);
12
+ addChildRequest(serviceIdentifier: interfaces.ServiceIdentifier, bindings: interfaces.Binding<unknown> | interfaces.Binding<unknown>[], target: interfaces.Target): interfaces.Request;
13
+ }
14
+ export { Request };
@@ -0,0 +1,3 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare function resolveInstance<T>(binding: interfaces.Binding<T>, constr: interfaces.Newable<T>, childRequests: interfaces.Request[], resolveRequest: interfaces.ResolveRequestHandler): T | Promise<T>;
3
+ export { resolveInstance };
@@ -0,0 +1,3 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare function resolve<T>(context: interfaces.Context): T | Promise<T> | (T | Promise<T>)[];
3
+ export { resolve };
@@ -0,0 +1,3 @@
1
+ import type { interfaces } from '../interfaces/interfaces';
2
+ export declare const tryGetFromScope: <T>(requestScope: interfaces.RequestScope, binding: interfaces.Binding<T>) => T | Promise<T> | null;
3
+ export declare const saveToScope: <T>(requestScope: interfaces.RequestScope, binding: interfaces.Binding<T>, result: T | Promise<T>) => void;
@@ -0,0 +1,9 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare class BindingInSyntax<T> implements interfaces.BindingInSyntax<T> {
3
+ private readonly _binding;
4
+ constructor(binding: interfaces.Binding<T>);
5
+ inRequestScope(): interfaces.BindingWhenOnSyntax<T>;
6
+ inSingletonScope(): interfaces.BindingWhenOnSyntax<T>;
7
+ inTransientScope(): interfaces.BindingWhenOnSyntax<T>;
8
+ }
9
+ export { BindingInSyntax };
@@ -0,0 +1,29 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare class BindingInWhenOnSyntax<T> implements interfaces.BindingInSyntax<T>, interfaces.BindingWhenSyntax<T>, interfaces.BindingOnSyntax<T> {
3
+ private readonly _bindingInSyntax;
4
+ private readonly _bindingWhenSyntax;
5
+ private readonly _bindingOnSyntax;
6
+ private readonly _binding;
7
+ constructor(binding: interfaces.Binding<T>);
8
+ inRequestScope(): interfaces.BindingWhenOnSyntax<T>;
9
+ inSingletonScope(): interfaces.BindingWhenOnSyntax<T>;
10
+ inTransientScope(): interfaces.BindingWhenOnSyntax<T>;
11
+ when(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
12
+ whenTargetNamed(name: string): interfaces.BindingOnSyntax<T>;
13
+ whenTargetIsDefault(): interfaces.BindingOnSyntax<T>;
14
+ whenTargetTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
15
+ whenInjectedInto(parent: NewableFunction | string): interfaces.BindingOnSyntax<T>;
16
+ whenParentNamed(name: string): interfaces.BindingOnSyntax<T>;
17
+ whenParentTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
18
+ whenAnyAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
19
+ whenNoAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
20
+ whenAnyAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
21
+ whenAnyAncestorTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
22
+ whenNoAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
23
+ whenNoAncestorTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
24
+ whenAnyAncestorMatches(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
25
+ whenNoAncestorMatches(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
26
+ onActivation(handler: (context: interfaces.Context, injectable: T) => T | Promise<T>): interfaces.BindingWhenSyntax<T>;
27
+ onDeactivation(handler: (injectable: T) => void | Promise<void>): interfaces.BindingWhenSyntax<T>;
28
+ }
29
+ export { BindingInWhenOnSyntax };
@@ -0,0 +1,8 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare class BindingOnSyntax<T> implements interfaces.BindingOnSyntax<T> {
3
+ private readonly _binding;
4
+ constructor(binding: interfaces.Binding<T>);
5
+ onActivation(handler: interfaces.BindingActivation<T>): interfaces.BindingWhenSyntax<T>;
6
+ onDeactivation(handler: interfaces.BindingDeactivation<T>): interfaces.BindingWhenSyntax<T>;
7
+ }
8
+ export { BindingOnSyntax };
@@ -0,0 +1,18 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ import { BindingWhenOnSyntax } from './binding_when_on_syntax';
3
+ declare class BindingToSyntax<T> implements interfaces.BindingToSyntax<T> {
4
+ private readonly _binding;
5
+ constructor(binding: interfaces.Binding<T>);
6
+ to(constructor: interfaces.Newable<T>): interfaces.BindingInWhenOnSyntax<T>;
7
+ toSelf(): interfaces.BindingInWhenOnSyntax<T>;
8
+ toConstantValue(value: T): interfaces.BindingWhenOnSyntax<T>;
9
+ toDynamicValue(func: interfaces.DynamicValue<T>): interfaces.BindingInWhenOnSyntax<T>;
10
+ toConstructor<T2>(constructor: interfaces.Newable<T2>): interfaces.BindingWhenOnSyntax<T>;
11
+ toFactory<T2>(factory: interfaces.FactoryCreator<T2>): interfaces.BindingWhenOnSyntax<T>;
12
+ toFunction(func: T): interfaces.BindingWhenOnSyntax<T>;
13
+ toAutoFactory<T2>(serviceIdentifier: interfaces.ServiceIdentifier<T2>): interfaces.BindingWhenOnSyntax<T>;
14
+ toAutoNamedFactory<T2>(serviceIdentifier: interfaces.ServiceIdentifier<T2>): BindingWhenOnSyntax<T>;
15
+ toProvider<T2>(provider: interfaces.ProviderCreator<T2>): interfaces.BindingWhenOnSyntax<T>;
16
+ toService(service: interfaces.ServiceIdentifier<T>): void;
17
+ }
18
+ export { BindingToSyntax };
@@ -0,0 +1,25 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare class BindingWhenOnSyntax<T> implements interfaces.BindingWhenSyntax<T>, interfaces.BindingOnSyntax<T> {
3
+ private readonly _bindingWhenSyntax;
4
+ private readonly _bindingOnSyntax;
5
+ private readonly _binding;
6
+ constructor(binding: interfaces.Binding<T>);
7
+ when(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
8
+ whenTargetNamed(name: string): interfaces.BindingOnSyntax<T>;
9
+ whenTargetIsDefault(): interfaces.BindingOnSyntax<T>;
10
+ whenTargetTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
11
+ whenInjectedInto(parent: NewableFunction | string): interfaces.BindingOnSyntax<T>;
12
+ whenParentNamed(name: string): interfaces.BindingOnSyntax<T>;
13
+ whenParentTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
14
+ whenAnyAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
15
+ whenNoAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
16
+ whenAnyAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
17
+ whenAnyAncestorTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
18
+ whenNoAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
19
+ whenNoAncestorTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
20
+ whenAnyAncestorMatches(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
21
+ whenNoAncestorMatches(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
22
+ onActivation(handler: (context: interfaces.Context, injectable: T) => T): interfaces.BindingWhenSyntax<T>;
23
+ onDeactivation(handler: (injectable: T) => Promise<void> | void): interfaces.BindingWhenSyntax<T>;
24
+ }
25
+ export { BindingWhenOnSyntax };
@@ -0,0 +1,21 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare class BindingWhenSyntax<T> implements interfaces.BindingWhenSyntax<T> {
3
+ private readonly _binding;
4
+ constructor(binding: interfaces.Binding<T>);
5
+ when(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
6
+ whenTargetNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
7
+ whenTargetIsDefault(): interfaces.BindingOnSyntax<T>;
8
+ whenTargetTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
9
+ whenInjectedInto(parent: NewableFunction | string): interfaces.BindingOnSyntax<T>;
10
+ whenParentNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
11
+ whenParentTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
12
+ whenAnyAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
13
+ whenNoAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
14
+ whenAnyAncestorNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
15
+ whenNoAncestorNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
16
+ whenAnyAncestorTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
17
+ whenNoAncestorTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
18
+ whenAnyAncestorMatches(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
19
+ whenNoAncestorMatches(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
20
+ }
21
+ export { BindingWhenSyntax };
@@ -0,0 +1,6 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare const traverseAncerstors: (request: interfaces.Request, constraint: interfaces.ConstraintFunction) => boolean;
3
+ declare const taggedConstraint: (key: string | number | symbol) => (value: unknown) => interfaces.ConstraintFunction;
4
+ declare const namedConstraint: (value: unknown) => interfaces.ConstraintFunction;
5
+ declare const typeConstraint: (type: NewableFunction | string) => (request: interfaces.Request | null) => boolean;
6
+ export { traverseAncerstors, taggedConstraint, namedConstraint, typeConstraint, };
@@ -0,0 +1,3 @@
1
+ declare function isPromise<T>(object: unknown): object is Promise<T>;
2
+ declare function isPromiseOrContainsPromise<T>(object: unknown): object is Promise<T> | (T | Promise<T>)[];
3
+ export { isPromise, isPromiseOrContainsPromise };
@@ -0,0 +1,4 @@
1
+ import type { interfaces } from '../interfaces/interfaces';
2
+ export declare const multiBindToService: (container: interfaces.Container) => (service: interfaces.ServiceIdentifier) => (...types: interfaces.ServiceIdentifier[]) => void;
3
+ export declare const ensureFullyBound: <T = unknown>(binding: interfaces.Binding<T>) => void;
4
+ export declare const getFactoryDetails: <T = unknown>(binding: interfaces.Binding<T>) => interfaces.FactoryDetails;
@@ -0,0 +1,3 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare function isClonable<T>(obj: unknown): obj is interfaces.Clonable<T>;
3
+ export { isClonable };
@@ -0,0 +1,2 @@
1
+ export declare function isStackOverflowException(error: unknown): error is RangeError;
2
+ export declare const tryAndThrowErrorIfStackOverflow: <T>(fn: () => T, errorCallback: () => Error) => T;
@@ -0,0 +1,5 @@
1
+ export declare enum FactoryType {
2
+ DynamicValue = "toDynamicValue",
3
+ Factory = "toFactory",
4
+ Provider = "toProvider"
5
+ }
@@ -0,0 +1,2 @@
1
+ declare function id(): number;
2
+ export { id };
@@ -0,0 +1 @@
1
+ export declare function getFirstArrayDuplicate<T>(array: T[]): T | undefined;
@@ -0,0 +1,10 @@
1
+ import { interfaces } from '../interfaces/interfaces';
2
+ declare function getServiceIdentifierAsString(serviceIdentifier: interfaces.ServiceIdentifier): string;
3
+ declare function listRegisteredBindingsForServiceIdentifier(container: interfaces.Container, serviceIdentifier: string, getBindings: <T>(container: interfaces.Container, serviceIdentifier: interfaces.ServiceIdentifier<T>) => interfaces.Binding<T>[]): string;
4
+ declare function circularDependencyToException(request: interfaces.Request): void;
5
+ declare function listMetadataForTarget(serviceIdentifierString: string, target: interfaces.Target): string;
6
+ declare function getFunctionName(func: {
7
+ name: string | null | undefined;
8
+ }): string;
9
+ declare function getSymbolDescription(symbol: symbol): string;
10
+ export { getFunctionName, getServiceIdentifierAsString, listRegisteredBindingsForServiceIdentifier, listMetadataForTarget, circularDependencyToException, getSymbolDescription, };
@@ -5,7 +5,7 @@ export declare const KEY_NOT_FOUND: string;
5
5
  export declare const AMBIGUOUS_MATCH: string;
6
6
  export declare const CANNOT_UNBIND: string;
7
7
  export declare const NOT_REGISTERED: string;
8
- export declare const MISSING_INJECTABLE_ANNOTATION: string;
8
+ export declare const TRYING_TO_RESOLVE_BINDINGS: (name: string) => string;
9
9
  export declare const UNDEFINED_INJECT_ANNOTATION: (name: string) => string;
10
10
  export declare const CIRCULAR_DEPENDENCY: string;
11
11
  export declare const INVALID_BINDING_TYPE: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STACK_OVERFLOW = exports.CIRCULAR_DEPENDENCY_IN_FACTORY = exports.ON_DEACTIVATION_ERROR = exports.PRE_DESTROY_ERROR = exports.POST_CONSTRUCT_ERROR = exports.ASYNC_UNBIND_REQUIRED = exports.MULTIPLE_POST_CONSTRUCT_METHODS = exports.MULTIPLE_PRE_DESTROY_METHODS = exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = exports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = exports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = exports.ARGUMENTS_LENGTH_MISMATCH = exports.INVALID_DECORATOR_OPERATION = exports.INVALID_TO_SELF_VALUE = exports.LAZY_IN_SYNC = exports.INVALID_FUNCTION_BINDING = exports.INVALID_MIDDLEWARE_RETURN = exports.NO_MORE_SNAPSHOTS_AVAILABLE = exports.INVALID_BINDING_TYPE = exports.CIRCULAR_DEPENDENCY = exports.UNDEFINED_INJECT_ANNOTATION = exports.MISSING_INJECTABLE_ANNOTATION = exports.NOT_REGISTERED = exports.CANNOT_UNBIND = exports.AMBIGUOUS_MATCH = exports.KEY_NOT_FOUND = exports.NULL_ARGUMENT = exports.DUPLICATED_METADATA = exports.DUPLICATED_INJECTABLE_DECORATOR = void 0;
3
+ exports.STACK_OVERFLOW = exports.CIRCULAR_DEPENDENCY_IN_FACTORY = exports.ON_DEACTIVATION_ERROR = exports.PRE_DESTROY_ERROR = exports.POST_CONSTRUCT_ERROR = exports.ASYNC_UNBIND_REQUIRED = exports.MULTIPLE_POST_CONSTRUCT_METHODS = exports.MULTIPLE_PRE_DESTROY_METHODS = exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = exports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = exports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = exports.ARGUMENTS_LENGTH_MISMATCH = exports.INVALID_DECORATOR_OPERATION = exports.INVALID_TO_SELF_VALUE = exports.LAZY_IN_SYNC = exports.INVALID_FUNCTION_BINDING = exports.INVALID_MIDDLEWARE_RETURN = exports.NO_MORE_SNAPSHOTS_AVAILABLE = exports.INVALID_BINDING_TYPE = exports.CIRCULAR_DEPENDENCY = exports.UNDEFINED_INJECT_ANNOTATION = exports.TRYING_TO_RESOLVE_BINDINGS = exports.NOT_REGISTERED = exports.CANNOT_UNBIND = exports.AMBIGUOUS_MATCH = exports.KEY_NOT_FOUND = exports.NULL_ARGUMENT = exports.DUPLICATED_METADATA = exports.DUPLICATED_INJECTABLE_DECORATOR = void 0;
4
4
  exports.DUPLICATED_INJECTABLE_DECORATOR = 'Cannot apply @injectable decorator multiple times.';
5
5
  exports.DUPLICATED_METADATA = 'Metadata key was used more than once in a parameter:';
6
6
  exports.NULL_ARGUMENT = 'NULL argument';
@@ -8,7 +8,8 @@ exports.KEY_NOT_FOUND = 'Key Not Found';
8
8
  exports.AMBIGUOUS_MATCH = 'Ambiguous match found for serviceIdentifier:';
9
9
  exports.CANNOT_UNBIND = 'Could not unbind serviceIdentifier:';
10
10
  exports.NOT_REGISTERED = 'No matching bindings found for serviceIdentifier:';
11
- exports.MISSING_INJECTABLE_ANNOTATION = 'Missing required @injectable annotation in:';
11
+ var TRYING_TO_RESOLVE_BINDINGS = function (name) { return "Trying to resolve bindings for \"".concat(name, "\""); };
12
+ exports.TRYING_TO_RESOLVE_BINDINGS = TRYING_TO_RESOLVE_BINDINGS;
12
13
  var UNDEFINED_INJECT_ANNOTATION = function (name) {
13
14
  return "@inject called with undefined this could mean that the class ".concat(name, " has ") +
14
15
  'a circular dependency problem. You can use a LazyServiceIdentifer to ' +
@@ -70,7 +70,7 @@ function _getActiveBindings(metadataReader, avoidConstraints, context, parentReq
70
70
  else {
71
71
  activeBindings = bindings;
72
72
  }
73
- _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);
73
+ _validateActiveBindingCount(target.serviceIdentifier, activeBindings, parentRequest, target, context.container);
74
74
  return activeBindings;
75
75
  }
76
76
  function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
@@ -85,7 +85,7 @@ function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
85
85
  }
86
86
  return metadataList;
87
87
  }
88
- function _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {
88
+ function _validateActiveBindingCount(serviceIdentifier, bindings, parentRequest, target, container) {
89
89
  switch (bindings.length) {
90
90
  case binding_count_1.BindingCount.NoBindingsAvailable:
91
91
  if (target.isOptional()) {
@@ -96,6 +96,9 @@ function _validateActiveBindingCount(serviceIdentifier, bindings, target, contai
96
96
  var msg = ERROR_MSGS.NOT_REGISTERED;
97
97
  msg += (0, serialization_1.listMetadataForTarget)(serviceIdentifierString, target);
98
98
  msg += (0, serialization_1.listRegisteredBindingsForServiceIdentifier)(container, serviceIdentifierString, getBindings);
99
+ if (parentRequest !== null) {
100
+ msg += "\n".concat(ERROR_MSGS.TRYING_TO_RESOLVE_BINDINGS((0, serialization_1.getServiceIdentifierAsString)(parentRequest.serviceIdentifier)));
101
+ }
99
102
  throw new Error(msg);
100
103
  }
101
104
  case binding_count_1.BindingCount.OnlyOneBindingAvailable:
package/package.json CHANGED
@@ -62,7 +62,7 @@
62
62
  "scripts": {
63
63
  "build": "npm run build:lib && npm run build:amd && npm run build:es && npm run build:es6",
64
64
  "build:amd": "tsc -p src/tsconfig-amd.json",
65
- "build:es": "tsc -p src/tsconfig-es.json",
65
+ "build:es": "tsc -p src/tsconfig-es.json && node ./scripts/writeEsmPackageJson.mjs ./es",
66
66
  "build:es6": "tsc -p src/tsconfig-es6.json",
67
67
  "build:lib": "tsc -p src/tsconfig.json",
68
68
  "clean": "rimraf amd es es6 lib",
@@ -76,5 +76,5 @@
76
76
  },
77
77
  "sideEffects": false,
78
78
  "types": "lib/inversify.d.ts",
79
- "version": "6.1.2"
79
+ "version": "6.1.4-beta.0"
80
80
  }