@angular/core 2.0.0-rc.1 → 2.0.0-rc.2

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 (624) hide show
  1. package/{core.umd.js → bundles/core.umd.js} +6402 -4606
  2. package/bundles/core.umd.min.js +6 -0
  3. package/esm/index.d.ts +5 -4
  4. package/esm/index.js +9 -8
  5. package/esm/index.js.map +1 -1
  6. package/esm/private_export.d.ts +96 -11
  7. package/esm/private_export.js +39 -10
  8. package/esm/private_export.js.map +1 -1
  9. package/esm/private_export.metadata.json +1 -1
  10. package/esm/src/animation/active_animation_players_map.d.ts +11 -0
  11. package/esm/src/animation/active_animation_players_map.js +47 -0
  12. package/esm/src/animation/active_animation_players_map.js.map +1 -0
  13. package/esm/src/animation/animation_constants.d.ts +4 -0
  14. package/esm/src/animation/animation_constants.js +5 -0
  15. package/esm/src/animation/animation_constants.js.map +1 -0
  16. package/esm/src/animation/animation_constants.metadata.json +1 -0
  17. package/esm/src/animation/animation_driver.d.ts +9 -0
  18. package/esm/src/animation/animation_driver.js +9 -0
  19. package/esm/src/animation/animation_driver.js.map +1 -0
  20. package/esm/src/animation/animation_group_player.d.ts +18 -0
  21. package/esm/src/animation/animation_group_player.js +60 -0
  22. package/esm/src/animation/animation_group_player.js.map +1 -0
  23. package/esm/src/animation/animation_keyframe.d.ts +6 -0
  24. package/esm/src/animation/animation_keyframe.js +7 -0
  25. package/esm/src/animation/animation_keyframe.js.map +1 -0
  26. package/esm/src/animation/animation_player.d.ts +26 -0
  27. package/esm/src/animation/animation_player.js +30 -0
  28. package/esm/src/animation/animation_player.js.map +1 -0
  29. package/esm/src/animation/animation_sequence_player.d.ts +21 -0
  30. package/esm/src/animation/animation_sequence_player.js +64 -0
  31. package/esm/src/animation/animation_sequence_player.js.map +1 -0
  32. package/esm/src/animation/animation_style_util.d.ts +32 -0
  33. package/esm/src/animation/animation_style_util.js +91 -0
  34. package/esm/src/animation/animation_style_util.js.map +1 -0
  35. package/esm/src/animation/animation_style_util.metadata.json +1 -0
  36. package/esm/src/animation/animation_styles.d.ts +8 -0
  37. package/esm/src/animation/animation_styles.js +6 -0
  38. package/esm/src/animation/animation_styles.js.map +1 -0
  39. package/esm/src/animation/metadata.d.ts +511 -0
  40. package/esm/src/animation/metadata.js +565 -0
  41. package/esm/src/animation/metadata.js.map +1 -0
  42. package/esm/src/animation/metadata.metadata.json +1 -0
  43. package/esm/src/application_common_providers.d.ts +1 -0
  44. package/esm/src/application_common_providers.js +5 -4
  45. package/esm/src/application_common_providers.js.map +1 -1
  46. package/esm/src/application_common_providers.metadata.json +1 -1
  47. package/esm/src/application_ref.d.ts +17 -41
  48. package/esm/src/application_ref.js +32 -23
  49. package/esm/src/application_ref.js.map +1 -1
  50. package/esm/src/application_ref.metadata.json +1 -1
  51. package/esm/src/application_tokens.d.ts +6 -1
  52. package/esm/src/application_tokens.js +9 -4
  53. package/esm/src/application_tokens.js.map +1 -1
  54. package/esm/src/application_tokens.metadata.json +1 -1
  55. package/esm/src/change_detection/change_detection.d.ts +9 -8
  56. package/esm/src/change_detection/change_detection.js +7 -7
  57. package/esm/src/change_detection/change_detection.js.map +1 -1
  58. package/esm/src/change_detection/change_detection.metadata.json +1 -1
  59. package/esm/src/change_detection/change_detection_util.d.ts +3 -1
  60. package/esm/src/change_detection/change_detection_util.js +6 -5
  61. package/esm/src/change_detection/change_detection_util.js.map +1 -1
  62. package/esm/src/change_detection/change_detection_util.metadata.json +1 -1
  63. package/esm/src/change_detection/change_detector_ref.d.ts +3 -0
  64. package/esm/src/change_detection/change_detector_ref.js +3 -0
  65. package/esm/src/change_detection/change_detector_ref.js.map +1 -1
  66. package/esm/src/change_detection/constants.d.ts +1 -0
  67. package/esm/src/change_detection/constants.js +4 -3
  68. package/esm/src/change_detection/constants.js.map +1 -1
  69. package/esm/src/change_detection/constants.metadata.json +1 -1
  70. package/esm/src/change_detection/differs/default_iterable_differ.d.ts +6 -94
  71. package/esm/src/change_detection/differs/default_iterable_differ.js +25 -18
  72. package/esm/src/change_detection/differs/default_iterable_differ.js.map +1 -1
  73. package/esm/src/change_detection/differs/default_keyvalue_differ.d.ts +3 -30
  74. package/esm/src/change_detection/differs/default_keyvalue_differ.js +13 -8
  75. package/esm/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
  76. package/esm/src/change_detection/differs/iterable_differs.d.ts +4 -1
  77. package/esm/src/change_detection/differs/iterable_differs.js +5 -4
  78. package/esm/src/change_detection/differs/iterable_differs.js.map +1 -1
  79. package/esm/src/change_detection/differs/keyvalue_differs.d.ts +2 -1
  80. package/esm/src/change_detection/differs/keyvalue_differs.js +5 -4
  81. package/esm/src/change_detection/differs/keyvalue_differs.js.map +1 -1
  82. package/esm/src/change_detection/pipe_transform.js.map +1 -1
  83. package/esm/src/change_detection.d.ts +1 -1
  84. package/esm/src/change_detection.js +5 -5
  85. package/esm/src/change_detection.js.map +1 -1
  86. package/esm/src/console.js +2 -1
  87. package/esm/src/console.js.map +1 -1
  88. package/esm/src/console.metadata.json +1 -1
  89. package/esm/src/debug/debug_node.d.ts +20 -2
  90. package/esm/src/debug/debug_node.js +16 -2
  91. package/esm/src/debug/debug_node.js.map +1 -1
  92. package/esm/src/debug/debug_node.metadata.json +1 -0
  93. package/esm/src/debug/debug_renderer.d.ts +10 -6
  94. package/esm/src/debug/debug_renderer.js +13 -2
  95. package/esm/src/debug/debug_renderer.js.map +1 -1
  96. package/esm/src/di/decorators.d.ts +13 -1
  97. package/esm/src/di/decorators.js +7 -1
  98. package/esm/src/di/decorators.js.map +1 -1
  99. package/esm/src/di/decorators.metadata.json +1 -1
  100. package/esm/src/di/forward_ref.d.ts +3 -1
  101. package/esm/src/di/forward_ref.js +3 -1
  102. package/esm/src/di/forward_ref.js.map +1 -1
  103. package/esm/src/di/injector.d.ts +4 -1
  104. package/esm/src/di/injector.js +5 -2
  105. package/esm/src/di/injector.js.map +1 -1
  106. package/esm/src/di/injector.metadata.json +1 -1
  107. package/esm/src/di/metadata.d.ts +8 -1
  108. package/esm/src/di/metadata.js +10 -3
  109. package/esm/src/di/metadata.js.map +1 -1
  110. package/esm/src/di/opaque_token.d.ts +2 -1
  111. package/esm/src/di/opaque_token.js +22 -21
  112. package/esm/src/di/opaque_token.js.map +1 -1
  113. package/esm/src/di/provider.d.ts +11 -10
  114. package/esm/src/di/provider.js +17 -14
  115. package/esm/src/di/provider.js.map +1 -1
  116. package/esm/src/di/provider.metadata.json +1 -0
  117. package/esm/src/di/provider_util.js.map +1 -1
  118. package/esm/src/di/provider_util.metadata.json +1 -0
  119. package/esm/src/di/reflective_exceptions.d.ts +11 -16
  120. package/esm/src/di/reflective_exceptions.js +28 -22
  121. package/esm/src/di/reflective_exceptions.js.map +1 -1
  122. package/esm/src/di/reflective_injector.d.ts +3 -33
  123. package/esm/src/di/reflective_injector.js +10 -7
  124. package/esm/src/di/reflective_injector.js.map +1 -1
  125. package/esm/src/di/reflective_key.d.ts +1 -8
  126. package/esm/src/di/reflective_key.js +3 -2
  127. package/esm/src/di/reflective_key.js.map +1 -1
  128. package/esm/src/di/reflective_provider.d.ts +2 -1
  129. package/esm/src/di/reflective_provider.js +6 -5
  130. package/esm/src/di/reflective_provider.js.map +1 -1
  131. package/esm/src/di/reflective_provider.metadata.json +1 -0
  132. package/esm/src/di.d.ts +2 -2
  133. package/esm/src/di.js +6 -6
  134. package/esm/src/di.js.map +1 -1
  135. package/esm/src/facade/async.d.ts +11 -4
  136. package/esm/src/facade/async.js +25 -15
  137. package/esm/src/facade/async.js.map +1 -1
  138. package/esm/src/facade/base_wrapped_exception.js +4 -4
  139. package/esm/src/facade/base_wrapped_exception.js.map +1 -1
  140. package/esm/src/facade/collection.js +1 -1
  141. package/esm/src/facade/collection.js.map +1 -1
  142. package/esm/src/facade/collection.metadata.json +1 -1
  143. package/esm/src/facade/exception_handler.d.ts +2 -11
  144. package/esm/src/facade/exception_handler.js +8 -7
  145. package/esm/src/facade/exception_handler.js.map +1 -1
  146. package/esm/src/facade/exceptions.d.ts +4 -0
  147. package/esm/src/facade/exceptions.js +6 -2
  148. package/esm/src/facade/exceptions.js.map +1 -1
  149. package/esm/src/facade/exceptions.metadata.json +1 -0
  150. package/esm/src/facade/lang.d.ts +6 -4
  151. package/esm/src/facade/lang.js +12 -11
  152. package/esm/src/facade/lang.js.map +1 -1
  153. package/esm/src/facade/lang.metadata.json +1 -1
  154. package/esm/src/facade/math.d.ts +2 -0
  155. package/esm/src/facade/math.js +4 -0
  156. package/esm/src/facade/math.js.map +1 -0
  157. package/esm/src/facade/math.metadata.json +1 -0
  158. package/esm/src/facade/promise.js.map +1 -1
  159. package/esm/src/linker/component_factory.d.ts +5 -4
  160. package/esm/src/linker/component_factory.js +7 -3
  161. package/esm/src/linker/component_factory.js.map +1 -1
  162. package/esm/src/linker/component_resolver.d.ts +5 -4
  163. package/esm/src/linker/component_resolver.js +12 -7
  164. package/esm/src/linker/component_resolver.js.map +1 -1
  165. package/esm/src/linker/component_resolver.metadata.json +1 -1
  166. package/esm/src/linker/debug_context.js +5 -4
  167. package/esm/src/linker/debug_context.js.map +1 -1
  168. package/esm/src/linker/dynamic_component_loader.d.ts +5 -6
  169. package/esm/src/linker/dynamic_component_loader.js +5 -3
  170. package/esm/src/linker/dynamic_component_loader.js.map +1 -1
  171. package/esm/src/linker/dynamic_component_loader.metadata.json +1 -1
  172. package/esm/src/linker/element.d.ts +3 -3
  173. package/esm/src/linker/element.js +5 -5
  174. package/esm/src/linker/element.js.map +1 -1
  175. package/esm/src/linker/element_injector.js.map +1 -1
  176. package/esm/src/linker/element_ref.d.ts +1 -0
  177. package/esm/src/linker/element_ref.js +5 -5
  178. package/esm/src/linker/element_ref.js.map +1 -1
  179. package/esm/src/linker/exceptions.d.ts +4 -1
  180. package/esm/src/linker/exceptions.js +4 -1
  181. package/esm/src/linker/exceptions.js.map +1 -1
  182. package/esm/src/linker/query_list.d.ts +3 -10
  183. package/esm/src/linker/query_list.js +8 -7
  184. package/esm/src/linker/query_list.js.map +1 -1
  185. package/esm/src/linker/systemjs_component_resolver.d.ts +21 -0
  186. package/esm/src/linker/systemjs_component_resolver.js +44 -0
  187. package/esm/src/linker/systemjs_component_resolver.js.map +1 -0
  188. package/esm/src/linker/template_ref.d.ts +2 -1
  189. package/esm/src/linker/template_ref.js +1 -0
  190. package/esm/src/linker/template_ref.js.map +1 -1
  191. package/esm/src/linker/view.d.ts +12 -1
  192. package/esm/src/linker/view.js +62 -16
  193. package/esm/src/linker/view.js.map +1 -1
  194. package/esm/src/linker/view_container_ref.d.ts +2 -10
  195. package/esm/src/linker/view_container_ref.js +4 -3
  196. package/esm/src/linker/view_container_ref.js.map +1 -1
  197. package/esm/src/linker/view_ref.d.ts +5 -1
  198. package/esm/src/linker/view_ref.js +6 -2
  199. package/esm/src/linker/view_ref.js.map +1 -1
  200. package/esm/src/linker/view_type.js.map +1 -1
  201. package/esm/src/linker/view_utils.d.ts +2 -4
  202. package/esm/src/linker/view_utils.js +21 -21
  203. package/esm/src/linker/view_utils.js.map +1 -1
  204. package/esm/src/linker/view_utils.metadata.json +1 -1
  205. package/esm/src/linker.d.ts +5 -4
  206. package/esm/src/linker.js +5 -4
  207. package/esm/src/linker.js.map +1 -1
  208. package/esm/src/metadata/di.d.ts +8 -1
  209. package/esm/src/metadata/di.js +10 -3
  210. package/esm/src/metadata/di.js.map +1 -1
  211. package/esm/src/metadata/directives.d.ts +104 -20
  212. package/esm/src/metadata/directives.js +25 -19
  213. package/esm/src/metadata/directives.js.map +1 -1
  214. package/esm/src/metadata/lifecycle_hooks.d.ts +46 -31
  215. package/esm/src/metadata/lifecycle_hooks.js +464 -10
  216. package/esm/src/metadata/lifecycle_hooks.js.map +1 -1
  217. package/esm/src/metadata/lifecycle_hooks.metadata.json +1 -1
  218. package/esm/src/metadata/view.d.ts +6 -2
  219. package/esm/src/metadata/view.js +3 -1
  220. package/esm/src/metadata/view.js.map +1 -1
  221. package/esm/src/metadata/view.metadata.json +1 -1
  222. package/esm/src/metadata.d.ts +49 -15
  223. package/esm/src/metadata.js +35 -10
  224. package/esm/src/metadata.js.map +1 -1
  225. package/esm/src/metadata.metadata.json +1 -1
  226. package/esm/src/platform_common_providers.d.ts +1 -0
  227. package/esm/src/platform_common_providers.js +3 -3
  228. package/esm/src/platform_common_providers.js.map +1 -1
  229. package/esm/src/platform_common_providers.metadata.json +1 -1
  230. package/esm/src/platform_directives_and_pipes.d.ts +48 -45
  231. package/esm/src/platform_directives_and_pipes.js +50 -47
  232. package/esm/src/platform_directives_and_pipes.js.map +1 -1
  233. package/esm/src/platform_directives_and_pipes.metadata.json +1 -1
  234. package/esm/src/profile/profile.d.ts +5 -1
  235. package/esm/src/profile/profile.js +4 -0
  236. package/esm/src/profile/profile.js.map +1 -1
  237. package/esm/src/profile/profile.metadata.json +1 -1
  238. package/esm/src/profile/wtf_impl.js +1 -1
  239. package/esm/src/profile/wtf_impl.js.map +1 -1
  240. package/esm/src/profile/wtf_impl.metadata.json +1 -0
  241. package/esm/src/profile/wtf_init.js +2 -2
  242. package/esm/src/profile/wtf_init.js.map +1 -1
  243. package/esm/src/reflection/platform_reflection_capabilities.d.ts +4 -3
  244. package/esm/src/reflection/platform_reflection_capabilities.js.map +1 -1
  245. package/esm/src/reflection/reflection.d.ts +1 -1
  246. package/esm/src/reflection/reflection.js +2 -2
  247. package/esm/src/reflection/reflection.js.map +1 -1
  248. package/esm/src/reflection/reflection.metadata.json +1 -1
  249. package/esm/src/reflection/reflection_capabilities.d.ts +4 -5
  250. package/esm/src/reflection/reflection_capabilities.js +22 -10
  251. package/esm/src/reflection/reflection_capabilities.js.map +1 -1
  252. package/esm/src/reflection/reflector.d.ts +8 -20
  253. package/esm/src/reflection/reflector.js +13 -3
  254. package/esm/src/reflection/reflector.js.map +1 -1
  255. package/esm/src/reflection/reflector_reader.js +3 -3
  256. package/esm/src/reflection/reflector_reader.js.map +1 -1
  257. package/esm/src/reflection/types.js.map +1 -1
  258. package/esm/src/render/api.d.ts +17 -6
  259. package/esm/src/render/api.js +8 -1
  260. package/esm/src/render/api.js.map +1 -1
  261. package/esm/src/render.d.ts +1 -1
  262. package/esm/src/render.js +1 -1
  263. package/esm/src/render.js.map +1 -1
  264. package/esm/src/security.js +6 -6
  265. package/esm/src/security.js.map +1 -1
  266. package/esm/src/testability/testability.d.ts +3 -19
  267. package/esm/src/testability/testability.js +10 -5
  268. package/esm/src/testability/testability.js.map +1 -1
  269. package/esm/src/testability/testability.metadata.json +1 -1
  270. package/esm/src/util/decorators.d.ts +2 -1
  271. package/esm/src/util/decorators.js +10 -9
  272. package/esm/src/util/decorators.js.map +1 -1
  273. package/esm/src/util.js.map +1 -1
  274. package/esm/src/zone/ng_zone.d.ts +6 -17
  275. package/esm/src/zone/ng_zone.js +7 -6
  276. package/esm/src/zone/ng_zone.js.map +1 -1
  277. package/esm/src/zone/ng_zone_impl.d.ts +1 -4
  278. package/esm/src/zone/ng_zone_impl.js +3 -2
  279. package/esm/src/zone/ng_zone_impl.js.map +1 -1
  280. package/esm/src/zone.js.map +1 -1
  281. package/esm/testing/async.js +20 -22
  282. package/esm/testing/async.js.map +1 -1
  283. package/esm/testing/async.metadata.json +1 -0
  284. package/esm/testing/async_test_completer.js.map +1 -1
  285. package/esm/testing/fake_async.d.ts +4 -1
  286. package/esm/testing/fake_async.js +9 -2
  287. package/esm/testing/fake_async.js.map +1 -1
  288. package/esm/testing/lang_utils.js +1 -1
  289. package/esm/testing/lang_utils.js.map +1 -1
  290. package/esm/testing/lang_utils.metadata.json +1 -0
  291. package/esm/testing/logger.js +5 -3
  292. package/esm/testing/logger.js.map +1 -1
  293. package/esm/testing/logger.metadata.json +1 -1
  294. package/esm/testing/mock_application_ref.d.ts +1 -1
  295. package/esm/testing/mock_application_ref.js +1 -0
  296. package/esm/testing/mock_application_ref.js.map +1 -1
  297. package/esm/testing/mock_application_ref.metadata.json +1 -1
  298. package/esm/testing/ng_zone_mock.d.ts +0 -1
  299. package/esm/testing/ng_zone_mock.js +2 -1
  300. package/esm/testing/ng_zone_mock.js.map +1 -1
  301. package/esm/testing/ng_zone_mock.metadata.json +1 -1
  302. package/esm/testing/regexp.js +1 -1
  303. package/esm/testing/regexp.js.map +1 -1
  304. package/esm/testing/regexp.metadata.json +1 -0
  305. package/esm/testing/test_injector.d.ts +6 -12
  306. package/esm/testing/test_injector.js +4 -10
  307. package/esm/testing/test_injector.js.map +1 -1
  308. package/esm/testing/test_injector.metadata.json +1 -0
  309. package/esm/testing/testing.d.ts +2 -2
  310. package/esm/testing/testing.js +2 -2
  311. package/esm/testing/testing.js.map +1 -1
  312. package/esm/testing/testing.metadata.json +1 -1
  313. package/esm/testing.js.map +1 -1
  314. package/index.d.ts +5 -4
  315. package/index.js +10 -8
  316. package/index.js.map +1 -1
  317. package/package.json +5 -1
  318. package/private_export.d.ts +96 -11
  319. package/private_export.js +39 -10
  320. package/private_export.js.map +1 -1
  321. package/private_export.metadata.json +1 -1
  322. package/src/animation/active_animation_players_map.d.ts +11 -0
  323. package/src/animation/active_animation_players_map.js +54 -0
  324. package/src/animation/active_animation_players_map.js.map +1 -0
  325. package/src/animation/animation_constants.d.ts +4 -0
  326. package/src/animation/animation_constants.js +6 -0
  327. package/src/animation/animation_constants.js.map +1 -0
  328. package/src/animation/animation_constants.metadata.json +1 -0
  329. package/src/animation/animation_driver.d.ts +9 -0
  330. package/src/animation/animation_driver.js +25 -0
  331. package/src/animation/animation_driver.js.map +1 -0
  332. package/src/animation/animation_group_player.d.ts +18 -0
  333. package/src/animation/animation_group_player.js +64 -0
  334. package/src/animation/animation_group_player.js.map +1 -0
  335. package/src/animation/animation_keyframe.d.ts +6 -0
  336. package/src/animation/animation_keyframe.js +10 -0
  337. package/src/animation/animation_keyframe.js.map +1 -0
  338. package/src/animation/animation_player.d.ts +26 -0
  339. package/src/animation/animation_player.js +42 -0
  340. package/src/animation/animation_player.js.map +1 -0
  341. package/src/animation/animation_sequence_player.d.ts +21 -0
  342. package/src/animation/animation_sequence_player.js +69 -0
  343. package/src/animation/animation_sequence_player.js.map +1 -0
  344. package/src/animation/animation_style_util.d.ts +32 -0
  345. package/src/animation/animation_style_util.js +99 -0
  346. package/src/animation/animation_style_util.js.map +1 -0
  347. package/src/animation/animation_style_util.metadata.json +1 -0
  348. package/src/animation/animation_styles.d.ts +8 -0
  349. package/src/animation/animation_styles.js +9 -0
  350. package/src/animation/animation_styles.js.map +1 -0
  351. package/src/animation/metadata.d.ts +511 -0
  352. package/src/animation/metadata.js +627 -0
  353. package/src/animation/metadata.js.map +1 -0
  354. package/src/animation/metadata.metadata.json +1 -0
  355. package/src/application_common_providers.d.ts +1 -0
  356. package/src/application_common_providers.js +4 -3
  357. package/src/application_common_providers.js.map +1 -1
  358. package/src/application_common_providers.metadata.json +1 -1
  359. package/src/application_ref.d.ts +17 -41
  360. package/src/application_ref.js +30 -21
  361. package/src/application_ref.js.map +1 -1
  362. package/src/application_ref.metadata.json +1 -1
  363. package/src/application_tokens.d.ts +6 -1
  364. package/src/application_tokens.js +9 -4
  365. package/src/application_tokens.js.map +1 -1
  366. package/src/application_tokens.metadata.json +1 -1
  367. package/src/change_detection/change_detection.d.ts +9 -8
  368. package/src/change_detection/change_detection.js +21 -21
  369. package/src/change_detection/change_detection.js.map +1 -1
  370. package/src/change_detection/change_detection.metadata.json +1 -1
  371. package/src/change_detection/change_detection_util.d.ts +3 -1
  372. package/src/change_detection/change_detection_util.js +6 -5
  373. package/src/change_detection/change_detection_util.js.map +1 -1
  374. package/src/change_detection/change_detection_util.metadata.json +1 -1
  375. package/src/change_detection/change_detector_ref.d.ts +3 -0
  376. package/src/change_detection/change_detector_ref.js +3 -0
  377. package/src/change_detection/change_detector_ref.js.map +1 -1
  378. package/src/change_detection/constants.d.ts +1 -0
  379. package/src/change_detection/constants.js +4 -3
  380. package/src/change_detection/constants.js.map +1 -1
  381. package/src/change_detection/constants.metadata.json +1 -1
  382. package/src/change_detection/differs/default_iterable_differ.d.ts +6 -94
  383. package/src/change_detection/differs/default_iterable_differ.js +25 -18
  384. package/src/change_detection/differs/default_iterable_differ.js.map +1 -1
  385. package/src/change_detection/differs/default_keyvalue_differ.d.ts +3 -30
  386. package/src/change_detection/differs/default_keyvalue_differ.js +13 -8
  387. package/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
  388. package/src/change_detection/differs/iterable_differs.d.ts +4 -1
  389. package/src/change_detection/differs/iterable_differs.js +4 -3
  390. package/src/change_detection/differs/iterable_differs.js.map +1 -1
  391. package/src/change_detection/differs/keyvalue_differs.d.ts +2 -1
  392. package/src/change_detection/differs/keyvalue_differs.js +4 -3
  393. package/src/change_detection/differs/keyvalue_differs.js.map +1 -1
  394. package/src/change_detection/pipe_transform.js.map +1 -1
  395. package/src/change_detection.d.ts +1 -1
  396. package/src/change_detection.js +9 -9
  397. package/src/change_detection.js.map +1 -1
  398. package/src/console.js +2 -1
  399. package/src/console.js.map +1 -1
  400. package/src/console.metadata.json +1 -1
  401. package/src/debug/debug_node.d.ts +20 -2
  402. package/src/debug/debug_node.js +16 -2
  403. package/src/debug/debug_node.js.map +1 -1
  404. package/src/debug/debug_node.metadata.json +1 -0
  405. package/src/debug/debug_renderer.d.ts +10 -6
  406. package/src/debug/debug_renderer.js +12 -1
  407. package/src/debug/debug_renderer.js.map +1 -1
  408. package/src/di/decorators.d.ts +13 -1
  409. package/src/di/decorators.js +7 -1
  410. package/src/di/decorators.js.map +1 -1
  411. package/src/di/decorators.metadata.json +1 -1
  412. package/src/di/forward_ref.d.ts +3 -1
  413. package/src/di/forward_ref.js +3 -1
  414. package/src/di/forward_ref.js.map +1 -1
  415. package/src/di/injector.d.ts +4 -1
  416. package/src/di/injector.js +5 -2
  417. package/src/di/injector.js.map +1 -1
  418. package/src/di/injector.metadata.json +1 -1
  419. package/src/di/metadata.d.ts +8 -1
  420. package/src/di/metadata.js +10 -3
  421. package/src/di/metadata.js.map +1 -1
  422. package/src/di/opaque_token.d.ts +2 -1
  423. package/src/di/opaque_token.js +22 -21
  424. package/src/di/opaque_token.js.map +1 -1
  425. package/src/di/provider.d.ts +11 -10
  426. package/src/di/provider.js +17 -14
  427. package/src/di/provider.js.map +1 -1
  428. package/src/di/provider.metadata.json +1 -0
  429. package/src/di/provider_util.js.map +1 -1
  430. package/src/di/provider_util.metadata.json +1 -0
  431. package/src/di/reflective_exceptions.d.ts +11 -16
  432. package/src/di/reflective_exceptions.js +28 -22
  433. package/src/di/reflective_exceptions.js.map +1 -1
  434. package/src/di/reflective_injector.d.ts +3 -33
  435. package/src/di/reflective_injector.js +9 -6
  436. package/src/di/reflective_injector.js.map +1 -1
  437. package/src/di/reflective_key.d.ts +1 -8
  438. package/src/di/reflective_key.js +3 -2
  439. package/src/di/reflective_key.js.map +1 -1
  440. package/src/di/reflective_provider.d.ts +2 -1
  441. package/src/di/reflective_provider.js +6 -5
  442. package/src/di/reflective_provider.js.map +1 -1
  443. package/src/di/reflective_provider.metadata.json +1 -0
  444. package/src/di.d.ts +2 -2
  445. package/src/di.js +7 -9
  446. package/src/di.js.map +1 -1
  447. package/src/facade/async.d.ts +11 -4
  448. package/src/facade/async.js +27 -17
  449. package/src/facade/async.js.map +1 -1
  450. package/src/facade/base_wrapped_exception.js +4 -4
  451. package/src/facade/base_wrapped_exception.js.map +1 -1
  452. package/src/facade/collection.js.map +1 -1
  453. package/src/facade/collection.metadata.json +1 -1
  454. package/src/facade/exception_handler.d.ts +2 -11
  455. package/src/facade/exception_handler.js +8 -7
  456. package/src/facade/exception_handler.js.map +1 -1
  457. package/src/facade/exceptions.d.ts +4 -0
  458. package/src/facade/exceptions.js +6 -2
  459. package/src/facade/exceptions.js.map +1 -1
  460. package/src/facade/exceptions.metadata.json +1 -0
  461. package/src/facade/lang.d.ts +6 -4
  462. package/src/facade/lang.js +12 -11
  463. package/src/facade/lang.js.map +1 -1
  464. package/src/facade/lang.metadata.json +1 -1
  465. package/src/facade/math.d.ts +2 -0
  466. package/src/facade/math.js +5 -0
  467. package/src/facade/math.js.map +1 -0
  468. package/src/facade/math.metadata.json +1 -0
  469. package/src/facade/promise.js.map +1 -1
  470. package/src/linker/component_factory.d.ts +5 -4
  471. package/src/linker/component_factory.js +7 -3
  472. package/src/linker/component_factory.js.map +1 -1
  473. package/src/linker/component_resolver.d.ts +5 -4
  474. package/src/linker/component_resolver.js +12 -7
  475. package/src/linker/component_resolver.js.map +1 -1
  476. package/src/linker/component_resolver.metadata.json +1 -1
  477. package/src/linker/debug_context.js +5 -4
  478. package/src/linker/debug_context.js.map +1 -1
  479. package/src/linker/dynamic_component_loader.d.ts +5 -6
  480. package/src/linker/dynamic_component_loader.js +5 -3
  481. package/src/linker/dynamic_component_loader.js.map +1 -1
  482. package/src/linker/dynamic_component_loader.metadata.json +1 -1
  483. package/src/linker/element.d.ts +3 -3
  484. package/src/linker/element.js +5 -5
  485. package/src/linker/element.js.map +1 -1
  486. package/src/linker/element_injector.js.map +1 -1
  487. package/src/linker/element_ref.d.ts +1 -0
  488. package/src/linker/element_ref.js +5 -5
  489. package/src/linker/element_ref.js.map +1 -1
  490. package/src/linker/exceptions.d.ts +4 -1
  491. package/src/linker/exceptions.js +4 -1
  492. package/src/linker/exceptions.js.map +1 -1
  493. package/src/linker/query_list.d.ts +3 -10
  494. package/src/linker/query_list.js +8 -7
  495. package/src/linker/query_list.js.map +1 -1
  496. package/src/linker/systemjs_component_resolver.d.ts +21 -0
  497. package/src/linker/systemjs_component_resolver.js +52 -0
  498. package/src/linker/systemjs_component_resolver.js.map +1 -0
  499. package/src/linker/template_ref.d.ts +2 -1
  500. package/src/linker/template_ref.js +1 -0
  501. package/src/linker/template_ref.js.map +1 -1
  502. package/src/linker/view.d.ts +12 -1
  503. package/src/linker/view.js +65 -15
  504. package/src/linker/view.js.map +1 -1
  505. package/src/linker/view_container_ref.d.ts +2 -10
  506. package/src/linker/view_container_ref.js +4 -3
  507. package/src/linker/view_container_ref.js.map +1 -1
  508. package/src/linker/view_ref.d.ts +5 -1
  509. package/src/linker/view_ref.js +6 -2
  510. package/src/linker/view_ref.js.map +1 -1
  511. package/src/linker/view_type.js.map +1 -1
  512. package/src/linker/view_utils.d.ts +2 -4
  513. package/src/linker/view_utils.js +21 -21
  514. package/src/linker/view_utils.js.map +1 -1
  515. package/src/linker/view_utils.metadata.json +1 -1
  516. package/src/linker.d.ts +5 -4
  517. package/src/linker.js +12 -9
  518. package/src/linker.js.map +1 -1
  519. package/src/metadata/di.d.ts +8 -1
  520. package/src/metadata/di.js +10 -3
  521. package/src/metadata/di.js.map +1 -1
  522. package/src/metadata/directives.d.ts +104 -20
  523. package/src/metadata/directives.js +25 -27
  524. package/src/metadata/directives.js.map +1 -1
  525. package/src/metadata/lifecycle_hooks.d.ts +46 -31
  526. package/src/metadata/lifecycle_hooks.js +496 -10
  527. package/src/metadata/lifecycle_hooks.js.map +1 -1
  528. package/src/metadata/lifecycle_hooks.metadata.json +1 -1
  529. package/src/metadata/view.d.ts +6 -2
  530. package/src/metadata/view.js +3 -1
  531. package/src/metadata/view.js.map +1 -1
  532. package/src/metadata/view.metadata.json +1 -1
  533. package/src/metadata.d.ts +49 -15
  534. package/src/metadata.js +70 -37
  535. package/src/metadata.js.map +1 -1
  536. package/src/metadata.metadata.json +1 -1
  537. package/src/platform_common_providers.d.ts +1 -0
  538. package/src/platform_common_providers.js +3 -3
  539. package/src/platform_common_providers.js.map +1 -1
  540. package/src/platform_common_providers.metadata.json +1 -1
  541. package/src/platform_directives_and_pipes.d.ts +48 -45
  542. package/src/platform_directives_and_pipes.js +50 -47
  543. package/src/platform_directives_and_pipes.js.map +1 -1
  544. package/src/platform_directives_and_pipes.metadata.json +1 -1
  545. package/src/profile/profile.d.ts +5 -1
  546. package/src/profile/profile.js +5 -3
  547. package/src/profile/profile.js.map +1 -1
  548. package/src/profile/profile.metadata.json +1 -1
  549. package/src/profile/wtf_impl.js +1 -1
  550. package/src/profile/wtf_impl.js.map +1 -1
  551. package/src/profile/wtf_impl.metadata.json +1 -0
  552. package/src/profile/wtf_init.js +2 -2
  553. package/src/profile/wtf_init.js.map +1 -1
  554. package/src/reflection/platform_reflection_capabilities.d.ts +4 -3
  555. package/src/reflection/platform_reflection_capabilities.js.map +1 -1
  556. package/src/reflection/reflection.d.ts +1 -1
  557. package/src/reflection/reflection.js +2 -2
  558. package/src/reflection/reflection.js.map +1 -1
  559. package/src/reflection/reflection.metadata.json +1 -1
  560. package/src/reflection/reflection_capabilities.d.ts +4 -5
  561. package/src/reflection/reflection_capabilities.js +24 -10
  562. package/src/reflection/reflection_capabilities.js.map +1 -1
  563. package/src/reflection/reflector.d.ts +8 -20
  564. package/src/reflection/reflector.js +13 -3
  565. package/src/reflection/reflector.js.map +1 -1
  566. package/src/reflection/reflector_reader.js +3 -3
  567. package/src/reflection/reflector_reader.js.map +1 -1
  568. package/src/reflection/types.js.map +1 -1
  569. package/src/render/api.d.ts +17 -6
  570. package/src/render/api.js +8 -1
  571. package/src/render/api.js.map +1 -1
  572. package/src/render.d.ts +1 -1
  573. package/src/render.js +2 -2
  574. package/src/render.js.map +1 -1
  575. package/src/security.js +6 -6
  576. package/src/security.js.map +1 -1
  577. package/src/testability/testability.d.ts +3 -19
  578. package/src/testability/testability.js +10 -5
  579. package/src/testability/testability.js.map +1 -1
  580. package/src/testability/testability.metadata.json +1 -1
  581. package/src/util/decorators.d.ts +2 -1
  582. package/src/util/decorators.js +10 -9
  583. package/src/util/decorators.js.map +1 -1
  584. package/src/util.js.map +1 -1
  585. package/src/zone/ng_zone.d.ts +6 -17
  586. package/src/zone/ng_zone.js +11 -6
  587. package/src/zone/ng_zone.js.map +1 -1
  588. package/src/zone/ng_zone_impl.d.ts +1 -4
  589. package/src/zone/ng_zone_impl.js +3 -2
  590. package/src/zone/ng_zone_impl.js.map +1 -1
  591. package/src/zone.js.map +1 -1
  592. package/testing/async.js +20 -22
  593. package/testing/async.js.map +1 -1
  594. package/testing/async.metadata.json +1 -0
  595. package/testing/async_test_completer.js.map +1 -1
  596. package/testing/fake_async.d.ts +4 -1
  597. package/testing/fake_async.js +10 -2
  598. package/testing/fake_async.js.map +1 -1
  599. package/testing/lang_utils.js +1 -1
  600. package/testing/lang_utils.js.map +1 -1
  601. package/testing/lang_utils.metadata.json +1 -0
  602. package/testing/logger.js +5 -3
  603. package/testing/logger.js.map +1 -1
  604. package/testing/logger.metadata.json +1 -1
  605. package/testing/mock_application_ref.d.ts +1 -1
  606. package/testing/mock_application_ref.js +1 -0
  607. package/testing/mock_application_ref.js.map +1 -1
  608. package/testing/mock_application_ref.metadata.json +1 -1
  609. package/testing/ng_zone_mock.d.ts +0 -1
  610. package/testing/ng_zone_mock.js +2 -1
  611. package/testing/ng_zone_mock.js.map +1 -1
  612. package/testing/ng_zone_mock.metadata.json +1 -1
  613. package/testing/regexp.js +1 -1
  614. package/testing/regexp.js.map +1 -1
  615. package/testing/regexp.metadata.json +1 -0
  616. package/testing/test_injector.d.ts +6 -12
  617. package/testing/test_injector.js +3 -9
  618. package/testing/test_injector.js.map +1 -1
  619. package/testing/test_injector.metadata.json +1 -0
  620. package/testing/testing.d.ts +2 -2
  621. package/testing/testing.js +5 -5
  622. package/testing/testing.js.map +1 -1
  623. package/testing/testing.metadata.json +1 -1
  624. package/testing.js.map +1 -1
