ember-source 6.12.0-beta.3 → 7.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/blueprints/initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +2 -2
  2. package/blueprints/instance-initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +3 -3
  3. package/build-metadata.json +3 -3
  4. package/dist/{packages/shared-chunks/registry-XY5cfmbH.js → dev/packages/@ember/-internals/container/index.js} +28 -27
  5. package/dist/{packages → dev/packages}/@ember/-internals/deprecations/index.js +5 -16
  6. package/dist/{packages/shared-chunks/env-DEd6hPbj.js → dev/packages/@ember/-internals/environment/index.js} +31 -53
  7. package/dist/dev/packages/@ember/-internals/glimmer/index.js +42 -0
  8. package/dist/{packages → dev/packages}/@ember/-internals/meta/lib/meta.js +37 -38
  9. package/dist/dev/packages/@ember/-internals/metal/index.js +63 -0
  10. package/dist/{packages → dev/packages}/@ember/-internals/routing/index.js +7 -8
  11. package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/ext/rsvp.js +1 -2
  12. package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/-proxy.js +14 -15
  13. package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/action_handler.js +21 -9
  14. package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/registry_proxy.js +11 -2
  15. package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/target_action_support.js +22 -9
  16. package/dist/{packages → dev/packages}/@ember/-internals/string/index.js +1 -2
  17. package/dist/dev/packages/@ember/-internals/utils/index.js +34 -0
  18. package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/fallback-view-registry.js +1 -2
  19. package/dist/{packages → dev/packages}/@ember/-internals/views/lib/mixins/action_support.js +16 -10
  20. package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/event_dispatcher.js +19 -20
  21. package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/utils.js +7 -23
  22. package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/core_view.js +6 -7
  23. package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/states.js +3 -4
  24. package/dist/{packages → dev/packages}/@ember/application/index.js +50 -121
  25. package/dist/{packages → dev/packages}/@ember/application/instance.js +17 -17
  26. package/dist/{packages → dev/packages}/@ember/application/namespace.js +27 -9
  27. package/dist/{packages → dev/packages}/@ember/array/index.js +34 -25
  28. package/dist/{packages → dev/packages}/@ember/array/proxy.js +19 -20
  29. package/dist/{packages → dev/packages}/@ember/canary-features/index.js +1 -1
  30. package/dist/dev/packages/@ember/component/helper.js +14 -0
  31. package/dist/{packages → dev/packages}/@ember/component/index.js +12 -12
  32. package/dist/{packages → dev/packages}/@ember/component/template-only.js +6 -6
  33. package/dist/{packages → dev/packages}/@ember/controller/index.js +7 -9
  34. package/dist/{packages → dev/packages}/@ember/debug/container-debug-adapter.js +6 -7
  35. package/dist/{packages → dev/packages}/@ember/debug/data-adapter.js +6 -7
  36. package/dist/{packages → dev/packages}/@ember/debug/index.js +4 -11
  37. package/dist/{packages → dev/packages}/@ember/debug/lib/assert.js +1 -3
  38. package/dist/{packages → dev/packages}/@ember/debug/lib/deprecate.js +7 -3
  39. package/dist/{packages → dev/packages}/@ember/debug/lib/handlers.js +1 -3
  40. package/dist/{packages → dev/packages}/@ember/debug/lib/warn.js +1 -2
  41. package/dist/{packages → dev/packages}/@ember/engine/index.js +22 -22
  42. package/dist/dev/packages/@ember/engine/instance.js +200 -0
  43. package/dist/{packages → dev/packages}/@ember/helper/index.js +12 -11
  44. package/dist/{packages → dev/packages}/@ember/instrumentation/index.js +3 -8
  45. package/dist/dev/packages/@ember/modifier/index.js +23 -0
  46. package/dist/{packages → dev/packages}/@ember/modifier/on.js +6 -6
  47. package/dist/dev/packages/@ember/object/-internals.js +49 -0
  48. package/dist/{packages → dev/packages}/@ember/object/compat.js +11 -12
  49. package/dist/{packages → dev/packages}/@ember/object/computed.js +7 -8
  50. package/dist/{packages → dev/packages}/@ember/object/core.js +28 -29
  51. package/dist/{packages → dev/packages}/@ember/object/evented.js +7 -8
  52. package/dist/dev/packages/@ember/object/events.js +11 -0
  53. package/dist/{packages → dev/packages}/@ember/object/index.js +18 -19
  54. package/dist/{packages → dev/packages}/@ember/object/internals.js +1 -1
  55. package/dist/{packages → dev/packages}/@ember/object/lib/computed/computed_macros.js +30 -27
  56. package/dist/{packages → dev/packages}/@ember/object/lib/computed/reduce_computed_macros.js +36 -37
  57. package/dist/{packages → dev/packages}/@ember/object/mixin.js +15 -23
  58. package/dist/dev/packages/@ember/object/observable.js +181 -0
  59. package/dist/dev/packages/@ember/object/observers.js +11 -0
  60. package/dist/{packages → dev/packages}/@ember/object/promise-proxy-mixin.js +7 -8
  61. package/dist/dev/packages/@ember/renderer/index.js +14 -0
  62. package/dist/dev/packages/@ember/routing/-internals.js +22 -0
  63. package/dist/{packages → dev/packages}/@ember/routing/hash-location.js +1 -1
  64. package/dist/{packages → dev/packages}/@ember/routing/history-location.js +9 -25
  65. package/dist/dev/packages/@ember/routing/index.js +14 -0
  66. package/dist/{packages → dev/packages}/@ember/routing/lib/dsl.js +5 -6
  67. package/dist/{packages → dev/packages}/@ember/routing/lib/generate_controller.js +22 -10
  68. package/dist/{packages → dev/packages}/@ember/routing/lib/location-utils.js +3 -16
  69. package/dist/{packages → dev/packages}/@ember/routing/lib/routing-service.js +19 -9
  70. package/dist/{packages → dev/packages}/@ember/routing/lib/utils.js +12 -13
  71. package/dist/{packages → dev/packages}/@ember/routing/none-location.js +2 -4
  72. package/dist/{packages → dev/packages}/@ember/routing/route.js +38 -39
  73. package/dist/{packages → dev/packages}/@ember/routing/router-service.js +13 -14
  74. package/dist/{packages → dev/packages}/@ember/routing/router.js +63 -71
  75. package/dist/{packages → dev/packages}/@ember/runloop/index.js +9 -8
  76. package/dist/{packages → dev/packages}/@ember/service/index.js +6 -7
  77. package/dist/dev/packages/@ember/template/index.js +14 -0
  78. package/dist/{packages → dev/packages}/@ember/template-compilation/index.js +3 -3
  79. package/dist/dev/packages/@ember/template-compiler/index.js +2 -0
  80. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/compile-options.js +11 -6
  81. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/dasherize-component-name.js +1 -2
  82. package/dist/dev/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
  83. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-attrs.js +19 -3
  84. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +11 -2
  85. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +1 -2
  86. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +3 -4
  87. package/dist/dev/packages/@ember/template-compiler/lib/plugins/index.js +40 -0
  88. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-track-array.js +21 -2
  89. package/dist/dev/packages/@ember/template-compiler/lib/plugins/transform-in-element.js +50 -0
  90. package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-resolutions.js +2 -3
  91. package/dist/dev/packages/@ember/template-compiler/lib/template.js +248 -0
  92. package/dist/dev/packages/@ember/template-factory/index.js +8 -0
  93. package/dist/dev/packages/@ember/test/index.js +18 -0
  94. package/dist/{packages → dev/packages}/@ember/utils/lib/compare.js +5 -6
  95. package/dist/{packages → dev/packages}/@ember/utils/lib/is_empty.js +6 -7
  96. package/dist/{packages → dev/packages}/@glimmer/destroyable/index.js +21 -16
  97. package/dist/{packages/shared-chunks/encoder-CT1wqYMF.js → dev/packages/@glimmer/encoder/index.js} +3 -4
  98. package/dist/{packages → dev/packages}/@glimmer/global-context/index.js +6 -5
  99. package/dist/{packages/shared-chunks/api-1B_9SjFR.js → dev/packages/@glimmer/manager/index.js} +17 -14
  100. package/dist/dev/packages/@glimmer/node/index.js +40 -0
  101. package/dist/{packages → dev/packages}/@glimmer/opcode-compiler/index.js +5 -6
  102. package/dist/dev/packages/@glimmer/program/index.js +12 -0
  103. package/dist/dev/packages/@glimmer/reference/index.js +208 -0
  104. package/dist/dev/packages/@glimmer/runtime/index.js +11 -0
  105. package/dist/dev/packages/@glimmer/tracking/index.js +137 -0
  106. package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +11 -0
  107. package/dist/{packages → dev/packages}/@glimmer/util/index.js +2 -3
  108. package/dist/{packages → dev/packages}/@glimmer/validator/index.js +304 -372
  109. package/dist/{packages → dev/packages}/@glimmer/vm/index.js +1 -1
  110. package/dist/{packages → dev/packages}/ember/version.js +2 -2
  111. package/dist/dev/packages/ember-template-compiler/index.js +109 -0
  112. package/dist/{packages → dev/packages}/ember-testing/index.js +1 -3
  113. package/dist/dev/packages/ember-testing/lib/public-api.js +2 -0
  114. package/dist/dev/packages/ember-testing/lib/test/pending_requests.js +10 -0
  115. package/dist/dev/packages/ember-testing/lib/test.js +25 -0
  116. package/dist/{packages/shared-chunks/router-DSi8WnDi.js → dev/packages/router_js/index.js} +120 -58
  117. package/dist/{packages/shared-chunks/alias-BEMS3qgG.js → dev/packages/shared-chunks/alias-CSC0WIbj.js} +4 -5
  118. package/dist/{packages/shared-chunks/api-CkUl6KyJ.js → dev/packages/shared-chunks/api-BqXkkT0p.js} +14 -16
  119. package/dist/{packages/shared-chunks/args-proxy-B91L3LRK.js → dev/packages/shared-chunks/args-proxy-DgXMc9b5.js} +7 -8
  120. package/dist/{packages/shared-chunks/array-BqYCCatg.js → dev/packages/shared-chunks/array-D8PfjQHi.js} +3 -4
  121. package/dist/dev/packages/shared-chunks/capabilities-O_xc7Yqk.js +34 -0
  122. package/dist/{packages/shared-chunks/collections-B8me-ZlQ.js → dev/packages/shared-chunks/collections-D_nY_0UJ.js} +1 -2
  123. package/dist/{packages/@ember/template-compiler/lib/template.js → dev/packages/shared-chunks/compiler-CNj62pww.js} +22 -243
  124. package/dist/{packages/shared-chunks/constants-oDhF27qL.js → dev/packages/shared-chunks/constants-eoaL3OJQ.js} +9 -9
  125. package/dist/{packages/shared-chunks/debug-to-string-BsFOvUtQ.js → dev/packages/shared-chunks/debug-to-string-CFb7h0lY.js} +1 -3
  126. package/dist/{packages/shared-chunks/dynamic-CuBsUXX8.js → dev/packages/shared-chunks/dynamic-CFg3dljk.js} +108 -134
  127. package/dist/{packages/shared-chunks/element-builder-BuVym8EM.js → dev/packages/shared-chunks/element-builder-BOxP8emt.js} +4 -5
  128. package/dist/{packages/shared-chunks/flags-BsZlvEeR.js → dev/packages/shared-chunks/flags-B9qxc-pB.js} +1 -1
  129. package/dist/{packages/shared-chunks/capabilities-DHiXCCuB.js → dev/packages/shared-chunks/fragment-Cc5k9Oy4.js} +2 -33
  130. package/dist/{packages/shared-chunks/index-ByyoGpfz.js → dev/packages/shared-chunks/index-PxU6E7q8.js} +658 -214
  131. package/dist/{packages/shared-chunks/index-CQkjwqTv.js → dev/packages/shared-chunks/index-Q7JnrdBn.js} +20 -19
  132. package/dist/dev/packages/shared-chunks/invoke-DxRPE05O.js +67 -0
  133. package/dist/{packages/shared-chunks/is_proxy-C2q5rUMp.js → dev/packages/shared-chunks/is_proxy-B0smdQy8.js} +1 -1
  134. package/dist/{packages/shared-chunks/mandatory-setter-DLKyVs4Q.js → dev/packages/shared-chunks/mandatory-setter-DHZe7-kW.js} +47 -48
  135. package/dist/{packages/shared-chunks/name-DVtQREj6.js → dev/packages/shared-chunks/name-Z7dpqvzn.js} +1 -1
  136. package/dist/{packages/shared-chunks/namespace_search-ClQOZuFA.js → dev/packages/shared-chunks/namespace_search-uT8odThF.js} +3 -4
  137. package/dist/{packages/shared-chunks/observers-DhgQ6ba5.js → dev/packages/shared-chunks/observers-Bj9qLVau.js} +231 -87
  138. package/dist/{packages/shared-chunks/program-CcLlGnAU.js → dev/packages/shared-chunks/program-DfV0v8aa.js} +4 -6
  139. package/dist/{packages/shared-chunks/program-context-CZJnCFdo.js → dev/packages/shared-chunks/program-context-BRjCC_BA.js} +2 -2
  140. package/dist/{packages/shared-chunks/property_set-DrZnfGQ7.js → dev/packages/shared-chunks/property_set-DaoZXGM5.js} +11 -16
  141. package/dist/dev/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
  142. package/dist/{packages/shared-chunks/reference-B6HMX4y0.js → dev/packages/shared-chunks/reference-C3TKDRnP.js} +11 -12
  143. package/dist/{packages/@glimmer/runtime/index.js → dev/packages/shared-chunks/rehydrate-builder-DPImr9e9.js} +8 -16
  144. package/dist/{packages/shared-chunks/render-DTOhhssy.js → dev/packages/shared-chunks/render-sg8BuFaE.js} +16 -23
  145. package/dist/{packages/shared-chunks/serialize-builder-DEgRJgNQ.js → dev/packages/shared-chunks/serialize-builder-b_gSYCSS.js} +7 -7
  146. package/dist/{packages/shared-chunks/set_properties-Dag9Xz6u.js → dev/packages/shared-chunks/set_properties-kVGzZL_a.js} +2 -2
  147. package/dist/{packages/shared-chunks/setup-registry-Bbj8WQen.js → dev/packages/shared-chunks/setup-registry-DGdDOxrk.js} +12 -12
  148. package/dist/{packages/shared-chunks/simple-cast-BXTrayoV.js → dev/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
  149. package/dist/{packages/shared-chunks/template-CMHIG4cn.js → dev/packages/shared-chunks/template-kM-7TTcc.js} +3 -4
  150. package/dist/dev/packages/shared-chunks/to-string-C7M8LBLH.js +36 -0
  151. package/dist/{packages/shared-chunks/transform-resolutions-vHYYonpB.js → dev/packages/shared-chunks/transform-resolutions-fXGQKGsL.js} +331 -288
  152. package/dist/{packages/shared-chunks/unrecognized-url-error-BBMMZhBN.js → dev/packages/shared-chunks/unrecognized-url-error-B3wUTorp.js} +103 -39
  153. package/dist/prod/packages/@ember/-internals/browser-environment/index.js +2 -0
  154. package/dist/prod/packages/@ember/-internals/container/index.js +697 -0
  155. package/dist/prod/packages/@ember/-internals/deprecations/index.js +114 -0
  156. package/dist/prod/packages/@ember/-internals/environment/index.js +171 -0
  157. package/dist/prod/packages/@ember/-internals/error-handling/index.js +26 -0
  158. package/dist/prod/packages/@ember/-internals/glimmer/index.js +39 -0
  159. package/dist/prod/packages/@ember/-internals/meta/index.js +1 -0
  160. package/dist/prod/packages/@ember/-internals/meta/lib/meta.js +455 -0
  161. package/dist/prod/packages/@ember/-internals/metal/index.js +61 -0
  162. package/dist/prod/packages/@ember/-internals/owner/index.js +252 -0
  163. package/dist/prod/packages/@ember/-internals/routing/index.js +14 -0
  164. package/dist/prod/packages/@ember/-internals/runtime/index.js +9 -0
  165. package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +51 -0
  166. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +89 -0
  167. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +187 -0
  168. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +37 -0
  169. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +44 -0
  170. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +42 -0
  171. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +142 -0
  172. package/dist/prod/packages/@ember/-internals/string/index.js +93 -0
  173. package/dist/prod/packages/@ember/-internals/utility-types/index.js +12 -0
  174. package/dist/prod/packages/@ember/-internals/utils/index.js +75 -0
  175. package/dist/prod/packages/@ember/-internals/views/index.js +7 -0
  176. package/dist/prod/packages/@ember/-internals/views/lib/compat/attrs.js +3 -0
  177. package/dist/prod/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +7 -0
  178. package/dist/prod/packages/@ember/-internals/views/lib/component_lookup.js +14 -0
  179. package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +35 -0
  180. package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +227 -0
  181. package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +172 -0
  182. package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +87 -0
  183. package/dist/prod/packages/@ember/-internals/views/lib/views/states.js +83 -0
  184. package/dist/prod/packages/@ember/application/index.js +899 -0
  185. package/dist/prod/packages/@ember/application/instance.js +438 -0
  186. package/dist/prod/packages/@ember/application/namespace.js +68 -0
  187. package/dist/prod/packages/@ember/array/-internals.js +9 -0
  188. package/dist/prod/packages/@ember/array/index.js +591 -0
  189. package/dist/prod/packages/@ember/array/lib/make-array.js +42 -0
  190. package/dist/prod/packages/@ember/array/make.js +1 -0
  191. package/dist/prod/packages/@ember/array/mutable.js +1 -0
  192. package/dist/prod/packages/@ember/array/proxy.js +267 -0
  193. package/dist/prod/packages/@ember/canary-features/index.js +67 -0
  194. package/dist/prod/packages/@ember/component/helper.js +12 -0
  195. package/dist/prod/packages/@ember/component/index.js +32 -0
  196. package/dist/prod/packages/@ember/component/template-only.js +39 -0
  197. package/dist/prod/packages/@ember/controller/index.js +177 -0
  198. package/dist/prod/packages/@ember/debug/container-debug-adapter.js +117 -0
  199. package/dist/prod/packages/@ember/debug/data-adapter.js +553 -0
  200. package/dist/prod/packages/@ember/debug/index.js +30 -0
  201. package/dist/prod/packages/@ember/debug/lib/assert.js +7 -0
  202. package/dist/prod/packages/@ember/debug/lib/capture-render-tree.js +28 -0
  203. package/dist/prod/packages/@ember/debug/lib/deprecate.js +56 -0
  204. package/dist/prod/packages/@ember/debug/lib/handlers.js +5 -0
  205. package/dist/prod/packages/@ember/debug/lib/inspect.js +120 -0
  206. package/dist/prod/packages/@ember/debug/lib/testing.js +9 -0
  207. package/dist/prod/packages/@ember/debug/lib/warn.js +6 -0
  208. package/dist/prod/packages/@ember/deprecated-features/index.js +7 -0
  209. package/dist/prod/packages/@ember/destroyable/index.js +251 -0
  210. package/dist/prod/packages/@ember/engine/index.js +450 -0
  211. package/dist/{packages → prod/packages}/@ember/engine/instance.js +24 -10
  212. package/dist/prod/packages/@ember/engine/lib/engine-parent.js +33 -0
  213. package/dist/prod/packages/@ember/engine/parent.js +1 -0
  214. package/dist/prod/packages/@ember/enumerable/index.js +20 -0
  215. package/dist/prod/packages/@ember/enumerable/mutable.js +22 -0
  216. package/dist/prod/packages/@ember/helper/index.js +489 -0
  217. package/dist/prod/packages/@ember/instrumentation/index.js +242 -0
  218. package/dist/prod/packages/@ember/modifier/index.js +21 -0
  219. package/dist/prod/packages/@ember/modifier/on.js +20 -0
  220. package/dist/prod/packages/@ember/object/-internals.js +28 -0
  221. package/dist/prod/packages/@ember/object/compat.js +128 -0
  222. package/dist/prod/packages/@ember/object/computed.js +10 -0
  223. package/dist/prod/packages/@ember/object/core.js +781 -0
  224. package/dist/prod/packages/@ember/object/evented.js +76 -0
  225. package/dist/prod/packages/@ember/object/events.js +6 -0
  226. package/dist/prod/packages/@ember/object/index.js +205 -0
  227. package/dist/prod/packages/@ember/object/internals.js +8 -0
  228. package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +776 -0
  229. package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +1032 -0
  230. package/dist/prod/packages/@ember/object/mixin.js +560 -0
  231. package/dist/{packages → prod/packages}/@ember/object/observable.js +80 -15
  232. package/dist/prod/packages/@ember/object/observers.js +6 -0
  233. package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +138 -0
  234. package/dist/prod/packages/@ember/object/proxy.js +98 -0
  235. package/dist/prod/packages/@ember/owner/index.js +88 -0
  236. package/dist/prod/packages/@ember/reactive/collections.js +1 -0
  237. package/dist/prod/packages/@ember/reactive/index.js +12 -0
  238. package/dist/prod/packages/@ember/renderer/index.js +12 -0
  239. package/dist/prod/packages/@ember/routing/hash-location.js +153 -0
  240. package/dist/prod/packages/@ember/routing/history-location.js +250 -0
  241. package/dist/prod/packages/@ember/routing/index.js +12 -0
  242. package/dist/prod/packages/@ember/routing/lib/cache.js +37 -0
  243. package/dist/prod/packages/@ember/routing/lib/controller_for.js +16 -0
  244. package/dist/prod/packages/@ember/routing/lib/dsl.js +178 -0
  245. package/dist/prod/packages/@ember/routing/lib/generate_controller.js +62 -0
  246. package/dist/prod/packages/@ember/routing/lib/location-utils.js +48 -0
  247. package/dist/prod/packages/@ember/routing/lib/query_params.js +9 -0
  248. package/dist/prod/packages/@ember/routing/lib/router_state.js +26 -0
  249. package/dist/prod/packages/@ember/routing/lib/routing-service.js +125 -0
  250. package/dist/prod/packages/@ember/routing/lib/utils.js +236 -0
  251. package/dist/prod/packages/@ember/routing/none-location.js +120 -0
  252. package/dist/prod/packages/@ember/routing/route.js +1604 -0
  253. package/dist/prod/packages/@ember/routing/router-service.js +640 -0
  254. package/dist/prod/packages/@ember/routing/router.js +1335 -0
  255. package/dist/prod/packages/@ember/runloop/index.js +736 -0
  256. package/dist/prod/packages/@ember/service/index.js +124 -0
  257. package/dist/prod/packages/@ember/template/index.js +12 -0
  258. package/dist/prod/packages/@ember/template-compilation/index.js +20 -0
  259. package/dist/prod/packages/@ember/template-compiler/-internal-primitives.js +1 -0
  260. package/dist/prod/packages/@ember/template-compiler/-internal-utils.js +1 -0
  261. package/dist/prod/packages/@ember/template-compiler/index.js +2 -0
  262. package/dist/prod/packages/@ember/template-compiler/lib/-internal/primitives.js +1 -0
  263. package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +103 -0
  264. package/dist/prod/packages/@ember/template-compiler/lib/dasherize-component-name.js +21 -0
  265. package/dist/prod/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
  266. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-attrs.js +49 -0
  267. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +34 -0
  268. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +22 -0
  269. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +37 -0
  270. package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/index.js +1 -1
  271. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-action-syntax.js +65 -0
  272. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +51 -0
  273. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-track-array.js +50 -0
  274. package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/transform-in-element.js +20 -6
  275. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +37 -0
  276. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +4 -0
  277. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +57 -0
  278. package/dist/prod/packages/@ember/template-compiler/lib/plugins/utils.js +55 -0
  279. package/dist/prod/packages/@ember/template-compiler/lib/public-api.js +1 -0
  280. package/dist/prod/packages/@ember/template-compiler/lib/runtime.js +1 -0
  281. package/dist/prod/packages/@ember/template-compiler/lib/system/calculate-location-display.js +28 -0
  282. package/dist/prod/packages/@ember/template-compiler/lib/template.js +245 -0
  283. package/dist/prod/packages/@ember/template-factory/index.js +5 -0
  284. package/dist/prod/packages/@ember/test/adapter.js +2 -0
  285. package/dist/prod/packages/@ember/test/index.js +18 -0
  286. package/dist/prod/packages/@ember/utils/index.js +7 -0
  287. package/dist/prod/packages/@ember/utils/lib/compare.js +159 -0
  288. package/dist/prod/packages/@ember/utils/lib/is-equal.js +60 -0
  289. package/dist/prod/packages/@ember/utils/lib/is_blank.js +36 -0
  290. package/dist/prod/packages/@ember/utils/lib/is_empty.js +67 -0
  291. package/dist/prod/packages/@ember/utils/lib/is_none.js +28 -0
  292. package/dist/prod/packages/@ember/utils/lib/is_present.js +39 -0
  293. package/dist/prod/packages/@ember/utils/lib/type-of.js +110 -0
  294. package/dist/prod/packages/@ember/version/index.js +1 -0
  295. package/dist/prod/packages/@glimmer/destroyable/index.js +128 -0
  296. package/dist/prod/packages/@glimmer/encoder/index.js +28 -0
  297. package/dist/prod/packages/@glimmer/env/index.js +4 -0
  298. package/dist/prod/packages/@glimmer/global-context/index.js +138 -0
  299. package/dist/prod/packages/@glimmer/manager/index.js +293 -0
  300. package/dist/{packages/shared-chunks/node-dom-helper-BYL7Plyj.js → prod/packages/@glimmer/node/index.js} +10 -12
  301. package/dist/prod/packages/@glimmer/opcode-compiler/index.js +40 -0
  302. package/dist/prod/packages/@glimmer/owner/index.js +19 -0
  303. package/dist/prod/packages/@glimmer/program/index.js +12 -0
  304. package/dist/{packages/shared-chunks/iterable-BKS7az3P.js → prod/packages/@glimmer/reference/index.js} +13 -12
  305. package/dist/prod/packages/@glimmer/runtime/index.js +9 -0
  306. package/dist/prod/packages/@glimmer/tracking/index.js +115 -0
  307. package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +6 -0
  308. package/dist/prod/packages/@glimmer/util/index.js +129 -0
  309. package/dist/prod/packages/@glimmer/validator/index.js +1027 -0
  310. package/dist/prod/packages/@glimmer/vm/index.js +15 -0
  311. package/dist/prod/packages/@glimmer/wire-format/index.js +102 -0
  312. package/dist/prod/packages/@simple-dom/document/index.js +355 -0
  313. package/dist/prod/packages/backburner.js/index.js +939 -0
  314. package/dist/prod/packages/dag-map/index.js +202 -0
  315. package/dist/prod/packages/ember/version.js +4 -0
  316. package/dist/prod/packages/ember-template-compiler/index.js +100 -0
  317. package/dist/prod/packages/ember-testing/index.js +6 -0
  318. package/dist/prod/packages/ember-testing/lib/adapters/adapter.js +49 -0
  319. package/dist/prod/packages/ember-testing/lib/public-api.js +2 -0
  320. package/dist/prod/packages/ember-testing/lib/test/adapter.js +32 -0
  321. package/dist/prod/packages/ember-testing/lib/test/pending_requests.js +10 -0
  322. package/dist/prod/packages/ember-testing/lib/test/waiters.js +128 -0
  323. package/dist/prod/packages/ember-testing/lib/test.js +25 -0
  324. package/dist/prod/packages/route-recognizer/index.js +671 -0
  325. package/dist/prod/packages/router_js/index.js +1527 -0
  326. package/dist/prod/packages/rsvp/index.js +1 -0
  327. package/dist/prod/packages/shared-chunks/alias-BkT-0B1G.js +81 -0
  328. package/dist/prod/packages/shared-chunks/api-Co-k4HVs.js +200 -0
  329. package/dist/prod/packages/shared-chunks/args-proxy-Dl0A0YWI.js +131 -0
  330. package/dist/prod/packages/shared-chunks/array-EwekEvId.js +117 -0
  331. package/dist/prod/packages/shared-chunks/array-utils-CZQxrdD3.js +45 -0
  332. package/dist/prod/packages/shared-chunks/assert-CUCJBR2C.js +19 -0
  333. package/dist/prod/packages/shared-chunks/cache-qDyqAcpg.js +35 -0
  334. package/dist/prod/packages/shared-chunks/capabilities-DGmQ_mz4.js +26 -0
  335. package/dist/prod/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +121 -0
  336. package/dist/prod/packages/shared-chunks/collections-GpG8lT2g.js +75 -0
  337. package/dist/prod/packages/shared-chunks/compiler-Ddfo5StE.js +6806 -0
  338. package/dist/prod/packages/shared-chunks/computed_cache-DmYKevAP.js +12 -0
  339. package/dist/prod/packages/shared-chunks/constants-b-2IVErl.js +210 -0
  340. package/dist/prod/packages/shared-chunks/debug-brand-B1TWjOCH.js +12 -0
  341. package/dist/prod/packages/shared-chunks/decorator-BdDDBUd2.js +123 -0
  342. package/dist/prod/packages/shared-chunks/dictionary-gc5gpyOG.js +13 -0
  343. package/dist/prod/packages/shared-chunks/element-builder-CiLTrXD6.js +776 -0
  344. package/dist/prod/packages/shared-chunks/flags-B9qxc-pB.js +24 -0
  345. package/dist/prod/packages/shared-chunks/fragment-EpVz5Xuc.js +910 -0
  346. package/dist/prod/packages/shared-chunks/get-debug-name-BDxIL2Y1.js +3 -0
  347. package/dist/prod/packages/shared-chunks/has-dom-DdQORPzI.js +4 -0
  348. package/dist/prod/packages/shared-chunks/index-CSVCFS_p.js +1904 -0
  349. package/dist/prod/packages/shared-chunks/index-Cc8WmrB-.js +21 -0
  350. package/dist/prod/packages/shared-chunks/index-DZLHQAlb.js +5842 -0
  351. package/dist/prod/packages/shared-chunks/injected_property-DL3vQoFA.js +58 -0
  352. package/dist/prod/packages/shared-chunks/invoke-DxL00a1D.js +53 -0
  353. package/dist/prod/packages/shared-chunks/is_proxy-Cr1qlMv_.js +16 -0
  354. package/dist/prod/packages/shared-chunks/lookup-descriptor-CwcVgaLv.js +13 -0
  355. package/dist/prod/packages/shared-chunks/name-C68GLLO3.js +11 -0
  356. package/dist/prod/packages/shared-chunks/namespace_search-Aog9nySA.js +1070 -0
  357. package/dist/prod/packages/shared-chunks/object-utils-AijlD-JH.js +12 -0
  358. package/dist/prod/packages/shared-chunks/observers-R1ZklwWy.js +714 -0
  359. package/dist/prod/packages/shared-chunks/on-CrTl7JQU.js +3329 -0
  360. package/dist/prod/packages/shared-chunks/program-B7SJZ5NF.js +176 -0
  361. package/dist/prod/packages/shared-chunks/program-context-C-JdYXRA.js +146 -0
  362. package/dist/prod/packages/shared-chunks/property_set-O080KTKZ.js +99 -0
  363. package/dist/prod/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
  364. package/dist/prod/packages/shared-chunks/reference-BNqcwZWH.js +151 -0
  365. package/dist/prod/packages/shared-chunks/registers-ylirb0dq.js +35 -0
  366. package/dist/prod/packages/shared-chunks/rehydrate-builder-CSn1aIO1.js +459 -0
  367. package/dist/prod/packages/shared-chunks/render-C1ZnScKH.js +1464 -0
  368. package/dist/prod/packages/shared-chunks/rsvp-CnCSY930.js +2306 -0
  369. package/dist/prod/packages/shared-chunks/serialize-builder-CVQ3q8rJ.js +124 -0
  370. package/dist/prod/packages/shared-chunks/set_properties-CjsDTRey.js +101 -0
  371. package/dist/prod/packages/shared-chunks/setup-registry-CMNYh2jY.js +53 -0
  372. package/dist/prod/packages/shared-chunks/simple-cast-DCvJLSin.js +33 -0
  373. package/dist/prod/packages/shared-chunks/super-Cm_a_cLQ.js +275 -0
  374. package/dist/prod/packages/shared-chunks/template-Dc_cBOoX.js +19 -0
  375. package/dist/prod/packages/shared-chunks/tracked-ChVNBE2f.js +131 -0
  376. package/dist/prod/packages/shared-chunks/transform-resolutions-C7wq_Q_c.js +6939 -0
  377. package/dist/prod/packages/shared-chunks/unrecognized-url-error-DDBwfzdm.js +537 -0
  378. package/docs/data.json +3009 -2358
  379. package/lib/index.js +157 -279
  380. package/package.json +27 -58
  381. package/types/stable/@ember/-internals/deprecations/index.d.ts +0 -6
  382. package/types/stable/@ember/-internals/environment/index.d.ts +0 -1
  383. package/types/stable/@ember/-internals/environment/lib/env.d.ts +0 -3
  384. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -6
  385. package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +1 -2
  386. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +22 -29
  387. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +2 -2
  388. package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +0 -2
  389. package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +0 -1
  390. package/types/stable/@ember/-internals/meta/lib/meta.d.ts +1 -1
  391. package/types/stable/@ember/-internals/metal/lib/alias.d.ts +0 -11
  392. package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +0 -1
  393. package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +0 -1
  394. package/types/stable/@ember/-internals/metal/lib/observer.d.ts +0 -2
  395. package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +4 -10
  396. package/types/stable/@ember/-internals/utils/index.d.ts +0 -1
  397. package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +3 -15
  398. package/types/stable/@ember/application/index.d.ts +2 -63
  399. package/types/stable/@ember/routing/history-location.d.ts +0 -1
  400. package/types/stable/@ember/routing/lib/location-utils.d.ts +1 -2
  401. package/types/stable/@ember/routing/none-location.d.ts +1 -2
  402. package/types/stable/@ember/template-compiler/index.d.ts +1 -0
  403. package/types/stable/@ember/template-compiler/lib/plugins/allowed-globals.d.ts +26 -0
  404. package/types/stable/@ember/test/index.d.ts +0 -3
  405. package/types/stable/@glimmer/interfaces/lib/compile/wire-format/api.d.ts +1 -1
  406. package/types/stable/@glimmer/interfaces/lib/template.d.ts +1 -1
  407. package/types/stable/@glimmer/program/lib/program.d.ts +0 -1
  408. package/types/stable/@glimmer/validator/lib/collections/map.d.ts +1 -1
  409. package/types/stable/@handlebars/parser/types/ast.d.ts +148 -0
  410. package/types/stable/@handlebars/parser/types/index.d.ts +13 -0
  411. package/types/stable/ember-template-compiler/index.d.ts +0 -2
  412. package/types/stable/ember-template-compiler/lib/public-api.d.ts +0 -1
  413. package/types/stable/ember-testing/lib/public-api.d.ts +0 -6
  414. package/types/stable/ember-testing/lib/test/pending_requests.d.ts +0 -3
  415. package/types/stable/ember-testing/lib/test.d.ts +0 -23
  416. package/types/stable/index.d.ts +15 -32
  417. package/types/stable/router_js/index.d.ts +7 -0
  418. package/types/stable/router_js/lib/core.d.ts +9 -0
  419. package/types/stable/router_js/lib/route-info.d.ts +107 -0
  420. package/types/stable/router_js/lib/router.d.ts +245 -0
  421. package/types/stable/router_js/lib/transition-aborted-error.d.ts +15 -0
  422. package/types/stable/router_js/lib/transition-intent/named-transition-intent.d.ts +23 -0
  423. package/types/stable/router_js/lib/transition-intent/url-transition-intent.d.ts +12 -0
  424. package/types/stable/router_js/lib/transition-intent.d.ts +13 -0
  425. package/types/stable/router_js/lib/transition-state.d.ts +25 -0
  426. package/types/stable/router_js/lib/transition.d.ts +241 -0
  427. package/types/stable/router_js/lib/unrecognized-url-error.d.ts +11 -0
  428. package/types/stable/router_js/lib/utils.d.ts +41 -0
  429. package/dist/ember-template-compiler.js +0 -20631
  430. package/dist/ember-template-compiler.js.map +0 -1
  431. package/dist/ember-testing.js +0 -1351
  432. package/dist/ember-testing.js.map +0 -1
  433. package/dist/ember.debug.js +0 -52306
  434. package/dist/ember.debug.js.map +0 -1
  435. package/dist/ember.prod.js +0 -49369
  436. package/dist/ember.prod.js.map +0 -1
  437. package/dist/packages/@ember/-internals/container/index.js +0 -1
  438. package/dist/packages/@ember/-internals/environment/index.js +0 -1
  439. package/dist/packages/@ember/-internals/glimmer/index.js +0 -18
  440. package/dist/packages/@ember/-internals/metal/index.js +0 -51
  441. package/dist/packages/@ember/-internals/utils/index.js +0 -7
  442. package/dist/packages/@ember/application/lib/lazy_load.js +0 -68
  443. package/dist/packages/@ember/component/helper.js +0 -14
  444. package/dist/packages/@ember/modifier/index.js +0 -23
  445. package/dist/packages/@ember/object/-internals.js +0 -35
  446. package/dist/packages/@ember/object/events.js +0 -12
  447. package/dist/packages/@ember/object/observers.js +0 -12
  448. package/dist/packages/@ember/renderer/index.js +0 -14
  449. package/dist/packages/@ember/routing/index.js +0 -14
  450. package/dist/packages/@ember/template/index.js +0 -14
  451. package/dist/packages/@ember/template-factory/index.js +0 -8
  452. package/dist/packages/@ember/test/index.js +0 -27
  453. package/dist/packages/@glimmer/encoder/index.js +0 -1
  454. package/dist/packages/@glimmer/manager/index.js +0 -5
  455. package/dist/packages/@glimmer/node/index.js +0 -2
  456. package/dist/packages/@glimmer/program/index.js +0 -3
  457. package/dist/packages/@glimmer/reference/index.js +0 -2
  458. package/dist/packages/@glimmer/tracking/index.js +0 -48
  459. package/dist/packages/@glimmer/tracking/primitives/cache/index.js +0 -12
  460. package/dist/packages/ember/barrel.js +0 -511
  461. package/dist/packages/ember/index.js +0 -20
  462. package/dist/packages/ember-template-compiler/index.js +0 -17135
  463. package/dist/packages/ember-testing/lib/adapters/qunit.js +0 -53
  464. package/dist/packages/ember-testing/lib/ext/application.js +0 -174
  465. package/dist/packages/ember-testing/lib/ext/rsvp.js +0 -17
  466. package/dist/packages/ember-testing/lib/helpers/and_then.js +0 -11
  467. package/dist/packages/ember-testing/lib/helpers/current_path.js +0 -32
  468. package/dist/packages/ember-testing/lib/helpers/current_route_name.js +0 -32
  469. package/dist/packages/ember-testing/lib/helpers/current_url.js +0 -29
  470. package/dist/packages/ember-testing/lib/helpers/pause_test.js +0 -76
  471. package/dist/packages/ember-testing/lib/helpers/visit.js +0 -51
  472. package/dist/packages/ember-testing/lib/helpers/wait.js +0 -55
  473. package/dist/packages/ember-testing/lib/helpers.js +0 -17
  474. package/dist/packages/ember-testing/lib/initializers.js +0 -56
  475. package/dist/packages/ember-testing/lib/public-api.js +0 -8
  476. package/dist/packages/ember-testing/lib/setup_for_testing.js +0 -31
  477. package/dist/packages/ember-testing/lib/test/helpers.js +0 -133
  478. package/dist/packages/ember-testing/lib/test/on_inject_helpers.js +0 -39
  479. package/dist/packages/ember-testing/lib/test/pending_requests.js +0 -22
  480. package/dist/packages/ember-testing/lib/test/promise.js +0 -83
  481. package/dist/packages/ember-testing/lib/test/run.js +0 -11
  482. package/dist/packages/ember-testing/lib/test.js +0 -68
  483. package/dist/packages/router_js/index.js +0 -2
  484. package/dist/packages/shared-chunks/helpers-C1rIkuSd.js +0 -11
  485. package/dist/packages/shared-chunks/invoke-BjRgvK2V.js +0 -27
  486. package/dist/packages/shared-chunks/public-api-BQsJemZG.js +0 -20
  487. package/dist/packages/shared-chunks/template_registry-DigcUg9m.js +0 -24
  488. package/dist/packages/shared-chunks/to-string-CqD7_vQ4.js +0 -60
  489. package/types/stable/@ember/-internals/environment/lib/global.d.ts +0 -4
  490. package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +0 -34
  491. package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +0 -5
  492. package/types/stable/@ember/-internals/glimmer/lib/templates/empty.d.ts +0 -4
  493. package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +0 -4
  494. package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +0 -3
  495. package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +0 -5
  496. package/types/stable/@ember/application/lib/lazy_load.d.ts +0 -38
  497. package/types/stable/@ember/template-compiler/lib/public-types.d.ts +0 -3
  498. package/types/stable/ember/barrel.d.ts +0 -358
  499. package/types/stable/ember/index.d.ts +0 -358
  500. package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +0 -26
  501. package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +0 -3
  502. package/types/stable/ember-testing/lib/adapters/qunit.d.ts +0 -22
  503. package/types/stable/ember-testing/lib/ext/application.d.ts +0 -12
  504. package/types/stable/ember-testing/lib/ext/rsvp.d.ts +0 -4
  505. package/types/stable/ember-testing/lib/helpers/and_then.d.ts +0 -4
  506. package/types/stable/ember-testing/lib/helpers/current_path.d.ts +0 -22
  507. package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +0 -21
  508. package/types/stable/ember-testing/lib/helpers/current_url.d.ts +0 -22
  509. package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +0 -52
  510. package/types/stable/ember-testing/lib/helpers/visit.d.ts +0 -22
  511. package/types/stable/ember-testing/lib/helpers/wait.d.ts +0 -34
  512. package/types/stable/ember-testing/lib/helpers.d.ts +0 -3
  513. package/types/stable/ember-testing/lib/initializers.d.ts +0 -3
  514. package/types/stable/ember-testing/lib/setup_for_testing.d.ts +0 -15
  515. package/types/stable/ember-testing/lib/test/helpers.d.ts +0 -116
  516. package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +0 -33
  517. package/types/stable/ember-testing/lib/test/promise.d.ts +0 -37
  518. package/types/stable/ember-testing/lib/test/run.d.ts +0 -3
  519. package/types/stable/loader/lib/index.d.ts +0 -4
  520. package/types/stable/require.d.ts +0 -4
  521. /package/dist/{packages → dev/packages}/@ember/-internals/browser-environment/index.js +0 -0
  522. /package/dist/{packages → dev/packages}/@ember/-internals/error-handling/index.js +0 -0
  523. /package/dist/{packages → dev/packages}/@ember/-internals/meta/index.js +0 -0
  524. /package/dist/{packages → dev/packages}/@ember/-internals/owner/index.js +0 -0
  525. /package/dist/{packages → dev/packages}/@ember/-internals/runtime/index.js +0 -0
  526. /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/comparable.js +0 -0
  527. /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/container_proxy.js +0 -0
  528. /package/dist/{packages → dev/packages}/@ember/-internals/utility-types/index.js +0 -0
  529. /package/dist/{packages → dev/packages}/@ember/-internals/views/index.js +0 -0
  530. /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/attrs.js +0 -0
  531. /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/component_lookup.js +0 -0
  532. /package/dist/{packages → dev/packages}/@ember/array/-internals.js +0 -0
  533. /package/dist/{packages → dev/packages}/@ember/array/lib/make-array.js +0 -0
  534. /package/dist/{packages → dev/packages}/@ember/array/make.js +0 -0
  535. /package/dist/{packages → dev/packages}/@ember/array/mutable.js +0 -0
  536. /package/dist/{packages → dev/packages}/@ember/debug/lib/capture-render-tree.js +0 -0
  537. /package/dist/{packages → dev/packages}/@ember/debug/lib/inspect.js +0 -0
  538. /package/dist/{packages → dev/packages}/@ember/debug/lib/testing.js +0 -0
  539. /package/dist/{packages → dev/packages}/@ember/deprecated-features/index.js +0 -0
  540. /package/dist/{packages → dev/packages}/@ember/destroyable/index.js +0 -0
  541. /package/dist/{packages → dev/packages}/@ember/engine/lib/engine-parent.js +0 -0
  542. /package/dist/{packages → dev/packages}/@ember/engine/parent.js +0 -0
  543. /package/dist/{packages → dev/packages}/@ember/enumerable/index.js +0 -0
  544. /package/dist/{packages → dev/packages}/@ember/enumerable/mutable.js +0 -0
  545. /package/dist/{packages → dev/packages}/@ember/object/proxy.js +0 -0
  546. /package/dist/{packages → dev/packages}/@ember/owner/index.js +0 -0
  547. /package/dist/{packages → dev/packages}/@ember/reactive/collections.js +0 -0
  548. /package/dist/{packages → dev/packages}/@ember/reactive/index.js +0 -0
  549. /package/dist/{packages → dev/packages}/@ember/routing/lib/cache.js +0 -0
  550. /package/dist/{packages → dev/packages}/@ember/routing/lib/controller_for.js +0 -0
  551. /package/dist/{packages → dev/packages}/@ember/routing/lib/query_params.js +0 -0
  552. /package/dist/{packages → dev/packages}/@ember/routing/lib/router_state.js +0 -0
  553. /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-primitives.js +0 -0
  554. /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-utils.js +0 -0
  555. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/-internal/primitives.js +0 -0
  556. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-action-syntax.js +0 -0
  557. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +0 -0
  558. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -0
  559. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +0 -0
  560. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/utils.js +0 -0
  561. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/public-api.js +0 -0
  562. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/runtime.js +0 -0
  563. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/system/calculate-location-display.js +0 -0
  564. /package/dist/{packages → dev/packages}/@ember/template-compiler/runtime.js +0 -0
  565. /package/dist/{packages → dev/packages}/@ember/test/adapter.js +0 -0
  566. /package/dist/{packages → dev/packages}/@ember/utils/index.js +0 -0
  567. /package/dist/{packages → dev/packages}/@ember/utils/lib/is-equal.js +0 -0
  568. /package/dist/{packages → dev/packages}/@ember/utils/lib/is_blank.js +0 -0
  569. /package/dist/{packages → dev/packages}/@ember/utils/lib/is_none.js +0 -0
  570. /package/dist/{packages → dev/packages}/@ember/utils/lib/is_present.js +0 -0
  571. /package/dist/{packages → dev/packages}/@ember/utils/lib/type-of.js +0 -0
  572. /package/dist/{packages → dev/packages}/@ember/version/index.js +0 -0
  573. /package/dist/{packages → dev/packages}/@glimmer/env/index.js +0 -0
  574. /package/dist/{packages → dev/packages}/@glimmer/owner/index.js +0 -0
  575. /package/dist/{packages → dev/packages}/@glimmer/wire-format/index.js +0 -0
  576. /package/dist/{packages → dev/packages}/@simple-dom/document/index.js +0 -0
  577. /package/dist/{packages → dev/packages}/backburner.js/index.js +0 -0
  578. /package/dist/{packages → dev/packages}/dag-map/index.js +0 -0
  579. /package/dist/{packages → dev/packages}/ember-testing/lib/adapters/adapter.js +0 -0
  580. /package/dist/{packages → dev/packages}/ember-testing/lib/test/adapter.js +0 -0
  581. /package/dist/{packages → dev/packages}/ember-testing/lib/test/waiters.js +0 -0
  582. /package/dist/{packages → dev/packages}/route-recognizer/index.js +0 -0
  583. /package/dist/{packages → dev/packages}/rsvp/index.js +0 -0
  584. /package/dist/{packages → dev/packages}/shared-chunks/array-utils-CZQxrdD3.js +0 -0
  585. /package/dist/{packages → dev/packages}/shared-chunks/assert-CUCJBR2C.js +0 -0
  586. /package/dist/{packages → dev/packages}/shared-chunks/cache-qDyqAcpg.js +0 -0
  587. /package/dist/{packages → dev/packages}/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +0 -0
  588. /package/dist/{packages → dev/packages}/shared-chunks/computed_cache-DmYKevAP.js +0 -0
  589. /package/dist/{packages → dev/packages}/shared-chunks/debug-brand-B1TWjOCH.js +0 -0
  590. /package/dist/{packages → dev/packages}/shared-chunks/dictionary-gc5gpyOG.js +0 -0
  591. /package/dist/{packages → dev/packages}/shared-chunks/index-BGP1rw3B.js +0 -0
  592. /package/dist/{packages → dev/packages}/shared-chunks/object-utils-AijlD-JH.js +0 -0
  593. /package/dist/{packages → dev/packages}/shared-chunks/present-B1rrjAVM.js +0 -0
  594. /package/dist/{packages → dev/packages}/shared-chunks/registers-ylirb0dq.js +0 -0
  595. /package/dist/{packages → dev/packages}/shared-chunks/rsvp-CnCSY930.js +0 -0
  596. /package/dist/{packages → prod/packages}/@ember/routing/-internals.js +0 -0
  597. /package/dist/{packages/@ember/template-compiler/index.js → prod/packages/@ember/template-compiler/runtime.js} +0 -0
@@ -0,0 +1,1335 @@
1
+ import { privatize } from '../-internals/container/index.js';
2
+ import '../../shared-chunks/super-Cm_a_cLQ.js';
3
+ import '../-internals/environment/index.js';
4
+ import EmberObject from '../object/index.js';
5
+ import { getOwner } from '../owner/index.js';
6
+ import DSLImpl from './lib/dsl.js';
7
+ import RouterState from './lib/router_state.js';
8
+ import { resemblesURL, extractRouteArgs, getActiveTargetName, calculateCacheKey } from './lib/utils.js';
9
+ import { A } from '../array/index.js';
10
+ import { c as computed } from '../../shared-chunks/namespace_search-Aog9nySA.js';
11
+ import '../../@glimmer/validator/index.js';
12
+ import '../../shared-chunks/reference-BNqcwZWH.js';
13
+ import '../../shared-chunks/capabilities-DGmQ_mz4.js';
14
+ import { g as get } from '../../shared-chunks/observers-R1ZklwWy.js';
15
+ import { s as set } from '../../shared-chunks/property_set-O080KTKZ.js';
16
+ import typeOf from '../utils/lib/type-of.js';
17
+ import '../-internals/runtime/lib/mixins/registry_proxy.js';
18
+ import '../-internals/runtime/lib/mixins/container_proxy.js';
19
+ import '../-internals/runtime/lib/mixins/comparable.js';
20
+ import '../-internals/runtime/lib/mixins/action_handler.js';
21
+ import '../-internals/runtime/lib/mixins/-proxy.js';
22
+ import '../enumerable/mutable.js';
23
+ import '../-internals/runtime/lib/mixins/target_action_support.js';
24
+ import '../-internals/runtime/lib/ext/rsvp.js';
25
+ import Evented from '../object/evented.js';
26
+ import { run, once, scheduleOnce, cancel } from '../runloop/index.js';
27
+ import { getRenderState, getFullQueryParams, hasDefaultSerialize, defaultSerialize } from './route.js';
28
+ import Router from '../../router_js/index.js';
29
+ import { S as STATE_SYMBOL, l as logAbort } from '../../shared-chunks/unrecognized-url-error-DDBwfzdm.js';
30
+ import '../../shared-chunks/rsvp-CnCSY930.js';
31
+ import '../engine/instance.js';
32
+
33
+ /**
34
+ @module @ember/routing/router
35
+ */
36
+
37
+ function defaultDidTransition(infos) {
38
+ updatePaths(this);
39
+ this._cancelSlowTransitionTimer();
40
+ this.notifyPropertyChange('url');
41
+ this.set('currentState', this.targetState);
42
+ }
43
+ function defaultWillTransition(oldInfos, newInfos) {
44
+ }
45
+ function K() {
46
+ return this;
47
+ }
48
+ const {
49
+ slice
50
+ } = Array.prototype;
51
+
52
+ /**
53
+ The `EmberRouter` class manages the application state and URLs. Refer to
54
+ the [routing guide](https://guides.emberjs.com/release/routing/) for documentation.
55
+
56
+ @class EmberRouter
57
+ @extends EmberObject
58
+ @uses Evented
59
+ @public
60
+ */
61
+ class EmberRouter extends EmberObject.extend(Evented) {
62
+ /**
63
+ Represents the URL of the root of the application, often '/'. This prefix is
64
+ assumed on all routes defined on this router.
65
+ @property rootURL
66
+ @default '/'
67
+ @public
68
+ */
69
+ // Set with reopen to allow overriding via extend
70
+
71
+ /**
72
+ The `location` property determines the type of URL's that your
73
+ application will use.
74
+ The following location types are currently available:
75
+ * `history` - use the browser's history API to make the URLs look just like any standard URL
76
+ * `hash` - use `#` to separate the server part of the URL from the Ember part: `/blog/#/posts/new`
77
+ * `none` - do not store the Ember URL in the actual browser URL (mainly used for testing)
78
+ * `auto` - use the best option based on browser capabilities: `history` if possible, then `hash` if possible, otherwise `none`
79
+ This value is defaulted to `history` by the `locationType` setting of `/config/environment.js`
80
+ @property location
81
+ @default 'hash'
82
+ @see {Location}
83
+ @public
84
+ */
85
+ // Set with reopen to allow overriding via extend
86
+
87
+ _routerMicrolib;
88
+ _didSetupRouter = false;
89
+ _initialTransitionStarted = false;
90
+ currentURL = null;
91
+ currentRouteName = null;
92
+ currentPath = null;
93
+ currentRoute = null;
94
+ _qpCache = Object.create(null);
95
+
96
+ // Set of QueryParam['urlKey']
97
+ _qpUpdates = new Set();
98
+ _queuedQPChanges = {};
99
+ _bucketCache;
100
+ _toplevelView = null;
101
+ _handledErrors = new Set();
102
+ _engineInstances = Object.create(null);
103
+ _engineInfoByRoute = Object.create(null);
104
+ _routerService;
105
+ _slowTransitionTimer = null;
106
+ namespace;
107
+
108
+ // Begin Evented
109
+
110
+ // End Evented
111
+
112
+ // Set with reopenClass
113
+ static dslCallbacks;
114
+
115
+ /**
116
+ The `Router.map` function allows you to define mappings from URLs to routes
117
+ in your application. These mappings are defined within the
118
+ supplied callback function using `this.route`.
119
+ The first parameter is the name of the route which is used by default as the
120
+ path name as well.
121
+ The second parameter is the optional options hash. Available options are:
122
+ * `path`: allows you to provide your own path as well as mark dynamic
123
+ segments.
124
+ * `resetNamespace`: false by default; when nesting routes, ember will
125
+ combine the route names to form the fully-qualified route name, which is
126
+ used with `{{link-to}}` or manually transitioning to routes. Setting
127
+ `resetNamespace: true` will cause the route not to inherit from its
128
+ parent route's names. This is handy for preventing extremely long route names.
129
+ Keep in mind that the actual URL path behavior is still retained.
130
+ The third parameter is a function, which can be used to nest routes.
131
+ Nested routes, by default, will have the parent route tree's route name and
132
+ path prepended to it's own.
133
+ ```app/router.js
134
+ Router.map(function(){
135
+ this.route('post', { path: '/post/:post_id' }, function() {
136
+ this.route('edit');
137
+ this.route('comments', { resetNamespace: true }, function() {
138
+ this.route('new');
139
+ });
140
+ });
141
+ });
142
+ ```
143
+ @method map
144
+ @param callback
145
+ @public
146
+ */
147
+ static map(callback) {
148
+ if (!this.dslCallbacks) {
149
+ this.dslCallbacks = [];
150
+ // FIXME: Can we remove this?
151
+ this.reopenClass({
152
+ dslCallbacks: this.dslCallbacks
153
+ });
154
+ }
155
+ this.dslCallbacks.push(callback);
156
+ return this;
157
+ }
158
+ static _routePath(routeInfos) {
159
+ let path = [];
160
+
161
+ // We have to handle coalescing resource names that
162
+ // are prefixed with their parent's names, e.g.
163
+ // ['foo', 'foo.bar.baz'] => 'foo.bar.baz', not 'foo.foo.bar.baz'
164
+
165
+ function intersectionMatches(a1, a2) {
166
+ for (let i = 0; i < a1.length; ++i) {
167
+ if (a1[i] !== a2[i]) {
168
+ return false;
169
+ }
170
+ }
171
+ return true;
172
+ }
173
+ let name, nameParts, oldNameParts;
174
+ for (let i = 1; i < routeInfos.length; i++) {
175
+ let routeInfo = routeInfos[i];
176
+ name = routeInfo.name;
177
+ nameParts = name.split('.');
178
+ oldNameParts = slice.call(path);
179
+ while (oldNameParts.length) {
180
+ if (intersectionMatches(oldNameParts, nameParts)) {
181
+ break;
182
+ }
183
+ oldNameParts.shift();
184
+ }
185
+ path.push(...nameParts.slice(oldNameParts.length));
186
+ }
187
+ return path.join('.');
188
+ }
189
+
190
+ // Note that owner is actually required in this scenario, but since it is strictly
191
+ // optional in other contexts trying to make it required here confuses TS.
192
+ constructor(owner) {
193
+ super(owner);
194
+ this._resetQueuedQueryParameterChanges();
195
+ this.namespace = owner.lookup('application:main');
196
+ let bucketCache = owner.lookup(privatize`-bucket-cache:main`);
197
+ this._bucketCache = bucketCache;
198
+ let routerService = owner.lookup('service:router');
199
+ this._routerService = routerService;
200
+ }
201
+ _initRouterJs() {
202
+ let location = get(this, 'location');
203
+ let router = this;
204
+ const owner = getOwner(this);
205
+ let seen = Object.create(null);
206
+ class PrivateRouter extends Router {
207
+ getRoute(name) {
208
+ let routeName = name;
209
+ let routeOwner = owner;
210
+ let engineInfo = router._engineInfoByRoute[routeName];
211
+ if (engineInfo) {
212
+ let engineInstance = router._getEngineInstance(engineInfo);
213
+ routeOwner = engineInstance;
214
+ routeName = engineInfo.localFullName;
215
+ }
216
+ let fullRouteName = `route:${routeName}`;
217
+ let route = routeOwner.lookup(fullRouteName);
218
+ if (seen[name]) {
219
+ return route;
220
+ }
221
+ seen[name] = true;
222
+ if (!route) {
223
+ // SAFETY: this is configured in `commonSetupRegistry` in the
224
+ // `@ember/application/lib` package.
225
+ let DefaultRoute = routeOwner.factoryFor('route:basic').class;
226
+ routeOwner.register(fullRouteName, class extends DefaultRoute {});
227
+ route = routeOwner.lookup(fullRouteName);
228
+ }
229
+ route._setRouteName(routeName);
230
+ if (engineInfo && !hasDefaultSerialize(route)) {
231
+ throw new Error('Defining a custom serialize method on an Engine route is not supported.');
232
+ }
233
+ return route;
234
+ }
235
+ getSerializer(name) {
236
+ let engineInfo = router._engineInfoByRoute[name];
237
+
238
+ // If this is not an Engine route, we fall back to the handler for serialization
239
+ if (!engineInfo) {
240
+ return;
241
+ }
242
+ return engineInfo.serializeMethod || defaultSerialize;
243
+ }
244
+ updateURL(path) {
245
+ once(() => {
246
+ location.setURL(path);
247
+ set(router, 'currentURL', path);
248
+ });
249
+ }
250
+
251
+ // TODO: merge into routeDidChange
252
+ didTransition(infos) {
253
+ router.didTransition(infos);
254
+ }
255
+
256
+ // TODO: merge into routeWillChange
257
+ willTransition(oldInfos, newInfos) {
258
+ router.willTransition(oldInfos, newInfos);
259
+ }
260
+ triggerEvent(routeInfos, ignoreFailure, name, args) {
261
+ return triggerEvent.bind(router)(routeInfos, ignoreFailure, name, args);
262
+ }
263
+ routeWillChange(transition) {
264
+ router.trigger('routeWillChange', transition);
265
+ router._routerService.trigger('routeWillChange', transition);
266
+
267
+ // in case of intermediate transition we update the current route
268
+ // to make router.currentRoute.name consistent with router.currentRouteName
269
+ // see https://github.com/emberjs/ember.js/issues/19449
270
+ if (transition.isIntermediate) {
271
+ router.set('currentRoute', transition.to);
272
+ }
273
+ }
274
+ routeDidChange(transition) {
275
+ router.set('currentRoute', transition.to);
276
+ once(() => {
277
+ router.trigger('routeDidChange', transition);
278
+ router._routerService.trigger('routeDidChange', transition);
279
+ });
280
+ }
281
+ transitionDidError(error, transition) {
282
+ if (error.wasAborted || transition.isAborted) {
283
+ // If the error was a transition erorr or the transition aborted
284
+ // log the abort.
285
+ return logAbort(transition);
286
+ } else {
287
+ // Otherwise trigger the "error" event to attempt an intermediate
288
+ // transition into an error substate
289
+ transition.trigger(false, 'error', error.error, transition, error.route);
290
+ if (router._isErrorHandled(error.error)) {
291
+ // If we handled the error with a substate just roll the state back on
292
+ // the transition and send the "routeDidChange" event for landing on
293
+ // the error substate and return the error.
294
+ transition.rollback();
295
+ this.routeDidChange(transition);
296
+ return error.error;
297
+ } else {
298
+ // If it was not handled, abort the transition completely and return
299
+ // the error.
300
+ transition.abort();
301
+ return error.error;
302
+ }
303
+ }
304
+ }
305
+ replaceURL(url) {
306
+ if (location.replaceURL) {
307
+ let doReplaceURL = () => {
308
+ location.replaceURL(url);
309
+ set(router, 'currentURL', url);
310
+ };
311
+ once(doReplaceURL);
312
+ } else {
313
+ this.updateURL(url);
314
+ }
315
+ }
316
+ }
317
+ let routerMicrolib = this._routerMicrolib = new PrivateRouter();
318
+ let dslCallbacks = this.constructor.dslCallbacks || [K];
319
+ let dsl = this._buildDSL();
320
+ dsl.route('application', {
321
+ path: '/',
322
+ resetNamespace: true,
323
+ overrideNameAssertion: true
324
+ }, function () {
325
+ for (let i = 0; i < dslCallbacks.length; i++) {
326
+ dslCallbacks[i].call(this);
327
+ }
328
+ });
329
+ routerMicrolib.map(dsl.generate());
330
+ }
331
+ _buildDSL() {
332
+ let enableLoadingSubstates = this._hasModuleBasedResolver();
333
+ let router = this;
334
+ const owner = getOwner(this);
335
+ let options = {
336
+ enableLoadingSubstates,
337
+ resolveRouteMap(name) {
338
+ return owner.factoryFor(`route-map:${name}`);
339
+ },
340
+ addRouteForEngine(name, engineInfo) {
341
+ if (!router._engineInfoByRoute[name]) {
342
+ router._engineInfoByRoute[name] = engineInfo;
343
+ }
344
+ }
345
+ };
346
+ return new DSLImpl(null, options);
347
+ }
348
+
349
+ /*
350
+ Resets all pending query parameter changes.
351
+ Called after transitioning to a new route
352
+ based on query parameter changes.
353
+ */
354
+ _resetQueuedQueryParameterChanges() {
355
+ this._queuedQPChanges = {};
356
+ }
357
+ _hasModuleBasedResolver() {
358
+ let owner = getOwner(this);
359
+ let resolver = get(owner, 'application.__registry__.resolver.moduleBasedResolver');
360
+ return Boolean(resolver);
361
+ }
362
+
363
+ /**
364
+ Initializes the current router instance and sets up the change handling
365
+ event listeners used by the instances `location` implementation.
366
+ A property named `initialURL` will be used to determine the initial URL.
367
+ If no value is found `/` will be used.
368
+ @method startRouting
369
+ @private
370
+ */
371
+ startRouting() {
372
+ if (this.setupRouter()) {
373
+ let initialURL = get(this, 'initialURL');
374
+ if (initialURL === undefined) {
375
+ initialURL = get(this, 'location').getURL();
376
+ }
377
+ let initialTransition = this.handleURL(initialURL);
378
+ if (initialTransition && initialTransition.error) {
379
+ throw initialTransition.error;
380
+ }
381
+ }
382
+ }
383
+ setupRouter() {
384
+ if (this._didSetupRouter) {
385
+ return false;
386
+ }
387
+ this._didSetupRouter = true;
388
+ this._setupLocation();
389
+ let location = get(this, 'location');
390
+
391
+ // Allow the Location class to cancel the router setup while it refreshes
392
+ // the page
393
+ if (get(location, 'cancelRouterSetup')) {
394
+ return false;
395
+ }
396
+ this._initRouterJs();
397
+ location.onUpdateURL(url => {
398
+ this.handleURL(url);
399
+ });
400
+ return true;
401
+ }
402
+ _setOutlets() {
403
+ // This is triggered async during Route#willDestroy.
404
+ // If the router is also being destroyed we do not want to
405
+ // to create another this._toplevelView (and leak the renderer)
406
+ if (this.isDestroying || this.isDestroyed) {
407
+ return;
408
+ }
409
+ let routeInfos = this._routerMicrolib.currentRouteInfos;
410
+ if (!routeInfos) {
411
+ return;
412
+ }
413
+ let root = null;
414
+ let parent = null;
415
+ for (let routeInfo of routeInfos) {
416
+ let route = routeInfo.route;
417
+ let render = getRenderState(route);
418
+ if (render) {
419
+ let state = {
420
+ render,
421
+ outlets: {
422
+ main: undefined
423
+ }
424
+ };
425
+ if (parent) {
426
+ parent.outlets.main = state;
427
+ } else {
428
+ root = state;
429
+ }
430
+ parent = state;
431
+ } else {
432
+ // It used to be that we would create a stub entry and keep traversing,
433
+ // but I don't think that is necessary anymore – if a parent route did
434
+ // not render, then the child routes have nowhere to render into these
435
+ // days. That wasn't always the case since in the past any route can
436
+ // render into any other route's outlets.
437
+ break;
438
+ }
439
+ }
440
+
441
+ // when a transitionTo happens after the validation phase
442
+ // during the initial transition _setOutlets is called
443
+ // when no routes are active. However, it will get called
444
+ // again with the correct values during the next turn of
445
+ // the runloop
446
+ if (root === null) {
447
+ return;
448
+ }
449
+ if (!this._toplevelView) {
450
+ let owner = getOwner(this);
451
+ // this safe, so in each of these cases we assume that nothing *else* is
452
+ // registered at this `FullName`, and simply check to make sure that
453
+ // *something* is.
454
+ let OutletView = owner.factoryFor('view:-outlet');
455
+ let application = owner.lookup('application:main');
456
+ let environment = owner.lookup('-environment:main');
457
+ let template = owner.lookup('template:-outlet');
458
+ this._toplevelView = OutletView.create({
459
+ environment,
460
+ template,
461
+ application
462
+ });
463
+ this._toplevelView.setOutletState(root);
464
+
465
+ // `Router Service - non application test: RouterService#transitionTo with basic route`
466
+ let instance = owner.lookup('-application-instance:main');
467
+ // cannot actually confirm at a type level *is* a `ViewMixin`. Seems:
468
+ // not great on multiple fronts!
469
+ instance.didCreateRootView(this._toplevelView);
470
+ } else {
471
+ this._toplevelView.setOutletState(root);
472
+ }
473
+ }
474
+ handleURL(url) {
475
+ // Until we have an ember-idiomatic way of accessing #hashes, we need to
476
+ // remove it because router.js doesn't know how to handle it.
477
+ let _url = url.split(/#(.+)?/)[0];
478
+ return this._doURLTransition('handleURL', _url);
479
+ }
480
+ _doURLTransition(routerJsMethod, url) {
481
+ this._initialTransitionStarted = true;
482
+ let transition = this._routerMicrolib[routerJsMethod](url || '/');
483
+ didBeginTransition(transition, this);
484
+ return transition;
485
+ }
486
+
487
+ /**
488
+ Transition the application into another route. The route may
489
+ be either a single route or route path:
490
+ @method transitionTo
491
+ @param {String} [name] the name of the route or a URL
492
+ @param {...Object} models the model(s) or identifier(s) to be used while
493
+ transitioning to the route.
494
+ @param {Object} [options] optional hash with a queryParams property
495
+ containing a mapping of query parameters
496
+ @return {Transition} the transition object associated with this
497
+ attempted transition
498
+ @public
499
+ */
500
+ transitionTo(...args) {
501
+ if (resemblesURL(args[0])) {
502
+ return this._doURLTransition('transitionTo', args[0]);
503
+ }
504
+ let {
505
+ routeName,
506
+ models,
507
+ queryParams
508
+ } = extractRouteArgs(args);
509
+ return this._doTransition(routeName, models, queryParams);
510
+ }
511
+ intermediateTransitionTo(name, ...args) {
512
+ this._routerMicrolib.intermediateTransitionTo(name, ...args);
513
+ updatePaths(this);
514
+ }
515
+
516
+ /**
517
+ Similar to `transitionTo`, but instead of adding the destination to the browser's URL history,
518
+ it replaces the entry for the current route.
519
+ When the user clicks the "back" button in the browser, there will be fewer steps.
520
+ This is most commonly used to manage redirects in a way that does not cause confusing additions
521
+ to the user's browsing history.
522
+ @method replaceWith
523
+ @param {String} [name] the name of the route or a URL
524
+ @param {...Object} models the model(s) or identifier(s) to be used while
525
+ transitioning to the route.
526
+ @param {Object} [options] optional hash with a queryParams property
527
+ containing a mapping of query parameters
528
+ @return {Transition} the transition object associated with this
529
+ attempted transition
530
+ @public
531
+ */
532
+ replaceWith(...args) {
533
+ return this.transitionTo(...args).method('replace');
534
+ }
535
+ generate(name, ...args) {
536
+ let url = this._routerMicrolib.generate(name, ...args);
537
+ return this.location.formatURL(url);
538
+ }
539
+
540
+ /**
541
+ Determines if the supplied route is currently active.
542
+ @method isActive
543
+ @param routeName
544
+ @return {Boolean}
545
+ @private
546
+ */
547
+ isActive(routeName) {
548
+ return this._routerMicrolib.isActive(routeName);
549
+ }
550
+
551
+ /**
552
+ An alternative form of `isActive` that doesn't require
553
+ manual concatenation of the arguments into a single
554
+ array.
555
+ @method isActiveIntent
556
+ @param routeName
557
+ @param models
558
+ @param queryParams
559
+ @return {Boolean}
560
+ @private
561
+ @since 1.7.0
562
+ */
563
+ isActiveIntent(routeName, models, queryParams) {
564
+ return this.currentState.isActiveIntent(routeName, models, queryParams);
565
+ }
566
+ send(name, ...args) {
567
+ /*name, context*/
568
+ this._routerMicrolib.trigger(name, ...args);
569
+ }
570
+
571
+ /**
572
+ Does this router instance have the given route.
573
+ @method hasRoute
574
+ @return {Boolean}
575
+ @private
576
+ */
577
+ hasRoute(route) {
578
+ return this._routerMicrolib.hasRoute(route);
579
+ }
580
+
581
+ /**
582
+ Resets the state of the router by clearing the current route
583
+ handlers and deactivating them.
584
+ @private
585
+ @method reset
586
+ */
587
+ reset() {
588
+ this._didSetupRouter = false;
589
+ this._initialTransitionStarted = false;
590
+ if (this._routerMicrolib) {
591
+ this._routerMicrolib.reset();
592
+ }
593
+ }
594
+ willDestroy() {
595
+ if (this._toplevelView) {
596
+ this._toplevelView.destroy();
597
+ this._toplevelView = null;
598
+ }
599
+ super.willDestroy();
600
+ this.reset();
601
+ let instances = this._engineInstances;
602
+ for (let name in instances) {
603
+ let instanceMap = instances[name];
604
+ for (let id in instanceMap) {
605
+ let instance = instanceMap[id];
606
+ run(instance, 'destroy');
607
+ }
608
+ }
609
+ }
610
+
611
+ /*
612
+ Called when an active route's query parameter has changed.
613
+ These changes are batched into a runloop run and trigger
614
+ a single transition.
615
+ */
616
+ _activeQPChanged(queryParameterName, newValue) {
617
+ this._queuedQPChanges[queryParameterName] = newValue;
618
+ once(this, this._fireQueryParamTransition);
619
+ }
620
+
621
+ // The queryParameterName is QueryParam['urlKey']
622
+ _updatingQPChanged(queryParameterName) {
623
+ this._qpUpdates.add(queryParameterName);
624
+ }
625
+
626
+ /*
627
+ Triggers a transition to a route based on query parameter changes.
628
+ This is called once per runloop, to batch changes.
629
+ e.g.
630
+ if these methods are called in succession:
631
+ this._activeQPChanged('foo', '10');
632
+ // results in _queuedQPChanges = { foo: '10' }
633
+ this._activeQPChanged('bar', false);
634
+ // results in _queuedQPChanges = { foo: '10', bar: false }
635
+ _queuedQPChanges will represent both of these changes
636
+ and the transition using `transitionTo` will be triggered
637
+ once.
638
+ */
639
+ _fireQueryParamTransition() {
640
+ this.transitionTo({
641
+ queryParams: this._queuedQPChanges
642
+ });
643
+ this._resetQueuedQueryParameterChanges();
644
+ }
645
+ _setupLocation() {
646
+ let location = this.location;
647
+ let rootURL = this.rootURL;
648
+ let owner = getOwner(this);
649
+ if ('string' === typeof location) {
650
+ let resolvedLocation = owner.lookup(`location:${location}`);
651
+ location = set(this, 'location', resolvedLocation);
652
+ }
653
+ if (location !== null && typeof location === 'object') {
654
+ if (rootURL) {
655
+ set(location, 'rootURL', rootURL);
656
+ }
657
+
658
+ // ensure that initState is called AFTER the rootURL is set on
659
+ // the location instance
660
+ if (typeof location.initState === 'function') {
661
+ location.initState();
662
+ }
663
+ }
664
+ }
665
+
666
+ /**
667
+ Serializes the given query params according to their QP meta information.
668
+ @private
669
+ @method _serializeQueryParams
670
+ @param {Arrray<RouteInfo>} routeInfos
671
+ @param {Object} queryParams
672
+ @return {Void}
673
+ */
674
+ _serializeQueryParams(routeInfos, queryParams) {
675
+ forEachQueryParam(this, routeInfos, queryParams, (key, value, qp) => {
676
+ if (qp) {
677
+ delete queryParams[key];
678
+ queryParams[qp.urlKey] = qp.route.serializeQueryParam(value, qp.urlKey, qp.type);
679
+ } else if (value === undefined) {
680
+ return; // We don't serialize undefined values
681
+ } else {
682
+ queryParams[key] = this._serializeQueryParam(value, typeOf(value));
683
+ }
684
+ });
685
+ }
686
+
687
+ /**
688
+ Serializes the value of a query parameter based on a type
689
+ @private
690
+ @method _serializeQueryParam
691
+ @param {Object} value
692
+ @param {String} type
693
+ */
694
+ _serializeQueryParam(value, type) {
695
+ if (value === null || value === undefined) {
696
+ return value;
697
+ } else if (type === 'array') {
698
+ return JSON.stringify(value);
699
+ }
700
+ return `${value}`;
701
+ }
702
+
703
+ /**
704
+ Deserializes the given query params according to their QP meta information.
705
+ @private
706
+ @method _deserializeQueryParams
707
+ @param {Array<RouteInfo>} routeInfos
708
+ @param {Object} queryParams
709
+ @return {Void}
710
+ */
711
+ _deserializeQueryParams(routeInfos, queryParams) {
712
+ forEachQueryParam(this, routeInfos, queryParams, (key, value, qp) => {
713
+ // If we don't have QP meta info for a given key, then we do nothing
714
+ // because all values will be treated as strings
715
+ if (qp) {
716
+ delete queryParams[key];
717
+ queryParams[qp.prop] = qp.route.deserializeQueryParam(value, qp.urlKey, qp.type);
718
+ }
719
+ });
720
+ }
721
+
722
+ /**
723
+ Deserializes the value of a query parameter based on a default type
724
+ @private
725
+ @method _deserializeQueryParam
726
+ @param {Object} value
727
+ @param {String} defaultType
728
+ */
729
+ _deserializeQueryParam(value, defaultType) {
730
+ if (value === null || value === undefined) {
731
+ return value;
732
+ } else if (defaultType === 'boolean') {
733
+ return value === 'true';
734
+ } else if (defaultType === 'number') {
735
+ return Number(value).valueOf();
736
+ } else if (defaultType === 'array') {
737
+ return A(JSON.parse(value));
738
+ }
739
+ return value;
740
+ }
741
+
742
+ /**
743
+ Removes (prunes) any query params with default values from the given QP
744
+ object. Default values are determined from the QP meta information per key.
745
+ @private
746
+ @method _pruneDefaultQueryParamValues
747
+ @param {Array<RouteInfo>} routeInfos
748
+ @param {Object} queryParams
749
+ @return {Void}
750
+ */
751
+ _pruneDefaultQueryParamValues(routeInfos, queryParams) {
752
+ let qps = this._queryParamsFor(routeInfos);
753
+ for (let key in queryParams) {
754
+ let qp = qps.map[key];
755
+ if (qp && qp.serializedDefaultValue === queryParams[key]) {
756
+ delete queryParams[key];
757
+ }
758
+ }
759
+ }
760
+ _doTransition(_targetRouteName, models, _queryParams, _fromRouterService) {
761
+ let targetRouteName = _targetRouteName || getActiveTargetName(this._routerMicrolib);
762
+ this._initialTransitionStarted = true;
763
+ let queryParams = {};
764
+ this._processActiveTransitionQueryParams(targetRouteName, models, queryParams, _queryParams);
765
+ Object.assign(queryParams, _queryParams);
766
+ this._prepareQueryParams(targetRouteName, models, queryParams, Boolean(_fromRouterService));
767
+ let transition = this._routerMicrolib.transitionTo(targetRouteName, ...models, {
768
+ queryParams
769
+ });
770
+ didBeginTransition(transition, this);
771
+ return transition;
772
+ }
773
+ _processActiveTransitionQueryParams(targetRouteName, models, queryParams,
774
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
775
+ _queryParams) {
776
+ // merge in any queryParams from the active transition which could include
777
+ // queryParams from the url on initial load.
778
+ if (!this._routerMicrolib.activeTransition) {
779
+ return;
780
+ }
781
+ let unchangedQPs = {};
782
+ let qpUpdates = this._qpUpdates;
783
+ let params = getFullQueryParams(this, this._routerMicrolib.activeTransition[STATE_SYMBOL]);
784
+ for (let key in params) {
785
+ if (!qpUpdates.has(key)) {
786
+ unchangedQPs[key] = params[key];
787
+ }
788
+ }
789
+
790
+ // We need to fully scope queryParams so that we can create one object
791
+ // that represents both passed-in queryParams and ones that aren't changed
792
+ // from the active transition.
793
+ this._fullyScopeQueryParams(targetRouteName, models, _queryParams);
794
+ this._fullyScopeQueryParams(targetRouteName, models, unchangedQPs);
795
+ Object.assign(queryParams, unchangedQPs);
796
+ }
797
+
798
+ /**
799
+ Prepares the query params for a URL or Transition. Restores any undefined QP
800
+ keys/values, serializes all values, and then prunes any default values.
801
+ @private
802
+ @method _prepareQueryParams
803
+ @param {String} targetRouteName
804
+ @param {Array<Object>} models
805
+ @param {Object} queryParams
806
+ @param {boolean} keepDefaultQueryParamValues
807
+ @return {Void}
808
+ */
809
+ _prepareQueryParams(targetRouteName, models, queryParams, _fromRouterService) {
810
+ let state = calculatePostTransitionState(this, targetRouteName, models);
811
+ this._hydrateUnsuppliedQueryParams(state, queryParams, Boolean(_fromRouterService));
812
+ this._serializeQueryParams(state.routeInfos, queryParams);
813
+ if (!_fromRouterService) {
814
+ this._pruneDefaultQueryParamValues(state.routeInfos, queryParams);
815
+ }
816
+ }
817
+
818
+ /**
819
+ Returns the meta information for the query params of a given route. This
820
+ will be overridden to allow support for lazy routes.
821
+ @private
822
+ @method _getQPMeta
823
+ @param {RouteInfo} routeInfo
824
+ @return {Object}
825
+ */
826
+ _getQPMeta(routeInfo) {
827
+ let route = routeInfo.route;
828
+ return route && get(route, '_qp');
829
+ }
830
+
831
+ /**
832
+ Returns a merged query params meta object for a given set of routeInfos.
833
+ Useful for knowing what query params are available for a given route hierarchy.
834
+ @private
835
+ @method _queryParamsFor
836
+ @param {Array<RouteInfo>} routeInfos
837
+ @return {Object}
838
+ */
839
+ _queryParamsFor(routeInfos) {
840
+ let routeInfoLength = routeInfos.length;
841
+ let leafRouteName = routeInfos[routeInfoLength - 1].name;
842
+ let cached = this._qpCache[leafRouteName];
843
+ if (cached !== undefined) {
844
+ return cached;
845
+ }
846
+ let shouldCache = true;
847
+ let map = {};
848
+ let qps = [];
849
+ let qpMeta;
850
+ for (let routeInfo of routeInfos) {
851
+ qpMeta = this._getQPMeta(routeInfo);
852
+ if (!qpMeta) {
853
+ shouldCache = false;
854
+ continue;
855
+ }
856
+
857
+ // Loop over each QP to make sure we don't have any collisions by urlKey
858
+ for (let qp of qpMeta.qps) {
859
+ qps.push(qp);
860
+ }
861
+ Object.assign(map, qpMeta.map);
862
+ }
863
+ let finalQPMeta = {
864
+ qps,
865
+ map
866
+ };
867
+ if (shouldCache) {
868
+ this._qpCache[leafRouteName] = finalQPMeta;
869
+ }
870
+ return finalQPMeta;
871
+ }
872
+
873
+ /**
874
+ Maps all query param keys to their fully scoped property name of the form
875
+ `controllerName:propName`.
876
+ @private
877
+ @method _fullyScopeQueryParams
878
+ @param {String} leafRouteName
879
+ @param {Array<Object>} contexts
880
+ @param {Object} queryParams
881
+ @return {Void}
882
+ */
883
+ _fullyScopeQueryParams(leafRouteName, contexts, queryParams) {
884
+ let state = calculatePostTransitionState(this, leafRouteName, contexts);
885
+ let routeInfos = state.routeInfos;
886
+ let qpMeta;
887
+ for (let routeInfo of routeInfos) {
888
+ qpMeta = this._getQPMeta(routeInfo);
889
+ if (!qpMeta) {
890
+ continue;
891
+ }
892
+ for (let qp of qpMeta.qps) {
893
+ let presentProp = qp.prop in queryParams && qp.prop || qp.scopedPropertyName in queryParams && qp.scopedPropertyName || qp.urlKey in queryParams && qp.urlKey;
894
+ if (presentProp) {
895
+ if (presentProp !== qp.scopedPropertyName) {
896
+ queryParams[qp.scopedPropertyName] = queryParams[presentProp];
897
+ delete queryParams[presentProp];
898
+ }
899
+ }
900
+ }
901
+ }
902
+ }
903
+
904
+ /**
905
+ Hydrates (adds/restores) any query params that have pre-existing values into
906
+ the given queryParams hash. This is what allows query params to be "sticky"
907
+ and restore their last known values for their scope.
908
+ @private
909
+ @method _hydrateUnsuppliedQueryParams
910
+ @param {TransitionState} state
911
+ @param {Object} queryParams
912
+ @return {Void}
913
+ */
914
+ _hydrateUnsuppliedQueryParams(state, queryParams, _fromRouterService) {
915
+ let routeInfos = state.routeInfos;
916
+ let appCache = this._bucketCache;
917
+ let qpMeta;
918
+ let qp;
919
+ let presentProp;
920
+ for (let routeInfo of routeInfos) {
921
+ qpMeta = this._getQPMeta(routeInfo);
922
+ if (!qpMeta) {
923
+ continue;
924
+ }
925
+
926
+ // Needs to stay for index loop to avoid throwIfClosureRequired
927
+ for (let j = 0, qpLen = qpMeta.qps.length; j < qpLen; ++j) {
928
+ qp = qpMeta.qps[j];
929
+ presentProp = qp.prop in queryParams && qp.prop || qp.scopedPropertyName in queryParams && qp.scopedPropertyName || qp.urlKey in queryParams && qp.urlKey;
930
+ if (presentProp) {
931
+ if (presentProp !== qp.scopedPropertyName) {
932
+ queryParams[qp.scopedPropertyName] = queryParams[presentProp];
933
+ delete queryParams[presentProp];
934
+ }
935
+ } else {
936
+ let cacheKey = calculateCacheKey(qp.route.fullRouteName, qp.parts, state.params);
937
+ queryParams[qp.scopedPropertyName] = appCache.lookup(cacheKey, qp.prop, qp.defaultValue);
938
+ }
939
+ }
940
+ }
941
+ }
942
+ _scheduleLoadingEvent(transition, originRoute) {
943
+ this._cancelSlowTransitionTimer();
944
+ this._slowTransitionTimer = scheduleOnce('routerTransitions', this, this._handleSlowTransition, transition, originRoute);
945
+ }
946
+ currentState = null;
947
+ targetState = null;
948
+ _handleSlowTransition(transition, originRoute) {
949
+ if (!this._routerMicrolib.activeTransition) {
950
+ // Don't fire an event if we've since moved on from
951
+ // the transition that put us in a loading state.
952
+ return;
953
+ }
954
+ let targetState = new RouterState(this, this._routerMicrolib, this._routerMicrolib.activeTransition[STATE_SYMBOL]);
955
+ this.set('targetState', targetState);
956
+ transition.trigger(true, 'loading', transition, originRoute);
957
+ }
958
+ _cancelSlowTransitionTimer() {
959
+ if (this._slowTransitionTimer) {
960
+ cancel(this._slowTransitionTimer);
961
+ }
962
+ this._slowTransitionTimer = null;
963
+ }
964
+
965
+ // These three helper functions are used to ensure errors aren't
966
+ // re-raised if they're handled in a route's error action.
967
+ _markErrorAsHandled(error) {
968
+ this._handledErrors.add(error);
969
+ }
970
+ _isErrorHandled(error) {
971
+ return this._handledErrors.has(error);
972
+ }
973
+ _clearHandledError(error) {
974
+ this._handledErrors.delete(error);
975
+ }
976
+ _getEngineInstance({
977
+ name,
978
+ instanceId,
979
+ mountPoint
980
+ }) {
981
+ let engineInstances = this._engineInstances;
982
+ let namedInstances = engineInstances[name];
983
+ if (!namedInstances) {
984
+ namedInstances = Object.create(null);
985
+ engineInstances[name] = namedInstances;
986
+ }
987
+ let engineInstance = namedInstances[instanceId];
988
+ if (!engineInstance) {
989
+ let owner = getOwner(this);
990
+ engineInstance = owner.buildChildEngineInstance(name, {
991
+ routable: true,
992
+ mountPoint
993
+ });
994
+ engineInstance.boot();
995
+ namedInstances[instanceId] = engineInstance;
996
+ }
997
+ return engineInstance;
998
+ }
999
+
1000
+ /**
1001
+ Handles updating the paths and notifying any listeners of the URL
1002
+ change.
1003
+ Triggers the router level `didTransition` hook.
1004
+ For example, to notify google analytics when the route changes,
1005
+ you could use this hook. (Note: requires also including GA scripts, etc.)
1006
+ ```javascript
1007
+ import config from './config/environment';
1008
+ import EmberRouter from '@ember/routing/router';
1009
+ import { service } from '@ember/service';
1010
+ export default class Router extends EmberRouter {
1011
+ location = config.locationType;
1012
+ @service()
1013
+ router;
1014
+ didTransition() {
1015
+ super.didTransition(...arguments);
1016
+ ga('send', 'pageview', {
1017
+ page: this.router.currentURL,
1018
+ title: this.router.currentRouteName,
1019
+ });
1020
+ }
1021
+ }
1022
+ ```
1023
+ @method didTransition
1024
+ @private
1025
+ @since 1.2.0
1026
+ */
1027
+ // Set with reopen to allow overriding via extend
1028
+
1029
+ /**
1030
+ Handles notifying any listeners of an impending URL
1031
+ change.
1032
+ Triggers the router level `willTransition` hook.
1033
+ @method willTransition
1034
+ @private
1035
+ @since 1.11.0
1036
+ */
1037
+ // Set with reopen to allow overriding via extend
1038
+
1039
+ /**
1040
+ Represents the current URL.
1041
+ @property url
1042
+ @type {String}
1043
+ @private
1044
+ */
1045
+ // Set with reopen to allow overriding via extend
1046
+ }
1047
+
1048
+ /*
1049
+ Helper function for iterating over routes in a set of routeInfos that are
1050
+ at or above the given origin route. Example: if `originRoute` === 'foo.bar'
1051
+ and the routeInfos given were for 'foo.bar.baz', then the given callback
1052
+ will be invoked with the routes for 'foo.bar', 'foo', and 'application'
1053
+ individually.
1054
+
1055
+ If the callback returns anything other than `true`, then iteration will stop.
1056
+
1057
+ @private
1058
+ @param {Route} originRoute
1059
+ @param {Array<RouteInfo>} routeInfos
1060
+ @param {Function} callback
1061
+ @return {Void}
1062
+ */
1063
+ function forEachRouteAbove(routeInfos, callback) {
1064
+ for (let i = routeInfos.length - 1; i >= 0; --i) {
1065
+ let routeInfo = routeInfos[i];
1066
+ let route = routeInfo.route;
1067
+
1068
+ // routeInfo.handler being `undefined` generally means either:
1069
+ //
1070
+ // 1. an error occurred during creation of the route in question
1071
+ // 2. the route is across an async boundary (e.g. within an engine)
1072
+ //
1073
+ // In both of these cases, we cannot invoke the callback on that specific
1074
+ // route, because it just doesn't exist...
1075
+ if (route === undefined) {
1076
+ continue;
1077
+ }
1078
+ if (callback(route, routeInfo) !== true) {
1079
+ return;
1080
+ }
1081
+ }
1082
+ }
1083
+
1084
+ // These get invoked when an action bubbles above ApplicationRoute
1085
+ // and are not meant to be overridable.
1086
+ let defaultActionHandlers = {
1087
+ willResolveModel(_routeInfos, transition, originRoute) {
1088
+ this._scheduleLoadingEvent(transition, originRoute);
1089
+ },
1090
+ // Attempt to find an appropriate error route or substate to enter.
1091
+ error(routeInfos, error, transition) {
1092
+ let router = this;
1093
+ let routeInfoWithError = routeInfos[routeInfos.length - 1];
1094
+ forEachRouteAbove(routeInfos, (route, routeInfo) => {
1095
+ // We don't check the leaf most routeInfo since that would
1096
+ // technically be below where we're at in the route hierarchy.
1097
+ if (routeInfo !== routeInfoWithError) {
1098
+ // Check for the existence of an 'error' route.
1099
+ let errorRouteName = findRouteStateName(route, 'error');
1100
+ if (errorRouteName) {
1101
+ router._markErrorAsHandled(error);
1102
+ router.intermediateTransitionTo(errorRouteName, error);
1103
+ return false;
1104
+ }
1105
+ }
1106
+
1107
+ // Check for an 'error' substate route
1108
+ let errorSubstateName = findRouteSubstateName(route, 'error');
1109
+ if (errorSubstateName) {
1110
+ router._markErrorAsHandled(error);
1111
+ router.intermediateTransitionTo(errorSubstateName, error);
1112
+ return false;
1113
+ }
1114
+ return true;
1115
+ });
1116
+ logError(error, `Error while processing route: ${transition.targetName}`);
1117
+ },
1118
+ // Attempt to find an appropriate loading route or substate to enter.
1119
+ loading(routeInfos, transition) {
1120
+ let router = this;
1121
+ let routeInfoWithSlowLoading = routeInfos[routeInfos.length - 1];
1122
+ forEachRouteAbove(routeInfos, (route, routeInfo) => {
1123
+ // We don't check the leaf most routeInfos since that would
1124
+ // technically be below where we're at in the route hierarchy.
1125
+ if (routeInfo !== routeInfoWithSlowLoading) {
1126
+ // Check for the existence of a 'loading' route.
1127
+ let loadingRouteName = findRouteStateName(route, 'loading');
1128
+ if (loadingRouteName) {
1129
+ router.intermediateTransitionTo(loadingRouteName);
1130
+ return false;
1131
+ }
1132
+ }
1133
+
1134
+ // Check for loading substate
1135
+ let loadingSubstateName = findRouteSubstateName(route, 'loading');
1136
+ if (loadingSubstateName) {
1137
+ router.intermediateTransitionTo(loadingSubstateName);
1138
+ return false;
1139
+ }
1140
+
1141
+ // Don't bubble above pivot route.
1142
+ return transition.pivotHandler !== route;
1143
+ });
1144
+ }
1145
+ };
1146
+ function logError(_error, initialMessage) {
1147
+ let errorArgs = [];
1148
+ let error;
1149
+ if (_error && typeof _error === 'object' && typeof _error.errorThrown === 'object') {
1150
+ error = _error.errorThrown;
1151
+ } else {
1152
+ error = _error;
1153
+ }
1154
+ if (initialMessage) {
1155
+ errorArgs.push(initialMessage);
1156
+ }
1157
+ if (error) {
1158
+ if (error.message) {
1159
+ errorArgs.push(error.message);
1160
+ }
1161
+ if (error.stack) {
1162
+ errorArgs.push(error.stack);
1163
+ }
1164
+ if (typeof error === 'string') {
1165
+ errorArgs.push(error);
1166
+ }
1167
+ }
1168
+ console.error(...errorArgs); //eslint-disable-line no-console
1169
+ }
1170
+
1171
+ /**
1172
+ Finds the name of the substate route if it exists for the given route. A
1173
+ substate route is of the form `route_state`, such as `foo_loading`.
1174
+
1175
+ @private
1176
+ @param {Route} route
1177
+ @param {String} state
1178
+ @return {String}
1179
+ */
1180
+ function findRouteSubstateName(route, state) {
1181
+ let owner = getOwner(route);
1182
+ let {
1183
+ routeName,
1184
+ fullRouteName,
1185
+ _router: router
1186
+ } = route;
1187
+ let substateName = `${routeName}_${state}`;
1188
+ let substateNameFull = `${fullRouteName}_${state}`;
1189
+ return routeHasBeenDefined(owner, router, substateName, substateNameFull) ? substateNameFull : '';
1190
+ }
1191
+
1192
+ /**
1193
+ Finds the name of the state route if it exists for the given route. A state
1194
+ route is of the form `route.state`, such as `foo.loading`. Properly Handles
1195
+ `application` named routes.
1196
+
1197
+ @private
1198
+ @param {Route} route
1199
+ @param {String} state
1200
+ @return {String}
1201
+ */
1202
+ function findRouteStateName(route, state) {
1203
+ let owner = getOwner(route);
1204
+ let {
1205
+ routeName,
1206
+ fullRouteName,
1207
+ _router: router
1208
+ } = route;
1209
+ let stateName = routeName === 'application' ? state : `${routeName}.${state}`;
1210
+ let stateNameFull = fullRouteName === 'application' ? state : `${fullRouteName}.${state}`;
1211
+ return routeHasBeenDefined(owner, router, stateName, stateNameFull) ? stateNameFull : '';
1212
+ }
1213
+
1214
+ /**
1215
+ Determines whether or not a route has been defined by checking that the route
1216
+ is in the Router's map and the owner has a registration for that route.
1217
+
1218
+ @private
1219
+ @param {Owner} owner
1220
+ @param {Router} router
1221
+ @param {String} localName
1222
+ @param {String} fullName
1223
+ @return {Boolean}
1224
+ */
1225
+ function routeHasBeenDefined(owner, router, localName, fullName) {
1226
+ let routerHasRoute = router.hasRoute(fullName);
1227
+ let ownerHasRoute = owner.factoryFor(`template:${localName}`) || owner.factoryFor(`route:${localName}`);
1228
+ return routerHasRoute && ownerHasRoute;
1229
+ }
1230
+ function triggerEvent(routeInfos, ignoreFailure, name, args) {
1231
+ if (!routeInfos) {
1232
+ if (ignoreFailure) {
1233
+ return;
1234
+ }
1235
+ // TODO: update?
1236
+ throw new Error(`Can't trigger action '${name}' because your app hasn't finished transitioning into its first route. To trigger an action on destination routes during a transition, you can call \`.send()\` on the \`Transition\` object passed to the \`model/beforeModel/afterModel\` hooks.`);
1237
+ }
1238
+ let eventWasHandled = false;
1239
+ let routeInfo, handler, actionHandler;
1240
+ for (let i = routeInfos.length - 1; i >= 0; i--) {
1241
+ routeInfo = routeInfos[i];
1242
+ handler = routeInfo.route;
1243
+ actionHandler = handler && handler.actions && handler.actions[name];
1244
+ if (actionHandler) {
1245
+ if (actionHandler.apply(handler, args) === true) {
1246
+ eventWasHandled = true;
1247
+ } else {
1248
+ // Should only hit here if a non-bubbling error action is triggered on a route.
1249
+ if (name === 'error') {
1250
+ handler._router._markErrorAsHandled(args[0]);
1251
+ }
1252
+ return;
1253
+ }
1254
+ }
1255
+ }
1256
+ let defaultHandler = defaultActionHandlers[name];
1257
+ if (defaultHandler) {
1258
+ defaultHandler.call(this, routeInfos, ...args);
1259
+ return;
1260
+ }
1261
+ if (!eventWasHandled && !ignoreFailure) {
1262
+ throw new Error(`Nothing handled the action '${name}'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble.`);
1263
+ }
1264
+ }
1265
+ function calculatePostTransitionState(emberRouter, leafRouteName, contexts) {
1266
+ let state = emberRouter._routerMicrolib.applyIntent(leafRouteName, contexts);
1267
+ let {
1268
+ routeInfos,
1269
+ params
1270
+ } = state;
1271
+ for (let routeInfo of routeInfos) {
1272
+ // If the routeInfo is not resolved, we serialize the context into params
1273
+ if (!routeInfo.isResolved) {
1274
+ params[routeInfo.name] = routeInfo.serialize(routeInfo.context);
1275
+ } else {
1276
+ params[routeInfo.name] = routeInfo.params;
1277
+ }
1278
+ }
1279
+ return state;
1280
+ }
1281
+ function updatePaths(router) {
1282
+ let infos = router._routerMicrolib.currentRouteInfos;
1283
+ if (infos.length === 0) {
1284
+ return;
1285
+ }
1286
+ let path = EmberRouter._routePath(infos);
1287
+ let info = infos[infos.length - 1];
1288
+ let currentRouteName = info.name;
1289
+ let location = router.location;
1290
+ let currentURL = location.getURL();
1291
+ set(router, 'currentPath', path);
1292
+ set(router, 'currentRouteName', currentRouteName);
1293
+ set(router, 'currentURL', currentURL);
1294
+ }
1295
+ function didBeginTransition(transition, router) {
1296
+ let routerState = new RouterState(router, router._routerMicrolib, transition[STATE_SYMBOL]);
1297
+ if (!router.currentState) {
1298
+ router.set('currentState', routerState);
1299
+ }
1300
+ router.set('targetState', routerState);
1301
+ transition.promise = transition.catch(error => {
1302
+ if (router._isErrorHandled(error)) {
1303
+ router._clearHandledError(error);
1304
+ } else {
1305
+ throw error;
1306
+ }
1307
+ }, 'Transition Error');
1308
+ }
1309
+ function forEachQueryParam(router, routeInfos, queryParams, callback) {
1310
+ let qpCache = router._queryParamsFor(routeInfos);
1311
+ for (let key in queryParams) {
1312
+ if (!Object.prototype.hasOwnProperty.call(queryParams, key)) {
1313
+ continue;
1314
+ }
1315
+ let value = queryParams[key];
1316
+ let qp = qpCache.map[key];
1317
+ callback(key, value, qp);
1318
+ }
1319
+ }
1320
+ EmberRouter.reopen({
1321
+ didTransition: defaultDidTransition,
1322
+ willTransition: defaultWillTransition,
1323
+ rootURL: '/',
1324
+ location: 'hash',
1325
+ // FIXME: Does this need to be overrideable via extend?
1326
+ url: computed(function () {
1327
+ let location = get(this, 'location');
1328
+ if (typeof location === 'string') {
1329
+ return undefined;
1330
+ }
1331
+ return location.getURL();
1332
+ })
1333
+ });
1334
+
1335
+ export { EmberRouter as default, triggerEvent };