@expressots/core 2.16.2 → 3.0.0-beta.1

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 (185) hide show
  1. package/README.md +2 -2
  2. package/lib/CHANGELOG.md +312 -322
  3. package/lib/README.md +2 -2
  4. package/lib/cjs/application/application-container.js +18 -21
  5. package/lib/cjs/application/application-factory.js +4 -5
  6. package/lib/cjs/{common/server-env.types.js → application/application.types.js} +1 -0
  7. package/lib/cjs/application/index.js +3 -1
  8. package/lib/cjs/console/console.js +8 -20
  9. package/lib/cjs/container-module/container-module.js +10 -18
  10. package/lib/cjs/decorator/scope-binding.js +12 -11
  11. package/lib/cjs/di/annotation/decorator_utils.js +121 -0
  12. package/lib/cjs/di/annotation/inject.js +44 -0
  13. package/lib/cjs/di/annotation/inject_base.js +17 -0
  14. package/lib/cjs/di/annotation/injectable.js +43 -0
  15. package/lib/cjs/di/annotation/lazy_service_identifier.js +12 -0
  16. package/lib/cjs/di/annotation/multi_inject.js +30 -0
  17. package/lib/cjs/di/annotation/named.js +34 -0
  18. package/lib/cjs/di/annotation/optional.js +32 -0
  19. package/lib/cjs/di/annotation/post_construct.js +31 -0
  20. package/lib/cjs/di/annotation/pre_destroy.js +31 -0
  21. package/lib/cjs/di/annotation/property_event_decorator.js +15 -0
  22. package/lib/cjs/di/annotation/tagged.js +9 -0
  23. package/lib/cjs/di/annotation/target_name.js +35 -0
  24. package/lib/cjs/di/annotation/unmanaged.js +35 -0
  25. package/lib/cjs/di/binding-decorator/constants.js +7 -0
  26. package/lib/cjs/di/binding-decorator/decorator/fluent_provide.js +20 -0
  27. package/lib/cjs/di/binding-decorator/decorator/provide.js +37 -0
  28. package/lib/cjs/di/binding-decorator/factory/module_factory.js +17 -0
  29. package/lib/cjs/di/binding-decorator/index.js +14 -0
  30. package/lib/cjs/di/binding-decorator/syntax/provide_done_syntax.js +42 -0
  31. package/lib/cjs/di/binding-decorator/syntax/provide_in_syntax.js +33 -0
  32. package/lib/cjs/di/binding-decorator/syntax/provide_in_when_on_syntax.js +64 -0
  33. package/lib/cjs/di/binding-decorator/syntax/provide_on_syntax.js +22 -0
  34. package/lib/cjs/di/binding-decorator/syntax/provide_when_on_syntax.js +57 -0
  35. package/lib/cjs/di/binding-decorator/syntax/provide_when_syntax.js +89 -0
  36. package/lib/cjs/di/binding-decorator/utils/auto_wire.js +18 -0
  37. package/lib/cjs/di/bindings/binding.js +40 -0
  38. package/lib/cjs/di/bindings/binding_count.js +8 -0
  39. package/lib/cjs/di/constants/error_msgs.js +60 -0
  40. package/lib/cjs/di/constants/literal_types.js +26 -0
  41. package/lib/cjs/di/constants/metadata_keys.js +38 -0
  42. package/lib/cjs/di/container/container.js +521 -0
  43. package/lib/cjs/di/container/container_module.js +18 -0
  44. package/lib/cjs/di/container/container_snapshot.js +15 -0
  45. package/lib/cjs/di/container/lookup.js +132 -0
  46. package/lib/cjs/di/container/module_activation_store.js +49 -0
  47. package/lib/cjs/di/interfaces/interfaces.js +2 -0
  48. package/lib/cjs/di/inversify.js +78 -0
  49. package/lib/cjs/di/planning/context.js +17 -0
  50. package/lib/cjs/di/planning/metadata.js +42 -0
  51. package/lib/cjs/di/planning/metadata_reader.js +45 -0
  52. package/lib/cjs/di/planning/plan.js +10 -0
  53. package/lib/cjs/di/planning/planner.js +186 -0
  54. package/lib/cjs/di/planning/queryable_string.js +27 -0
  55. package/lib/cjs/di/planning/reflection_utils.js +178 -0
  56. package/lib/cjs/di/planning/request.js +23 -0
  57. package/lib/cjs/di/planning/target.js +108 -0
  58. package/lib/cjs/di/resolution/instantiation.js +150 -0
  59. package/lib/cjs/di/resolution/resolver.js +188 -0
  60. package/lib/cjs/di/scope/scope.js +50 -0
  61. package/lib/cjs/di/syntax/binding_in_syntax.js +23 -0
  62. package/lib/cjs/di/syntax/binding_in_when_on_syntax.js +75 -0
  63. package/lib/cjs/di/syntax/binding_on_syntax.js +18 -0
  64. package/lib/cjs/di/syntax/binding_to_syntax.js +111 -0
  65. package/lib/cjs/di/syntax/binding_when_on_syntax.js +64 -0
  66. package/lib/cjs/di/syntax/binding_when_syntax.js +84 -0
  67. package/lib/cjs/di/syntax/constraint_helpers.js +68 -0
  68. package/lib/cjs/di/utils/async.js +15 -0
  69. package/lib/cjs/di/utils/binding_utils.js +77 -0
  70. package/lib/cjs/di/utils/clonable.js +9 -0
  71. package/lib/cjs/di/utils/exceptions.js +46 -0
  72. package/lib/cjs/di/utils/factory_type.js +9 -0
  73. package/lib/cjs/di/utils/id.js +7 -0
  74. package/lib/cjs/di/utils/js.js +15 -0
  75. package/lib/cjs/di/utils/serialization.js +132 -0
  76. package/lib/cjs/error/app-error.js +5 -2
  77. package/lib/cjs/error/report.js +24 -15
  78. package/lib/cjs/index.js +1 -2
  79. package/lib/cjs/middleware/middleware-interface.js +2 -0
  80. package/lib/cjs/middleware/middleware-service.js +9 -24
  81. package/lib/cjs/provider/db-in-memory/base-repo.repository.js +3 -8
  82. package/lib/cjs/provider/db-in-memory/db-in-memory.provider.js +8 -5
  83. package/lib/cjs/provider/dto-validator/dto-validator.provider.js +4 -4
  84. package/lib/cjs/provider/dto-validator/package-resolver.js +56 -0
  85. package/lib/cjs/provider/environment/env-validator.provider.js +14 -12
  86. package/lib/cjs/provider/logger/logger.provider.js +10 -5
  87. package/lib/cjs/provider/provider-manager.js +21 -17
  88. package/lib/cjs/types/application/application-container.d.ts +12 -25
  89. package/lib/cjs/types/application/application-factory.d.ts +10 -7
  90. package/lib/cjs/types/{common/server-env.types.d.ts → application/application.types.d.ts} +1 -0
  91. package/lib/cjs/types/application/index.d.ts +1 -0
  92. package/lib/cjs/types/console/console.d.ts +3 -10
  93. package/lib/cjs/types/console/index.d.ts +2 -1
  94. package/lib/cjs/types/container-module/container-module.d.ts +3 -1
  95. package/lib/cjs/types/decorator/scope-binding.d.ts +9 -9
  96. package/lib/cjs/types/di/annotation/decorator_utils.d.ts +16 -0
  97. package/lib/cjs/types/di/annotation/inject.d.ts +16 -0
  98. package/lib/cjs/types/di/annotation/inject_base.d.ts +3 -0
  99. package/lib/cjs/types/di/annotation/injectable.d.ts +7 -0
  100. package/lib/cjs/types/di/annotation/lazy_service_identifier.d.ts +7 -0
  101. package/lib/cjs/types/di/annotation/multi_inject.d.ts +2 -0
  102. package/lib/cjs/types/di/annotation/named.d.ts +2 -0
  103. package/lib/cjs/types/di/annotation/optional.d.ts +2 -0
  104. package/lib/cjs/types/di/annotation/post_construct.d.ts +4 -0
  105. package/lib/cjs/types/di/annotation/pre_destroy.d.ts +4 -0
  106. package/lib/cjs/types/di/annotation/property_event_decorator.d.ts +4 -0
  107. package/lib/cjs/types/di/annotation/tagged.d.ts +2 -0
  108. package/lib/cjs/types/di/annotation/target_name.d.ts +3 -0
  109. package/lib/cjs/types/di/annotation/unmanaged.d.ts +3 -0
  110. package/lib/cjs/types/di/binding-decorator/constants.d.ts +4 -0
  111. package/lib/cjs/types/di/binding-decorator/decorator/fluent_provide.d.ts +4 -0
  112. package/lib/cjs/types/di/binding-decorator/decorator/provide.d.ts +4 -0
  113. package/lib/cjs/types/di/binding-decorator/factory/module_factory.d.ts +4 -0
  114. package/lib/cjs/types/di/binding-decorator/index.d.ts +8 -0
  115. package/lib/cjs/types/di/binding-decorator/interfaces/interfaces.d.ts +39 -0
  116. package/lib/cjs/types/di/binding-decorator/syntax/provide_done_syntax.d.ts +7 -0
  117. package/lib/cjs/types/di/binding-decorator/syntax/provide_in_syntax.d.ts +11 -0
  118. package/lib/cjs/types/di/binding-decorator/syntax/provide_in_when_on_syntax.d.ts +27 -0
  119. package/lib/cjs/types/di/binding-decorator/syntax/provide_on_syntax.d.ts +10 -0
  120. package/lib/cjs/types/di/binding-decorator/syntax/provide_when_on_syntax.d.ts +24 -0
  121. package/lib/cjs/types/di/binding-decorator/syntax/provide_when_syntax.d.ts +23 -0
  122. package/lib/cjs/types/di/binding-decorator/utils/auto_wire.d.ts +3 -0
  123. package/lib/cjs/types/di/bindings/binding.d.ts +20 -0
  124. package/lib/cjs/types/di/bindings/binding_count.d.ts +5 -0
  125. package/lib/cjs/types/di/constants/error_msgs.d.ts +32 -0
  126. package/lib/cjs/types/di/constants/literal_types.d.ts +5 -0
  127. package/lib/cjs/types/di/constants/metadata_keys.d.ts +13 -0
  128. package/lib/cjs/types/di/container/container.d.ts +73 -0
  129. package/lib/cjs/types/di/container/container_module.d.ts +11 -0
  130. package/lib/cjs/types/di/container/container_snapshot.d.ts +10 -0
  131. package/lib/cjs/types/di/container/lookup.d.ts +16 -0
  132. package/lib/cjs/types/di/container/module_activation_store.d.ts +10 -0
  133. package/lib/cjs/types/di/interfaces/interfaces.d.ts +299 -0
  134. package/lib/cjs/types/di/inversify.d.ts +25 -0
  135. package/lib/cjs/types/di/planning/context.d.ts +11 -0
  136. package/lib/cjs/types/di/planning/metadata.d.ts +8 -0
  137. package/lib/cjs/types/di/planning/metadata_reader.d.ts +6 -0
  138. package/lib/cjs/types/di/planning/plan.d.ts +7 -0
  139. package/lib/cjs/types/di/planning/planner.d.ts +5 -0
  140. package/lib/cjs/types/di/planning/queryable_string.d.ts +11 -0
  141. package/lib/cjs/types/di/planning/reflection_utils.d.ts +5 -0
  142. package/lib/cjs/types/di/planning/request.d.ts +14 -0
  143. package/lib/cjs/types/di/planning/target.d.ts +23 -0
  144. package/lib/cjs/types/di/resolution/instantiation.d.ts +3 -0
  145. package/lib/cjs/types/di/resolution/resolver.d.ts +3 -0
  146. package/lib/cjs/types/di/scope/scope.d.ts +3 -0
  147. package/lib/cjs/types/di/syntax/binding_in_syntax.d.ts +9 -0
  148. package/lib/cjs/types/di/syntax/binding_in_when_on_syntax.d.ts +29 -0
  149. package/lib/cjs/types/di/syntax/binding_on_syntax.d.ts +8 -0
  150. package/lib/cjs/types/di/syntax/binding_to_syntax.d.ts +18 -0
  151. package/lib/cjs/types/di/syntax/binding_when_on_syntax.d.ts +25 -0
  152. package/lib/cjs/types/di/syntax/binding_when_syntax.d.ts +21 -0
  153. package/lib/cjs/types/di/syntax/constraint_helpers.d.ts +6 -0
  154. package/lib/cjs/types/di/utils/async.d.ts +3 -0
  155. package/lib/cjs/types/di/utils/binding_utils.d.ts +4 -0
  156. package/lib/cjs/types/di/utils/clonable.d.ts +3 -0
  157. package/lib/cjs/types/di/utils/exceptions.d.ts +2 -0
  158. package/lib/cjs/types/di/utils/factory_type.d.ts +5 -0
  159. package/lib/cjs/types/di/utils/id.d.ts +2 -0
  160. package/lib/cjs/types/di/utils/js.d.ts +1 -0
  161. package/lib/cjs/types/di/utils/serialization.d.ts +10 -0
  162. package/lib/cjs/types/error/report.d.ts +7 -5
  163. package/lib/cjs/types/index.d.ts +1 -2
  164. package/lib/cjs/types/middleware/index.d.ts +2 -1
  165. package/lib/cjs/types/middleware/middleware-interface.d.ts +185 -0
  166. package/lib/cjs/types/middleware/middleware-service.d.ts +11 -163
  167. package/lib/cjs/types/provider/db-in-memory/db-in-memory.provider.d.ts +4 -0
  168. package/lib/cjs/types/provider/dto-validator/dto-validator.provider.d.ts +2 -3
  169. package/lib/cjs/types/{common → provider/dto-validator}/package-resolver.d.ts +1 -2
  170. package/lib/cjs/types/provider/environment/env-validator.provider.d.ts +7 -3
  171. package/lib/cjs/types/provider/logger/logger.provider.d.ts +5 -0
  172. package/lib/cjs/types/provider/provider-manager.d.ts +22 -2
  173. package/lib/package.json +9 -15
  174. package/package.json +9 -15
  175. package/lib/cjs/common/index.js +0 -5
  176. package/lib/cjs/common/package-resolver.js +0 -34
  177. package/lib/cjs/controller/base-controller.js +0 -63
  178. package/lib/cjs/controller/index.js +0 -5
  179. package/lib/cjs/types/common/index.d.ts +0 -2
  180. package/lib/cjs/types/common/project-config.d.ts +0 -56
  181. package/lib/cjs/types/controller/base-controller.d.ts +0 -32
  182. package/lib/cjs/types/controller/index.d.ts +0 -1
  183. /package/lib/cjs/{common → console}/color-codes.js +0 -0
  184. /package/lib/cjs/{common/project-config.js → di/binding-decorator/interfaces/interfaces.js} +0 -0
  185. /package/lib/cjs/types/{common → console}/color-codes.d.ts +0 -0
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.named = named;
27
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
28
+ const metadata_1 = require("../planning/metadata");
29
+ const decorator_utils_1 = require("./decorator_utils");
30
+ // Used to add named metadata which is used to resolve name-based contextual bindings.
31
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
32
+ function named(name) {
33
+ return (0, decorator_utils_1.createTaggedDecorator)(new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, name));
34
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.optional = optional;
27
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
28
+ const metadata_1 = require("../planning/metadata");
29
+ const decorator_utils_1 = require("./decorator_utils");
30
+ function optional() {
31
+ return (0, decorator_utils_1.createTaggedDecorator)(new metadata_1.Metadata(METADATA_KEY.OPTIONAL_TAG, true));
32
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.postConstruct = void 0;
27
+ const ERRORS_MSGS = __importStar(require("../constants/error_msgs"));
28
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
29
+ const property_event_decorator_1 = require("./property_event_decorator");
30
+ const postConstruct = (0, property_event_decorator_1.propertyEventDecorator)(METADATA_KEY.POST_CONSTRUCT, ERRORS_MSGS.MULTIPLE_POST_CONSTRUCT_METHODS);
31
+ exports.postConstruct = postConstruct;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.preDestroy = void 0;
27
+ const ERRORS_MSGS = __importStar(require("../constants/error_msgs"));
28
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
29
+ const property_event_decorator_1 = require("./property_event_decorator");
30
+ const preDestroy = (0, property_event_decorator_1.propertyEventDecorator)(METADATA_KEY.PRE_DESTROY, ERRORS_MSGS.MULTIPLE_PRE_DESTROY_METHODS);
31
+ exports.preDestroy = preDestroy;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.propertyEventDecorator = propertyEventDecorator;
4
+ const metadata_1 = require("../planning/metadata");
5
+ function propertyEventDecorator(eventKey, errorMessage) {
6
+ return () => {
7
+ return (target, propertyKey) => {
8
+ const metadata = new metadata_1.Metadata(eventKey, propertyKey);
9
+ if (Reflect.hasOwnMetadata(eventKey, target.constructor)) {
10
+ throw new Error(errorMessage);
11
+ }
12
+ Reflect.defineMetadata(eventKey, metadata, target.constructor);
13
+ };
14
+ };
15
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tagged = tagged;
4
+ const metadata_1 = require("../planning/metadata");
5
+ const decorator_utils_1 = require("./decorator_utils");
6
+ // Used to add custom metadata which is used to resolve metadata-based contextual bindings.
7
+ function tagged(metadataKey, metadataValue) {
8
+ return (0, decorator_utils_1.createTaggedDecorator)(new metadata_1.Metadata(metadataKey, metadataValue));
9
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.targetName = targetName;
27
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
28
+ const metadata_1 = require("../planning/metadata");
29
+ const decorator_utils_1 = require("./decorator_utils");
30
+ function targetName(name) {
31
+ return function (target, targetKey, index) {
32
+ const metadata = new metadata_1.Metadata(METADATA_KEY.NAME_TAG, name);
33
+ (0, decorator_utils_1.tagParameter)(target, targetKey, index, metadata);
34
+ };
35
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.unmanaged = unmanaged;
27
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
28
+ const metadata_1 = require("../planning/metadata");
29
+ const decorator_utils_1 = require("./decorator_utils");
30
+ function unmanaged() {
31
+ return function (target, targetKey, index) {
32
+ const metadata = new metadata_1.Metadata(METADATA_KEY.UNMANAGED_TAG, true);
33
+ (0, decorator_utils_1.tagParameter)(target, targetKey, index, metadata);
34
+ };
35
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.METADATA_KEY = void 0;
4
+ const METADATA_KEY = {
5
+ provide: "inversify-binding-decorators:provide",
6
+ };
7
+ exports.METADATA_KEY = METADATA_KEY;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
7
+ /* eslint-disable @typescript-eslint/no-explicit-any */
8
+ const provide_in_when_on_syntax_1 = __importDefault(require("../syntax/provide_in_when_on_syntax"));
9
+ const provide_when_syntax_1 = __importDefault(require("../syntax/provide_when_syntax"));
10
+ const provide_on_syntax_1 = __importDefault(require("../syntax/provide_on_syntax"));
11
+ const provide_in_syntax_1 = __importDefault(require("../syntax/provide_in_syntax"));
12
+ const provide_done_syntax_1 = __importDefault(require("../syntax/provide_done_syntax"));
13
+ function fluentProvide(serviceIdentifier) {
14
+ const bindingWhenOnSyntax = (bind, target) => bind(serviceIdentifier).to(target);
15
+ const bindingConstraintFunction = (bind, target) => bindingWhenOnSyntax(bind, target)._binding;
16
+ const provideDoneSyntax = new provide_done_syntax_1.default(bindingConstraintFunction);
17
+ const provideInWhenOnSyntax = new provide_in_when_on_syntax_1.default(new provide_in_syntax_1.default((bind, target) => bindingWhenOnSyntax(bind, target), provideDoneSyntax), new provide_when_syntax_1.default(bindingWhenOnSyntax, provideDoneSyntax), new provide_on_syntax_1.default(bindingWhenOnSyntax, provideDoneSyntax));
18
+ return provideInWhenOnSyntax;
19
+ }
20
+ exports.default = fluentProvide;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ require("reflect-metadata");
5
+ const inversify_1 = require("../../inversify");
6
+ const constants_1 = require("../constants");
7
+ function provide(serviceIdentifier, force) {
8
+ return function (target) {
9
+ const isAlreadyDecorated = Reflect.hasOwnMetadata(inversify_1.METADATA_KEY.PARAM_TYPES, target);
10
+ const redecorateWithInject = force === true;
11
+ if (redecorateWithInject === true && isAlreadyDecorated === false) {
12
+ (0, inversify_1.decorate)((0, inversify_1.injectable)(), target);
13
+ }
14
+ else if (redecorateWithInject === true && isAlreadyDecorated === true) {
15
+ // Do nothing
16
+ }
17
+ else {
18
+ try {
19
+ (0, inversify_1.decorate)((0, inversify_1.injectable)(), target);
20
+ }
21
+ catch (e) {
22
+ throw new Error("Cannot apply @provide decorator multiple times but is has been used " +
23
+ `multiple times in ${target.name} ` +
24
+ "Please use @provide(ID, true) if you are trying to declare multiple bindings!");
25
+ }
26
+ }
27
+ const currentMetadata = {
28
+ constraint: (bind, bindTarget) => bind(serviceIdentifier).to(bindTarget),
29
+ implementationType: target,
30
+ };
31
+ const previousMetadata = Reflect.getMetadata(constants_1.METADATA_KEY.provide, Reflect) || [];
32
+ const newMetadata = [currentMetadata, ...previousMetadata];
33
+ Reflect.defineMetadata(constants_1.METADATA_KEY.provide, newMetadata, Reflect);
34
+ return target;
35
+ };
36
+ }
37
+ exports.default = provide;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ require("reflect-metadata");
5
+ const constants_1 = require("../constants");
6
+ const inversify_1 = require("../../inversify");
7
+ function buildProviderModule() {
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ return new inversify_1.ContainerModule((bind, unbind) => {
10
+ const provideMetadata = Reflect.getMetadata(constants_1.METADATA_KEY.provide, Reflect) || [];
11
+ provideMetadata.map((metadata) => resolve(metadata, bind));
12
+ });
13
+ }
14
+ function resolve(metadata, bind) {
15
+ return metadata.constraint(bind, metadata.implementationType);
16
+ }
17
+ exports.default = buildProviderModule;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildProviderModule = exports.autoProvide = exports.provide = exports.fluentProvide = void 0;
7
+ const auto_wire_1 = __importDefault(require("./utils/auto_wire"));
8
+ exports.autoProvide = auto_wire_1.default;
9
+ const provide_1 = __importDefault(require("./decorator/provide"));
10
+ exports.provide = provide_1.default;
11
+ const fluent_provide_1 = __importDefault(require("./decorator/fluent_provide"));
12
+ exports.fluentProvide = fluent_provide_1.default;
13
+ const module_factory_1 = __importDefault(require("./factory/module_factory"));
14
+ exports.buildProviderModule = module_factory_1.default;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const inversify_1 = require("../../inversify");
4
+ const constants_1 = require("../constants");
5
+ class ProvideDoneSyntax {
6
+ constructor(binding) {
7
+ this._binding = binding;
8
+ }
9
+ done(force) {
10
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
11
+ const that = this;
12
+ return function (target) {
13
+ const isAlreadyDecorated = Reflect.hasOwnMetadata(inversify_1.METADATA_KEY.PARAM_TYPES, target);
14
+ const redecorateWithInject = force === true;
15
+ if (redecorateWithInject === true && isAlreadyDecorated === false) {
16
+ (0, inversify_1.decorate)((0, inversify_1.injectable)(), target);
17
+ }
18
+ else if (redecorateWithInject === true && isAlreadyDecorated === true) {
19
+ // Do nothing
20
+ }
21
+ else {
22
+ try {
23
+ (0, inversify_1.decorate)((0, inversify_1.injectable)(), target);
24
+ }
25
+ catch (e) {
26
+ throw new Error("Cannot apply @fluentProvide decorator multiple times but is has been used " +
27
+ `multiple times in ${target.name} ` +
28
+ "Please use done(true) if you are trying to declare multiple bindings!");
29
+ }
30
+ }
31
+ const currentMetadata = {
32
+ constraint: that._binding,
33
+ implementationType: target,
34
+ };
35
+ const previousMetadata = Reflect.getMetadata(constants_1.METADATA_KEY.provide, Reflect) || [];
36
+ const newMetadata = [currentMetadata, ...previousMetadata];
37
+ Reflect.defineMetadata(constants_1.METADATA_KEY.provide, newMetadata, Reflect);
38
+ return target;
39
+ };
40
+ }
41
+ }
42
+ exports.default = ProvideDoneSyntax;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const provide_when_on_syntax_1 = __importDefault(require("./provide_when_on_syntax"));
7
+ const provide_when_syntax_1 = __importDefault(require("./provide_when_syntax"));
8
+ const provide_on_syntax_1 = __importDefault(require("./provide_on_syntax"));
9
+ const provide_done_syntax_1 = __importDefault(require("./provide_done_syntax"));
10
+ class ProvideInSyntax {
11
+ constructor(bindingInSyntax, provideDoneSyntax) {
12
+ this._bindingInSyntax = bindingInSyntax;
13
+ this._provideDoneSyntax = provideDoneSyntax;
14
+ }
15
+ inSingletonScope() {
16
+ const bindingWhenOnSyntax = (bind, target) => this._bindingInSyntax(bind, target).inSingletonScope();
17
+ const inDoneSyntax = new provide_done_syntax_1.default(bindingWhenOnSyntax);
18
+ const provideWhenSyntax = new provide_when_syntax_1.default(bindingWhenOnSyntax, inDoneSyntax);
19
+ const provideOnSyntax = new provide_on_syntax_1.default(bindingWhenOnSyntax, inDoneSyntax);
20
+ return new provide_when_on_syntax_1.default(provideWhenSyntax, provideOnSyntax);
21
+ }
22
+ inTransientScope() {
23
+ const bindingWhenOnSyntax = (bind, target) => this._bindingInSyntax(bind, target).inTransientScope();
24
+ const inDoneSyntax = new provide_done_syntax_1.default(bindingWhenOnSyntax);
25
+ const provideWhenSyntax = new provide_when_syntax_1.default(bindingWhenOnSyntax, inDoneSyntax);
26
+ const provideOnSyntax = new provide_on_syntax_1.default(bindingWhenOnSyntax, inDoneSyntax);
27
+ return new provide_when_on_syntax_1.default(provideWhenSyntax, provideOnSyntax);
28
+ }
29
+ done(force) {
30
+ return this._provideDoneSyntax.done(force);
31
+ }
32
+ }
33
+ exports.default = ProvideInSyntax;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ProvideInWhenOnSyntax {
4
+ constructor(provideInSyntax, provideWhenSyntax, provideOnSyntax) {
5
+ this._provideInSyntax = provideInSyntax;
6
+ this._provideWhenSyntax = provideWhenSyntax;
7
+ this._provideOnSyntax = provideOnSyntax;
8
+ }
9
+ when(constraint) {
10
+ return this._provideWhenSyntax.when(constraint);
11
+ }
12
+ whenTargetNamed(name) {
13
+ return this._provideWhenSyntax.whenTargetNamed(name);
14
+ }
15
+ whenTargetTagged(tag, value) {
16
+ return this._provideWhenSyntax.whenTargetTagged(tag, value);
17
+ }
18
+ whenInjectedInto(parent) {
19
+ return this._provideWhenSyntax.whenInjectedInto(parent);
20
+ }
21
+ whenParentNamed(name) {
22
+ return this._provideWhenSyntax.whenParentNamed(name);
23
+ }
24
+ whenParentTagged(tag, value) {
25
+ return this._provideWhenSyntax.whenParentTagged(tag, value);
26
+ }
27
+ whenAnyAncestorIs(ancestor) {
28
+ return this._provideWhenSyntax.whenAnyAncestorIs(ancestor);
29
+ }
30
+ whenNoAncestorIs(ancestor) {
31
+ return this._provideWhenSyntax.whenNoAncestorIs(ancestor);
32
+ }
33
+ whenAnyAncestorNamed(name) {
34
+ return this._provideWhenSyntax.whenAnyAncestorNamed(name);
35
+ }
36
+ whenAnyAncestorTagged(tag, value) {
37
+ return this._provideWhenSyntax.whenAnyAncestorTagged(tag, value);
38
+ }
39
+ whenNoAncestorNamed(name) {
40
+ return this._provideWhenSyntax.whenNoAncestorNamed(name);
41
+ }
42
+ whenNoAncestorTagged(tag, value) {
43
+ return this._provideWhenSyntax.whenNoAncestorTagged(tag, value);
44
+ }
45
+ whenAnyAncestorMatches(constraint) {
46
+ return this._provideWhenSyntax.whenAnyAncestorMatches(constraint);
47
+ }
48
+ whenNoAncestorMatches(constraint) {
49
+ return this._provideWhenSyntax.whenNoAncestorMatches(constraint);
50
+ }
51
+ onActivation(fn) {
52
+ return this._provideOnSyntax.onActivation(fn);
53
+ }
54
+ inSingletonScope() {
55
+ return this._provideInSyntax.inSingletonScope();
56
+ }
57
+ inTransientScope() {
58
+ return this._provideInSyntax.inTransientScope();
59
+ }
60
+ done(force) {
61
+ return this._provideInSyntax.done(force);
62
+ }
63
+ }
64
+ exports.default = ProvideInWhenOnSyntax;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const provide_when_syntax_1 = __importDefault(require("./provide_when_syntax"));
7
+ const provide_done_syntax_1 = __importDefault(require("./provide_done_syntax"));
8
+ class ProvideOnSyntax {
9
+ constructor(bindingOnSyntax, provideDoneSyntax) {
10
+ this._bindingOnSyntax = bindingOnSyntax;
11
+ this._provideDoneSyntax = provideDoneSyntax;
12
+ }
13
+ onActivation(fn) {
14
+ const bindingWhenSyntax = (bind, target) => this._bindingOnSyntax(bind, target).onActivation(fn);
15
+ const onDoneSyntax = new provide_done_syntax_1.default(bindingWhenSyntax);
16
+ return new provide_when_syntax_1.default(bindingWhenSyntax, onDoneSyntax);
17
+ }
18
+ done(force) {
19
+ return this._provideDoneSyntax.done(force);
20
+ }
21
+ }
22
+ exports.default = ProvideOnSyntax;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ProvideWhenOnSyntax {
4
+ constructor(provideWhenSyntax, provideOnSyntax) {
5
+ this._provideWhenSyntax = provideWhenSyntax;
6
+ this._provideOnSyntax = provideOnSyntax;
7
+ }
8
+ when(constraint) {
9
+ return this._provideWhenSyntax.when(constraint);
10
+ }
11
+ whenTargetNamed(name) {
12
+ return this._provideWhenSyntax.whenTargetNamed(name);
13
+ }
14
+ whenTargetTagged(tag, value) {
15
+ return this._provideWhenSyntax.whenTargetTagged(tag, value);
16
+ }
17
+ whenInjectedInto(parent) {
18
+ return this._provideWhenSyntax.whenInjectedInto(parent);
19
+ }
20
+ whenParentNamed(name) {
21
+ return this._provideWhenSyntax.whenParentNamed(name);
22
+ }
23
+ whenParentTagged(tag, value) {
24
+ return this._provideWhenSyntax.whenParentTagged(tag, value);
25
+ }
26
+ whenAnyAncestorIs(ancestor) {
27
+ return this._provideWhenSyntax.whenAnyAncestorIs(ancestor);
28
+ }
29
+ whenNoAncestorIs(ancestor) {
30
+ return this._provideWhenSyntax.whenNoAncestorIs(ancestor);
31
+ }
32
+ whenAnyAncestorNamed(name) {
33
+ return this._provideWhenSyntax.whenAnyAncestorNamed(name);
34
+ }
35
+ whenAnyAncestorTagged(tag, value) {
36
+ return this._provideWhenSyntax.whenAnyAncestorTagged(tag, value);
37
+ }
38
+ whenNoAncestorNamed(name) {
39
+ return this._provideWhenSyntax.whenNoAncestorNamed(name);
40
+ }
41
+ whenNoAncestorTagged(tag, value) {
42
+ return this._provideWhenSyntax.whenNoAncestorTagged(tag, value);
43
+ }
44
+ whenAnyAncestorMatches(constraint) {
45
+ return this._provideWhenSyntax.whenAnyAncestorMatches(constraint);
46
+ }
47
+ whenNoAncestorMatches(constraint) {
48
+ return this._provideWhenSyntax.whenNoAncestorMatches(constraint);
49
+ }
50
+ onActivation(fn) {
51
+ return this._provideOnSyntax.onActivation(fn);
52
+ }
53
+ done(force) {
54
+ return this._provideWhenSyntax.done(force);
55
+ }
56
+ }
57
+ exports.default = ProvideWhenOnSyntax;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const provide_on_syntax_1 = __importDefault(require("./provide_on_syntax"));
7
+ const provide_done_syntax_1 = __importDefault(require("./provide_done_syntax"));
8
+ class ProvideWhenSyntax {
9
+ constructor(bindingWhenSyntax, provideDoneSyntax) {
10
+ this._bindingWhenSyntax = bindingWhenSyntax;
11
+ this._provideDoneSyntax = provideDoneSyntax;
12
+ }
13
+ when(constraint) {
14
+ const bindingOnSyntax = (bind, target) => {
15
+ return this._bindingWhenSyntax(bind, target).when(constraint);
16
+ };
17
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
18
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
19
+ }
20
+ whenTargetNamed(name) {
21
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenTargetNamed(name);
22
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
23
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
24
+ }
25
+ whenTargetTagged(tag, value) {
26
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenTargetTagged(tag, value);
27
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
28
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
29
+ }
30
+ whenInjectedInto(parent) {
31
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenInjectedInto(parent);
32
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
33
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
34
+ }
35
+ whenParentNamed(name) {
36
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenParentNamed(name);
37
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
38
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
39
+ }
40
+ whenParentTagged(tag, value) {
41
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenParentTagged(tag, value);
42
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
43
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
44
+ }
45
+ whenAnyAncestorIs(ancestor) {
46
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenAnyAncestorIs(ancestor);
47
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
48
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
49
+ }
50
+ whenNoAncestorIs(ancestor) {
51
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenNoAncestorIs(ancestor);
52
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
53
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
54
+ }
55
+ whenAnyAncestorNamed(name) {
56
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenAnyAncestorNamed(name);
57
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
58
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
59
+ }
60
+ whenAnyAncestorTagged(tag, value) {
61
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenAnyAncestorTagged(tag, value);
62
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
63
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
64
+ }
65
+ whenNoAncestorNamed(name) {
66
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenNoAncestorNamed(name);
67
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
68
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
69
+ }
70
+ whenNoAncestorTagged(tag, value) {
71
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenNoAncestorTagged(tag, value);
72
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
73
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
74
+ }
75
+ whenAnyAncestorMatches(constraint) {
76
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenAnyAncestorMatches(constraint);
77
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
78
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
79
+ }
80
+ whenNoAncestorMatches(constraint) {
81
+ const bindingOnSyntax = (bind, target) => this._bindingWhenSyntax(bind, target).whenNoAncestorMatches(constraint);
82
+ const whenDoneSyntax = new provide_done_syntax_1.default(bindingOnSyntax);
83
+ return new provide_on_syntax_1.default(bindingOnSyntax, whenDoneSyntax);
84
+ }
85
+ done(force) {
86
+ return this._provideDoneSyntax.done(force);
87
+ }
88
+ }
89
+ exports.default = ProvideWhenSyntax;