@@ -1,6 +1,6 @@
1
- import { ListWrapper } from '../../src/facade/collection';
2
- import { stringify, isBlank } from '../../src/facade/lang';
3
- import { BaseException, WrappedException } from '../../src/facade/exceptions';
1
+ import { ListWrapper } from '../facade/collection';
2
+ import { BaseException, WrappedException } from '../facade/exceptions';
3
+ import { isBlank, stringify } from '../facade/lang';
4
4
  function findFirstClosedCycle(keys) {
5
5
  var res = [];
6
6
  for (var i = 0; i < keys.length; ++i) {
@@ -18,18 +18,19 @@ function constructResolvingPath(keys) {
18
18
  if (keys.length > 1) {
19
19
  var reversed = findFirstClosedCycle(ListWrapper.reversed(keys));
20
20
  var tokenStrs = reversed.map(k => stringify(k.token));
21
- return " (" + tokenStrs.join(' -> ') + ")";
21
+ return ' (' + tokenStrs.join(' -> ') + ')';
22
22
  }
23
23
  else {
24
- return "";
24
+ return '';
25
25
  }
26
26
  }
27
27
  /**
28
28
  * Base class for all errors arising from misconfigured providers.
29
+ * @stable
29
30
  */
30
31
  export class AbstractProviderError extends BaseException {
31
32
  constructor(injector, key, constructResolvingMessage) {
32
- super("DI Exception");
33
+ super('DI Exception');
33
34
  this.keys = [key];
34
35
  this.injectors = [injector];
35
36
  this.constructResolvingMessage = constructResolvingMessage;
@@ -55,6 +56,7 @@ export class AbstractProviderError extends BaseException {
55
56
  *
56
57
  * expect(() => Injector.resolveAndCreate([A])).toThrowError();
57
58
  * ```
59
+ * @stable
58
60
  */
59
61
  export class NoProviderError extends AbstractProviderError {
60
62
  constructor(injector, key) {
@@ -71,14 +73,15 @@ export class NoProviderError extends AbstractProviderError {
71
73
  *
72
74
  * ```typescript
73
75
  * var injector = Injector.resolveAndCreate([
74
- * provide("one", {useFactory: (two) => "two", deps: [[new Inject("two")]]}),
75
- * provide("two", {useFactory: (one) => "one", deps: [[new Inject("one")]]})
76
+ * {provide: "one", useFactory: (two) => "two", deps: [[new Inject("two")]]},
77
+ * {provide: "two", useFactory: (one) => "one", deps: [[new Inject("one")]]}
76
78
  * ]);
77
79
  *
78
80
  * expect(() => injector.get("one")).toThrowError();
79
81
  * ```
80
82
  *
81
83
  * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.
84
+ * @stable
82
85
  */
83
86
  export class CyclicDependencyError extends AbstractProviderError {
84
87
  constructor(injector, key) {
@@ -112,10 +115,11 @@ export class CyclicDependencyError extends AbstractProviderError {
112
115
  * expect(e.originalStack).toBeDefined();
113
116
  * }
114
117
  * ```
118
+ * @stable
115
119
  */
116
120
  export class InstantiationError extends WrappedException {
117
- constructor(injector, originalException, originalStack, key) {
118
- super("DI Exception", originalException, originalStack, null);
121
+ constructor(injector, originalException /** TODO #9100 */, originalStack /** TODO #9100 */, key) {
122
+ super('DI Exception', originalException, originalStack, null);
119
123
  this.keys = [key];
120
124
  this.injectors = [injector];
121
125
  }
@@ -139,11 +143,11 @@ export class InstantiationError extends WrappedException {
139
143
  * ```typescript
140
144
  * expect(() => Injector.resolveAndCreate(["not a type"])).toThrowError();
141
145
  * ```
146
+ * @stable
142
147
  */
143
148
  export class InvalidProviderError extends BaseException {
144
- constructor(provider) {
145
- super("Invalid provider - only instances of Provider and Type are allowed, got: " +
146
- provider.toString());
149
+ constructor(provider /** TODO #9100 */) {
150
+ super(`Invalid provider - only instances of Provider and Type are allowed, got: ${provider}`);
147
151
  }
148
152
  }
149
153
  /**
@@ -173,12 +177,13 @@ export class InvalidProviderError extends BaseException {
173
177
  *
174
178
  * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();
175
179
  * ```
180
+ * @stable
176
181
  */
177
182
  export class NoAnnotationError extends BaseException {
178
- constructor(typeOrFunc, params) {
183
+ constructor(typeOrFunc /** TODO #9100 */, params) {
179
184
  super(NoAnnotationError._genMessage(typeOrFunc, params));
180
185
  }
181
- static _genMessage(typeOrFunc, params) {
186
+ static _genMessage(typeOrFunc /** TODO #9100 */, params) {
182
187
  var signature = [];
183
188
  for (var i = 0, ii = params.length; i < ii; i++) {
184
189
  var parameter = params[i];
@@ -189,10 +194,10 @@ export class NoAnnotationError extends BaseException {
189
194
  signature.push(parameter.map(stringify).join(' '));
190
195
  }
191
196
  }
192
- return "Cannot resolve all parameters for '" + stringify(typeOrFunc) + "'(" +
193
- signature.join(', ') + "). " +
194
- "Make sure that all the parameters are decorated with Inject or have valid type annotations and that '" +
195
- stringify(typeOrFunc) + "' is decorated with Injectable.";
197
+ return 'Cannot resolve all parameters for \'' + stringify(typeOrFunc) + '\'(' +
198
+ signature.join(', ') + '). ' +
199
+ 'Make sure that all the parameters are decorated with Inject or have valid type annotations and that \'' +
200
+ stringify(typeOrFunc) + '\' is decorated with Injectable.';
196
201
  }
197
202
  }
198
203
  /**
@@ -207,9 +212,10 @@ export class NoAnnotationError extends BaseException {
207
212
  *
208
213
  * expect(() => injector.getAt(100)).toThrowError();
209
214
  * ```
215
+ * @stable
210
216
  */
211
217
  export class OutOfBoundsError extends BaseException {
212
- constructor(index) {
218
+ constructor(index /** TODO #9100 */) {
213
219
  super(`Index ${index} is out-of-bounds.`);
214
220
  }
215
221
  }
@@ -227,8 +233,8 @@ export class OutOfBoundsError extends BaseException {
227
233
  * ```
228
234
  */
229
235
  export class MixingMultiProvidersWithRegularProvidersError extends BaseException {
230
- constructor(provider1, provider2) {
231
- super("Cannot mix multi providers and regular providers, got: " + provider1.toString() + " " +
236
+ constructor(provider1 /** TODO #9100 */, provider2 /** TODO #9100 */) {
237
+ super('Cannot mix multi providers and regular providers, got: ' + provider1.toString() + ' ' +
232
238
  provider2.toString());
233
239
  }
234
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reflective_exceptions.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/di/reflective_exceptions.ts"],"names":[],"mappings":"OAIS,EAAC,WAAW,EAAC,MAAM,6BAA6B;OAClD,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,uBAAuB;OACjD,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,6BAA6B;AAI3E,8BAA8B,IAAW;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AAED,gCAAgC,IAAW;IACzC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IAC7C,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAGD;;GAEG;AACH,2CAA2C,aAAa;IAatD,YAAY,QAA4B,EAAE,GAAkB,EAChD,yBAAmC;QAC7C,MAAM,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,QAA4B,EAAE,GAAkB;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,qCAAqC,qBAAqB;IACxD,YAAY,QAA4B,EAAE,GAAkB;QAC1D,MAAM,QAAQ,EAAE,GAAG,EAAE,UAAS,IAAW;YACvC,IAAI,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,2CAA2C,qBAAqB;IAC9D,YAAY,QAA4B,EAAE,GAAkB;QAC1D,MAAM,QAAQ,EAAE,GAAG,EAAE,UAAS,IAAW;YACvC,MAAM,CAAC,wCAAwC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wCAAwC,gBAAgB;IAOtD,YAAY,QAA4B,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAkB;QAC5F,MAAM,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,QAA4B,EAAE,GAAkB;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,iCAAiC,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxF,CAAC;IAED,IAAI,QAAQ,KAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;;;GASG;AACH,0CAA0C,aAAa;IACrD,YAAY,QAAQ;QAClB,MAAM,2EAA2E;YAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,uCAAuC,aAAa;IAClD,YAAY,UAAU,EAAE,MAAe;QACrC,MAAM,iBAAiB,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAe,WAAW,CAAC,UAAU,EAAE,MAAe;QACpD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QACD,MAAM,CAAC,qCAAqC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI;YACpE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK;YAC5B,uGAAuG;YACvG,SAAS,CAAC,UAAU,CAAC,GAAG,iCAAiC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,sCAAsC,aAAa;IACjD,YAAY,KAAK;QAAI,MAAM,SAAS,KAAK,oBAAoB,CAAC,CAAC;IAAC,CAAC;AACnE,CAAC;AAED,wDAAwD;AACxD;;;;;;;;;;;GAWG;AACH,mEAAmE,aAAa;IAC9E,YAAY,SAAS,EAAE,SAAS;QAC9B,MAAM,yDAAyD,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,GAAG;YACtF,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAAA","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {ListWrapper} from '../../src/facade/collection';\nimport {stringify, isBlank} from '../../src/facade/lang';\nimport {BaseException, WrappedException} from '../../src/facade/exceptions';\nimport {ReflectiveKey} from './reflective_key';\nimport {ReflectiveInjector} from './reflective_injector';\n\nfunction findFirstClosedCycle(keys: any[]): any[] {\n var res = [];\n for (var i = 0; i < keys.length; ++i) {\n if (ListWrapper.contains(res, keys[i])) {\n res.push(keys[i]);\n return res;\n } else {\n res.push(keys[i]);\n }\n }\n return res;\n}\n\nfunction constructResolvingPath(keys: any[]): string {\n if (keys.length > 1) {\n var reversed = findFirstClosedCycle(ListWrapper.reversed(keys));\n var tokenStrs = reversed.map(k => stringify(k.token));\n return \" (\" + tokenStrs.join(' -> ') + \")\";\n } else {\n return \"\";\n }\n}\n\n\n/**\n * Base class for all errors arising from misconfigured providers.\n */\nexport class AbstractProviderError extends BaseException {\n /** @internal */\n message: string;\n\n /** @internal */\n keys: ReflectiveKey[];\n\n /** @internal */\n injectors: ReflectiveInjector[];\n\n /** @internal */\n constructResolvingMessage: Function;\n\n constructor(injector: ReflectiveInjector, key: ReflectiveKey,\n constructResolvingMessage: Function) {\n super(\"DI Exception\");\n this.keys = [key];\n this.injectors = [injector];\n this.constructResolvingMessage = constructResolvingMessage;\n this.message = this.constructResolvingMessage(this.keys);\n }\n\n addKey(injector: ReflectiveInjector, key: ReflectiveKey): void {\n this.injectors.push(injector);\n this.keys.push(key);\n this.message = this.constructResolvingMessage(this.keys);\n }\n\n get context() { return this.injectors[this.injectors.length - 1].debugContext(); }\n}\n\n/**\n * Thrown when trying to retrieve a dependency by `Key` from {@link Injector}, but the\n * {@link Injector} does not have a {@link Provider} for {@link Key}.\n *\n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b:B) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n */\nexport class NoProviderError extends AbstractProviderError {\n constructor(injector: ReflectiveInjector, key: ReflectiveKey) {\n super(injector, key, function(keys: any[]) {\n var first = stringify(ListWrapper.first(keys).token);\n return `No provider for ${first}!${constructResolvingPath(keys)}`;\n });\n }\n}\n\n/**\n * Thrown when dependencies form a cycle.\n *\n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\n *\n * ```typescript\n * var injector = Injector.resolveAndCreate([\n * provide(\"one\", {useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]}),\n * provide(\"two\", {useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]})\n * ]);\n *\n * expect(() => injector.get(\"one\")).toThrowError();\n * ```\n *\n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\n */\nexport class CyclicDependencyError extends AbstractProviderError {\n constructor(injector: ReflectiveInjector, key: ReflectiveKey) {\n super(injector, key, function(keys: any[]) {\n return `Cannot instantiate cyclic dependency!${constructResolvingPath(keys)}`;\n });\n }\n}\n\n/**\n * Thrown when a constructing type returns with an Error.\n *\n * The `InstantiationError` class contains the original error plus the dependency graph which caused\n * this object to be instantiated.\n *\n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\n *\n * ```typescript\n * class A {\n * constructor() {\n * throw new Error('message');\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([A]);\n\n * try {\n * injector.get(A);\n * } catch (e) {\n * expect(e instanceof InstantiationError).toBe(true);\n * expect(e.originalException.message).toEqual(\"message\");\n * expect(e.originalStack).toBeDefined();\n * }\n * ```\n */\nexport class InstantiationError extends WrappedException {\n /** @internal */\n keys: ReflectiveKey[];\n\n /** @internal */\n injectors: ReflectiveInjector[];\n\n constructor(injector: ReflectiveInjector, originalException, originalStack, key: ReflectiveKey) {\n super(\"DI Exception\", originalException, originalStack, null);\n this.keys = [key];\n this.injectors = [injector];\n }\n\n addKey(injector: ReflectiveInjector, key: ReflectiveKey): void {\n this.injectors.push(injector);\n this.keys.push(key);\n }\n\n get wrapperMessage(): string {\n var first = stringify(ListWrapper.first(this.keys).token);\n return `Error during instantiation of ${first}!${constructResolvingPath(this.keys)}.`;\n }\n\n get causeKey(): ReflectiveKey { return this.keys[0]; }\n\n get context() { return this.injectors[this.injectors.length - 1].debugContext(); }\n}\n\n/**\n * Thrown when an object other then {@link Provider} (or `Type`) is passed to {@link Injector}\n * creation.\n *\n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\n * ```\n */\nexport class InvalidProviderError extends BaseException {\n constructor(provider) {\n super(\"Invalid provider - only instances of Provider and Type are allowed, got: \" +\n provider.toString());\n }\n}\n\n/**\n * Thrown when the class has no annotation information.\n *\n * Lack of annotation information prevents the {@link Injector} from determining which dependencies\n * need to be injected into the constructor.\n *\n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n *\n * This error is also thrown when the class not marked with {@link Injectable} has parameter types.\n *\n * ```typescript\n * class B {}\n *\n * class A {\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\n * }\n *\n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\n * ```\n */\nexport class NoAnnotationError extends BaseException {\n constructor(typeOrFunc, params: any[][]) {\n super(NoAnnotationError._genMessage(typeOrFunc, params));\n }\n\n private static _genMessage(typeOrFunc, params: any[][]) {\n var signature = [];\n for (var i = 0, ii = params.length; i < ii; i++) {\n var parameter = params[i];\n if (isBlank(parameter) || parameter.length == 0) {\n signature.push('?');\n } else {\n signature.push(parameter.map(stringify).join(' '));\n }\n }\n return \"Cannot resolve all parameters for '\" + stringify(typeOrFunc) + \"'(\" +\n signature.join(', ') + \"). \" +\n \"Make sure that all the parameters are decorated with Inject or have valid type annotations and that '\" +\n stringify(typeOrFunc) + \"' is decorated with Injectable.\";\n }\n}\n\n/**\n * Thrown when getting an object by index.\n *\n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\n *\n * ```typescript\n * class A {}\n *\n * var injector = Injector.resolveAndCreate([A]);\n *\n * expect(() => injector.getAt(100)).toThrowError();\n * ```\n */\nexport class OutOfBoundsError extends BaseException {\n constructor(index) { super(`Index ${index} is out-of-bounds.`); }\n}\n\n// TODO: add a working example after alpha38 is released\n/**\n * Thrown when a multi provider and a regular provider are bound to the same token.\n *\n * ### Example\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\n * new Provider(\"Strings\", {useValue: \"string1\", multi: true}),\n * new Provider(\"Strings\", {useValue: \"string2\", multi: false})\n * ])).toThrowError();\n * ```\n */\nexport class MixingMultiProvidersWithRegularProvidersError extends BaseException {\n constructor(provider1, provider2) {\n super(\"Cannot mix multi providers and regular providers, got: \" + provider1.toString() + \" \" +\n provider2.toString());\n }\n}\n"]}
1
+ {"version":3,"file":"reflective_exceptions.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/di/reflective_exceptions.ts"],"names":[],"mappings":"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","sourcesContent":["import {ListWrapper} from '../facade/collection';\nimport {BaseException, WrappedException} from '../facade/exceptions';\nimport {isBlank, stringify} from '../facade/lang';\n\nimport {ReflectiveInjector} from './reflective_injector';\nimport {ReflectiveKey} from './reflective_key';\n\nfunction findFirstClosedCycle(keys: any[]): any[] {\n var res: any[] /** TODO #9100 */ = [];\n for (var i = 0; i < keys.length; ++i) {\n if (ListWrapper.contains(res, keys[i])) {\n res.push(keys[i]);\n return res;\n } else {\n res.push(keys[i]);\n }\n }\n return res;\n}\n\nfunction constructResolvingPath(keys: any[]): string {\n if (keys.length > 1) {\n var reversed = findFirstClosedCycle(ListWrapper.reversed(keys));\n var tokenStrs = reversed.map(k => stringify(k.token));\n return ' (' + tokenStrs.join(' -> ') + ')';\n } else {\n return '';\n }\n}\n\n\n/**\n * Base class for all errors arising from misconfigured providers.\n * @stable\n */\nexport class AbstractProviderError extends BaseException {\n /** @internal */\n message: string;\n\n /** @internal */\n keys: ReflectiveKey[];\n\n /** @internal */\n injectors: ReflectiveInjector[];\n\n /** @internal */\n constructResolvingMessage: Function;\n\n constructor(\n injector: ReflectiveInjector, key: ReflectiveKey, constructResolvingMessage: Function) {\n super('DI Exception');\n this.keys = [key];\n this.injectors = [injector];\n this.constructResolvingMessage = constructResolvingMessage;\n this.message = this.constructResolvingMessage(this.keys);\n }\n\n addKey(injector: ReflectiveInjector, key: ReflectiveKey): void {\n this.injectors.push(injector);\n this.keys.push(key);\n this.message = this.constructResolvingMessage(this.keys);\n }\n\n get context() { return this.injectors[this.injectors.length - 1].debugContext(); }\n}\n\n/**\n * Thrown when trying to retrieve a dependency by `Key` from {@link Injector}, but the\n * {@link Injector} does not have a {@link Provider} for {@link Key}.\n *\n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b:B) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n * @stable\n */\nexport class NoProviderError extends AbstractProviderError {\n constructor(injector: ReflectiveInjector, key: ReflectiveKey) {\n super(injector, key, function(keys: any[]) {\n var first = stringify(ListWrapper.first(keys).token);\n return `No provider for ${first}!${constructResolvingPath(keys)}`;\n });\n }\n}\n\n/**\n * Thrown when dependencies form a cycle.\n *\n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\n *\n * ```typescript\n * var injector = Injector.resolveAndCreate([\n * {provide: \"one\", useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]},\n * {provide: \"two\", useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]}\n * ]);\n *\n * expect(() => injector.get(\"one\")).toThrowError();\n * ```\n *\n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\n * @stable\n */\nexport class CyclicDependencyError extends AbstractProviderError {\n constructor(injector: ReflectiveInjector, key: ReflectiveKey) {\n super(injector, key, function(keys: any[]) {\n return `Cannot instantiate cyclic dependency!${constructResolvingPath(keys)}`;\n });\n }\n}\n\n/**\n * Thrown when a constructing type returns with an Error.\n *\n * The `InstantiationError` class contains the original error plus the dependency graph which caused\n * this object to be instantiated.\n *\n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\n *\n * ```typescript\n * class A {\n * constructor() {\n * throw new Error('message');\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([A]);\n\n * try {\n * injector.get(A);\n * } catch (e) {\n * expect(e instanceof InstantiationError).toBe(true);\n * expect(e.originalException.message).toEqual(\"message\");\n * expect(e.originalStack).toBeDefined();\n * }\n * ```\n * @stable\n */\nexport class InstantiationError extends WrappedException {\n /** @internal */\n keys: ReflectiveKey[];\n\n /** @internal */\n injectors: ReflectiveInjector[];\n\n constructor(\n injector: ReflectiveInjector, originalException: any /** TODO #9100 */,\n originalStack: any /** TODO #9100 */, key: ReflectiveKey) {\n super('DI Exception', originalException, originalStack, null);\n this.keys = [key];\n this.injectors = [injector];\n }\n\n addKey(injector: ReflectiveInjector, key: ReflectiveKey): void {\n this.injectors.push(injector);\n this.keys.push(key);\n }\n\n get wrapperMessage(): string {\n var first = stringify(ListWrapper.first(this.keys).token);\n return `Error during instantiation of ${first}!${constructResolvingPath(this.keys)}.`;\n }\n\n get causeKey(): ReflectiveKey { return this.keys[0]; }\n\n get context() { return this.injectors[this.injectors.length - 1].debugContext(); }\n}\n\n/**\n * Thrown when an object other then {@link Provider} (or `Type`) is passed to {@link Injector}\n * creation.\n *\n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\n * ```\n * @stable\n */\nexport class InvalidProviderError extends BaseException {\n constructor(provider: any /** TODO #9100 */) {\n super(`Invalid provider - only instances of Provider and Type are allowed, got: ${provider}`);\n }\n}\n\n/**\n * Thrown when the class has no annotation information.\n *\n * Lack of annotation information prevents the {@link Injector} from determining which dependencies\n * need to be injected into the constructor.\n *\n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n *\n * This error is also thrown when the class not marked with {@link Injectable} has parameter types.\n *\n * ```typescript\n * class B {}\n *\n * class A {\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\n * }\n *\n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\n * ```\n * @stable\n */\nexport class NoAnnotationError extends BaseException {\n constructor(typeOrFunc: any /** TODO #9100 */, params: any[][]) {\n super(NoAnnotationError._genMessage(typeOrFunc, params));\n }\n\n private static _genMessage(typeOrFunc: any /** TODO #9100 */, params: any[][]) {\n var signature: any[] /** TODO #9100 */ = [];\n for (var i = 0, ii = params.length; i < ii; i++) {\n var parameter = params[i];\n if (isBlank(parameter) || parameter.length == 0) {\n signature.push('?');\n } else {\n signature.push(parameter.map(stringify).join(' '));\n }\n }\n return 'Cannot resolve all parameters for \\'' + stringify(typeOrFunc) + '\\'(' +\n signature.join(', ') + '). ' +\n 'Make sure that all the parameters are decorated with Inject or have valid type annotations and that \\'' +\n stringify(typeOrFunc) + '\\' is decorated with Injectable.';\n }\n}\n\n/**\n * Thrown when getting an object by index.\n *\n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\n *\n * ```typescript\n * class A {}\n *\n * var injector = Injector.resolveAndCreate([A]);\n *\n * expect(() => injector.getAt(100)).toThrowError();\n * ```\n * @stable\n */\nexport class OutOfBoundsError extends BaseException {\n constructor(index: any /** TODO #9100 */) { super(`Index ${index} is out-of-bounds.`); }\n}\n\n// TODO: add a working example after alpha38 is released\n/**\n * Thrown when a multi provider and a regular provider are bound to the same token.\n *\n * ### Example\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\n * new Provider(\"Strings\", {useValue: \"string1\", multi: true}),\n * new Provider(\"Strings\", {useValue: \"string2\", multi: false})\n * ])).toThrowError();\n * ```\n */\nexport class MixingMultiProvidersWithRegularProvidersError extends BaseException {\n constructor(provider1: any /** TODO #9100 */, provider2: any /** TODO #9100 */) {\n super(\n 'Cannot mix multi providers and regular providers, got: ' + provider1.toString() + ' ' +\n provider2.toString());\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1,8 +1,7 @@
1
+ import { Type } from '../facade/lang';
2
+ import { Injector } from './injector';
1
3
  import { Provider } from './provider';
2
4
  import { ResolvedReflectiveProvider } from './reflective_provider';
3
- import { Type } from '../../src/facade/lang';
4
- import { ReflectiveKey } from './reflective_key';
5
- import { Injector } from './injector';
6
5
  export interface ReflectiveProtoInjectorStrategy {
7
6
  getProviderAtIndex(index: number): ResolvedReflectiveProvider;
8
7
  createInjectorStrategy(inj: ReflectiveInjector_): ReflectiveInjectorStrategy;
@@ -41,8 +40,6 @@ export declare class ReflectiveProtoInjectorDynamicStrategy implements Reflectiv
41
40
  }
42
41
  export declare class ReflectiveProtoInjector {
43
42
  static fromResolvedProviders(providers: ResolvedReflectiveProvider[]): ReflectiveProtoInjector;
44
- /** @internal */
45
- _strategy: ReflectiveProtoInjectorStrategy;
46
43
  numberOfProviders: number;
47
44
  constructor(providers: ResolvedReflectiveProvider[]);
48
45
  getProviderAtIndex(index: number): ResolvedReflectiveProvider;
@@ -205,6 +202,7 @@ export declare abstract class ReflectiveInjector implements Injector {
205
202
  * var injector = ReflectiveInjector.fromResolvedProviders(providers);
206
203
  * expect(injector.get(Car) instanceof Car).toBe(true);
207
204
  * ```
205
+ * @experimental
208
206
  */
209
207
  static fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent?: Injector): ReflectiveInjector;
210
208
  /**
@@ -226,10 +224,6 @@ export declare abstract class ReflectiveInjector implements Injector {
226
224
  * ```
227
225
  */
228
226
  readonly parent: Injector;
229
- /**
230
- * @internal
231
- */
232
- debugContext(): any;
233
227
  /**
234
228
  * Resolves an array of providers and creates a child injector from those providers.
235
229
  *
@@ -341,45 +335,21 @@ export declare abstract class ReflectiveInjector implements Injector {
341
335
  export declare class ReflectiveInjector_ implements ReflectiveInjector {
342
336
  private _debugContext;
343
337
  private _strategy;
344
- /** @internal */
345
- _constructionCounter: number;
346
- /** @internal */
347
- _proto: any;
348
- /** @internal */
349
- _parent: Injector;
350
338
  /**
351
339
  * Private
352
340
  */
353
341
  constructor(_proto: any, _parent?: Injector, _debugContext?: Function);
354
- /**
355
- * @internal
356
- */
357
- debugContext(): any;
358
342
  get(token: any, notFoundValue?: any): any;
359
343
  getAt(index: number): any;
360
344
  readonly parent: Injector;
361
- /**
362
- * @internal
363
- * Internal. Do not use.
364
- * We return `any` not to export the InjectorStrategy type.
365
- */
366
- readonly internalStrategy: any;
367
345
  resolveAndCreateChild(providers: Array<Type | Provider | any[]>): ReflectiveInjector;
368
346
  createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector;
369
347
  resolveAndInstantiate(provider: Type | Provider): any;
370
348
  instantiateResolved(provider: ResolvedReflectiveProvider): any;
371
- /** @internal */
372
- _new(provider: ResolvedReflectiveProvider): any;
373
349
  private _instantiateProvider(provider);
374
350
  private _instantiate(provider, ResolvedReflectiveFactory);
375
351
  private _getByReflectiveDependency(provider, dep);
376
352
  private _getByKey(key, lowerBoundVisibility, upperBoundVisibility, notFoundValue);
377
- /** @internal */
378
- _throwOrNull(key: ReflectiveKey, notFoundValue: any): any;
379
- /** @internal */
380
- _getByKeySelf(key: ReflectiveKey, notFoundValue: any): any;
381
- /** @internal */
382
- _getByKeyDefault(key: ReflectiveKey, notFoundValue: any, lowerBoundVisibility: Object): any;
383
353
  readonly displayName: string;
384
354
  toString(): string;
385
355
  }
@@ -1,10 +1,10 @@
1
- import { ListWrapper } from '../../src/facade/collection';
2
- import { resolveReflectiveProviders } from './reflective_provider';
3
- import { AbstractProviderError, NoProviderError, CyclicDependencyError, InstantiationError, OutOfBoundsError } from './reflective_exceptions';
4
- import { BaseException, unimplemented } from '../../src/facade/exceptions';
5
- import { ReflectiveKey } from './reflective_key';
6
- import { SelfMetadata, SkipSelfMetadata } from './metadata';
1
+ import { ListWrapper } from '../facade/collection';
2
+ import { BaseException, unimplemented } from '../facade/exceptions';
7
3
  import { Injector, THROW_IF_NOT_FOUND } from './injector';
4
+ import { SelfMetadata, SkipSelfMetadata } from './metadata';
5
+ import { AbstractProviderError, CyclicDependencyError, InstantiationError, NoProviderError, OutOfBoundsError } from './reflective_exceptions';
6
+ import { ReflectiveKey } from './reflective_key';
7
+ import { resolveReflectiveProviders } from './reflective_provider';
8
8
  var __unused; // avoid unused import when Type union types are erased
9
9
  // Threshold for the dynamic version
10
10
  const _MAX_CONSTRUCTION_COUNTER = 10;
@@ -394,6 +394,7 @@ export class ReflectiveInjector {
394
394
  * var injector = ReflectiveInjector.fromResolvedProviders(providers);
395
395
  * expect(injector.get(Car) instanceof Car).toBe(true);
396
396
  * ```
397
+ * @experimental
397
398
  */
398
399
  static fromResolvedProviders(providers, parent = null) {
399
400
  return new ReflectiveInjector_(ReflectiveProtoInjector.fromResolvedProviders(providers), parent);
@@ -773,7 +774,9 @@ export class ReflectiveInjector_ {
773
774
  }
774
775
  }
775
776
  get displayName() {
776
- return `ReflectiveInjector(providers: [${_mapProviders(this, (b) => ` "${b.key.displayName}" `).join(", ")}])`;
777
+ const providers = _mapProviders(this, (b) => ' "' + b.key.displayName + '" ')
778
+ .join(', ');
779
+ return `ReflectiveInjector(providers: [${providers}])`;
777
780
  }
778
781
  toString() { return this.displayName; }
779
782
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reflective_injector.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/di/reflective_injector.ts"],"names":[],"mappings":"OAIS,EAAC,WAAW,EAAC,MAAM,6BAA6B;OAElD,EAIL,0BAA0B,EAC3B,MAAM,uBAAuB;OACvB,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,yBAAyB;OAEzB,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,6BAA6B;OACjE,EAAC,aAAa,EAAC,MAAM,kBAAkB;OACvC,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,YAAY;OAClD,EAAC,QAAQ,EAAE,kBAAkB,EAAC,MAAM,YAAY;AAEvD,IAAI,QAAc,CAAC,CAAE,uDAAuD;AAE5E,oCAAoC;AACpC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,SAAS,GAAsB,IAAI,MAAM,EAAE,CAAC;AAOlD;IAuBE,YAAY,OAAgC,EAAE,SAAuC;QAtBrF,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAC7C,cAAS,GAA+B,IAAI,CAAC;QAE7C,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QACtB,WAAM,GAAW,IAAI,CAAC;QAGpB,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAE9B,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB,CAAC,QAA6B;QAClD,MAAM,CAAC,IAAI,gCAAgC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;IAGE,YAAY,QAAiC,EAAS,SAAuC;QAAvC,cAAS,GAAT,SAAS,CAA8B;QAC3F,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE/C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,sBAAsB,CAAC,EAAuB;QAC5C,MAAM,CAAC,IAAI,iCAAiC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;IASE,YAAY,SAAuC;QACjD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,yBAAyB;YACxC,IAAI,sCAAsC,CAAC,IAAI,EAAE,SAAS,CAAC;YAC3D,IAAI,qCAAqC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClF,CAAC;IAbD,OAAO,qBAAqB,CAAC,SAAuC;QAClE,MAAM,CAAC,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAaD,kBAAkB,CAAC,KAAa;QAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAaD;IAYE,YAAmB,QAA6B,EAC7B,aAAoD;QADpD,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,kBAAa,GAAb,aAAa,CAAuC;QAZvE,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;QACtB,SAAI,GAAQ,SAAS,CAAC;IAGoD,CAAC;IAE3E,wBAAwB,KAAW,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5E,mBAAmB,CAAC,QAAoC;QACtD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAExB,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,qBAAqB,KAAa,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;AACvE,CAAC;AAGD;IAGE,YAAmB,aAAqD,EACrD,QAA6B;QAD7B,kBAAa,GAAb,aAAa,CAAwC;QACrD,aAAQ,GAAR,QAAQ,CAAqB;QAC9C,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,wBAAwB,KAAW,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5E,mBAAmB,CAAC,QAAoC;QACtD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAE3B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;gBAC1B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,qBAAqB,KAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,OAAO,OAAO,CAAC,SAA8D;QAE3E,MAAM,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,gBAAgB,CAAC,SAA8D,EAC9D,MAAM,GAAa,IAAI;QAC7C,IAAI,2BAA2B,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxE,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IACvF,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,qBAAqB,CAAC,SAAuC,EACvC,MAAM,GAAa,IAAI;QAClD,MAAM,CAAC,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,SAAS,CAAC,EACxD,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,OAAO,oBAAoB,CAAC,SAAuC;QACjE,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAGD;;;;;;;;;;;;;OAaG;IACH,IAAI,MAAM,KAAe,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAGlD;;OAEG;IACH,YAAY,KAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,qBAAqB,CACjB,SAA8D;QAChE,MAAM,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,uBAAuB,CAAC,SAAuC;QAC7D,MAAM,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,qBAAqB,CAAC,QAAyB,IAAS,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAEjF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,mBAAmB,CAAC,QAAoC,IAAS,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAG5F,CAAC;AAED;IAQE;;OAEG;IACH,YAAY,MAAW,CAAC,mBAAmB,EAAE,OAAO,GAAa,IAAI,EACjD,aAAa,GAAa,IAAI;QAA9B,kBAAa,GAAb,aAAa,CAAiB;QAVlD,gBAAgB;QAChB,yBAAoB,GAAW,CAAC,CAAC;QAU/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,YAAY,KAAU,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAEpD,GAAG,CAAC,KAAU,EAAE,aAAa,GAA2B,kBAAkB;QACxE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,KAAa,IAAS,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzE,IAAI,MAAM,KAAe,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/C;;;;OAIG;IACH,IAAI,gBAAgB,KAAU,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtD,qBAAqB,CAAC,SAAyC;QAC7D,IAAI,2BAA2B,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,CAAC;IACnE,CAAC;IAED,uBAAuB,CAAC,SAAuC;QAC7D,IAAI,KAAK,GAAG,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB,CAAC,QAAyB;QAC7C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,mBAAmB,CAAC,QAAoC;QACtD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,QAAoC;QACvC,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;YACzE,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAEO,oBAAoB,CAAC,QAAoC;QAC/D,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,GAAG,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACzE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAoC,EACpC,yBAAoD;QACvE,IAAI,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC;QAChD,IAAI,IAAI,GAAG,yBAAyB,CAAC,YAAY,CAAC;QAClD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEzB,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,EAAO,CAAC;QACZ,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/E,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/E,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/E,GAAG,GAAG,MAAM,G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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {ListWrapper} from '../../src/facade/collection';\nimport {Provider} from './provider';\nimport {\n ResolvedReflectiveProvider,\n ReflectiveDependency,\n ResolvedReflectiveFactory,\n resolveReflectiveProviders\n} from './reflective_provider';\nimport {\n AbstractProviderError,\n NoProviderError,\n CyclicDependencyError,\n InstantiationError,\n OutOfBoundsError\n} from './reflective_exceptions';\nimport {Type} from '../../src/facade/lang';\nimport {BaseException, unimplemented} from '../../src/facade/exceptions';\nimport {ReflectiveKey} from './reflective_key';\nimport {SelfMetadata, SkipSelfMetadata} from './metadata';\nimport {Injector, THROW_IF_NOT_FOUND} from './injector';\n\nvar __unused: Type; // avoid unused import when Type union types are erased\n\n// Threshold for the dynamic version\nconst _MAX_CONSTRUCTION_COUNTER = 10;\nconst UNDEFINED = /*@ts2dart_const*/ new Object();\n\nexport interface ReflectiveProtoInjectorStrategy {\n getProviderAtIndex(index: number): ResolvedReflectiveProvider;\n createInjectorStrategy(inj: ReflectiveInjector_): ReflectiveInjectorStrategy;\n}\n\nexport class ReflectiveProtoInjectorInlineStrategy implements ReflectiveProtoInjectorStrategy {\n provider0: ResolvedReflectiveProvider = null;\n provider1: ResolvedReflectiveProvider = null;\n provider2: ResolvedReflectiveProvider = null;\n provider3: ResolvedReflectiveProvider = null;\n provider4: ResolvedReflectiveProvider = null;\n provider5: ResolvedReflectiveProvider = null;\n provider6: ResolvedReflectiveProvider = null;\n provider7: ResolvedReflectiveProvider = null;\n provider8: ResolvedReflectiveProvider = null;\n provider9: ResolvedReflectiveProvider = null;\n\n keyId0: number = null;\n keyId1: number = null;\n keyId2: number = null;\n keyId3: number = null;\n keyId4: number = null;\n keyId5: number = null;\n keyId6: number = null;\n keyId7: number = null;\n keyId8: number = null;\n keyId9: number = null;\n\n constructor(protoEI: ReflectiveProtoInjector, providers: ResolvedReflectiveProvider[]) {\n var length = providers.length;\n\n if (length > 0) {\n this.provider0 = providers[0];\n this.keyId0 = providers[0].key.id;\n }\n if (length > 1) {\n this.provider1 = providers[1];\n this.keyId1 = providers[1].key.id;\n }\n if (length > 2) {\n this.provider2 = providers[2];\n this.keyId2 = providers[2].key.id;\n }\n if (length > 3) {\n this.provider3 = providers[3];\n this.keyId3 = providers[3].key.id;\n }\n if (length > 4) {\n this.provider4 = providers[4];\n this.keyId4 = providers[4].key.id;\n }\n if (length > 5) {\n this.provider5 = providers[5];\n this.keyId5 = providers[5].key.id;\n }\n if (length > 6) {\n this.provider6 = providers[6];\n this.keyId6 = providers[6].key.id;\n }\n if (length > 7) {\n this.provider7 = providers[7];\n this.keyId7 = providers[7].key.id;\n }\n if (length > 8) {\n this.provider8 = providers[8];\n this.keyId8 = providers[8].key.id;\n }\n if (length > 9) {\n this.provider9 = providers[9];\n this.keyId9 = providers[9].key.id;\n }\n }\n\n getProviderAtIndex(index: number): ResolvedReflectiveProvider {\n if (index == 0) return this.provider0;\n if (index == 1) return this.provider1;\n if (index == 2) return this.provider2;\n if (index == 3) return this.provider3;\n if (index == 4) return this.provider4;\n if (index == 5) return this.provider5;\n if (index == 6) return this.provider6;\n if (index == 7) return this.provider7;\n if (index == 8) return this.provider8;\n if (index == 9) return this.provider9;\n throw new OutOfBoundsError(index);\n }\n\n createInjectorStrategy(injector: ReflectiveInjector_): ReflectiveInjectorStrategy {\n return new ReflectiveInjectorInlineStrategy(injector, this);\n }\n}\n\nexport class ReflectiveProtoInjectorDynamicStrategy implements ReflectiveProtoInjectorStrategy {\n keyIds: number[];\n\n constructor(protoInj: ReflectiveProtoInjector, public providers: ResolvedReflectiveProvider[]) {\n var len = providers.length;\n\n this.keyIds = ListWrapper.createFixedSize(len);\n\n for (var i = 0; i < len; i++) {\n this.keyIds[i] = providers[i].key.id;\n }\n }\n\n getProviderAtIndex(index: number): ResolvedReflectiveProvider {\n if (index < 0 || index >= this.providers.length) {\n throw new OutOfBoundsError(index);\n }\n return this.providers[index];\n }\n\n createInjectorStrategy(ei: ReflectiveInjector_): ReflectiveInjectorStrategy {\n return new ReflectiveInjectorDynamicStrategy(this, ei);\n }\n}\n\nexport class ReflectiveProtoInjector {\n static fromResolvedProviders(providers: ResolvedReflectiveProvider[]): ReflectiveProtoInjector {\n return new ReflectiveProtoInjector(providers);\n }\n\n /** @internal */\n _strategy: ReflectiveProtoInjectorStrategy;\n numberOfProviders: number;\n\n constructor(providers: ResolvedReflectiveProvider[]) {\n this.numberOfProviders = providers.length;\n this._strategy = providers.length > _MAX_CONSTRUCTION_COUNTER ?\n new ReflectiveProtoInjectorDynamicStrategy(this, providers) :\n new ReflectiveProtoInjectorInlineStrategy(this, providers);\n }\n\n getProviderAtIndex(index: number): ResolvedReflectiveProvider {\n return this._strategy.getProviderAtIndex(index);\n }\n}\n\n\n\nexport interface ReflectiveInjectorStrategy {\n getObjByKeyId(keyId: number): any;\n getObjAtIndex(index: number): any;\n getMaxNumberOfObjects(): number;\n\n resetConstructionCounter(): void;\n instantiateProvider(provider: ResolvedReflectiveProvider): any;\n}\n\nexport class ReflectiveInjectorInlineStrategy implements ReflectiveInjectorStrategy {\n obj0: any = UNDEFINED;\n obj1: any = UNDEFINED;\n obj2: any = UNDEFINED;\n obj3: any = UNDEFINED;\n obj4: any = UNDEFINED;\n obj5: any = UNDEFINED;\n obj6: any = UNDEFINED;\n obj7: any = UNDEFINED;\n obj8: any = UNDEFINED;\n obj9: any = UNDEFINED;\n\n constructor(public injector: ReflectiveInjector_,\n public protoStrategy: ReflectiveProtoInjectorInlineStrategy) {}\n\n resetConstructionCounter(): void { this.injector._constructionCounter = 0; }\n\n instantiateProvider(provider: ResolvedReflectiveProvider): any {\n return this.injector._new(provider);\n }\n\n getObjByKeyId(keyId: number): any {\n var p = this.protoStrategy;\n var inj = this.injector;\n\n if (p.keyId0 === keyId) {\n if (this.obj0 === UNDEFINED) {\n this.obj0 = inj._new(p.provider0);\n }\n return this.obj0;\n }\n if (p.keyId1 === keyId) {\n if (this.obj1 === UNDEFINED) {\n this.obj1 = inj._new(p.provider1);\n }\n return this.obj1;\n }\n if (p.keyId2 === keyId) {\n if (this.obj2 === UNDEFINED) {\n this.obj2 = inj._new(p.provider2);\n }\n return this.obj2;\n }\n if (p.keyId3 === keyId) {\n if (this.obj3 === UNDEFINED) {\n this.obj3 = inj._new(p.provider3);\n }\n return this.obj3;\n }\n if (p.keyId4 === keyId) {\n if (this.obj4 === UNDEFINED) {\n this.obj4 = inj._new(p.provider4);\n }\n return this.obj4;\n }\n if (p.keyId5 === keyId) {\n if (this.obj5 === UNDEFINED) {\n this.obj5 = inj._new(p.provider5);\n }\n return this.obj5;\n }\n if (p.keyId6 === keyId) {\n if (this.obj6 === UNDEFINED) {\n this.obj6 = inj._new(p.provider6);\n }\n return this.obj6;\n }\n if (p.keyId7 === keyId) {\n if (this.obj7 === UNDEFINED) {\n this.obj7 = inj._new(p.provider7);\n }\n return this.obj7;\n }\n if (p.keyId8 === keyId) {\n if (this.obj8 === UNDEFINED) {\n this.obj8 = inj._new(p.provider8);\n }\n return this.obj8;\n }\n if (p.keyId9 === keyId) {\n if (this.obj9 === UNDEFINED) {\n this.obj9 = inj._new(p.provider9);\n }\n return this.obj9;\n }\n\n return UNDEFINED;\n }\n\n getObjAtIndex(index: number): any {\n if (index == 0) return this.obj0;\n if (index == 1) return this.obj1;\n if (index == 2) return this.obj2;\n if (index == 3) return this.obj3;\n if (index == 4) return this.obj4;\n if (index == 5) return this.obj5;\n if (index == 6) return this.obj6;\n if (index == 7) return this.obj7;\n if (index == 8) return this.obj8;\n if (index == 9) return this.obj9;\n throw new OutOfBoundsError(index);\n }\n\n getMaxNumberOfObjects(): number { return _MAX_CONSTRUCTION_COUNTER; }\n}\n\n\nexport class ReflectiveInjectorDynamicStrategy implements ReflectiveInjectorStrategy {\n objs: any[];\n\n constructor(public protoStrategy: ReflectiveProtoInjectorDynamicStrategy,\n public injector: ReflectiveInjector_) {\n this.objs = ListWrapper.createFixedSize(protoStrategy.providers.length);\n ListWrapper.fill(this.objs, UNDEFINED);\n }\n\n resetConstructionCounter(): void { this.injector._constructionCounter = 0; }\n\n instantiateProvider(provider: ResolvedReflectiveProvider): any {\n return this.injector._new(provider);\n }\n\n getObjByKeyId(keyId: number): any {\n var p = this.protoStrategy;\n\n for (var i = 0; i < p.keyIds.length; i++) {\n if (p.keyIds[i] === keyId) {\n if (this.objs[i] === UNDEFINED) {\n this.objs[i] = this.injector._new(p.providers[i]);\n }\n\n return this.objs[i];\n }\n }\n\n return UNDEFINED;\n }\n\n getObjAtIndex(index: number): any {\n if (index < 0 || index >= this.objs.length) {\n throw new OutOfBoundsError(index);\n }\n\n return this.objs[index];\n }\n\n getMaxNumberOfObjects(): number { return this.objs.length; }\n}\n\n/**\n * A ReflectiveDependency injection container used for instantiating objects and resolving\n * dependencies.\n *\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\n * constructor dependencies.\n *\n * In typical use, application code asks for the dependencies in the constructor and they are\n * resolved by the `Injector`.\n *\n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\n *\n * The following example creates an `Injector` configured to create `Engine` and `Car`.\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * var car = injector.get(Car);\n * expect(car instanceof Car).toBe(true);\n * expect(car.engine instanceof Engine).toBe(true);\n * ```\n *\n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\n * resolve all of the object's dependencies automatically.\n */\nexport abstract class ReflectiveInjector implements Injector {\n /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {@link ReflectiveInjector#fromResolvedProviders} for more info.\n */\n static resolve(providers: Array<Type | Provider | {[k: string]: any} | any[]>):\n ResolvedReflectiveProvider[] {\n return resolveReflectiveProviders(providers);\n }\n\n /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {@link Injector#resolve} and {@link Injector#fromResolvedProviders}.\n */\n static resolveAndCreate(providers: Array<Type | Provider | {[k: string]: any} | any[]>,\n parent: Injector = null): ReflectiveInjector {\n var ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return ReflectiveInjector.fromResolvedProviders(ResolvedReflectiveProviders, parent);\n }\n\n /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n */\n static fromResolvedProviders(providers: ResolvedReflectiveProvider[],\n parent: Injector = null): ReflectiveInjector {\n return new ReflectiveInjector_(ReflectiveProtoInjector.fromResolvedProviders(providers),\n parent);\n }\n\n /**\n * @deprecated\n */\n static fromResolvedBindings(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n return ReflectiveInjector.fromResolvedProviders(providers);\n }\n\n\n /**\n * Parent of this injector.\n *\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n *\n * ### Example ([live demo](http://plnkr.co/edit/eosMGo?p=preview))\n *\n * ```typescript\n * var parent = ReflectiveInjector.resolveAndCreate([]);\n * var child = parent.resolveAndCreateChild([]);\n * expect(child.parent).toBe(parent);\n * ```\n */\n get parent(): Injector { return unimplemented(); }\n\n\n /**\n * @internal\n */\n debugContext(): any { return null; }\n\n /**\n * Resolves an array of providers and creates a child injector from those providers.\n *\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n *\n * The passed-in providers can be an array of `Type`, {@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/opB3T4?p=preview))\n *\n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n *\n * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);\n * var child = parent.resolveAndCreateChild([ChildProvider]);\n *\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n *\n * This function is slower than the corresponding `createChildFromResolved`\n * because it needs to resolve the passed-in providers first.\n * See {@link Injector#resolve} and {@link Injector#createChildFromResolved}.\n */\n resolveAndCreateChild(\n providers: Array<Type | Provider | {[k: string]: any} | any[]>): ReflectiveInjector {\n return unimplemented();\n }\n\n /**\n * Creates a child injector from previously resolved providers.\n *\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/VhyfjN?p=preview))\n *\n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n *\n * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);\n * var childProviders = ReflectiveInjector.resolve([ChildProvider]);\n *\n * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);\n * var child = parent.createChildFromResolved(childProviders);\n *\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n */\n createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n return unimplemented();\n }\n\n /**\n * Resolves a provider and instantiates an object in the context of the injector.\n *\n * The created object does not get cached by the injector.\n *\n * ### Example ([live demo](http://plnkr.co/edit/yvVXoB?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\n *\n * var car = injector.resolveAndInstantiate(Car);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.resolveAndInstantiate(Car));\n * ```\n */\n resolveAndInstantiate(provider: Type | Provider): any { return unimplemented(); }\n\n /**\n * Instantiates an object using a resolved provider in the context of the injector.\n *\n * The created object does not get cached by the injector.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ptCImQ?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\n * var carProvider = ReflectiveInjector.resolve([Car])[0];\n * var car = injector.instantiateResolved(carProvider);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.instantiateResolved(carProvider));\n * ```\n */\n instantiateResolved(provider: ResolvedReflectiveProvider): any { return unimplemented(); }\n\n abstract get(token: any, notFoundValue?: any): any;\n}\n\nexport class ReflectiveInjector_ implements ReflectiveInjector {\n private _strategy: ReflectiveInjectorStrategy;\n /** @internal */\n _constructionCounter: number = 0;\n /** @internal */\n public _proto: any /* ProtoInjector */;\n /** @internal */\n public _parent: Injector;\n /**\n * Private\n */\n constructor(_proto: any /* ProtoInjector */, _parent: Injector = null,\n private _debugContext: Function = null) {\n this._proto = _proto;\n this._parent = _parent;\n this._strategy = _proto._strategy.createInjectorStrategy(this);\n }\n\n /**\n * @internal\n */\n debugContext(): any { return this._debugContext(); }\n\n get(token: any, notFoundValue: any = /*@ts2dart_const*/ THROW_IF_NOT_FOUND): any {\n return this._getByKey(ReflectiveKey.get(token), null, null, notFoundValue);\n }\n\n getAt(index: number): any { return this._strategy.getObjAtIndex(index); }\n\n get parent(): Injector { return this._parent; }\n\n /**\n * @internal\n * Internal. Do not use.\n * We return `any` not to export the InjectorStrategy type.\n */\n get internalStrategy(): any { return this._strategy; }\n\n resolveAndCreateChild(providers: Array<Type | Provider | any[]>): ReflectiveInjector {\n var ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return this.createChildFromResolved(ResolvedReflectiveProviders);\n }\n\n createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n var proto = new ReflectiveProtoInjector(providers);\n var inj = new ReflectiveInjector_(proto);\n inj._parent = this;\n return inj;\n }\n\n resolveAndInstantiate(provider: Type | Provider): any {\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\n }\n\n instantiateResolved(provider: ResolvedReflectiveProvider): any {\n return this._instantiateProvider(provider);\n }\n\n /** @internal */\n _new(provider: ResolvedReflectiveProvider): any {\n if (this._constructionCounter++ > this._strategy.getMaxNumberOfObjects()) {\n throw new CyclicDependencyError(this, provider.key);\n }\n return this._instantiateProvider(provider);\n }\n\n private _instantiateProvider(provider: ResolvedReflectiveProvider): any {\n if (provider.multiProvider) {\n var res = ListWrapper.createFixedSize(provider.resolvedFactories.length);\n for (var i = 0; i < provider.resolvedFactories.length; ++i) {\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\n }\n return res;\n } else {\n return this._instantiate(provider, provider.resolvedFactories[0]);\n }\n }\n\n private _instantiate(provider: ResolvedReflectiveProvider,\n ResolvedReflectiveFactory: ResolvedReflectiveFactory): any {\n var factory = ResolvedReflectiveFactory.factory;\n var deps = ResolvedReflectiveFactory.dependencies;\n var length = deps.length;\n\n var d0: any;\n var d1: any;\n var d2: any;\n var d3: any;\n var d4: any;\n var d5: any;\n var d6: any;\n var d7: any;\n var d8: any;\n var d9: any;\n var d10: any;\n var d11: any;\n var d12: any;\n var d13: any;\n var d14: any;\n var d15: any;\n var d16: any;\n var d17: any;\n var d18: any;\n var d19: any;\n try {\n d0 = length > 0 ? this._getByReflectiveDependency(provider, deps[0]) : null;\n d1 = length > 1 ? this._getByReflectiveDependency(provider, deps[1]) : null;\n d2 = length > 2 ? this._getByReflectiveDependency(provider, deps[2]) : null;\n d3 = length > 3 ? this._getByReflectiveDependency(provider, deps[3]) : null;\n d4 = length > 4 ? this._getByReflectiveDependency(provider, deps[4]) : null;\n d5 = length > 5 ? this._getByReflectiveDependency(provider, deps[5]) : null;\n d6 = length > 6 ? this._getByReflectiveDependency(provider, deps[6]) : null;\n d7 = length > 7 ? this._getByReflectiveDependency(provider, deps[7]) : null;\n d8 = length > 8 ? this._getByReflectiveDependency(provider, deps[8]) : null;\n d9 = length > 9 ? this._getByReflectiveDependency(provider, deps[9]) : null;\n d10 = length > 10 ? this._getByReflectiveDependency(provider, deps[10]) : null;\n d11 = length > 11 ? this._getByReflectiveDependency(provider, deps[11]) : null;\n d12 = length > 12 ? this._getByReflectiveDependency(provider, deps[12]) : null;\n d13 = length > 13 ? this._getByReflectiveDependency(provider, deps[13]) : null;\n d14 = length > 14 ? this._getByReflectiveDependency(provider, deps[14]) : null;\n d15 = length > 15 ? this._getByReflectiveDependency(provider, deps[15]) : null;\n d16 = length > 16 ? this._getByReflectiveDependency(provider, deps[16]) : null;\n d17 = length > 17 ? this._getByReflectiveDependency(provider, deps[17]) : null;\n d18 = length > 18 ? this._getByReflectiveDependency(provider, deps[18]) : null;\n d19 = length > 19 ? this._getByReflectiveDependency(provider, deps[19]) : null;\n } catch (e) {\n if (e instanceof AbstractProviderError || e instanceof InstantiationError) {\n e.addKey(this, provider.key);\n }\n throw e;\n }\n\n var obj;\n try {\n switch (length) {\n case 0:\n obj = factory();\n break;\n case 1:\n obj = factory(d0);\n break;\n case 2:\n obj = factory(d0, d1);\n break;\n case 3:\n obj = factory(d0, d1, d2);\n break;\n case 4:\n obj = factory(d0, d1, d2, d3);\n break;\n case 5:\n obj = factory(d0, d1, d2, d3, d4);\n break;\n case 6:\n obj = factory(d0, d1, d2, d3, d4, d5);\n break;\n case 7:\n obj = factory(d0, d1, d2, d3, d4, d5, d6);\n break;\n case 8:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7);\n break;\n case 9:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8);\n break;\n case 10:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9);\n break;\n case 11:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10);\n break;\n case 12:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11);\n break;\n case 13:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12);\n break;\n case 14:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13);\n break;\n case 15:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14);\n break;\n case 16:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);\n break;\n case 17:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16);\n break;\n case 18:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16,\n d17);\n break;\n case 19:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16,\n d17, d18);\n break;\n case 20:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16,\n d17, d18, d19);\n break;\n default:\n throw new BaseException(\n `Cannot instantiate '${provider.key.displayName}' because it has more than 20 dependencies`);\n }\n } catch (e) {\n throw new InstantiationError(this, e, e.stack, provider.key);\n }\n return obj;\n }\n\n private _getByReflectiveDependency(provider: ResolvedReflectiveProvider,\n dep: ReflectiveDependency): any {\n return this._getByKey(dep.key, dep.lowerBoundVisibility, dep.upperBoundVisibility,\n dep.optional ? null : THROW_IF_NOT_FOUND);\n }\n\n private _getByKey(key: ReflectiveKey, lowerBoundVisibility: Object, upperBoundVisibility: Object,\n notFoundValue: any): any {\n if (key === INJECTOR_KEY) {\n return this;\n }\n\n if (upperBoundVisibility instanceof SelfMetadata) {\n return this._getByKeySelf(key, notFoundValue);\n\n } else {\n return this._getByKeyDefault(key, notFoundValue, lowerBoundVisibility);\n }\n }\n\n /** @internal */\n _throwOrNull(key: ReflectiveKey, notFoundValue: any): any {\n if (notFoundValue !== THROW_IF_NOT_FOUND) {\n return notFoundValue;\n } else {\n throw new NoProviderError(this, key);\n }\n }\n\n /** @internal */\n _getByKeySelf(key: ReflectiveKey, notFoundValue: any): any {\n var obj = this._strategy.getObjByKeyId(key.id);\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\n }\n\n /** @internal */\n _getByKeyDefault(key: ReflectiveKey, notFoundValue: any, lowerBoundVisibility: Object): any {\n var inj: Injector;\n\n if (lowerBoundVisibility instanceof SkipSelfMetadata) {\n inj = this._parent;\n } else {\n inj = this;\n }\n\n while (inj instanceof ReflectiveInjector_) {\n var inj_ = <ReflectiveInjector_>inj;\n var obj = inj_._strategy.getObjByKeyId(key.id);\n if (obj !== UNDEFINED) return obj;\n inj = inj_._parent;\n }\n if (inj !== null) {\n return inj.get(key.token, notFoundValue);\n } else {\n return this._throwOrNull(key, notFoundValue);\n }\n }\n\n get displayName(): string {\n return `ReflectiveInjector(providers: [${_mapProviders(this, (b: ResolvedReflectiveProvider) => ` \"${b.key.displayName}\" `).join(\", \")}])`;\n }\n\n toString(): string { return this.displayName; }\n}\n\nvar INJECTOR_KEY = ReflectiveKey.get(Injector);\n\nfunction _mapProviders(injector: ReflectiveInjector_, fn: Function): any[] {\n var res = [];\n for (var i = 0; i < injector._proto.numberOfProviders; ++i) {\n res.push(fn(injector._proto.getProviderAtIndex(i)));\n }\n return res;\n}\n"]}
1
+ {"version":3,"file":"reflective_injector.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/di/reflective_injector.ts"],"names":[],"mappings":"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,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5E,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/E,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/E,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/E,GAAG,GAAG,MAAM,GAAG,E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","sourcesContent":["import {ListWrapper} from '../facade/collection';\nimport {BaseException, unimplemented} from '../facade/exceptions';\nimport {Type} from '../facade/lang';\n\nimport {Injector, THROW_IF_NOT_FOUND} from './injector';\nimport {SelfMetadata, SkipSelfMetadata} from './metadata';\nimport {Provider} from './provider';\nimport {AbstractProviderError, CyclicDependencyError, InstantiationError, NoProviderError, OutOfBoundsError} from './reflective_exceptions';\nimport {ReflectiveKey} from './reflective_key';\nimport {ReflectiveDependency, ResolvedReflectiveFactory, ResolvedReflectiveProvider, resolveReflectiveProviders} from './reflective_provider';\n\nvar __unused: Type; // avoid unused import when Type union types are erased\n\n// Threshold for the dynamic version\nconst _MAX_CONSTRUCTION_COUNTER = 10;\nconst UNDEFINED = /*@ts2dart_const*/ new Object();\n\nexport interface ReflectiveProtoInjectorStrategy {\n getProviderAtIndex(index: number): ResolvedReflectiveProvider;\n createInjectorStrategy(inj: ReflectiveInjector_): ReflectiveInjectorStrategy;\n}\n\nexport class ReflectiveProtoInjectorInlineStrategy implements ReflectiveProtoInjectorStrategy {\n provider0: ResolvedReflectiveProvider = null;\n provider1: ResolvedReflectiveProvider = null;\n provider2: ResolvedReflectiveProvider = null;\n provider3: ResolvedReflectiveProvider = null;\n provider4: ResolvedReflectiveProvider = null;\n provider5: ResolvedReflectiveProvider = null;\n provider6: ResolvedReflectiveProvider = null;\n provider7: ResolvedReflectiveProvider = null;\n provider8: ResolvedReflectiveProvider = null;\n provider9: ResolvedReflectiveProvider = null;\n\n keyId0: number = null;\n keyId1: number = null;\n keyId2: number = null;\n keyId3: number = null;\n keyId4: number = null;\n keyId5: number = null;\n keyId6: number = null;\n keyId7: number = null;\n keyId8: number = null;\n keyId9: number = null;\n\n constructor(protoEI: ReflectiveProtoInjector, providers: ResolvedReflectiveProvider[]) {\n var length = providers.length;\n\n if (length > 0) {\n this.provider0 = providers[0];\n this.keyId0 = providers[0].key.id;\n }\n if (length > 1) {\n this.provider1 = providers[1];\n this.keyId1 = providers[1].key.id;\n }\n if (length > 2) {\n this.provider2 = providers[2];\n this.keyId2 = providers[2].key.id;\n }\n if (length > 3) {\n this.provider3 = providers[3];\n this.keyId3 = providers[3].key.id;\n }\n if (length > 4) {\n this.provider4 = providers[4];\n this.keyId4 = providers[4].key.id;\n }\n if (length > 5) {\n this.provider5 = providers[5];\n this.keyId5 = providers[5].key.id;\n }\n if (length > 6) {\n this.provider6 = providers[6];\n this.keyId6 = providers[6].key.id;\n }\n if (length > 7) {\n this.provider7 = providers[7];\n this.keyId7 = providers[7].key.id;\n }\n if (length > 8) {\n this.provider8 = providers[8];\n this.keyId8 = providers[8].key.id;\n }\n if (length > 9) {\n this.provider9 = providers[9];\n this.keyId9 = providers[9].key.id;\n }\n }\n\n getProviderAtIndex(index: number): ResolvedReflectiveProvider {\n if (index == 0) return this.provider0;\n if (index == 1) return this.provider1;\n if (index == 2) return this.provider2;\n if (index == 3) return this.provider3;\n if (index == 4) return this.provider4;\n if (index == 5) return this.provider5;\n if (index == 6) return this.provider6;\n if (index == 7) return this.provider7;\n if (index == 8) return this.provider8;\n if (index == 9) return this.provider9;\n throw new OutOfBoundsError(index);\n }\n\n createInjectorStrategy(injector: ReflectiveInjector_): ReflectiveInjectorStrategy {\n return new ReflectiveInjectorInlineStrategy(injector, this);\n }\n}\n\nexport class ReflectiveProtoInjectorDynamicStrategy implements ReflectiveProtoInjectorStrategy {\n keyIds: number[];\n\n constructor(protoInj: ReflectiveProtoInjector, public providers: ResolvedReflectiveProvider[]) {\n var len = providers.length;\n\n this.keyIds = ListWrapper.createFixedSize(len);\n\n for (var i = 0; i < len; i++) {\n this.keyIds[i] = providers[i].key.id;\n }\n }\n\n getProviderAtIndex(index: number): ResolvedReflectiveProvider {\n if (index < 0 || index >= this.providers.length) {\n throw new OutOfBoundsError(index);\n }\n return this.providers[index];\n }\n\n createInjectorStrategy(ei: ReflectiveInjector_): ReflectiveInjectorStrategy {\n return new ReflectiveInjectorDynamicStrategy(this, ei);\n }\n}\n\nexport class ReflectiveProtoInjector {\n static fromResolvedProviders(providers: ResolvedReflectiveProvider[]): ReflectiveProtoInjector {\n return new ReflectiveProtoInjector(providers);\n }\n\n /** @internal */\n _strategy: ReflectiveProtoInjectorStrategy;\n numberOfProviders: number;\n\n constructor(providers: ResolvedReflectiveProvider[]) {\n this.numberOfProviders = providers.length;\n this._strategy = providers.length > _MAX_CONSTRUCTION_COUNTER ?\n new ReflectiveProtoInjectorDynamicStrategy(this, providers) :\n new ReflectiveProtoInjectorInlineStrategy(this, providers);\n }\n\n getProviderAtIndex(index: number): ResolvedReflectiveProvider {\n return this._strategy.getProviderAtIndex(index);\n }\n}\n\n\n\nexport interface ReflectiveInjectorStrategy {\n getObjByKeyId(keyId: number): any;\n getObjAtIndex(index: number): any;\n getMaxNumberOfObjects(): number;\n\n resetConstructionCounter(): void;\n instantiateProvider(provider: ResolvedReflectiveProvider): any;\n}\n\nexport class ReflectiveInjectorInlineStrategy implements ReflectiveInjectorStrategy {\n obj0: any = UNDEFINED;\n obj1: any = UNDEFINED;\n obj2: any = UNDEFINED;\n obj3: any = UNDEFINED;\n obj4: any = UNDEFINED;\n obj5: any = UNDEFINED;\n obj6: any = UNDEFINED;\n obj7: any = UNDEFINED;\n obj8: any = UNDEFINED;\n obj9: any = UNDEFINED;\n\n constructor(\n public injector: ReflectiveInjector_,\n public protoStrategy: ReflectiveProtoInjectorInlineStrategy) {}\n\n resetConstructionCounter(): void { this.injector._constructionCounter = 0; }\n\n instantiateProvider(provider: ResolvedReflectiveProvider): any {\n return this.injector._new(provider);\n }\n\n getObjByKeyId(keyId: number): any {\n var p = this.protoStrategy;\n var inj = this.injector;\n\n if (p.keyId0 === keyId) {\n if (this.obj0 === UNDEFINED) {\n this.obj0 = inj._new(p.provider0);\n }\n return this.obj0;\n }\n if (p.keyId1 === keyId) {\n if (this.obj1 === UNDEFINED) {\n this.obj1 = inj._new(p.provider1);\n }\n return this.obj1;\n }\n if (p.keyId2 === keyId) {\n if (this.obj2 === UNDEFINED) {\n this.obj2 = inj._new(p.provider2);\n }\n return this.obj2;\n }\n if (p.keyId3 === keyId) {\n if (this.obj3 === UNDEFINED) {\n this.obj3 = inj._new(p.provider3);\n }\n return this.obj3;\n }\n if (p.keyId4 === keyId) {\n if (this.obj4 === UNDEFINED) {\n this.obj4 = inj._new(p.provider4);\n }\n return this.obj4;\n }\n if (p.keyId5 === keyId) {\n if (this.obj5 === UNDEFINED) {\n this.obj5 = inj._new(p.provider5);\n }\n return this.obj5;\n }\n if (p.keyId6 === keyId) {\n if (this.obj6 === UNDEFINED) {\n this.obj6 = inj._new(p.provider6);\n }\n return this.obj6;\n }\n if (p.keyId7 === keyId) {\n if (this.obj7 === UNDEFINED) {\n this.obj7 = inj._new(p.provider7);\n }\n return this.obj7;\n }\n if (p.keyId8 === keyId) {\n if (this.obj8 === UNDEFINED) {\n this.obj8 = inj._new(p.provider8);\n }\n return this.obj8;\n }\n if (p.keyId9 === keyId) {\n if (this.obj9 === UNDEFINED) {\n this.obj9 = inj._new(p.provider9);\n }\n return this.obj9;\n }\n\n return UNDEFINED;\n }\n\n getObjAtIndex(index: number): any {\n if (index == 0) return this.obj0;\n if (index == 1) return this.obj1;\n if (index == 2) return this.obj2;\n if (index == 3) return this.obj3;\n if (index == 4) return this.obj4;\n if (index == 5) return this.obj5;\n if (index == 6) return this.obj6;\n if (index == 7) return this.obj7;\n if (index == 8) return this.obj8;\n if (index == 9) return this.obj9;\n throw new OutOfBoundsError(index);\n }\n\n getMaxNumberOfObjects(): number { return _MAX_CONSTRUCTION_COUNTER; }\n}\n\n\nexport class ReflectiveInjectorDynamicStrategy implements ReflectiveInjectorStrategy {\n objs: any[];\n\n constructor(\n public protoStrategy: ReflectiveProtoInjectorDynamicStrategy,\n public injector: ReflectiveInjector_) {\n this.objs = ListWrapper.createFixedSize(protoStrategy.providers.length);\n ListWrapper.fill(this.objs, UNDEFINED);\n }\n\n resetConstructionCounter(): void { this.injector._constructionCounter = 0; }\n\n instantiateProvider(provider: ResolvedReflectiveProvider): any {\n return this.injector._new(provider);\n }\n\n getObjByKeyId(keyId: number): any {\n var p = this.protoStrategy;\n\n for (var i = 0; i < p.keyIds.length; i++) {\n if (p.keyIds[i] === keyId) {\n if (this.objs[i] === UNDEFINED) {\n this.objs[i] = this.injector._new(p.providers[i]);\n }\n\n return this.objs[i];\n }\n }\n\n return UNDEFINED;\n }\n\n getObjAtIndex(index: number): any {\n if (index < 0 || index >= this.objs.length) {\n throw new OutOfBoundsError(index);\n }\n\n return this.objs[index];\n }\n\n getMaxNumberOfObjects(): number { return this.objs.length; }\n}\n\n/**\n * A ReflectiveDependency injection container used for instantiating objects and resolving\n * dependencies.\n *\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\n * constructor dependencies.\n *\n * In typical use, application code asks for the dependencies in the constructor and they are\n * resolved by the `Injector`.\n *\n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\n *\n * The following example creates an `Injector` configured to create `Engine` and `Car`.\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * var car = injector.get(Car);\n * expect(car instanceof Car).toBe(true);\n * expect(car.engine instanceof Engine).toBe(true);\n * ```\n *\n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\n * resolve all of the object's dependencies automatically.\n */\nexport abstract class ReflectiveInjector implements Injector {\n /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {@link ReflectiveInjector#fromResolvedProviders} for more info.\n */\n static resolve(providers: Array<Type|Provider|{[k: string]: any}|any[]>):\n ResolvedReflectiveProvider[] {\n return resolveReflectiveProviders(providers);\n }\n\n /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {@link Injector#resolve} and {@link Injector#fromResolvedProviders}.\n */\n static resolveAndCreate(\n providers: Array<Type|Provider|{[k: string]: any}|any[]>,\n parent: Injector = null): ReflectiveInjector {\n var ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return ReflectiveInjector.fromResolvedProviders(ResolvedReflectiveProviders, parent);\n }\n\n /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * @experimental\n */\n static fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent: Injector = null):\n ReflectiveInjector {\n return new ReflectiveInjector_(\n ReflectiveProtoInjector.fromResolvedProviders(providers), parent);\n }\n\n /**\n * @deprecated\n */\n static fromResolvedBindings(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n return ReflectiveInjector.fromResolvedProviders(providers);\n }\n\n\n /**\n * Parent of this injector.\n *\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n *\n * ### Example ([live demo](http://plnkr.co/edit/eosMGo?p=preview))\n *\n * ```typescript\n * var parent = ReflectiveInjector.resolveAndCreate([]);\n * var child = parent.resolveAndCreateChild([]);\n * expect(child.parent).toBe(parent);\n * ```\n */\n get parent(): Injector { return unimplemented(); }\n\n\n /**\n * @internal\n */\n debugContext(): any { return null; }\n\n /**\n * Resolves an array of providers and creates a child injector from those providers.\n *\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n *\n * The passed-in providers can be an array of `Type`, {@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/opB3T4?p=preview))\n *\n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n *\n * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);\n * var child = parent.resolveAndCreateChild([ChildProvider]);\n *\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n *\n * This function is slower than the corresponding `createChildFromResolved`\n * because it needs to resolve the passed-in providers first.\n * See {@link Injector#resolve} and {@link Injector#createChildFromResolved}.\n */\n resolveAndCreateChild(providers: Array<Type|Provider|{[k: string]: any}|any[]>):\n ReflectiveInjector {\n return unimplemented();\n }\n\n /**\n * Creates a child injector from previously resolved providers.\n *\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/VhyfjN?p=preview))\n *\n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n *\n * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);\n * var childProviders = ReflectiveInjector.resolve([ChildProvider]);\n *\n * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);\n * var child = parent.createChildFromResolved(childProviders);\n *\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n */\n createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n return unimplemented();\n }\n\n /**\n * Resolves a provider and instantiates an object in the context of the injector.\n *\n * The created object does not get cached by the injector.\n *\n * ### Example ([live demo](http://plnkr.co/edit/yvVXoB?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\n *\n * var car = injector.resolveAndInstantiate(Car);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.resolveAndInstantiate(Car));\n * ```\n */\n resolveAndInstantiate(provider: Type|Provider): any { return unimplemented(); }\n\n /**\n * Instantiates an object using a resolved provider in the context of the injector.\n *\n * The created object does not get cached by the injector.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ptCImQ?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\n * var carProvider = ReflectiveInjector.resolve([Car])[0];\n * var car = injector.instantiateResolved(carProvider);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.instantiateResolved(carProvider));\n * ```\n */\n instantiateResolved(provider: ResolvedReflectiveProvider): any { return unimplemented(); }\n\n abstract get(token: any, notFoundValue?: any): any;\n}\n\nexport class ReflectiveInjector_ implements ReflectiveInjector {\n private _strategy: ReflectiveInjectorStrategy;\n /** @internal */\n _constructionCounter: number = 0;\n /** @internal */\n public _proto: any /* ProtoInjector */;\n /** @internal */\n public _parent: Injector;\n /**\n * Private\n */\n constructor(\n _proto: any /* ProtoInjector */, _parent: Injector = null,\n private _debugContext: Function = null) {\n this._proto = _proto;\n this._parent = _parent;\n this._strategy = _proto._strategy.createInjectorStrategy(this);\n }\n\n /**\n * @internal\n */\n debugContext(): any { return this._debugContext(); }\n\n get(token: any, notFoundValue: any = /*@ts2dart_const*/ THROW_IF_NOT_FOUND): any {\n return this._getByKey(ReflectiveKey.get(token), null, null, notFoundValue);\n }\n\n getAt(index: number): any { return this._strategy.getObjAtIndex(index); }\n\n get parent(): Injector { return this._parent; }\n\n /**\n * @internal\n * Internal. Do not use.\n * We return `any` not to export the InjectorStrategy type.\n */\n get internalStrategy(): any { return this._strategy; }\n\n resolveAndCreateChild(providers: Array<Type|Provider|any[]>): ReflectiveInjector {\n var ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return this.createChildFromResolved(ResolvedReflectiveProviders);\n }\n\n createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n var proto = new ReflectiveProtoInjector(providers);\n var inj = new ReflectiveInjector_(proto);\n inj._parent = this;\n return inj;\n }\n\n resolveAndInstantiate(provider: Type|Provider): any {\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\n }\n\n instantiateResolved(provider: ResolvedReflectiveProvider): any {\n return this._instantiateProvider(provider);\n }\n\n /** @internal */\n _new(provider: ResolvedReflectiveProvider): any {\n if (this._constructionCounter++ > this._strategy.getMaxNumberOfObjects()) {\n throw new CyclicDependencyError(this, provider.key);\n }\n return this._instantiateProvider(provider);\n }\n\n private _instantiateProvider(provider: ResolvedReflectiveProvider): any {\n if (provider.multiProvider) {\n var res = ListWrapper.createFixedSize(provider.resolvedFactories.length);\n for (var i = 0; i < provider.resolvedFactories.length; ++i) {\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\n }\n return res;\n } else {\n return this._instantiate(provider, provider.resolvedFactories[0]);\n }\n }\n\n private _instantiate(\n provider: ResolvedReflectiveProvider,\n ResolvedReflectiveFactory: ResolvedReflectiveFactory): any {\n var factory = ResolvedReflectiveFactory.factory;\n var deps = ResolvedReflectiveFactory.dependencies;\n var length = deps.length;\n\n var d0: any;\n var d1: any;\n var d2: any;\n var d3: any;\n var d4: any;\n var d5: any;\n var d6: any;\n var d7: any;\n var d8: any;\n var d9: any;\n var d10: any;\n var d11: any;\n var d12: any;\n var d13: any;\n var d14: any;\n var d15: any;\n var d16: any;\n var d17: any;\n var d18: any;\n var d19: any;\n try {\n d0 = length > 0 ? this._getByReflectiveDependency(provider, deps[0]) : null;\n d1 = length > 1 ? this._getByReflectiveDependency(provider, deps[1]) : null;\n d2 = length > 2 ? this._getByReflectiveDependency(provider, deps[2]) : null;\n d3 = length > 3 ? this._getByReflectiveDependency(provider, deps[3]) : null;\n d4 = length > 4 ? this._getByReflectiveDependency(provider, deps[4]) : null;\n d5 = length > 5 ? this._getByReflectiveDependency(provider, deps[5]) : null;\n d6 = length > 6 ? this._getByReflectiveDependency(provider, deps[6]) : null;\n d7 = length > 7 ? this._getByReflectiveDependency(provider, deps[7]) : null;\n d8 = length > 8 ? this._getByReflectiveDependency(provider, deps[8]) : null;\n d9 = length > 9 ? this._getByReflectiveDependency(provider, deps[9]) : null;\n d10 = length > 10 ? this._getByReflectiveDependency(provider, deps[10]) : null;\n d11 = length > 11 ? this._getByReflectiveDependency(provider, deps[11]) : null;\n d12 = length > 12 ? this._getByReflectiveDependency(provider, deps[12]) : null;\n d13 = length > 13 ? this._getByReflectiveDependency(provider, deps[13]) : null;\n d14 = length > 14 ? this._getByReflectiveDependency(provider, deps[14]) : null;\n d15 = length > 15 ? this._getByReflectiveDependency(provider, deps[15]) : null;\n d16 = length > 16 ? this._getByReflectiveDependency(provider, deps[16]) : null;\n d17 = length > 17 ? this._getByReflectiveDependency(provider, deps[17]) : null;\n d18 = length > 18 ? this._getByReflectiveDependency(provider, deps[18]) : null;\n d19 = length > 19 ? this._getByReflectiveDependency(provider, deps[19]) : null;\n } catch (e) {\n if (e instanceof AbstractProviderError || e instanceof InstantiationError) {\n e.addKey(this, provider.key);\n }\n throw e;\n }\n\n var obj: any /** TODO #9100 */;\n try {\n switch (length) {\n case 0:\n obj = factory();\n break;\n case 1:\n obj = factory(d0);\n break;\n case 2:\n obj = factory(d0, d1);\n break;\n case 3:\n obj = factory(d0, d1, d2);\n break;\n case 4:\n obj = factory(d0, d1, d2, d3);\n break;\n case 5:\n obj = factory(d0, d1, d2, d3, d4);\n break;\n case 6:\n obj = factory(d0, d1, d2, d3, d4, d5);\n break;\n case 7:\n obj = factory(d0, d1, d2, d3, d4, d5, d6);\n break;\n case 8:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7);\n break;\n case 9:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8);\n break;\n case 10:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9);\n break;\n case 11:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10);\n break;\n case 12:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11);\n break;\n case 13:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12);\n break;\n case 14:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13);\n break;\n case 15:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14);\n break;\n case 16:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);\n break;\n case 17:\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16);\n break;\n case 18:\n obj = factory(\n d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17);\n break;\n case 19:\n obj = factory(\n d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18);\n break;\n case 20:\n obj = factory(\n d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18,\n d19);\n break;\n default:\n throw new BaseException(\n `Cannot instantiate '${provider.key.displayName}' because it has more than 20 dependencies`);\n }\n } catch (e) {\n throw new InstantiationError(this, e, e.stack, provider.key);\n }\n return obj;\n }\n\n private _getByReflectiveDependency(\n provider: ResolvedReflectiveProvider, dep: ReflectiveDependency): any {\n return this._getByKey(\n dep.key, dep.lowerBoundVisibility, dep.upperBoundVisibility,\n dep.optional ? null : THROW_IF_NOT_FOUND);\n }\n\n private _getByKey(\n key: ReflectiveKey, lowerBoundVisibility: Object, upperBoundVisibility: Object,\n notFoundValue: any): any {\n if (key === INJECTOR_KEY) {\n return this;\n }\n\n if (upperBoundVisibility instanceof SelfMetadata) {\n return this._getByKeySelf(key, notFoundValue);\n\n } else {\n return this._getByKeyDefault(key, notFoundValue, lowerBoundVisibility);\n }\n }\n\n /** @internal */\n _throwOrNull(key: ReflectiveKey, notFoundValue: any): any {\n if (notFoundValue !== THROW_IF_NOT_FOUND) {\n return notFoundValue;\n } else {\n throw new NoProviderError(this, key);\n }\n }\n\n /** @internal */\n _getByKeySelf(key: ReflectiveKey, notFoundValue: any): any {\n var obj = this._strategy.getObjByKeyId(key.id);\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\n }\n\n /** @internal */\n _getByKeyDefault(key: ReflectiveKey, notFoundValue: any, lowerBoundVisibility: Object): any {\n var inj: Injector;\n\n if (lowerBoundVisibility instanceof SkipSelfMetadata) {\n inj = this._parent;\n } else {\n inj = this;\n }\n\n while (inj instanceof ReflectiveInjector_) {\n var inj_ = <ReflectiveInjector_>inj;\n var obj = inj_._strategy.getObjByKeyId(key.id);\n if (obj !== UNDEFINED) return obj;\n inj = inj_._parent;\n }\n if (inj !== null) {\n return inj.get(key.token, notFoundValue);\n } else {\n return this._throwOrNull(key, notFoundValue);\n }\n }\n\n get displayName(): string {\n const providers =\n _mapProviders(this, (b: ResolvedReflectiveProvider) => ' \"' + b.key.displayName + '\" ')\n .join(', ');\n return `ReflectiveInjector(providers: [${providers}])`;\n }\n\n toString(): string { return this.displayName; }\n}\n\nvar INJECTOR_KEY = ReflectiveKey.get(Injector);\n\nfunction _mapProviders(injector: ReflectiveInjector_, fn: Function): any[] {\n var res: any[] /** TODO #9100 */ = [];\n for (var i = 0; i < injector._proto.numberOfProviders; ++i) {\n res.push(fn(injector._proto.getProviderAtIndex(i)));\n }\n return res;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -12,6 +12,7 @@
12
12
  * `Key` should not be created directly. {@link ReflectiveInjector} creates keys automatically when
13
13
  * resolving
14
14
  * providers.
15
+ * @experimental
15
16
  */
16
17
  export declare class ReflectiveKey {
17
18
  token: Object;
@@ -33,11 +34,3 @@ export declare class ReflectiveKey {
33
34
  */
34
35
  static readonly numberOfKeys: number;
35
36
  }
36
- /**
37
- * @internal
38
- */
39
- export declare class KeyRegistry {
40
- private _allKeys;
41
- get(token: Object): ReflectiveKey;
42
- readonly numberOfKeys: number;
43
- }
@@ -1,5 +1,5 @@
1
- import { stringify, isBlank } from '../../src/facade/lang';
2
- import { BaseException } from '../../src/facade/exceptions';
1
+ import { BaseException } from '../facade/exceptions';
2
+ import { isBlank, stringify } from '../facade/lang';
3
3
  import { resolveForwardRef } from './forward_ref';
4
4
  /**
5
5
  * A unique object used for retrieving items from the {@link ReflectiveInjector}.
@@ -15,6 +15,7 @@ import { resolveForwardRef } from './forward_ref';
15
15
  * `Key` should not be created directly. {@link ReflectiveInjector} creates keys automatically when
16
16
  * resolving
17
17
  * providers.
18
+ * @experimental
18
19
  */
19
20
  export class ReflectiveKey {
20
21
  /**