inversify 6.0.2 → 6.1.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 +95 -81
- package/LICENSE +22 -22
- package/README.md +311 -309
- package/amd/annotation/decorator_utils.js +119 -114
- package/amd/annotation/inject.js +31 -27
- package/amd/annotation/inject_base.js +16 -17
- package/amd/annotation/injectable.js +40 -37
- package/amd/annotation/lazy_service_identifier.js +4 -15
- package/amd/annotation/multi_inject.js +31 -27
- package/amd/annotation/named.js +32 -29
- package/amd/annotation/optional.js +32 -29
- package/amd/annotation/post_construct.js +32 -28
- package/amd/annotation/pre_destroy.js +32 -28
- package/amd/annotation/property_event_decorator.js +16 -17
- package/amd/annotation/tagged.js +8 -9
- package/amd/annotation/target_name.js +35 -32
- package/amd/annotation/unmanaged.js +35 -32
- package/amd/bindings/binding.js +40 -39
- package/amd/bindings/binding_count.js +11 -10
- package/amd/constants/error_msgs.js +74 -64
- package/amd/constants/literal_types.js +28 -28
- package/amd/constants/metadata_keys.js +28 -28
- package/amd/container/container.js +762 -719
- package/amd/container/container_module.js +21 -21
- package/amd/container/container_snapshot.js +20 -20
- package/amd/container/lookup.js +132 -127
- package/amd/container/module_activation_store.js +51 -53
- package/amd/interfaces/interfaces.js +4 -10
- package/amd/inversify.js +57 -55
- package/amd/planning/context.js +19 -19
- package/amd/planning/metadata.js +45 -41
- package/amd/planning/metadata_reader.js +49 -43
- package/amd/planning/plan.js +13 -13
- package/amd/planning/planner.js +184 -163
- package/amd/planning/queryable_string.js +33 -30
- package/amd/planning/reflection_utils.js +55 -157
- package/amd/planning/request.js +24 -26
- package/amd/planning/target.js +111 -101
- package/amd/resolution/instantiation.js +219 -211
- package/amd/resolution/resolver.js +234 -222
- package/amd/scope/scope.js +93 -93
- package/amd/syntax/binding_in_syntax.js +24 -24
- package/amd/syntax/binding_in_when_on_syntax.js +75 -75
- package/amd/syntax/binding_on_syntax.js +20 -20
- package/amd/syntax/binding_to_syntax.js +116 -105
- package/amd/syntax/binding_when_on_syntax.js +65 -65
- package/amd/syntax/binding_when_syntax.js +107 -102
- package/amd/syntax/constraint_helpers.js +66 -61
- package/amd/utils/async.js +17 -17
- package/amd/utils/binding_utils.js +86 -77
- package/amd/utils/clonable.js +11 -12
- package/amd/utils/exceptions.js +46 -42
- package/amd/utils/factory_type.js +11 -11
- package/amd/utils/id.js +9 -10
- package/amd/utils/js.js +18 -19
- package/amd/utils/serialization.js +135 -129
- package/es/annotation/decorator_utils.js +90 -88
- package/es/annotation/inject.js +4 -4
- package/es/annotation/inject_base.js +14 -14
- package/es/annotation/injectable.js +13 -13
- package/es/annotation/lazy_service_identifier.js +1 -10
- package/es/annotation/multi_inject.js +4 -4
- package/es/annotation/named.js +7 -7
- package/es/annotation/optional.js +7 -7
- package/es/annotation/post_construct.js +5 -5
- package/es/annotation/pre_destroy.js +5 -5
- package/es/annotation/property_event_decorator.js +13 -13
- package/es/annotation/tagged.js +6 -6
- package/es/annotation/target_name.js +10 -10
- package/es/annotation/unmanaged.js +10 -10
- package/es/bindings/binding.js +37 -36
- package/es/bindings/binding_count.js +6 -5
- package/es/constants/error_msgs.js +62 -52
- package/es/constants/literal_types.js +21 -21
- package/es/constants/metadata_keys.js +23 -23
- package/es/container/container.js +746 -707
- package/es/container/container_module.js +17 -17
- package/es/container/container_snapshot.js +15 -15
- package/es/container/lookup.js +105 -104
- package/es/container/module_activation_store.js +47 -49
- package/es/interfaces/interfaces.js +1 -5
- package/es/inversify.js +23 -25
- package/es/planning/context.js +15 -15
- package/es/planning/metadata.js +17 -17
- package/es/planning/metadata_reader.js +21 -19
- package/es/planning/plan.js +8 -8
- package/es/planning/planner.js +165 -147
- package/es/planning/queryable_string.js +28 -25
- package/es/planning/reflection_utils.js +27 -135
- package/es/planning/request.js +20 -22
- package/es/planning/target.js +87 -81
- package/es/resolution/instantiation.js +195 -190
- package/es/resolution/resolver.js +214 -205
- package/es/scope/scope.js +88 -88
- package/es/syntax/binding_in_syntax.js +21 -21
- package/es/syntax/binding_in_when_on_syntax.js +73 -73
- package/es/syntax/binding_on_syntax.js +16 -16
- package/es/syntax/binding_to_syntax.js +91 -84
- package/es/syntax/binding_when_on_syntax.js +62 -62
- package/es/syntax/binding_when_syntax.js +104 -99
- package/es/syntax/constraint_helpers.js +36 -35
- package/es/utils/async.js +12 -11
- package/es/utils/binding_utils.js +58 -53
- package/es/utils/clonable.js +7 -7
- package/es/utils/exceptions.js +16 -16
- package/es/utils/factory_type.js +6 -6
- package/es/utils/id.js +5 -5
- package/es/utils/js.js +13 -13
- package/es/utils/serialization.js +103 -100
- package/es6/annotation/decorator_utils.js +114 -109
- package/es6/annotation/inject.js +30 -26
- package/es6/annotation/inject_base.js +17 -18
- package/es6/annotation/injectable.js +38 -35
- package/es6/annotation/lazy_service_identifier.js +2 -12
- package/es6/annotation/multi_inject.js +30 -26
- package/es6/annotation/named.js +32 -29
- package/es6/annotation/optional.js +32 -29
- package/es6/annotation/post_construct.js +31 -27
- package/es6/annotation/pre_destroy.js +31 -27
- package/es6/annotation/property_event_decorator.js +15 -16
- package/es6/annotation/tagged.js +8 -9
- package/es6/annotation/target_name.js +35 -32
- package/es6/annotation/unmanaged.js +35 -32
- package/es6/bindings/binding.js +39 -38
- package/es6/bindings/binding_count.js +9 -8
- package/es6/constants/error_msgs.js +58 -53
- package/es6/constants/literal_types.js +26 -26
- package/es6/constants/metadata_keys.js +26 -26
- package/es6/container/container.js +541 -520
- package/es6/container/container_module.js +18 -18
- package/es6/container/container_snapshot.js +15 -15
- package/es6/container/lookup.js +125 -120
- package/es6/container/module_activation_store.js +49 -51
- package/es6/interfaces/interfaces.js +2 -8
- package/es6/inversify.js +76 -76
- package/es6/planning/context.js +17 -17
- package/es6/planning/metadata.js +42 -38
- package/es6/planning/metadata_reader.js +44 -38
- package/es6/planning/plan.js +10 -10
- package/es6/planning/planner.js +191 -170
- package/es6/planning/queryable_string.js +30 -27
- package/es6/planning/reflection_utils.js +53 -155
- package/es6/planning/request.js +22 -24
- package/es6/planning/target.js +105 -99
- package/es6/resolution/instantiation.js +158 -151
- package/es6/resolution/resolver.js +193 -187
- package/es6/scope/scope.js +57 -57
- package/es6/syntax/binding_in_syntax.js +23 -23
- package/es6/syntax/binding_in_when_on_syntax.js +75 -75
- package/es6/syntax/binding_on_syntax.js +18 -18
- package/es6/syntax/binding_to_syntax.js +110 -105
- package/es6/syntax/binding_when_on_syntax.js +64 -64
- package/es6/syntax/binding_when_syntax.js +84 -79
- package/es6/syntax/constraint_helpers.js +63 -58
- package/es6/utils/async.js +15 -15
- package/es6/utils/binding_utils.js +79 -68
- package/es6/utils/clonable.js +9 -10
- package/es6/utils/exceptions.js +44 -40
- package/es6/utils/factory_type.js +9 -9
- package/es6/utils/id.js +7 -8
- package/es6/utils/js.js +15 -16
- package/es6/utils/serialization.js +132 -126
- package/lib/annotation/decorator_utils.d.ts +16 -16
- package/lib/annotation/decorator_utils.js +118 -113
- package/lib/annotation/inject.d.ts +5 -2
- package/lib/annotation/inject.js +30 -26
- package/lib/annotation/inject_base.d.ts +4 -3
- package/lib/annotation/inject_base.js +17 -18
- package/lib/annotation/injectable.d.ts +2 -2
- package/lib/annotation/injectable.js +38 -35
- package/lib/annotation/lazy_service_identifier.d.ts +3 -7
- package/lib/annotation/lazy_service_identifier.js +2 -13
- package/lib/annotation/multi_inject.d.ts +5 -2
- package/lib/annotation/multi_inject.js +30 -26
- package/lib/annotation/named.d.ts +2 -2
- package/lib/annotation/named.js +32 -29
- package/lib/annotation/optional.d.ts +2 -2
- package/lib/annotation/optional.js +32 -29
- package/lib/annotation/post_construct.d.ts +4 -4
- package/lib/annotation/post_construct.js +31 -27
- package/lib/annotation/pre_destroy.d.ts +4 -4
- package/lib/annotation/pre_destroy.js +31 -27
- package/lib/annotation/property_event_decorator.d.ts +4 -4
- package/lib/annotation/property_event_decorator.js +15 -16
- package/lib/annotation/tagged.d.ts +2 -2
- package/lib/annotation/tagged.js +8 -9
- package/lib/annotation/target_name.d.ts +3 -3
- package/lib/annotation/target_name.js +35 -32
- package/lib/annotation/unmanaged.d.ts +3 -3
- package/lib/annotation/unmanaged.js +35 -32
- package/lib/bindings/binding.d.ts +20 -20
- package/lib/bindings/binding.js +40 -39
- package/lib/bindings/binding_count.d.ts +5 -5
- package/lib/bindings/binding_count.js +9 -8
- package/lib/constants/error_msgs.d.ts +30 -32
- package/lib/constants/error_msgs.js +72 -62
- package/lib/constants/literal_types.d.ts +5 -5
- package/lib/constants/literal_types.js +26 -26
- package/lib/constants/metadata_keys.d.ts +13 -13
- package/lib/constants/metadata_keys.js +26 -26
- package/lib/container/container.d.ts +73 -73
- package/lib/container/container.js +772 -729
- package/lib/container/container_module.d.ts +11 -11
- package/lib/container/container_module.js +20 -20
- package/lib/container/container_snapshot.d.ts +10 -10
- package/lib/container/container_snapshot.js +18 -18
- package/lib/container/lookup.d.ts +17 -16
- package/lib/container/lookup.js +131 -126
- package/lib/container/module_activation_store.d.ts +10 -10
- package/lib/container/module_activation_store.js +50 -52
- package/lib/interfaces/interfaces.d.ts +269 -284
- package/lib/interfaces/interfaces.js +2 -8
- package/lib/inversify.d.ts +24 -25
- package/lib/inversify.js +76 -76
- package/lib/planning/context.d.ts +11 -11
- package/lib/planning/context.js +18 -18
- package/lib/planning/metadata.d.ts +8 -8
- package/lib/planning/metadata.js +43 -39
- package/lib/planning/metadata_reader.d.ts +6 -6
- package/lib/planning/metadata_reader.js +47 -41
- package/lib/planning/plan.d.ts +7 -7
- package/lib/planning/plan.js +11 -11
- package/lib/planning/planner.d.ts +5 -5
- package/lib/planning/planner.js +192 -171
- package/lib/planning/queryable_string.d.ts +10 -11
- package/lib/planning/queryable_string.js +31 -28
- package/lib/planning/reflection_utils.d.ts +5 -5
- package/lib/planning/reflection_utils.js +55 -159
- package/lib/planning/request.d.ts +14 -14
- package/lib/planning/request.js +23 -25
- package/lib/planning/target.d.ts +23 -23
- package/lib/planning/target.js +113 -103
- package/lib/resolution/instantiation.d.ts +3 -3
- package/lib/resolution/instantiation.js +220 -212
- package/lib/resolution/resolver.d.ts +3 -3
- package/lib/resolution/resolver.js +239 -227
- package/lib/scope/scope.d.ts +3 -3
- package/lib/scope/scope.js +93 -93
- package/lib/syntax/binding_in_syntax.d.ts +9 -9
- package/lib/syntax/binding_in_syntax.js +24 -24
- package/lib/syntax/binding_in_when_on_syntax.d.ts +29 -29
- package/lib/syntax/binding_in_when_on_syntax.js +76 -76
- package/lib/syntax/binding_on_syntax.d.ts +8 -8
- package/lib/syntax/binding_on_syntax.js +19 -19
- package/lib/syntax/binding_to_syntax.d.ts +18 -18
- package/lib/syntax/binding_to_syntax.js +117 -106
- package/lib/syntax/binding_when_on_syntax.d.ts +25 -25
- package/lib/syntax/binding_when_on_syntax.js +65 -65
- package/lib/syntax/binding_when_syntax.d.ts +21 -21
- package/lib/syntax/binding_when_syntax.js +107 -102
- package/lib/syntax/constraint_helpers.d.ts +6 -6
- package/lib/syntax/constraint_helpers.js +65 -60
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/async.d.ts +3 -3
- package/lib/utils/async.js +15 -15
- package/lib/utils/binding_utils.d.ts +4 -4
- package/lib/utils/binding_utils.js +87 -78
- package/lib/utils/clonable.d.ts +3 -3
- package/lib/utils/clonable.js +9 -10
- package/lib/utils/exceptions.d.ts +2 -2
- package/lib/utils/exceptions.js +44 -40
- package/lib/utils/factory_type.d.ts +5 -5
- package/lib/utils/factory_type.js +9 -9
- package/lib/utils/id.d.ts +2 -2
- package/lib/utils/id.js +7 -8
- package/lib/utils/js.d.ts +1 -1
- package/lib/utils/js.js +16 -17
- package/lib/utils/serialization.d.ts +10 -10
- package/lib/utils/serialization.js +133 -127
- package/package.json +74 -61
- package/.nyc_output/16b95af9-19b9-451c-8475-9a8585677128.json +0 -1
- package/.nyc_output/processinfo/16b95af9-19b9-451c-8475-9a8585677128.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
|
@@ -1,99 +1,104 @@
|
|
|
1
|
-
import { BindingOnSyntax } from './binding_on_syntax';
|
|
2
|
-
import { namedConstraint, taggedConstraint, traverseAncerstors, typeConstraint } from './constraint_helpers';
|
|
3
|
-
var BindingWhenSyntax = (function () {
|
|
4
|
-
function BindingWhenSyntax(binding) {
|
|
5
|
-
this._binding = binding;
|
|
6
|
-
}
|
|
7
|
-
BindingWhenSyntax.prototype.when = function (constraint) {
|
|
8
|
-
this._binding.constraint = constraint;
|
|
9
|
-
return new BindingOnSyntax(this._binding);
|
|
10
|
-
};
|
|
11
|
-
BindingWhenSyntax.prototype.whenTargetNamed = function (name) {
|
|
12
|
-
this._binding.constraint = namedConstraint(name);
|
|
13
|
-
return new BindingOnSyntax(this._binding);
|
|
14
|
-
};
|
|
15
|
-
BindingWhenSyntax.prototype.whenTargetIsDefault = function () {
|
|
16
|
-
this._binding.constraint = function (request) {
|
|
17
|
-
if (request === null) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
var targetIsDefault =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return targetIsDefault;
|
|
24
|
-
};
|
|
25
|
-
return new BindingOnSyntax(this._binding);
|
|
26
|
-
};
|
|
27
|
-
BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {
|
|
28
|
-
this._binding.constraint = taggedConstraint(tag)(value);
|
|
29
|
-
return new BindingOnSyntax(this._binding);
|
|
30
|
-
};
|
|
31
|
-
BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {
|
|
32
|
-
this._binding.constraint = function (request) {
|
|
33
|
-
return request !== null && typeConstraint(parent)(request.parentRequest);
|
|
34
|
-
};
|
|
35
|
-
return new BindingOnSyntax(this._binding);
|
|
36
|
-
};
|
|
37
|
-
BindingWhenSyntax.prototype.whenParentNamed = function (name) {
|
|
38
|
-
this._binding.constraint = function (request) {
|
|
39
|
-
return request !== null && namedConstraint(name)(request.parentRequest);
|
|
40
|
-
};
|
|
41
|
-
return new BindingOnSyntax(this._binding);
|
|
42
|
-
};
|
|
43
|
-
BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {
|
|
44
|
-
this._binding.constraint = function (request) {
|
|
45
|
-
return request !== null && taggedConstraint(tag)(value)(request.parentRequest);
|
|
46
|
-
};
|
|
47
|
-
return new BindingOnSyntax(this._binding);
|
|
48
|
-
};
|
|
49
|
-
BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {
|
|
50
|
-
this._binding.constraint = function (request) {
|
|
51
|
-
return request !== null && traverseAncerstors(request, typeConstraint(ancestor));
|
|
52
|
-
};
|
|
53
|
-
return new BindingOnSyntax(this._binding);
|
|
54
|
-
};
|
|
55
|
-
BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {
|
|
56
|
-
this._binding.constraint = function (request) {
|
|
57
|
-
return request !== null &&
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this._binding
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
1
|
+
import { BindingOnSyntax } from './binding_on_syntax';
|
|
2
|
+
import { namedConstraint, taggedConstraint, traverseAncerstors, typeConstraint, } from './constraint_helpers';
|
|
3
|
+
var BindingWhenSyntax = (function () {
|
|
4
|
+
function BindingWhenSyntax(binding) {
|
|
5
|
+
this._binding = binding;
|
|
6
|
+
}
|
|
7
|
+
BindingWhenSyntax.prototype.when = function (constraint) {
|
|
8
|
+
this._binding.constraint = constraint;
|
|
9
|
+
return new BindingOnSyntax(this._binding);
|
|
10
|
+
};
|
|
11
|
+
BindingWhenSyntax.prototype.whenTargetNamed = function (name) {
|
|
12
|
+
this._binding.constraint = namedConstraint(name);
|
|
13
|
+
return new BindingOnSyntax(this._binding);
|
|
14
|
+
};
|
|
15
|
+
BindingWhenSyntax.prototype.whenTargetIsDefault = function () {
|
|
16
|
+
this._binding.constraint = function (request) {
|
|
17
|
+
if (request === null) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
var targetIsDefault = request.target !== null &&
|
|
21
|
+
!request.target.isNamed() &&
|
|
22
|
+
!request.target.isTagged();
|
|
23
|
+
return targetIsDefault;
|
|
24
|
+
};
|
|
25
|
+
return new BindingOnSyntax(this._binding);
|
|
26
|
+
};
|
|
27
|
+
BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {
|
|
28
|
+
this._binding.constraint = taggedConstraint(tag)(value);
|
|
29
|
+
return new BindingOnSyntax(this._binding);
|
|
30
|
+
};
|
|
31
|
+
BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {
|
|
32
|
+
this._binding.constraint = function (request) {
|
|
33
|
+
return request !== null && typeConstraint(parent)(request.parentRequest);
|
|
34
|
+
};
|
|
35
|
+
return new BindingOnSyntax(this._binding);
|
|
36
|
+
};
|
|
37
|
+
BindingWhenSyntax.prototype.whenParentNamed = function (name) {
|
|
38
|
+
this._binding.constraint = function (request) {
|
|
39
|
+
return request !== null && namedConstraint(name)(request.parentRequest);
|
|
40
|
+
};
|
|
41
|
+
return new BindingOnSyntax(this._binding);
|
|
42
|
+
};
|
|
43
|
+
BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {
|
|
44
|
+
this._binding.constraint = function (request) {
|
|
45
|
+
return request !== null && taggedConstraint(tag)(value)(request.parentRequest);
|
|
46
|
+
};
|
|
47
|
+
return new BindingOnSyntax(this._binding);
|
|
48
|
+
};
|
|
49
|
+
BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {
|
|
50
|
+
this._binding.constraint = function (request) {
|
|
51
|
+
return request !== null && traverseAncerstors(request, typeConstraint(ancestor));
|
|
52
|
+
};
|
|
53
|
+
return new BindingOnSyntax(this._binding);
|
|
54
|
+
};
|
|
55
|
+
BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {
|
|
56
|
+
this._binding.constraint = function (request) {
|
|
57
|
+
return request !== null &&
|
|
58
|
+
!traverseAncerstors(request, typeConstraint(ancestor));
|
|
59
|
+
};
|
|
60
|
+
return new BindingOnSyntax(this._binding);
|
|
61
|
+
};
|
|
62
|
+
BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) {
|
|
63
|
+
this._binding.constraint = function (request) {
|
|
64
|
+
return request !== null && traverseAncerstors(request, namedConstraint(name));
|
|
65
|
+
};
|
|
66
|
+
return new BindingOnSyntax(this._binding);
|
|
67
|
+
};
|
|
68
|
+
BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) {
|
|
69
|
+
this._binding.constraint = function (request) {
|
|
70
|
+
return request !== null && !traverseAncerstors(request, namedConstraint(name));
|
|
71
|
+
};
|
|
72
|
+
return new BindingOnSyntax(this._binding);
|
|
73
|
+
};
|
|
74
|
+
BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {
|
|
75
|
+
this._binding.constraint = function (request) {
|
|
76
|
+
return request !== null &&
|
|
77
|
+
traverseAncerstors(request, taggedConstraint(tag)(value));
|
|
78
|
+
};
|
|
79
|
+
return new BindingOnSyntax(this._binding);
|
|
80
|
+
};
|
|
81
|
+
BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) {
|
|
82
|
+
this._binding.constraint = function (request) {
|
|
83
|
+
return request !== null &&
|
|
84
|
+
!traverseAncerstors(request, taggedConstraint(tag)(value));
|
|
85
|
+
};
|
|
86
|
+
return new BindingOnSyntax(this._binding);
|
|
87
|
+
};
|
|
88
|
+
BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) {
|
|
89
|
+
this._binding.constraint = function (request) {
|
|
90
|
+
return request !== null &&
|
|
91
|
+
traverseAncerstors(request, constraint);
|
|
92
|
+
};
|
|
93
|
+
return new BindingOnSyntax(this._binding);
|
|
94
|
+
};
|
|
95
|
+
BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) {
|
|
96
|
+
this._binding.constraint = function (request) {
|
|
97
|
+
return request !== null &&
|
|
98
|
+
!traverseAncerstors(request, constraint);
|
|
99
|
+
};
|
|
100
|
+
return new BindingOnSyntax(this._binding);
|
|
101
|
+
};
|
|
102
|
+
return BindingWhenSyntax;
|
|
103
|
+
}());
|
|
104
|
+
export { BindingWhenSyntax };
|
|
@@ -1,35 +1,36 @@
|
|
|
1
|
-
import * as METADATA_KEY from '../constants/metadata_keys';
|
|
2
|
-
import { Metadata } from '../planning/metadata';
|
|
3
|
-
var traverseAncerstors = function (request, constraint) {
|
|
4
|
-
var parent = request.parentRequest;
|
|
5
|
-
if (parent !== null) {
|
|
6
|
-
return constraint(parent) ? true : traverseAncerstors(parent, constraint);
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
var taggedConstraint = function (key) { return function (value) {
|
|
13
|
-
var constraint = function (request) {
|
|
14
|
-
return request !== null &&
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
import * as METADATA_KEY from '../constants/metadata_keys';
|
|
2
|
+
import { Metadata } from '../planning/metadata';
|
|
3
|
+
var traverseAncerstors = function (request, constraint) {
|
|
4
|
+
var parent = request.parentRequest;
|
|
5
|
+
if (parent !== null) {
|
|
6
|
+
return constraint(parent) ? true : traverseAncerstors(parent, constraint);
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
var taggedConstraint = function (key) { return function (value) {
|
|
13
|
+
var constraint = function (request) {
|
|
14
|
+
return request !== null &&
|
|
15
|
+
request.target !== null &&
|
|
16
|
+
request.target.matchesTag(key)(value);
|
|
17
|
+
};
|
|
18
|
+
constraint.metaData = new Metadata(key, value);
|
|
19
|
+
return constraint;
|
|
20
|
+
}; };
|
|
21
|
+
var namedConstraint = taggedConstraint(METADATA_KEY.NAMED_TAG);
|
|
22
|
+
var typeConstraint = function (type) { return function (request) {
|
|
23
|
+
var binding = null;
|
|
24
|
+
if (request !== null) {
|
|
25
|
+
binding = request.bindings[0];
|
|
26
|
+
if (typeof type === 'string') {
|
|
27
|
+
return binding.serviceIdentifier === type;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
var constructor = request.bindings[0].implementationType;
|
|
31
|
+
return type === constructor;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}; };
|
|
36
|
+
export { traverseAncerstors, taggedConstraint, namedConstraint, typeConstraint, };
|
package/es/utils/async.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
function isPromise(object) {
|
|
2
|
-
var isObjectOrFunction = (typeof object === 'object' && object !== null) ||
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
function isPromise(object) {
|
|
2
|
+
var isObjectOrFunction = (typeof object === 'object' && object !== null) ||
|
|
3
|
+
typeof object === 'function';
|
|
4
|
+
return (isObjectOrFunction && typeof object.then === 'function');
|
|
5
|
+
}
|
|
6
|
+
function isPromiseOrContainsPromise(object) {
|
|
7
|
+
if (isPromise(object)) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
return Array.isArray(object) && object.some(isPromise);
|
|
11
|
+
}
|
|
12
|
+
export { isPromise, isPromiseOrContainsPromise };
|
|
@@ -1,53 +1,58 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { FactoryType } from './factory_type';
|
|
5
|
-
export var multiBindToService = function (container) {
|
|
6
|
-
return function (service) {
|
|
7
|
-
return function () {
|
|
8
|
-
var types = [];
|
|
9
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
10
|
-
types[_i] = arguments[_i];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
case BindingTypeEnum.
|
|
47
|
-
return { factory: binding.
|
|
48
|
-
case BindingTypeEnum.
|
|
49
|
-
return { factory: binding.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
1
|
+
import * as ERROR_MSGS from '../constants/error_msgs';
|
|
2
|
+
import { BindingTypeEnum } from '../constants/literal_types';
|
|
3
|
+
import { getServiceIdentifierAsString } from '../utils/serialization';
|
|
4
|
+
import { FactoryType } from './factory_type';
|
|
5
|
+
export var multiBindToService = function (container) {
|
|
6
|
+
return function (service) {
|
|
7
|
+
return function () {
|
|
8
|
+
var types = [];
|
|
9
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
10
|
+
types[_i] = arguments[_i];
|
|
11
|
+
}
|
|
12
|
+
types.forEach(function (t) {
|
|
13
|
+
container.bind(t).toService(service);
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export var ensureFullyBound = function (binding) {
|
|
19
|
+
var boundValue = null;
|
|
20
|
+
switch (binding.type) {
|
|
21
|
+
case BindingTypeEnum.ConstantValue:
|
|
22
|
+
case BindingTypeEnum.Function:
|
|
23
|
+
boundValue = binding.cache;
|
|
24
|
+
break;
|
|
25
|
+
case BindingTypeEnum.Constructor:
|
|
26
|
+
case BindingTypeEnum.Instance:
|
|
27
|
+
boundValue = binding.implementationType;
|
|
28
|
+
break;
|
|
29
|
+
case BindingTypeEnum.DynamicValue:
|
|
30
|
+
boundValue = binding.dynamicValue;
|
|
31
|
+
break;
|
|
32
|
+
case BindingTypeEnum.Provider:
|
|
33
|
+
boundValue = binding.provider;
|
|
34
|
+
break;
|
|
35
|
+
case BindingTypeEnum.Factory:
|
|
36
|
+
boundValue = binding.factory;
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
if (boundValue === null) {
|
|
40
|
+
var serviceIdentifierAsString = getServiceIdentifierAsString(binding.serviceIdentifier);
|
|
41
|
+
throw new Error("".concat(ERROR_MSGS.INVALID_BINDING_TYPE, " ").concat(serviceIdentifierAsString));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
export var getFactoryDetails = function (binding) {
|
|
45
|
+
switch (binding.type) {
|
|
46
|
+
case BindingTypeEnum.Factory:
|
|
47
|
+
return { factory: binding.factory, factoryType: FactoryType.Factory };
|
|
48
|
+
case BindingTypeEnum.Provider:
|
|
49
|
+
return { factory: binding.provider, factoryType: FactoryType.Provider };
|
|
50
|
+
case BindingTypeEnum.DynamicValue:
|
|
51
|
+
return {
|
|
52
|
+
factory: binding.dynamicValue,
|
|
53
|
+
factoryType: FactoryType.DynamicValue,
|
|
54
|
+
};
|
|
55
|
+
default:
|
|
56
|
+
throw new Error("Unexpected factory type ".concat(binding.type));
|
|
57
|
+
}
|
|
58
|
+
};
|
package/es/utils/clonable.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
function isClonable(obj) {
|
|
2
|
-
return (typeof obj === 'object'
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
export { isClonable };
|
|
1
|
+
function isClonable(obj) {
|
|
2
|
+
return (typeof obj === 'object' &&
|
|
3
|
+
obj !== null &&
|
|
4
|
+
'clone' in obj &&
|
|
5
|
+
typeof obj.clone === 'function');
|
|
6
|
+
}
|
|
7
|
+
export { isClonable };
|
package/es/utils/exceptions.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import * as ERROR_MSGS from '../constants/error_msgs';
|
|
2
|
-
export function
|
|
3
|
-
return (error instanceof RangeError ||
|
|
4
|
-
error.message === ERROR_MSGS.STACK_OVERFLOW);
|
|
5
|
-
}
|
|
6
|
-
export var tryAndThrowErrorIfStackOverflow = function (fn, errorCallback) {
|
|
7
|
-
try {
|
|
8
|
-
return fn();
|
|
9
|
-
}
|
|
10
|
-
catch (error) {
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
throw error;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
1
|
+
import * as ERROR_MSGS from '../constants/error_msgs';
|
|
2
|
+
export function isStackOverflowException(error) {
|
|
3
|
+
return (error instanceof RangeError ||
|
|
4
|
+
error.message === ERROR_MSGS.STACK_OVERFLOW);
|
|
5
|
+
}
|
|
6
|
+
export var tryAndThrowErrorIfStackOverflow = function (fn, errorCallback) {
|
|
7
|
+
try {
|
|
8
|
+
return fn();
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
if (isStackOverflowException(error)) {
|
|
12
|
+
throw errorCallback();
|
|
13
|
+
}
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
};
|
package/es/utils/factory_type.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export var FactoryType;
|
|
2
|
-
(function (FactoryType) {
|
|
3
|
-
FactoryType["DynamicValue"] = "toDynamicValue";
|
|
4
|
-
FactoryType["Factory"] = "toFactory";
|
|
5
|
-
FactoryType["Provider"] = "toProvider";
|
|
6
|
-
})(FactoryType || (FactoryType = {}));
|
|
1
|
+
export var FactoryType;
|
|
2
|
+
(function (FactoryType) {
|
|
3
|
+
FactoryType["DynamicValue"] = "toDynamicValue";
|
|
4
|
+
FactoryType["Factory"] = "toFactory";
|
|
5
|
+
FactoryType["Provider"] = "toProvider";
|
|
6
|
+
})(FactoryType || (FactoryType = {}));
|
package/es/utils/id.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var idCounter = 0;
|
|
2
|
-
function id() {
|
|
3
|
-
return idCounter++;
|
|
4
|
-
}
|
|
5
|
-
export { id };
|
|
1
|
+
var idCounter = 0;
|
|
2
|
+
function id() {
|
|
3
|
+
return idCounter++;
|
|
4
|
+
}
|
|
5
|
+
export { id };
|
package/es/utils/js.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export function getFirstArrayDuplicate(array) {
|
|
2
|
-
var seenValues = new Set();
|
|
3
|
-
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
4
|
-
var entry = array_1[_i];
|
|
5
|
-
if (seenValues.has(entry)) {
|
|
6
|
-
return entry;
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
seenValues.add(entry);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
1
|
+
export function getFirstArrayDuplicate(array) {
|
|
2
|
+
var seenValues = new Set();
|
|
3
|
+
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
4
|
+
var entry = array_1[_i];
|
|
5
|
+
if (seenValues.has(entry)) {
|
|
6
|
+
return entry;
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
seenValues.add(entry);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|