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
@@ -1,26 +1,26 @@
1
- import { c as capabilityFlagsFrom } from './capabilities-DHiXCCuB.js';
2
- import './debug-to-string-BsFOvUtQ.js';
3
- import { isDevelopingApp } from '@embroider/macros';
1
+ import './fragment-Cc5k9Oy4.js';
2
+ import './debug-to-string-CFb7h0lY.js';
4
3
  import setGlobalContext from '../@glimmer/global-context/index.js';
5
4
  import { untrack, consumeTag, tagFor, createCache, getValue, valueForTag, beginUntrackFrame, endUntrackFrame, beginTrackFrame, endTrackFrame, validateTag, createTag, dirtyTag as DIRTY_TAG$1, CONSTANT_TAG, isTracking, debug, CURRENT_TAG } from '../@glimmer/validator/index.js';
6
- import { v as valueForRef, j as isConstRef, d as createConstRef, l as isUpdatableRef, u as updateRef, b as createComputeRef, g as createPrimitiveRef, c as childRefFor, a as childRefFromParts, U as UNDEFINED_REFERENCE, f as createInvokableRef, h as createReadOnlyRef, i as createUnboundRef, e as createDebugAliasRef } from './reference-B6HMX4y0.js';
7
- import { t as templateFactory } from './index-CQkjwqTv.js';
5
+ import { v as valueForRef, i as isConstRef, a as createConstRef, l as isUpdatableRef, u as updateRef, c as createComputeRef, d as createPrimitiveRef, b as childRefFor, g as childRefFromParts, U as UNDEFINED_REFERENCE, h as createInvokableRef, j as createReadOnlyRef, k as createUnboundRef, e as createDebugAliasRef } from './reference-C3TKDRnP.js';
6
+ import { t as templateFactory } from './index-Q7JnrdBn.js';
8
7
  import { registerDestructor, associateDestroyableChild, isDestroyed, destroy, isDestroying } from '../@glimmer/destroyable/index.js';
9
- import { g as getFactoryFor, p as privatize } from './registry-XY5cfmbH.js';
8
+ import { c as capabilityFlagsFrom } from './capabilities-O_xc7Yqk.js';
9
+ import { getFactoryFor, privatize } from '../@ember/-internals/container/index.js';
10
10
  import { warn, debugFreeze, deprecate } from '../@ember/debug/index.js';
11
- import { O as reifyPositional, K as normalizeProperty, v as EMPTY_ARGS, G as createCapturedArgs, x as EMPTY_POSITIONAL, H as curry, h as hash, g as get$1, f as fn, c as concat, a as array, o as on$1, y as TEMPLATE_ONLY_COMPONENT_MANAGER, t as templateOnlyComponent } from './dynamic-CuBsUXX8.js';
12
- import './constants-oDhF27qL.js';
11
+ import { w as reifyPositional, s as normalizeProperty, E as EMPTY_ARGS, l as createCapturedArgs, e as EMPTY_POSITIONAL, m as curry, q as hash, p as get$1, o as fn, k as concat, i as array, t as on$1, T as TEMPLATE_ONLY_COMPONENT_MANAGER, z as templateOnlyComponent } from './dynamic-CFg3dljk.js';
12
+ import './constants-eoaL3OJQ.js';
13
13
  import { join, schedule, _backburner, _getCurrentRunLoop } from '../@ember/runloop/index.js';
14
14
  import { h as hasDOM } from './index-BGP1rw3B.js';
15
15
  import { action } from '../@ember/object/index.js';
16
16
  import { on } from '../@ember/modifier/on.js';
17
17
  import '../@ember/-internals/meta/lib/meta.js';
18
- import { g as guidFor, b as getDebugName, d as isObject } from './mandatory-setter-DLKyVs4Q.js';
19
- import { S as tracked, g as get, b as descriptorForProperty, Q as PROPERTY_DID_CHANGE, y as nativeDescDecorator, t as tagForObject, o as objectAt, a as tagForProperty, Z as _getProp } from './observers-DhgQ6ba5.js';
20
- import { E as ENV } from './env-DEd6hPbj.js';
18
+ import { g as guidFor, f as getDebugName, i as isObject } from './mandatory-setter-DHZe7-kW.js';
19
+ import { $ as tracked, g as get, b as descriptorForProperty, O as PROPERTY_DID_CHANGE, x as nativeDescDecorator, t as tagForObject, Q as objectAt, a as tagForProperty, X as _getProp } from './observers-Bj9qLVau.js';
20
+ import { ENV } from '../@ember/-internals/environment/index.js';
21
21
  import { setOwner, getOwner, isFactory } from '../@ember/-internals/owner/index.js';
22
- import { s as setInternalComponentManager, a as getInternalHelperManager, i as helperCapabilities, j as setInternalHelperManager, c as hasInternalComponentManager, g as getInternalComponentManager } from './api-CkUl6KyJ.js';
23
- import { s as setComponentTemplate, g as getComponentTemplate } from './template-CMHIG4cn.js';
22
+ import { s as setInternalComponentManager, g as getInternalHelperManager, c as helperCapabilities, i as setInternalHelperManager, b as hasInternalComponentManager, e as getInternalComponentManager } from './api-BqXkkT0p.js';
23
+ import { s as setComponentTemplate, g as getComponentTemplate } from './template-kM-7TTcc.js';
24
24
  import { assert } from '../@ember/debug/lib/assert.js';
25
25
  import { d as decorateFieldV2, i as initializeDeferredDecorator, a as decorateMethodV2 } from './chunk-3SQBS3Y5-Cj4eryg1.js';
26
26
  import { isSimpleClick, getViewElement, clearElementView, clearViewElement, addChildView, setViewElement, setElementView, getChildViews, constructStyleDeprecationMessage, getViewId } from '../@ember/-internals/views/lib/system/utils.js';
@@ -40,28 +40,27 @@ import '../@ember/enumerable/mutable.js';
40
40
  import TargetActionSupport from '../@ember/-internals/runtime/lib/mixins/target_action_support.js';
41
41
  import '../@ember/-internals/runtime/lib/ext/rsvp.js';
42
42
  import EventDispatcher from '../@ember/-internals/views/lib/system/event_dispatcher.js';
43
- import { e as enumerableSymbol } from './to-string-CqD7_vQ4.js';
44
43
  import { E as EMPTY_ARRAY$2 } from './array-utils-CZQxrdD3.js';
45
44
  import { dasherize } from '../@ember/-internals/string/index.js';
46
45
  import { MUTABLE_CELL } from '../@ember/-internals/views/lib/compat/attrs.js';
47
46
  import { FrameworkObject } from '../@ember/object/-internals.js';
48
- import { b as setHelperManager } from './api-1B_9SjFR.js';
49
- import { d as dict } from './collections-B8me-ZlQ.js';
50
- import { a as artifacts } from './helpers-C1rIkuSd.js';
51
- import { R as RuntimeOpImpl } from './program-CcLlGnAU.js';
52
- import { c as runtimeOptions, i as inTransaction, r as renderComponent$1, a as renderMain } from './render-DTOhhssy.js';
53
- import { c as clientBuilder } from './element-builder-BuVym8EM.js';
47
+ import { setHelperManager } from '../@glimmer/manager/index.js';
48
+ import { d as dict } from './collections-D_nY_0UJ.js';
49
+ import { artifacts } from '../@glimmer/program/index.js';
50
+ import { R as RuntimeOpImpl } from './program-DfV0v8aa.js';
51
+ import { c as runtimeOptions, i as inTransaction, r as renderComponent$1, a as renderMain } from './render-sg8BuFaE.js';
52
+ import { c as clientBuilder } from './element-builder-BOxP8emt.js';
54
53
  import { a as RSVP } from './rsvp-CnCSY930.js';
55
54
  import EngineInstance from '../@ember/engine/instance.js';
56
- import { _ as _setProp, s as set } from './property_set-DrZnfGQ7.js';
55
+ import { _ as _setProp, s as set } from './property_set-DaoZXGM5.js';
57
56
  import { isEmberArray } from '../@ember/array/-internals.js';
58
- import { i as isProxy } from './is_proxy-C2q5rUMp.js';
57
+ import { i as isProxy } from './is_proxy-B0smdQy8.js';
59
58
  import { isArray } from '../@ember/array/index.js';
60
59
  import '../route-recognizer/index.js';
61
- import './unrecognized-url-error-BBMMZhBN.js';
60
+ import './unrecognized-url-error-B3wUTorp.js';
62
61
  import '../@ember/routing/lib/routing-service.js';
63
62
  import { generateControllerFactory } from '../@ember/routing/lib/generate_controller.js';
64
- import { E as EvaluationContextImpl } from './program-context-CZJnCFdo.js';
63
+ import { E as EvaluationContextImpl } from './program-context-BRjCC_BA.js';
65
64
 
66
65
  const RootTemplate = templateFactory(
67
66
  /*
@@ -98,7 +97,9 @@ const InputTemplate = templateFactory(
98
97
  "id": null,
99
98
  "block": "[[[11,\"input\"],[16,1,[30,0,[\"id\"]]],[16,0,[30,0,[\"class\"]]],[17,1],[16,4,[30,0,[\"type\"]]],[16,\"checked\",[30,0,[\"checked\"]]],[16,2,[30,0,[\"value\"]]],[4,[32,0],[\"change\",[30,0,[\"change\"]]],null],[4,[32,0],[\"input\",[30,0,[\"input\"]]],null],[4,[32,0],[\"keyup\",[30,0,[\"keyUp\"]]],null],[4,[32,0],[\"paste\",[30,0,[\"valueDidChange\"]]],null],[4,[32,0],[\"cut\",[30,0,[\"valueDidChange\"]]],null],[12],[13]],[\"&attrs\"],[]]",
100
99
  "moduleName": "packages/@ember/-internals/glimmer/lib/templates/input.hbs",
101
- "scope": () => [on],
100
+ "scope": () => ({
101
+ on
102
+ }),
102
103
  "isStrictMode": true
103
104
  });
104
105
 
@@ -154,7 +155,7 @@ class InternalComponent {
154
155
  listenerFor(name) {
155
156
  let listener = this.named(name);
156
157
  if (listener) {
157
- (isDevelopingApp() && !(typeof listener === 'function') && assert(`The \`@${name}\` argument to the <${this.constructor}> component must be a function`, typeof listener === 'function'));
158
+ (!(typeof listener === 'function') && assert(`The \`@${name}\` argument to the <${this.constructor}> component must be a function`, typeof listener === 'function'));
158
159
  return listener;
159
160
  } else {
160
161
  return NOOP$1;
@@ -187,7 +188,7 @@ function opaquify(constructor, template) {
187
188
  }
188
189
  function deopaquify(opaque) {
189
190
  let constructor = OPAQUE_CONSTRUCTOR_MAP.get(opaque);
190
- (isDevelopingApp() && !(constructor) && assert(`[BUG] Invalid internal component constructor: ${opaque}`, constructor));
191
+ (!(constructor) && assert(`[BUG] Invalid internal component constructor: ${opaque}`, constructor));
191
192
  return constructor;
192
193
  }
193
194
  const CAPABILITIES$3 = {
@@ -210,7 +211,7 @@ class InternalManager {
210
211
  return CAPABILITIES$3;
211
212
  }
212
213
  create(owner, definition, args, _env, _dynamicScope, caller) {
213
- (isDevelopingApp() && !(isConstRef(caller)) && assert('caller must be const', isConstRef(caller)));
214
+ (!(isConstRef(caller)) && assert('caller must be const', isConstRef(caller)));
214
215
  let ComponentClass = deopaquify(definition);
215
216
  let instance = new ComponentClass(owner, args.capture(), valueForRef(caller));
216
217
  untrack(instance['validateArguments'].bind(instance));
@@ -234,7 +235,7 @@ const INTERNAL_COMPONENT_MANAGER = new InternalManager();
234
235
 
235
236
  const UNINITIALIZED = Object.freeze({});
236
237
  function elementForEvent(event) {
237
- (isDevelopingApp() && !(event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) && assert('[BUG] event target must be an <input> or <textarea> element', event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement));
238
+ (!(event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) && assert('[BUG] event target must be an <input> or <textarea> element', event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement));
238
239
  return event.target;
239
240
  }
240
241
  function valueForEvent(event) {
@@ -293,17 +294,17 @@ class ForkedValue {
293
294
  this.lastUpstreamValue = upstreamValue;
294
295
  this.local = new LocalValue(upstreamValue);
295
296
  }
296
- (isDevelopingApp() && !(this.local) && assert('[BUG] this.local must have been initialized at this point', this.local));
297
+ (!(this.local) && assert('[BUG] this.local must have been initialized at this point', this.local));
297
298
  return this.local.get();
298
299
  }
299
300
  set(value) {
300
- (isDevelopingApp() && !(this.local) && assert('[BUG] this.local must have been initialized at this point', this.local));
301
+ (!(this.local) && assert('[BUG] this.local must have been initialized at this point', this.local));
301
302
  this.local.set(value);
302
303
  }
303
304
  }
304
305
  class AbstractInput extends InternalComponent {
305
306
  validateArguments() {
306
- (isDevelopingApp() && !(this.args.positional.length === 0) && assert(`The ${this.constructor} component does not take any positional arguments`, this.args.positional.length === 0));
307
+ (!(this.args.positional.length === 0) && assert(`The ${this.constructor} component does not take any positional arguments`, this.args.positional.length === 0));
307
308
  super.validateArguments();
308
309
  }
309
310
  _value = valueFrom(this.args.named['value']);
@@ -540,7 +541,7 @@ class _Input extends AbstractInput {
540
541
  if (type === null || type === undefined) {
541
542
  return 'text';
542
543
  }
543
- (isDevelopingApp() && !(typeof type === 'string') && assert('The `@type` argument to the <Input> component must be a string', typeof type === 'string'));
544
+ (!(typeof type === 'string') && assert('The `@type` argument to the <Input> component must be a string', typeof type === 'string'));
544
545
  return isValidInputType(type) ? type : 'text';
545
546
  }
546
547
  get isCheckbox() {
@@ -549,7 +550,7 @@ class _Input extends AbstractInput {
549
550
  _checked = valueFrom(this.args.named['checked']);
550
551
  get checked() {
551
552
  if (this.isCheckbox) {
552
- (isDevelopingApp() && warn('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', untrack(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof valueForRef(this.args.named['value']) === 'string'), {
553
+ (warn('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', untrack(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof valueForRef(this.args.named['value']) === 'string'), {
553
554
  id: 'ember.built-in-components.input-checkbox-value'
554
555
  }));
555
556
  return this._checked.get();
@@ -558,7 +559,7 @@ class _Input extends AbstractInput {
558
559
  }
559
560
  }
560
561
  set checked(checked) {
561
- (isDevelopingApp() && warn('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', untrack(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof valueForRef(this.args.named['value']) === 'string'), {
562
+ (warn('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', untrack(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof valueForRef(this.args.named['value']) === 'string'), {
562
563
  id: 'ember.built-in-components.input-checkbox-value'
563
564
  }));
564
565
  this._checked.set(checked);
@@ -583,7 +584,7 @@ class _Input extends AbstractInput {
583
584
  }
584
585
  checkedDidChange(event) {
585
586
  let element = event.target;
586
- (isDevelopingApp() && !(element instanceof HTMLInputElement) && assert('[BUG] element must be an <input>', element instanceof HTMLInputElement));
587
+ (!(element instanceof HTMLInputElement) && assert('[BUG] element must be an <input>', element instanceof HTMLInputElement));
587
588
  this.checked = element.checked;
588
589
  }
589
590
  static {
@@ -621,7 +622,9 @@ const LinkToTemplate = templateFactory(
621
622
  "id": null,
622
623
  "block": "[[[11,3],[16,1,[30,0,[\"id\"]]],[16,0,[30,0,[\"class\"]]],[16,\"role\",[30,0,[\"role\"]]],[16,\"title\",[30,0,[\"title\"]]],[16,\"rel\",[30,0,[\"rel\"]]],[16,\"tabindex\",[30,0,[\"tabindex\"]]],[16,\"target\",[30,0,[\"target\"]]],[17,1],[16,6,[30,0,[\"href\"]]],[4,[32,0],[\"click\",[30,0,[\"click\"]]],null],[12],[18,2,null],[13]],[\"&attrs\",\"&default\"],[\"yield\"]]",
623
624
  "moduleName": "packages/@ember/-internals/glimmer/lib/templates/link-to.hbs",
624
- "scope": () => [on],
625
+ "scope": () => ({
626
+ on
627
+ }),
625
628
  "isStrictMode": true
626
629
  });
627
630
 
@@ -881,9 +884,9 @@ class _LinkTo extends InternalComponent {
881
884
  }
882
885
  #routing = (initializeDeferredDecorator(this, "routing"), void 0);
883
886
  validateArguments() {
884
- (isDevelopingApp() && !(!this.isEngine || this.engineMountPoint !== undefined) && assert('You attempted to use the <LinkTo> component within a routeless engine, this is not supported. ' + 'If you are using the ember-engines addon, use the <LinkToExternal> component instead. ' + 'See https://github.com/ember-engines/ember-engines for more info.', !this.isEngine || this.engineMountPoint !== undefined));
885
- (isDevelopingApp() && !('route' in this.args.named || 'model' in this.args.named || 'models' in this.args.named || 'query' in this.args.named) && assert('You must provide at least one of the `@route`, `@model`, `@models` or `@query` arguments to `<LinkTo>`.', 'route' in this.args.named || 'model' in this.args.named || 'models' in this.args.named || 'query' in this.args.named));
886
- (isDevelopingApp() && !(!('model' in this.args.named && 'models' in this.args.named)) && assert('You cannot provide both the `@model` and `@models` arguments to the <LinkTo> component.', !('model' in this.args.named && 'models' in this.args.named)));
887
+ (!(!this.isEngine || this.engineMountPoint !== undefined) && assert('You attempted to use the <LinkTo> component within a routeless engine, this is not supported. ' + 'If you are using the ember-engines addon, use the <LinkToExternal> component instead. ' + 'See https://github.com/ember-engines/ember-engines for more info.', !this.isEngine || this.engineMountPoint !== undefined));
888
+ (!('route' in this.args.named || 'model' in this.args.named || 'models' in this.args.named || 'query' in this.args.named) && assert('You must provide at least one of the `@route`, `@model`, `@models` or `@query` arguments to `<LinkTo>`.', 'route' in this.args.named || 'model' in this.args.named || 'models' in this.args.named || 'query' in this.args.named));
889
+ (!(!('model' in this.args.named && 'models' in this.args.named)) && assert('You cannot provide both the `@model` and `@models` arguments to the <LinkTo> component.', !('model' in this.args.named && 'models' in this.args.named)));
887
890
  super.validateArguments();
888
891
  }
889
892
  get class() {
@@ -914,10 +917,10 @@ class _LinkTo extends InternalComponent {
914
917
  models,
915
918
  query
916
919
  } = this;
917
- (isDevelopingApp() && !(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route))); // consume the current router state so we invalidate when QP changes
920
+ (!(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route))); // consume the current router state so we invalidate when QP changes
918
921
  // TODO: can we narrow this down to QP changes only?
919
922
  consumeTag(tagFor(routing, 'currentState'));
920
- if (isDevelopingApp()) {
923
+ {
921
924
  try {
922
925
  return routing.generateURL(route, models, query);
923
926
  } catch (e) {
@@ -930,8 +933,6 @@ class _LinkTo extends InternalComponent {
930
933
  throw message;
931
934
  }
932
935
  }
933
- } else {
934
- return routing.generateURL(route, models, query);
935
936
  }
936
937
  }
937
938
  click(event) {
@@ -939,8 +940,9 @@ class _LinkTo extends InternalComponent {
939
940
  return;
940
941
  }
941
942
  let element = event.currentTarget;
942
- (isDevelopingApp() && !(element instanceof HTMLAnchorElement) && assert('[BUG] must be an <a> element', element instanceof HTMLAnchorElement));
943
- let isSelf = element.target === '' || element.target === '_self';
943
+ (!(element instanceof HTMLAnchorElement || element instanceof SVGAElement) && assert('[BUG] must be an <a> element', element instanceof HTMLAnchorElement || element instanceof SVGAElement));
944
+ let target = element instanceof SVGAElement ? element.target.baseVal : element.target;
945
+ let isSelf = target === '' || target === '_self';
944
946
  if (isSelf) {
945
947
  this.preventDefault(event);
946
948
  } else {
@@ -950,7 +952,7 @@ class _LinkTo extends InternalComponent {
950
952
  return;
951
953
  }
952
954
  if (this.isLoading) {
953
- (isDevelopingApp() && warn('This link is in an inactive loading state because at least one of its models ' + 'currently has a null/undefined value, or the provided route name is invalid.', false, {
955
+ (warn('This link is in an inactive loading state because at least one of its models ' + 'currently has a null/undefined value, or the provided route name is invalid.', false, {
954
956
  id: 'ember-glimmer.link-to.inactive-loading-state'
955
957
  }));
956
958
  return;
@@ -966,7 +968,7 @@ class _LinkTo extends InternalComponent {
966
968
  transition: undefined
967
969
  };
968
970
  flaggedInstrument('interaction.link-to', payload, () => {
969
- (isDevelopingApp() && !(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route)));
971
+ (!(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route)));
970
972
  payload.transition = routing.transitionTo(route, models, query, replace);
971
973
  });
972
974
  }
@@ -976,7 +978,7 @@ class _LinkTo extends InternalComponent {
976
978
  get route() {
977
979
  if ('route' in this.args.named) {
978
980
  let route = this.named('route');
979
- (isDevelopingApp() && !(isMissing(route) || typeof route === 'string') && assert('The `@route` argument to the <LinkTo> component must be a string', isMissing(route) || typeof route === 'string'));
981
+ (!(isMissing(route) || typeof route === 'string') && assert('The `@route` argument to the <LinkTo> component must be a string', isMissing(route) || typeof route === 'string'));
980
982
  return route && this.namespaceRoute(route);
981
983
  } else {
982
984
  return this.currentRoute;
@@ -997,7 +999,7 @@ class _LinkTo extends InternalComponent {
997
999
  get models() {
998
1000
  if ('models' in this.args.named) {
999
1001
  let models = this.named('models');
1000
- (isDevelopingApp() && !(Array.isArray(models)) && assert('The `@models` argument to the <LinkTo> component must be an array.', Array.isArray(models)));
1002
+ (!(Array.isArray(models)) && assert('The `@models` argument to the <LinkTo> component must be an array.', Array.isArray(models)));
1001
1003
  return models;
1002
1004
  } else if ('model' in this.args.named) {
1003
1005
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
@@ -1009,7 +1011,7 @@ class _LinkTo extends InternalComponent {
1009
1011
  get query() {
1010
1012
  if ('query' in this.args.named) {
1011
1013
  let query = this.named('query');
1012
- (isDevelopingApp() && !(query !== null && typeof query === 'object') && assert('The `@query` argument to the <LinkTo> component must be an object.', query !== null && typeof query === 'object'));
1014
+ (!(query !== null && typeof query === 'object') && assert('The `@query` argument to the <LinkTo> component must be an object.', query !== null && typeof query === 'object'));
1013
1015
  return {
1014
1016
  ...query
1015
1017
  };
@@ -1048,7 +1050,7 @@ class _LinkTo extends InternalComponent {
1048
1050
  }
1049
1051
  classFor(state) {
1050
1052
  let className = this.named(`${state}Class`);
1051
- (isDevelopingApp() && !(isMissing(className) || typeof className === 'string' || typeof className === 'boolean') && assert(`The \`@${state}Class\` argument to the <LinkTo> component must be a string or boolean`, isMissing(className) || typeof className === 'string' || typeof className === 'boolean'));
1053
+ (!(isMissing(className) || typeof className === 'string' || typeof className === 'boolean') && assert(`The \`@${state}Class\` argument to the <LinkTo> component must be a string or boolean`, isMissing(className) || typeof className === 'string' || typeof className === 'boolean'));
1052
1054
  if (className === true || isMissing(className)) {
1053
1055
  return ` ${state}`;
1054
1056
  } else if (className) {
@@ -1081,10 +1083,9 @@ class _LinkTo extends InternalComponent {
1081
1083
  return currentWhen;
1082
1084
  } else if (typeof currentWhen === 'string') {
1083
1085
  let {
1084
- models,
1085
1086
  routing
1086
1087
  } = this;
1087
- return currentWhen.split(' ').some(route => routing.isActiveForRoute(models, undefined, this.namespaceRoute(route), state));
1088
+ return currentWhen.split(' ').some(route => routing.isActiveForRoute([], undefined, this.namespaceRoute(route), state));
1088
1089
  } else {
1089
1090
  let {
1090
1091
  route,
@@ -1092,7 +1093,7 @@ class _LinkTo extends InternalComponent {
1092
1093
  query,
1093
1094
  routing
1094
1095
  } = this;
1095
- (isDevelopingApp() && !(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route)));
1096
+ (!(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route)));
1096
1097
  return routing.isActiveForRoute(models, query, route, state);
1097
1098
  }
1098
1099
  }
@@ -1123,7 +1124,7 @@ let descriptorFor = (target, property) => {
1123
1124
  enumerable: false,
1124
1125
  value: function onUnsupportedArgument(name) {
1125
1126
  if (name === 'href') {
1126
- (isDevelopingApp() && true && assert(`Passing the \`@href\` argument to <LinkTo> is not supported.`));
1127
+ (assert(`Passing the \`@href\` argument to <LinkTo> is not supported.`));
1127
1128
  } else {
1128
1129
  superOnUnsupportedArgument.call(this, name);
1129
1130
  }
@@ -1134,7 +1135,7 @@ let descriptorFor = (target, property) => {
1134
1135
  // QP
1135
1136
  {
1136
1137
  let superModelsDescriptor = descriptorFor(prototype, 'models');
1137
- (isDevelopingApp() && !(superModelsDescriptor && typeof superModelsDescriptor.get === 'function') && assert(`[BUG] expecting models to be a getter on <LinkTo>`, superModelsDescriptor && typeof superModelsDescriptor.get === 'function')); // eslint-disable-next-line @typescript-eslint/no-empty-object-type
1138
+ (!(superModelsDescriptor && typeof superModelsDescriptor.get === 'function') && assert(`[BUG] expecting models to be a getter on <LinkTo>`, superModelsDescriptor && typeof superModelsDescriptor.get === 'function')); // eslint-disable-next-line @typescript-eslint/no-empty-object-type
1138
1139
  let superModelsGetter = superModelsDescriptor.get;
1139
1140
  Object.defineProperty(prototype, 'models', {
1140
1141
  configurable: true,
@@ -1151,7 +1152,7 @@ let descriptorFor = (target, property) => {
1151
1152
  }
1152
1153
  });
1153
1154
  let superQueryDescriptor = descriptorFor(prototype, 'query');
1154
- (isDevelopingApp() && !(superQueryDescriptor && typeof superQueryDescriptor.get === 'function') && assert(`[BUG] expecting query to be a getter on <LinkTo>`, superQueryDescriptor && typeof superQueryDescriptor.get === 'function')); // eslint-disable-next-line @typescript-eslint/no-empty-object-type
1155
+ (!(superQueryDescriptor && typeof superQueryDescriptor.get === 'function') && assert(`[BUG] expecting query to be a getter on <LinkTo>`, superQueryDescriptor && typeof superQueryDescriptor.get === 'function')); // eslint-disable-next-line @typescript-eslint/no-empty-object-type
1155
1156
  let superQueryGetter = superQueryDescriptor.get;
1156
1157
  Object.defineProperty(prototype, 'query', {
1157
1158
  configurable: true,
@@ -1216,7 +1217,9 @@ const TextareaTemplate = templateFactory(
1216
1217
  "id": null,
1217
1218
  "block": "[[[11,\"textarea\"],[16,1,[30,0,[\"id\"]]],[16,0,[30,0,[\"class\"]]],[17,1],[16,2,[30,0,[\"value\"]]],[4,[32,0],[\"change\",[30,0,[\"change\"]]],null],[4,[32,0],[\"input\",[30,0,[\"input\"]]],null],[4,[32,0],[\"keyup\",[30,0,[\"keyUp\"]]],null],[4,[32,0],[\"paste\",[30,0,[\"valueDidChange\"]]],null],[4,[32,0],[\"cut\",[30,0,[\"valueDidChange\"]]],null],[12],[13]],[\"&attrs\"],[]]",
1218
1219
  "moduleName": "packages/@ember/-internals/glimmer/lib/templates/textarea.hbs",
1219
- "scope": () => [on],
1220
+ "scope": () => ({
1221
+ on
1222
+ }),
1220
1223
  "isStrictMode": true
1221
1224
  });
1222
1225
 
@@ -1282,12 +1285,12 @@ function referenceForParts(rootRef, parts) {
1282
1285
  function parseAttributeBinding(microsyntax) {
1283
1286
  let colonIndex = microsyntax.indexOf(':');
1284
1287
  if (colonIndex === -1) {
1285
- (isDevelopingApp() && !(microsyntax !== 'class') && assert('You cannot use class as an attributeBinding, use classNameBindings instead.', microsyntax !== 'class'));
1288
+ (!(microsyntax !== 'class') && assert('You cannot use class as an attributeBinding, use classNameBindings instead.', microsyntax !== 'class'));
1286
1289
  return [microsyntax, microsyntax, true];
1287
1290
  } else {
1288
1291
  let prop = microsyntax.substring(0, colonIndex);
1289
1292
  let attribute = microsyntax.substring(colonIndex + 1);
1290
- (isDevelopingApp() && !(attribute !== 'class') && assert('You cannot use class as an attributeBinding, use classNameBindings instead.', attribute !== 'class'));
1293
+ (!(attribute !== 'class') && assert('You cannot use class as an attributeBinding, use classNameBindings instead.', attribute !== 'class'));
1291
1294
  return [prop, attribute, false];
1292
1295
  }
1293
1296
  }
@@ -1306,14 +1309,14 @@ function installAttributeBinding(component, rootRef, parsed, operations) {
1306
1309
  }
1307
1310
  let isPath = prop.indexOf('.') > -1;
1308
1311
  let reference = isPath ? referenceForParts(rootRef, prop.split('.')) : childRefFor(rootRef, prop);
1309
- (isDevelopingApp() && !(!(isSimple && isPath)) && assert(`Illegal attributeBinding: '${prop}' is not a valid attribute name.`, !(isSimple && isPath)));
1312
+ (!(!(isSimple && isPath)) && assert(`Illegal attributeBinding: '${prop}' is not a valid attribute name.`, !(isSimple && isPath)));
1310
1313
  operations.setAttribute(attribute, reference, false, null);
1311
1314
  }
1312
1315
  function createClassNameBindingRef(rootRef, microsyntax, operations) {
1313
1316
  let parts = microsyntax.split(':');
1314
1317
  let [prop, truthy, falsy] = parts;
1315
1318
  // NOTE: This could be an empty string
1316
- (isDevelopingApp() && !(prop !== undefined) && assert('has prop', prop !== undefined)); // Will always have at least one part
1319
+ (!(prop !== undefined) && assert('has prop', prop !== undefined)); // Will always have at least one part
1317
1320
  let isStatic = prop === '';
1318
1321
  if (isStatic) {
1319
1322
  operations.setAttribute('class', createPrimitiveRef(truthy), true, null);
@@ -1335,7 +1338,7 @@ function createSimpleClassNameBindingRef(inner, path) {
1335
1338
  return createComputeRef(() => {
1336
1339
  let value = valueForRef(inner);
1337
1340
  if (value === true) {
1338
- (isDevelopingApp() && !(path !== undefined) && assert('You must pass a path when binding a to a class name using classNameBindings', path !== undefined));
1341
+ (!(path !== undefined) && assert('You must pass a path when binding a to a class name using classNameBindings', path !== undefined));
1339
1342
  return dasherizedPath || (dasherizedPath = dasherize(path));
1340
1343
  } else if (value || value === 0) {
1341
1344
  return String(value);
@@ -1406,12 +1409,15 @@ class ComponentStateBucket {
1406
1409
  }
1407
1410
  }
1408
1411
 
1412
+ // ComponentArgs takes EvaluatedNamedArgs and converts them into the
1413
+ // inputs needed by CurlyComponents (attrs and props, with mutable
1414
+ // cells, etc).
1409
1415
  function processComponentArgs(namedArgs) {
1410
1416
  let attrs = Object.create(null);
1411
1417
  let props = Object.create(null);
1412
1418
  for (let name in namedArgs) {
1413
1419
  let ref = namedArgs[name];
1414
- (isDevelopingApp() && !(ref) && assert('expected ref', ref));
1420
+ (!(ref) && assert('expected ref', ref));
1415
1421
  let value = valueForRef(ref);
1416
1422
  if (isUpdatableRef(ref)) {
1417
1423
  attrs[name] = new MutableCell(ref, value);
@@ -1438,15 +1444,17 @@ class MutableCell {
1438
1444
  }
1439
1445
  }
1440
1446
 
1441
- const ARGS = enumerableSymbol('ARGS');
1442
- const HAS_BLOCK = enumerableSymbol('HAS_BLOCK');
1447
+ const COMPONENT_ARGS_MAP = new WeakMap();
1448
+ function getComponentCapturedArgs(component) {
1449
+ return COMPONENT_ARGS_MAP.get(component);
1450
+ }
1443
1451
  const DIRTY_TAG = Symbol('DIRTY_TAG');
1444
1452
  const IS_DISPATCHING_ATTRS = Symbol('IS_DISPATCHING_ATTRS');
1445
1453
  const BOUNDS = Symbol('BOUNDS');
1446
1454
  const EMBER_VIEW_REF = createPrimitiveRef('ember-view');
1447
1455
  function aliasIdToElementId(args, props) {
1448
1456
  if (args.named.has('id')) {
1449
- (isDevelopingApp() && !(!args.named.has('elementId')) && assert(`You cannot invoke a component with both 'id' and 'elementId' at the same time.`, !args.named.has('elementId')));
1457
+ (!(!args.named.has('elementId')) && assert(`You cannot invoke a component with both 'id' and 'elementId' at the same time.`, !args.named.has('elementId')));
1450
1458
  props.elementId = props.id;
1451
1459
  }
1452
1460
  }
@@ -1459,7 +1467,7 @@ function applyAttributeBindings(attributeBindings, component, rootRef, operation
1459
1467
  let i = attributeBindings.length - 1;
1460
1468
  while (i !== -1) {
1461
1469
  let binding = attributeBindings[i];
1462
- (isDevelopingApp() && !(binding) && assert('has binding', binding));
1470
+ (!(binding) && assert('has binding', binding));
1463
1471
  let parsed = parseAttributeBinding(binding);
1464
1472
  let attribute = parsed[1];
1465
1473
  if (seen.indexOf(attribute) === -1) {
@@ -1482,12 +1490,12 @@ class CurlyComponentManager {
1482
1490
  layoutName
1483
1491
  } = component;
1484
1492
  let owner = getOwner(component);
1485
- (isDevelopingApp() && !(owner) && assert('Component is unexpectedly missing an owner', owner));
1493
+ (!(owner) && assert('Component is unexpectedly missing an owner', owner));
1486
1494
  let factory;
1487
1495
  if (layout === undefined) {
1488
1496
  if (layoutName !== undefined) {
1489
1497
  let _factory = owner.lookup(`template:${layoutName}`);
1490
- (isDevelopingApp() && !(_factory !== undefined) && assert(`Layout \`${layoutName}\` not found!`, _factory !== undefined));
1498
+ (!(_factory !== undefined) && assert(`Layout \`${layoutName}\` not found!`, _factory !== undefined));
1491
1499
  factory = _factory;
1492
1500
  } else {
1493
1501
  return null;
@@ -1518,12 +1526,12 @@ class CurlyComponentManager {
1518
1526
  }
1519
1527
  prepareArgs(ComponentClass, args) {
1520
1528
  if (args.named.has('__ARGS__')) {
1521
- (isDevelopingApp() && !(args.positional.length === 0) && assert('[BUG] cannot pass both __ARGS__ and positional arguments', args.positional.length === 0));
1529
+ (!(args.positional.length === 0) && assert('[BUG] cannot pass both __ARGS__ and positional arguments', args.positional.length === 0));
1522
1530
  let {
1523
1531
  __ARGS__,
1524
1532
  ...rest
1525
1533
  } = args.named.capture();
1526
- (isDevelopingApp() && !(__ARGS__) && assert('[BUG] unexpectedly missing __ARGS__ after check', __ARGS__)); // does this need to be untracked?
1534
+ (!(__ARGS__) && assert('[BUG] unexpectedly missing __ARGS__ after check', __ARGS__)); // does this need to be untracked?
1527
1535
  let __args__ = valueForRef(__ARGS__);
1528
1536
  let prepared = {
1529
1537
  positional: __args__.positional,
@@ -1544,7 +1552,7 @@ class CurlyComponentManager {
1544
1552
  }
1545
1553
  let named;
1546
1554
  if (typeof positionalParams === 'string') {
1547
- (isDevelopingApp() && !(!args.named.has(positionalParams)) && assert(`You cannot specify positional parameters and the hash argument \`${positionalParams}\`.`, !args.named.has(positionalParams)));
1555
+ (!(!args.named.has(positionalParams)) && assert(`You cannot specify positional parameters and the hash argument \`${positionalParams}\`.`, !args.named.has(positionalParams)));
1548
1556
  let captured = args.positional.capture();
1549
1557
  named = {
1550
1558
  [positionalParams]: createComputeRef(() => reifyPositional(captured))
@@ -1556,8 +1564,8 @@ class CurlyComponentManager {
1556
1564
  Object.assign(named, args.named.capture());
1557
1565
  for (let i = 0; i < count; i++) {
1558
1566
  let name = positionalParams[i];
1559
- (isDevelopingApp() && !(name) && assert('Expected at least one positional param', name));
1560
- (isDevelopingApp() && !(!args.named.has(name)) && assert(`You cannot specify both a positional param (at position ${i}) and the hash argument \`${name}\`.`, !args.named.has(name)));
1567
+ (!(name) && assert('Expected at least one positional param', name));
1568
+ (!(!args.named.has(name)) && assert(`You cannot specify both a positional param (at position ${i}) and the hash argument \`${name}\`.`, !args.named.has(name)));
1561
1569
  named[name] = args.positional.at(i);
1562
1570
  }
1563
1571
  } else {
@@ -1577,7 +1585,7 @@ class CurlyComponentManager {
1577
1585
  */
1578
1586
  create(owner, ComponentClass, args, {
1579
1587
  isInteractive
1580
- }, dynamicScope, callerSelfRef, hasBlock) {
1588
+ }, dynamicScope, callerSelfRef) {
1581
1589
  // Get the nearest concrete component instance from the scope. "Virtual"
1582
1590
  // components will be skipped.
1583
1591
  let parentView = dynamicScope.view;
@@ -1587,7 +1595,6 @@ class CurlyComponentManager {
1587
1595
  let capturedArgs = args.named.capture();
1588
1596
  beginTrackFrame();
1589
1597
  let props = processComponentArgs(capturedArgs);
1590
- props[ARGS] = capturedArgs;
1591
1598
  let argsTag = endTrackFrame();
1592
1599
 
1593
1600
  // Alias `id` argument to `elementId` property on the component instance.
@@ -1597,11 +1604,6 @@ class CurlyComponentManager {
1597
1604
  // component.
1598
1605
  props.parentView = parentView;
1599
1606
 
1600
- // Set whether this component was invoked with a block
1601
- // (`{{#my-component}}{{/my-component}}`) or without one
1602
- // (`{{my-component}}`).
1603
- props[HAS_BLOCK] = hasBlock;
1604
-
1605
1607
  // Save the current `this` context of the template as the component's
1606
1608
  // `_target`, so bubbled actions are routed to the right place.
1607
1609
  props._target = valueForRef(callerSelfRef);
@@ -1617,6 +1619,10 @@ class CurlyComponentManager {
1617
1619
  // actually create it.
1618
1620
  beginUntrackFrame();
1619
1621
  let component = ComponentClass.create(props);
1622
+
1623
+ // Store capturedArgs in a WeakMap keyed by the component instance so that
1624
+ // PROPERTY_DID_CHANGE can look them up
1625
+ COMPONENT_ARGS_MAP.set(component, capturedArgs);
1620
1626
  let finalizer = _instrumentStart('render.component', initialRenderInstrumentDetails, component);
1621
1627
 
1622
1628
  // We become the new parentView for downstream components, so save our
@@ -1648,7 +1654,7 @@ class CurlyComponentManager {
1648
1654
  if (args.named.has('class')) {
1649
1655
  bucket.classRef = args.named.get('class');
1650
1656
  }
1651
- if (isDevelopingApp()) {
1657
+ {
1652
1658
  processComponentInitializationAssertions(component, props);
1653
1659
  }
1654
1660
  if (isInteractive && hasWrappedElement) {
@@ -1773,7 +1779,7 @@ class CurlyComponentManager {
1773
1779
  }
1774
1780
  }
1775
1781
  function processComponentInitializationAssertions(component, props) {
1776
- (isDevelopingApp() && !((() => {
1782
+ (!((() => {
1777
1783
  let {
1778
1784
  classNameBindings
1779
1785
  } = component;
@@ -1796,7 +1802,7 @@ function processComponentInitializationAssertions(component, props) {
1796
1802
  }
1797
1803
  return true;
1798
1804
  })()));
1799
- (isDevelopingApp() && !((() => {
1805
+ (!((() => {
1800
1806
  let {
1801
1807
  classNameBindings
1802
1808
  } = component;
@@ -1817,9 +1823,9 @@ function processComponentInitializationAssertions(component, props) {
1817
1823
  }
1818
1824
  return true;
1819
1825
  })()));
1820
- (isDevelopingApp() && !(component.tagName !== '' || !component.classNameBindings || component.classNameBindings.length === 0) && assert(`You cannot use \`classNameBindings\` on a tag-less component: ${component}`, component.tagName !== '' || !component.classNameBindings || component.classNameBindings.length === 0));
1821
- (isDevelopingApp() && !(component.tagName !== '' || props.id === component.elementId || !component.elementId && component.elementId !== '') && assert(`You cannot use \`elementId\` on a tag-less component: ${component}`, component.tagName !== '' || props.id === component.elementId || !component.elementId && component.elementId !== ''));
1822
- (isDevelopingApp() && !(component.tagName !== '' || !component.attributeBindings || component.attributeBindings.length === 0) && assert(`You cannot use \`attributeBindings\` on a tag-less component: ${component}`, component.tagName !== '' || !component.attributeBindings || component.attributeBindings.length === 0));
1826
+ (!(component.tagName !== '' || !component.classNameBindings || component.classNameBindings.length === 0) && assert(`You cannot use \`classNameBindings\` on a tag-less component: ${component}`, component.tagName !== '' || !component.classNameBindings || component.classNameBindings.length === 0));
1827
+ (!(component.tagName !== '' || props.id === component.elementId || !component.elementId && component.elementId !== '') && assert(`You cannot use \`elementId\` on a tag-less component: ${component}`, component.tagName !== '' || props.id === component.elementId || !component.elementId && component.elementId !== ''));
1828
+ (!(component.tagName !== '' || !component.attributeBindings || component.attributeBindings.length === 0) && assert(`You cannot use \`attributeBindings\` on a tag-less component: ${component}`, component.tagName !== '' || !component.attributeBindings || component.attributeBindings.length === 0));
1823
1829
  }
1824
1830
  function initialRenderInstrumentDetails(component) {
1825
1831
  return component.instrumentDetails({
@@ -1864,7 +1870,7 @@ const EMPTY_ARRAY = Object.freeze([]);
1864
1870
  */
1865
1871
  const elMatches = typeof Element !== 'undefined' ? Element.prototype.matches : undefined;
1866
1872
  function matches(el, selector) {
1867
- (isDevelopingApp() && !(elMatches !== undefined) && assert('cannot call `matches` in fastboot mode', elMatches !== undefined));
1873
+ (!(elMatches !== undefined) && assert('cannot call `matches` in fastboot mode', elMatches !== undefined));
1868
1874
  return elMatches.call(el, selector);
1869
1875
  }
1870
1876
 
@@ -2572,7 +2578,7 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2572
2578
  lazyEventsProcessedForComponentClass.add(proto);
2573
2579
  }
2574
2580
  }
2575
- if (isDevelopingApp() && eventDispatcher && this.renderer._isInteractive && this.tagName === '') {
2581
+ if (eventDispatcher && this.renderer._isInteractive && this.tagName === '') {
2576
2582
  let eventNames = [];
2577
2583
  let events = eventDispatcher.finalEventNameMapping;
2578
2584
  for (let key in events) {
@@ -2582,16 +2588,16 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2582
2588
  }
2583
2589
  }
2584
2590
  // If in a tagless component, assert that no event handlers are defined
2585
- (isDevelopingApp() && !(!eventNames.length) && assert(`You can not define \`${eventNames}\` function(s) to handle DOM event in the \`${this}\` tagless component since it doesn't have any DOM element.`, !eventNames.length));
2591
+ (!(!eventNames.length) && assert(`You can not define \`${eventNames}\` function(s) to handle DOM event in the \`${this}\` tagless component since it doesn't have any DOM element.`, !eventNames.length));
2586
2592
  }
2587
- (isDevelopingApp() && !(descriptorForProperty(this, 'classNameBindings') === undefined && Array.isArray(this.classNameBindings)) && assert(`Only arrays are allowed for 'classNameBindings'`, descriptorForProperty(this, 'classNameBindings') === undefined && Array.isArray(this.classNameBindings)));
2588
- (isDevelopingApp() && !(descriptorForProperty(this, 'classNames') === undefined && Array.isArray(this.classNames)) && assert(`Only arrays of static class strings are allowed for 'classNames'. For dynamic classes, use 'classNameBindings'.`, descriptorForProperty(this, 'classNames') === undefined && Array.isArray(this.classNames))); // ViewMixin
2593
+ (!(descriptorForProperty(this, 'classNameBindings') === undefined && Array.isArray(this.classNameBindings)) && assert(`Only arrays are allowed for 'classNameBindings'`, descriptorForProperty(this, 'classNameBindings') === undefined && Array.isArray(this.classNameBindings)));
2594
+ (!(descriptorForProperty(this, 'classNames') === undefined && Array.isArray(this.classNames)) && assert(`Only arrays of static class strings are allowed for 'classNames'. For dynamic classes, use 'classNameBindings'.`, descriptorForProperty(this, 'classNames') === undefined && Array.isArray(this.classNames))); // ViewMixin
2589
2595
  // Setup a view, but do not finish waking it up.
2590
2596
  // * configure `childViews`
2591
2597
  // * register the view with the global views hash, which is used for event
2592
2598
  // dispatch
2593
- (isDevelopingApp() && !(descriptorForProperty(this, 'elementId') === undefined) && assert(`You cannot use a computed property for the component's \`elementId\` (${this}).`, descriptorForProperty(this, 'elementId') === undefined));
2594
- (isDevelopingApp() && !(descriptorForProperty(this, 'tagName') === undefined) && assert(`You cannot use a computed property for the component's \`tagName\` (${this}).`, descriptorForProperty(this, 'tagName') === undefined));
2599
+ (!(descriptorForProperty(this, 'elementId') === undefined) && assert(`You cannot use a computed property for the component's \`elementId\` (${this}).`, descriptorForProperty(this, 'elementId') === undefined));
2600
+ (!(descriptorForProperty(this, 'tagName') === undefined) && assert(`You cannot use a computed property for the component's \`tagName\` (${this}).`, descriptorForProperty(this, 'tagName') === undefined));
2595
2601
  if (!this.elementId && this.tagName !== '') {
2596
2602
  this.elementId = guidFor(this);
2597
2603
  }
@@ -2600,10 +2606,10 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2600
2606
  get _dispatcher() {
2601
2607
  if (this.__dispatcher === undefined) {
2602
2608
  let owner = getOwner(this);
2603
- (isDevelopingApp() && !(owner) && assert('Component is unexpectedly missing an owner', owner));
2609
+ (!(owner) && assert('Component is unexpectedly missing an owner', owner));
2604
2610
  if (owner.lookup('-environment:main').isInteractive) {
2605
2611
  let dispatcher = owner.lookup('event_dispatcher:main');
2606
- (isDevelopingApp() && !(dispatcher instanceof EventDispatcher) && assert('Expected dispatcher to be an EventDispatcher', dispatcher instanceof EventDispatcher));
2612
+ (!(dispatcher instanceof EventDispatcher) && assert('Expected dispatcher to be an EventDispatcher', dispatcher instanceof EventDispatcher));
2607
2613
  this.__dispatcher = dispatcher;
2608
2614
  } else {
2609
2615
  // In FastBoot we have no EventDispatcher. Set to null to not try again to look it up.
@@ -2629,7 +2635,7 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2629
2635
  if (this[IS_DISPATCHING_ATTRS]) {
2630
2636
  return;
2631
2637
  }
2632
- let args = this[ARGS];
2638
+ let args = getComponentCapturedArgs(this);
2633
2639
  let reference = args !== undefined ? args[key] : undefined;
2634
2640
  if (reference !== undefined && isUpdatableRef(reference)) {
2635
2641
  updateRef(reference, arguments.length === 2 ? value : get(this, key));
@@ -2669,7 +2675,7 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2669
2675
  readDOMAttr(name) {
2670
2676
  // TODO revisit this
2671
2677
  let _element = getViewElement(this);
2672
- (isDevelopingApp() && !(_element !== null) && assert(`Cannot call \`readDOMAttr\` on ${this} which does not have an element`, _element !== null));
2678
+ (!(_element !== null) && assert(`Cannot call \`readDOMAttr\` on ${this} which does not have an element`, _element !== null));
2673
2679
  let element = _element;
2674
2680
  let isSVG = element.namespaceURI === 'http://www.w3.org/2000/svg';
2675
2681
  let {
@@ -2972,11 +2978,11 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2972
2978
  appendTo(selector) {
2973
2979
  let target;
2974
2980
  if (hasDOM) {
2975
- (isDevelopingApp() && !(typeof selector === 'string' || selector instanceof Element) && assert(`Expected a selector or instance of Element`, typeof selector === 'string' || selector instanceof Element));
2981
+ (!(typeof selector === 'string' || selector instanceof Element) && assert(`Expected a selector or instance of Element`, typeof selector === 'string' || selector instanceof Element));
2976
2982
  target = typeof selector === 'string' ? document.querySelector(selector) : selector;
2977
- (isDevelopingApp() && !(target) && assert(`You tried to append to (${selector}) but that isn't in the DOM`, target));
2978
- (isDevelopingApp() && !(!matches(target, '.ember-view')) && assert('You cannot append to an existing Ember.View.', !matches(target, '.ember-view')));
2979
- (isDevelopingApp() && !((() => {
2983
+ (!(target) && assert(`You tried to append to (${selector}) but that isn't in the DOM`, target));
2984
+ (!(!matches(target, '.ember-view')) && assert('You cannot append to an existing Ember.View.', !matches(target, '.ember-view')));
2985
+ (!((() => {
2980
2986
  let node = target.parentNode;
2981
2987
  while (node instanceof Element) {
2982
2988
  if (matches(node, '.ember-view')) {
@@ -2997,8 +3003,8 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
2997
3003
  })()));
2998
3004
  } else {
2999
3005
  target = selector;
3000
- (isDevelopingApp() && !(typeof target !== 'string') && assert(`You tried to append to a selector string (${selector}) in an environment without a DOM`, typeof target !== 'string'));
3001
- (isDevelopingApp() && !(typeof target.appendChild === 'function') && assert(`You tried to append to a non-Element (${selector}) in an environment without a DOM`, typeof target.appendChild === 'function'));
3006
+ (!(typeof target !== 'string') && assert(`You tried to append to a selector string (${selector}) in an environment without a DOM`, typeof target !== 'string'));
3007
+ (!(typeof target.appendChild === 'function') && assert(`You tried to append to a non-Element (${selector}) in an environment without a DOM`, typeof target.appendChild === 'function'));
3002
3008
  }
3003
3009
 
3004
3010
  // SAFETY: SimpleElement is supposed to be a subset of Element so this _should_ be safe.
@@ -3266,27 +3272,33 @@ class Helper extends FrameworkObject {
3266
3272
  init(properties) {
3267
3273
  super.init(properties);
3268
3274
  this[RECOMPUTE_TAG] = createTag();
3269
- (isDevelopingApp() && !(this.compute) && assert('expected compute to be defined', this.compute));
3275
+ (!(this.compute) && assert('expected compute to be defined', this.compute));
3270
3276
  }
3271
3277
 
3272
3278
  /**
3273
3279
  On a class-based helper, it may be useful to force a recomputation of that
3274
3280
  helpers value. This is akin to `rerender` on a component.
3275
- For example, this component will rerender when the `currentUser` on a
3276
- session service changes:
3277
- ```app/helpers/current-user-email.js
3278
- import Helper from '@ember/component/helper'
3279
- import { service } from '@ember/service'
3280
- import { observer } from '@ember/object'
3281
- export default Helper.extend({
3282
- session: service(),
3283
- onNewUser: observer('session.currentUser', function() {
3284
- this.recompute();
3285
- }),
3281
+ In most cases, `recompute` is not needed because accessing tracked
3282
+ properties in `compute` will automatically re-run the helper when
3283
+ those properties change. Use `recompute` only when you need to
3284
+ trigger a recomputation imperatively, for example in response to an
3285
+ external event:
3286
+ ```app/helpers/current-time.js
3287
+ import Helper from '@ember/component/helper';
3288
+ export default class CurrentTimeHelper extends Helper {
3289
+ interval = null;
3286
3290
  compute() {
3287
- return this.get('session.currentUser.email');
3291
+ return new Date().toLocaleTimeString();
3288
3292
  }
3289
- });
3293
+ constructor() {
3294
+ super(...arguments);
3295
+ this.interval = setInterval(() => this.recompute(), 1000);
3296
+ }
3297
+ willDestroy() {
3298
+ super.willDestroy();
3299
+ clearInterval(this.interval);
3300
+ }
3301
+ }
3290
3302
  ```
3291
3303
  @method recompute
3292
3304
  @public
@@ -3314,7 +3326,7 @@ class ClassicHelperManager {
3314
3326
  }
3315
3327
  createHelper(definition, args) {
3316
3328
  let instance = isFactoryManager(definition) ? definition.create() : definition.create(this.ownerInjection);
3317
- (isDevelopingApp() && !(function (instance) {
3329
+ (!(function (instance) {
3318
3330
  if (instance !== null && typeof instance === 'object') {
3319
3331
  let cast = instance;
3320
3332
  return typeof cast.compute === 'function' && typeof cast.destroy === 'function';
@@ -3738,7 +3750,7 @@ class OutletComponentManager {
3738
3750
  let currentState = valueForRef(currentStateRef);
3739
3751
  let currentOwner = currentState?.render?.owner;
3740
3752
  if (parentOwner && parentOwner !== currentOwner) {
3741
- (isDevelopingApp() && !(currentOwner instanceof EngineInstance) && assert('Expected currentOwner to be an EngineInstance', currentOwner instanceof EngineInstance));
3753
+ (!(currentOwner instanceof EngineInstance) && assert('Expected currentOwner to be an EngineInstance', currentOwner instanceof EngineInstance));
3742
3754
  let {
3743
3755
  mountPoint
3744
3756
  } = currentOwner;
@@ -3804,7 +3816,7 @@ const OUTLET_COMPONENT_TEMPLATE = templateFactory(
3804
3816
  {
3805
3817
  "id": null,
3806
3818
  "block": "[[[8,[30,1],null,[[\"@controller\",\"@model\"],[[30,2],[30,3]]],null]],[\"@Component\",\"@controller\",\"@model\"],[]]",
3807
- "moduleName": "/home/runner/work/ember.js/ember.js/packages/@ember/-internals/glimmer/lib/component-managers/outlet.ts",
3819
+ "moduleName": "(unknown template module)",
3808
3820
  "isStrictMode": true
3809
3821
  });
3810
3822
  class OutletComponent {
@@ -3847,7 +3859,7 @@ class RootComponentManager extends CurlyComponentManager {
3847
3859
  component.trigger('willInsertElement');
3848
3860
  }
3849
3861
  }
3850
- if (isDevelopingApp()) {
3862
+ {
3851
3863
  processComponentInitializationAssertions(component, {});
3852
3864
  }
3853
3865
  let bucket = new ComponentStateBucket(component, null, CONSTANT_TAG, finalizer, hasWrappedElement, isInteractive);
@@ -3884,7 +3896,7 @@ class RootComponentDefinition {
3884
3896
  constructor(component) {
3885
3897
  this.manager = new RootComponentManager(component);
3886
3898
  let factory = getFactoryFor(component);
3887
- (isDevelopingApp() && !(factory !== undefined) && assert('missing factory for component', factory !== undefined));
3899
+ (!(factory !== undefined) && assert('missing factory for component', factory !== undefined));
3888
3900
  this.state = factory;
3889
3901
  }
3890
3902
  }
@@ -3896,6 +3908,160 @@ function internalHelper(helper) {
3896
3908
  /**
3897
3909
  @module ember
3898
3910
  */
3911
+
3912
+ /**
3913
+ The `{{#each}}` helper loops over elements in a collection. It is an extension
3914
+ of the base Handlebars `{{#each}}` helper.
3915
+
3916
+ The default behavior of `{{#each}}` is to yield its inner block once for every
3917
+ item in an array passing the item as the first block parameter.
3918
+
3919
+ Assuming the `@developers` argument contains this array:
3920
+
3921
+ ```javascript
3922
+ [{ name: 'Yehuda' },{ name: 'Tom' }, { name: 'Paul' }];
3923
+ ```
3924
+
3925
+ ```handlebars
3926
+ <ul>
3927
+ {{#each @developers as |person|}}
3928
+ <li>Hello, {{person.name}}!</li>
3929
+ {{/each}}
3930
+ </ul>
3931
+ ```
3932
+
3933
+ The same rules apply to arrays of primitives.
3934
+
3935
+ ```javascript
3936
+ ['Yehuda', 'Tom', 'Paul']
3937
+ ```
3938
+
3939
+ ```handlebars
3940
+ <ul>
3941
+ {{#each @developerNames as |name|}}
3942
+ <li>Hello, {{name}}!</li>
3943
+ {{/each}}
3944
+ </ul>
3945
+ ```
3946
+
3947
+ During iteration, the index of each item in the array is provided as a second block
3948
+ parameter.
3949
+
3950
+ ```handlebars
3951
+ <ul>
3952
+ {{#each @developers as |person index|}}
3953
+ <li>Hello, {{person.name}}! You're number {{index}} in line</li>
3954
+ {{/each}}
3955
+ </ul>
3956
+ ```
3957
+
3958
+ ### Specifying Keys
3959
+
3960
+ In order to improve rendering speed, Ember will try to reuse the DOM elements
3961
+ where possible. Specifically, if the same item is present in the array both
3962
+ before and after the change, its DOM output will be reused.
3963
+
3964
+ The `key` option is used to tell Ember how to determine if the items in the
3965
+ array being iterated over with `{{#each}}` has changed between renders. By
3966
+ default the item's object identity is used.
3967
+
3968
+ This is usually sufficient, so in most cases, the `key` option is simply not
3969
+ needed. However, in some rare cases, the objects' identities may change even
3970
+ though they represent the same underlying data.
3971
+
3972
+ For example:
3973
+
3974
+ ```javascript
3975
+ people.map(person => {
3976
+ return { ...person, type: 'developer' };
3977
+ });
3978
+ ```
3979
+
3980
+ In this case, each time the `people` array is `map`-ed over, it will produce
3981
+ an new array with completely different objects between renders. In these cases,
3982
+ you can help Ember determine how these objects related to each other with the
3983
+ `key` option:
3984
+
3985
+ ```handlebars
3986
+ <ul>
3987
+ {{#each @developers key="name" as |person|}}
3988
+ <li>Hello, {{person.name}}!</li>
3989
+ {{/each}}
3990
+ </ul>
3991
+ ```
3992
+
3993
+ By doing so, Ember will use the value of the property specified (`person.name`
3994
+ in the example) to find a "match" from the previous render. That is, if Ember
3995
+ has previously seen an object from the `@developers` array with a matching
3996
+ name, its DOM elements will be re-used.
3997
+
3998
+ There are two special values for `key`:
3999
+
4000
+ * `@index` - The index of the item in the array.
4001
+ * `@identity` - The item in the array itself.
4002
+
4003
+ ### {{else}} condition
4004
+
4005
+ `{{#each}}` can have a matching `{{else}}`. The contents of this block will render
4006
+ if the collection is empty.
4007
+
4008
+ ```handlebars
4009
+ <ul>
4010
+ {{#each @developers as |person|}}
4011
+ <li>{{person.name}} is available!</li>
4012
+ {{else}}
4013
+ <li>Sorry, nobody is available for this task.</li>
4014
+ {{/each}}
4015
+ </ul>
4016
+ ```
4017
+
4018
+ @method each
4019
+ @for Ember.Templates.helpers
4020
+ @public
4021
+ */
4022
+
4023
+ /**
4024
+ The `{{each-in}}` helper loops over properties on an object.
4025
+
4026
+ For example, given this component definition:
4027
+
4028
+ ```app/components/developer-details.js
4029
+ import Component from '@glimmer/component';
4030
+ import { tracked } from '@glimmer/tracking';
4031
+
4032
+ export default class extends Component {
4033
+ @tracked developer = {
4034
+ "name": "Shelly Sails",
4035
+ "age": 42
4036
+ };
4037
+ }
4038
+ ```
4039
+
4040
+ This template would display all properties on the `developer`
4041
+ object in a list:
4042
+
4043
+ ```app/components/developer-details.hbs
4044
+ <ul>
4045
+ {{#each-in this.developer as |key value|}}
4046
+ <li>{{key}}: {{value}}</li>
4047
+ {{/each-in}}
4048
+ </ul>
4049
+ ```
4050
+
4051
+ Outputting their name and age:
4052
+
4053
+ ```html
4054
+ <ul>
4055
+ <li>name: Shelly Sails</li>
4056
+ <li>age: 42</li>
4057
+ </ul>
4058
+ ```
4059
+
4060
+ @method each-in
4061
+ @for Ember.Templates.helpers
4062
+ @public
4063
+ @since 2.1.0
4064
+ */
3899
4065
  class EachInWrapper {
3900
4066
  constructor(inner) {
3901
4067
  this.inner = inner;
@@ -3905,7 +4071,7 @@ const eachIn = internalHelper(({
3905
4071
  positional
3906
4072
  }) => {
3907
4073
  const inner = positional[0];
3908
- (isDevelopingApp() && !(inner) && assert('expected at least one positional arg', inner));
4074
+ (!(inner) && assert('expected at least one positional arg', inner));
3909
4075
  return createComputeRef(() => {
3910
4076
  let iterable = valueForRef(inner);
3911
4077
  consumeTag(tagForObject(iterable));
@@ -4151,6 +4317,10 @@ function toBool(predicate) {
4151
4317
  }
4152
4318
  }
4153
4319
 
4320
+ ///////////
4321
+
4322
+ // Setup global context
4323
+
4154
4324
  setGlobalContext({
4155
4325
  scheduleRevalidate() {
4156
4326
  _backburner.ensureInstance();
@@ -4168,7 +4338,7 @@ setGlobalContext({
4168
4338
  schedule('destroy', null, finalizeDestructor);
4169
4339
  },
4170
4340
  warnIfStyleNotTrusted(value) {
4171
- (isDevelopingApp() && warn(constructStyleDeprecationMessage(String(value)), (() => {
4341
+ (warn(constructStyleDeprecationMessage(String(value)), (() => {
4172
4342
  if (value === null || value === undefined || isHTMLSafe(value)) {
4173
4343
  return true;
4174
4344
  }
@@ -4178,14 +4348,14 @@ setGlobalContext({
4178
4348
  }));
4179
4349
  },
4180
4350
  assert(test, msg, options) {
4181
- if (isDevelopingApp()) {
4351
+ {
4182
4352
  let id = options?.id;
4183
4353
  let override = VM_ASSERTION_OVERRIDES.filter(o => o.id === id)[0];
4184
- (isDevelopingApp() && !(test) && assert(override?.message ?? msg, test));
4354
+ (!(test) && assert(override?.message ?? msg, test));
4185
4355
  }
4186
4356
  },
4187
4357
  deprecate(msg, test, options) {
4188
- if (isDevelopingApp()) {
4358
+ {
4189
4359
  let {
4190
4360
  id
4191
4361
  } = options;
@@ -4197,12 +4367,12 @@ setGlobalContext({
4197
4367
 
4198
4368
  // allow deprecations to be disabled in the VM_DEPRECATION_OVERRIDES array below
4199
4369
  if (!override.disabled) {
4200
- (isDevelopingApp() && !(Boolean(test)) && deprecate(override.message ?? msg, Boolean(test), override));
4370
+ (!(Boolean(test)) && deprecate(override.message ?? msg, Boolean(test), override));
4201
4371
  }
4202
4372
  }
4203
4373
  }
4204
4374
  });
4205
- if (isDevelopingApp()) {
4375
+ {
4206
4376
  debug?.setTrackingTransactionEnv?.({
4207
4377
  debugMessage(obj, keyName) {
4208
4378
  let dirtyString = keyName ? `\`${keyName}\` on \`${getDebugName?.(obj)}\`` : `\`${getDebugName?.(obj)}\``;
@@ -4247,46 +4417,40 @@ const disallowDynamicResolution = internalHelper(({
4247
4417
  named
4248
4418
  }) => {
4249
4419
  const nameOrValueRef = positional[0];
4250
- (isDevelopingApp() && !(positional.length === 1 && nameOrValueRef) && assert(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1 && nameOrValueRef));
4420
+ (!(positional.length === 1 && nameOrValueRef) && assert(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1 && nameOrValueRef));
4251
4421
  let typeRef = named['type'];
4252
4422
  let locRef = named['loc'];
4253
4423
  let originalRef = named['original'];
4254
- (isDevelopingApp() && !(typeRef) && assert(`[BUG] expecting \`type\` named argument`, typeRef));
4255
- (isDevelopingApp() && !(locRef) && assert(`[BUG] expecting \`loc\` named argument`, locRef));
4256
- (isDevelopingApp() && !(originalRef) && assert(`[BUG] expecting \`original\` named argument`, originalRef)); // Bug: why do these fail?
4424
+ (!(typeRef) && assert(`[BUG] expecting \`type\` named argument`, typeRef));
4425
+ (!(locRef) && assert(`[BUG] expecting \`loc\` named argument`, locRef));
4426
+ (!(originalRef) && assert(`[BUG] expecting \`original\` named argument`, originalRef)); // Bug: why do these fail?
4257
4427
  // assert('[BUG] expecting a string literal for the `type` argument', isConstRef(typeRef));
4258
4428
  // assert('[BUG] expecting a string literal for the `loc` argument', isConstRef(locRef));
4259
4429
  // assert('[BUG] expecting a string literal for the `original` argument', isConstRef(originalRef));
4260
4430
  const type = valueForRef(typeRef);
4261
4431
  const loc = valueForRef(locRef);
4262
4432
  const original = valueForRef(originalRef);
4263
- (isDevelopingApp() && !(typeof type === 'string') && assert('[BUG] expecting a string literal for the `type` argument', typeof type === 'string'));
4264
- (isDevelopingApp() && !(typeof loc === 'string') && assert('[BUG] expecting a string literal for the `loc` argument', typeof loc === 'string'));
4265
- (isDevelopingApp() && !(typeof original === 'string') && assert('[BUG] expecting a string literal for the `original` argument', typeof original === 'string'));
4433
+ (!(typeof type === 'string') && assert('[BUG] expecting a string literal for the `type` argument', typeof type === 'string'));
4434
+ (!(typeof loc === 'string') && assert('[BUG] expecting a string literal for the `loc` argument', typeof loc === 'string'));
4435
+ (!(typeof original === 'string') && assert('[BUG] expecting a string literal for the `original` argument', typeof original === 'string'));
4266
4436
  return createComputeRef(() => {
4267
4437
  let nameOrValue = valueForRef(nameOrValueRef);
4268
- (isDevelopingApp() && !(typeof nameOrValue !== 'string') && assert(`Passing a dynamic string to the \`(${type})\` keyword is disallowed. ` + `(You specified \`(${type} ${original})\` and \`${original}\` evaluated into "${nameOrValue}".) ` + `This ensures we can statically analyze the template and determine which ${type}s are used. ` + `If the ${type} name is always the same, use a string literal instead, i.e. \`(${type} "${nameOrValue}")\`. ` + `Otherwise, import the ${type}s into JavaScript and pass them directly. ` + 'See https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md#4-no-dynamic-resolution for details. ' + loc, typeof nameOrValue !== 'string'));
4438
+ (!(typeof nameOrValue !== 'string') && assert(`Passing a dynamic string to the \`(${type})\` keyword is disallowed. ` + `(You specified \`(${type} ${original})\` and \`${original}\` evaluated into "${nameOrValue}".) ` + `This ensures we can statically analyze the template and determine which ${type}s are used. ` + `If the ${type} name is always the same, use a string literal instead, i.e. \`(${type} "${nameOrValue}")\`. ` + `Otherwise, import the ${type}s into JavaScript and pass them directly. ` + 'See https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md#4-no-dynamic-resolution for details. ' + loc, typeof nameOrValue !== 'string'));
4269
4439
  return nameOrValue;
4270
4440
  });
4271
4441
  });
4272
4442
 
4273
4443
  let helper;
4274
- if (isDevelopingApp()) {
4444
+ {
4275
4445
  helper = args => {
4276
4446
  const inner = args.positional[0];
4277
- (isDevelopingApp() && !(inner) && assert('expected at least one positional arg', inner));
4447
+ (!(inner) && assert('expected at least one positional arg', inner));
4278
4448
  return createComputeRef(() => {
4279
4449
  let value = valueForRef(inner);
4280
- (isDevelopingApp() && !(value !== null && value !== undefined) && assert('You cannot pass a null or undefined destination element to in-element', value !== null && value !== undefined));
4450
+ (!(value !== null && value !== undefined) && assert('You cannot pass a null or undefined destination element to in-element', value !== null && value !== undefined));
4281
4451
  return value;
4282
4452
  });
4283
4453
  };
4284
- } else {
4285
- helper = args => {
4286
- let arg = args.positional[0];
4287
- (isDevelopingApp() && !(arg) && assert('expected at least one positional arg', arg));
4288
- return arg;
4289
- };
4290
4454
  }
4291
4455
  const inElementNullCheckHelper = internalHelper(helper);
4292
4456
 
@@ -4296,10 +4460,10 @@ const normalizeClassHelper = internalHelper(({
4296
4460
  return createComputeRef(() => {
4297
4461
  let classNameArg = positional[0];
4298
4462
  let valueArg = positional[1];
4299
- (isDevelopingApp() && !(classNameArg && valueArg) && assert('expected at least two positional args', classNameArg && valueArg));
4463
+ (!(classNameArg && valueArg) && assert('expected at least two positional args', classNameArg && valueArg));
4300
4464
  let classNameParts = valueForRef(classNameArg).split('.');
4301
4465
  let className = classNameParts[classNameParts.length - 1];
4302
- (isDevelopingApp() && !(className) && assert('has className', className)); // Always at least one split result
4466
+ (!(className) && assert('has className', className)); // Always at least one split result
4303
4467
  let value = valueForRef(valueArg);
4304
4468
  if (value === true) {
4305
4469
  return dasherize(className);
@@ -4319,16 +4483,16 @@ const resolve = internalHelper(({
4319
4483
  positional
4320
4484
  }, owner) => {
4321
4485
  // why is this allowed to be undefined in the first place?
4322
- (isDevelopingApp() && !(owner) && assert('[BUG] missing owner', owner));
4323
- (isDevelopingApp() && !(positional.length === 1) && assert(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1));
4486
+ (!(owner) && assert('[BUG] missing owner', owner));
4487
+ (!(positional.length === 1) && assert(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1));
4324
4488
  let fullNameRef = positional[0];
4325
- (isDevelopingApp() && !(fullNameRef && isConstRef(fullNameRef)) && assert('[BUG] expecting a string literal as argument', fullNameRef && isConstRef(fullNameRef)));
4489
+ (!(fullNameRef && isConstRef(fullNameRef)) && assert('[BUG] expecting a string literal as argument', fullNameRef && isConstRef(fullNameRef)));
4326
4490
  let fullName = valueForRef(fullNameRef);
4327
- (isDevelopingApp() && !(typeof fullName === 'string') && assert('[BUG] expecting a string literal as argument', typeof fullName === 'string'));
4328
- (isDevelopingApp() && !((s => s.split(':').length === 2)(fullName)) && assert('[BUG] expecting a valid full name', (s => s.split(':').length === 2)(fullName)));
4329
- if (isDevelopingApp()) {
4491
+ (!(typeof fullName === 'string') && assert('[BUG] expecting a string literal as argument', typeof fullName === 'string'));
4492
+ (!((s => s.split(':').length === 2)(fullName)) && assert('[BUG] expecting a valid full name', (s => s.split(':').length === 2)(fullName)));
4493
+ {
4330
4494
  let [type, name] = fullName.split(':');
4331
- (isDevelopingApp() && !(owner.hasRegistration(fullName)) && assert(`Attempted to invoke \`(-resolve "${fullName}")\`, but ${name} was not a valid ${type} name.`, owner.hasRegistration(fullName)));
4495
+ (!(owner.hasRegistration(fullName)) && assert(`Attempted to invoke \`(-resolve "${fullName}")\`, but ${name} was not a valid ${type} name.`, owner.hasRegistration(fullName)));
4332
4496
  }
4333
4497
  return createConstRef(owner.factoryFor(fullName)?.class, `(-resolve "${fullName}")`);
4334
4498
  });
@@ -4336,11 +4500,17 @@ const resolve = internalHelper(({
4336
4500
  /**
4337
4501
  @module ember
4338
4502
  */
4503
+
4504
+ /**
4505
+ This reference is used to get the `[]` tag of iterables, so we can trigger
4506
+ updates to `{{each}}` when it changes. It is put into place by a template
4507
+ transform at build time, similar to the (-each-in) helper
4508
+ */
4339
4509
  const trackArray = internalHelper(({
4340
4510
  positional
4341
4511
  }) => {
4342
4512
  const inner = positional[0];
4343
- (isDevelopingApp() && !(inner) && assert('expected at least one positional arg', inner));
4513
+ (!(inner) && assert('expected at least one positional arg', inner));
4344
4514
  return createComputeRef(() => {
4345
4515
  let iterable = valueForRef(inner);
4346
4516
  if (isObject(iterable)) {
@@ -4353,11 +4523,86 @@ const trackArray = internalHelper(({
4353
4523
  /**
4354
4524
  @module ember
4355
4525
  */
4526
+
4527
+ /**
4528
+ The `mut` helper lets you __clearly specify__ that a child `Component` can update the
4529
+ (mutable) value passed to it, which will __change the value of the parent component__.
4530
+
4531
+ To specify that a parameter is mutable, when invoking the child `Component`:
4532
+
4533
+ ```handlebars
4534
+ <MyChild @childClickCount={{fn (mut totalClicks)}} />
4535
+ ```
4536
+
4537
+ or
4538
+
4539
+ ```handlebars
4540
+ {{my-child childClickCount=(mut totalClicks)}}
4541
+ ```
4542
+
4543
+ The child `Component` can then modify the parent's value just by modifying its own
4544
+ property:
4545
+
4546
+ ```javascript
4547
+ // my-child.js
4548
+ export default class MyChild extends Component {
4549
+ click() {
4550
+ this.incrementProperty('childClickCount');
4551
+ }
4552
+ }
4553
+ ```
4554
+
4555
+ Note that for curly components (`{{my-component}}`) the bindings are already mutable,
4556
+ making the `mut` unnecessary.
4557
+
4558
+ Additionally, the `mut` helper can be combined with the `fn` helper to
4559
+ mutate a value. For example:
4560
+
4561
+ ```handlebars
4562
+ <MyChild @childClickCount={{this.totalClicks}} @click-count-change={{fn (mut totalClicks))}} />
4563
+ ```
4564
+
4565
+ or
4566
+
4567
+ ```handlebars
4568
+ {{my-child childClickCount=totalClicks click-count-change=(fn (mut totalClicks))}}
4569
+ ```
4570
+
4571
+ The child `Component` would invoke the function with the new click value:
4572
+
4573
+ ```javascript
4574
+ // my-child.js
4575
+ export default class MyChild extends Component {
4576
+ click() {
4577
+ this.get('click-count-change')(this.get('childClickCount') + 1);
4578
+ }
4579
+ }
4580
+ ```
4581
+
4582
+ The `mut` helper changes the `totalClicks` value to what was provided as the `fn` argument.
4583
+
4584
+ The `mut` helper, when used with `fn`, will return a function that
4585
+ sets the value passed to `mut` to its first argument. As an example, we can create a
4586
+ button that increments a value passing the value directly to the `fn`:
4587
+
4588
+ ```handlebars
4589
+ {{! inc helper is not provided by Ember }}
4590
+ <button onclick={{fn (mut count) (inc count)}}>
4591
+ Increment count
4592
+ </button>
4593
+ ```
4594
+
4595
+ @method mut
4596
+ @param {Object} [attr] the "two-way" attribute that can be modified.
4597
+ @for Ember.Templates.helpers
4598
+ @public
4599
+ */
4600
+
4356
4601
  const mut = internalHelper(({
4357
4602
  positional
4358
4603
  }) => {
4359
4604
  let ref = positional[0];
4360
- (isDevelopingApp() && !(ref) && assert('expected at least one positional arg', ref)); // TODO: Improve this error message. This covers at least two distinct
4605
+ (!(ref) && assert('expected at least one positional arg', ref)); // TODO: Improve this error message. This covers at least two distinct
4361
4606
  // cases:
4362
4607
  //
4363
4608
  // 1. (mut "not a path") – passing a literal, result from a helper
@@ -4369,7 +4614,7 @@ const mut = internalHelper(({
4369
4614
  //
4370
4615
  // This message is alright for the first case, but could be quite
4371
4616
  // confusing for the second case.
4372
- (isDevelopingApp() && !(isUpdatableRef(ref)) && assert('You can only pass a path to mut', isUpdatableRef(ref)));
4617
+ (!(isUpdatableRef(ref)) && assert('You can only pass a path to mut', isUpdatableRef(ref)));
4373
4618
  return createInvokableRef(ref);
4374
4619
  });
4375
4620
 
@@ -4377,11 +4622,127 @@ const mut = internalHelper(({
4377
4622
  @module ember
4378
4623
  */
4379
4624
 
4625
+
4626
+ /**
4627
+ The `readonly` helper let's you specify that a binding is one-way only,
4628
+ instead of two-way.
4629
+ When you pass a `readonly` binding from an outer context (e.g. parent component),
4630
+ to to an inner context (e.g. child component), you are saying that changing that
4631
+ property in the inner context does not change the value in the outer context.
4632
+
4633
+ To specify that a binding is read-only, when invoking the child `Component`:
4634
+
4635
+ ```app/components/my-parent.js
4636
+ export default class MyParent extends Component {
4637
+ totalClicks = 3;
4638
+ }
4639
+ ```
4640
+
4641
+ ```app/templates/components/my-parent.hbs
4642
+ {{log totalClicks}} // -> 3
4643
+ <MyChild @childClickCount={{readonly totalClicks}} />
4644
+ ```
4645
+ ```
4646
+ {{my-child childClickCount=(readonly totalClicks)}}
4647
+ ```
4648
+
4649
+ Now, when you update `childClickCount`:
4650
+
4651
+ ```app/components/my-child.js
4652
+ export default class MyChild extends Component {
4653
+ click() {
4654
+ this.incrementProperty('childClickCount');
4655
+ }
4656
+ }
4657
+ ```
4658
+
4659
+ The value updates in the child component, but not the parent component:
4660
+
4661
+ ```app/templates/components/my-child.hbs
4662
+ {{log childClickCount}} //-> 4
4663
+ ```
4664
+
4665
+ ```app/templates/components/my-parent.hbs
4666
+ {{log totalClicks}} //-> 3
4667
+ <MyChild @childClickCount={{readonly totalClicks}} />
4668
+ ```
4669
+ or
4670
+ ```app/templates/components/my-parent.hbs
4671
+ {{log totalClicks}} //-> 3
4672
+ {{my-child childClickCount=(readonly totalClicks)}}
4673
+ ```
4674
+
4675
+ ### Objects and Arrays
4676
+
4677
+ When passing a property that is a complex object (e.g. object, array) instead of a primitive object (e.g. number, string),
4678
+ only the reference to the object is protected using the readonly helper.
4679
+ This means that you can change properties of the object both on the parent component, as well as the child component.
4680
+ The `readonly` binding behaves similar to the `const` keyword in JavaScript.
4681
+
4682
+ Let's look at an example:
4683
+
4684
+ First let's set up the parent component:
4685
+
4686
+ ```app/components/my-parent.js
4687
+ import Component from '@ember/component';
4688
+
4689
+ export default class MyParent extends Component {
4690
+ clicks: null,
4691
+
4692
+ init() {
4693
+ this._super(...arguments);
4694
+ this.set('clicks', { total: 3 });
4695
+ }
4696
+ }
4697
+ ```
4698
+
4699
+ ```app/templates/components/my-parent.hbs
4700
+ {{log clicks.total}} //-> 3
4701
+ <MyChild @childClicks={{readonly clicks}} />
4702
+ ```
4703
+ ```app/templates/components/my-parent.hbs
4704
+ {{log clicks.total}} //-> 3
4705
+ {{my-child childClicks=(readonly clicks)}}
4706
+ ```
4707
+
4708
+ Now, if you update the `total` property of `childClicks`:
4709
+
4710
+ ```app/components/my-child.js
4711
+ import Component from '@ember/component';
4712
+
4713
+ export default class MyChild extends Component {
4714
+ click() {
4715
+ this.get('clicks').incrementProperty('total');
4716
+ }
4717
+ }
4718
+ ```
4719
+
4720
+ You will see the following happen:
4721
+
4722
+ ```app/templates/components/my-parent.hbs
4723
+ {{log clicks.total}} //-> 4
4724
+ <MyChild @childClicks={{readonly clicks}} />
4725
+ ```
4726
+ or
4727
+ ```app/templates/components/my-parent.hbs
4728
+ {{log clicks.total}} //-> 4
4729
+ {{my-child childClicks=(readonly clicks)}}
4730
+ ```
4731
+
4732
+ ```app/templates/components/my-child.hbs
4733
+ {{log childClicks.total}} //-> 4
4734
+ ```
4735
+
4736
+ @method readonly
4737
+ @param {Object} [attr] the read-only attribute.
4738
+ @for Ember.Templates.helpers
4739
+ @private
4740
+ */
4380
4741
  const readonly = internalHelper(({
4381
4742
  positional
4382
4743
  }) => {
4383
4744
  let firstArg = positional[0];
4384
- (isDevelopingApp() && !(firstArg) && assert('has first arg', firstArg));
4745
+ (!(firstArg) && assert('has first arg', firstArg));
4385
4746
  return createReadOnlyRef(firstArg);
4386
4747
  });
4387
4748
 
@@ -4389,11 +4750,40 @@ const readonly = internalHelper(({
4389
4750
  @module ember
4390
4751
  */
4391
4752
 
4753
+
4754
+ /**
4755
+ The `{{unbound}}` helper disconnects the one-way binding of a property,
4756
+ essentially freezing its value at the moment of rendering. For example,
4757
+ in this example the display of the variable `name` will not change even
4758
+ if it is set with a new value:
4759
+
4760
+ ```handlebars
4761
+ {{unbound this.name}}
4762
+ ```
4763
+
4764
+ Like any helper, the `unbound` helper can accept a nested helper expression.
4765
+ This allows for custom helpers to be rendered unbound:
4766
+
4767
+ ```handlebars
4768
+ {{unbound (some-custom-helper)}}
4769
+ {{unbound (capitalize this.name)}}
4770
+ {{! You can use any helper, including unbound, in a nested expression }}
4771
+ {{capitalize (unbound this.name)}}
4772
+ ```
4773
+
4774
+ The `unbound` helper only accepts a single argument, and it return an
4775
+ unbound value.
4776
+
4777
+ @method unbound
4778
+ @for Ember.Templates.helpers
4779
+ @public
4780
+ */
4781
+
4392
4782
  const unbound = internalHelper(({
4393
4783
  positional,
4394
4784
  named
4395
4785
  }) => {
4396
- (isDevelopingApp() && !(positional.length === 1 && Object.keys(named).length === 0) && assert('unbound helper cannot be called with multiple params or hash params', positional.length === 1 && Object.keys(named).length === 0));
4786
+ (!(positional.length === 1 && Object.keys(named).length === 0) && assert('unbound helper cannot be called with multiple params or hash params', positional.length === 1 && Object.keys(named).length === 0));
4397
4787
  return createUnboundRef(valueForRef(positional[0]), '(result of an `unbound` helper)');
4398
4788
  });
4399
4789
 
@@ -4458,7 +4848,7 @@ class MountManager {
4458
4848
  // mount is a runtime helper, this shouldn't use dynamic layout
4459
4849
  // we should resolve the engine app template in the helper
4460
4850
  // it also should use the owner that looked up the mount helper.
4461
- (isDevelopingApp() && !(owner instanceof EngineInstance) && assert('Expected owner to be an EngineInstance', owner instanceof EngineInstance));
4851
+ (!(owner instanceof EngineInstance) && assert('Expected owner to be an EngineInstance', owner instanceof EngineInstance));
4462
4852
  let engine = owner.buildChildEngineInstance(name);
4463
4853
  engine.boot();
4464
4854
  let applicationFactory = engine.factoryFor(`controller:application`);
@@ -4560,15 +4950,56 @@ class MountDefinition {
4560
4950
  @module ember
4561
4951
  */
4562
4952
 
4953
+
4954
+ /**
4955
+ The `{{mount}}` helper lets you embed a routeless engine in a template.
4956
+ Mounting an engine will cause an instance to be booted and its `application`
4957
+ template to be rendered.
4958
+
4959
+ For example, the following template mounts the `ember-chat` engine:
4960
+
4961
+ ```handlebars
4962
+ {{! application.hbs }}
4963
+ {{mount "ember-chat"}}
4964
+ ```
4965
+
4966
+ Additionally, you can also pass in a `model` argument that will be
4967
+ set as the engines model. This can be an existing object:
4968
+
4969
+ ```
4970
+ <div>
4971
+ {{mount 'admin' model=userSettings}}
4972
+ </div>
4973
+ ```
4974
+
4975
+ Or an inline `hash`, and you can even pass components:
4976
+
4977
+ ```
4978
+ <div>
4979
+ <h1>Application template!</h1>
4980
+ {{mount 'admin' model=(hash
4981
+ title='Secret Admin'
4982
+ signInButton=(component 'sign-in-button')
4983
+ )}}
4984
+ </div>
4985
+ ```
4986
+
4987
+ @method mount
4988
+ @param {String} name Name of the engine to mount.
4989
+ @param {Object} [model] Object that will be set as
4990
+ the model of the engine.
4991
+ @for Ember.Templates.helpers
4992
+ @public
4993
+ */
4563
4994
  const mountHelper = internalHelper((args, owner) => {
4564
- (isDevelopingApp() && !(owner) && assert('{{mount}} must be used within a component that has an owner', owner));
4995
+ (!(owner) && assert('{{mount}} must be used within a component that has an owner', owner));
4565
4996
  let nameRef = args.positional[0];
4566
4997
  let captured;
4567
- (isDevelopingApp() && !(args.positional.length === 1) && assert('You can only pass a single positional argument to the {{mount}} helper, e.g. {{mount "chat-engine"}}.', args.positional.length === 1));
4568
- if (isDevelopingApp() && args.named) {
4998
+ (!(args.positional.length === 1) && assert('You can only pass a single positional argument to the {{mount}} helper, e.g. {{mount "chat-engine"}}.', args.positional.length === 1));
4999
+ if (args.named) {
4569
5000
  let keys = Object.keys(args.named);
4570
5001
  let extra = keys.filter(k => k !== 'model');
4571
- (isDevelopingApp() && !(extra.length === 0) && assert('You can only pass a `model` argument to the {{mount}} helper, ' + 'e.g. {{mount "profile-engine" model=this.profile}}. ' + `You passed ${extra.join(',')}.`, extra.length === 0));
5002
+ (!(extra.length === 0) && assert('You can only pass a `model` argument to the {{mount}} helper, ' + 'e.g. {{mount "profile-engine" model=this.profile}}. ' + `You passed ${extra.join(',')}.`, extra.length === 0));
4572
5003
  }
4573
5004
  captured = createCapturedArgs(args.named, EMPTY_POSITIONAL);
4574
5005
  let lastName, lastDef;
@@ -4578,12 +5009,12 @@ const mountHelper = internalHelper((args, owner) => {
4578
5009
  if (lastName === name) {
4579
5010
  return lastDef;
4580
5011
  }
4581
- (isDevelopingApp() && !(owner.hasRegistration(`engine:${name}`)) && assert(`You used \`{{mount '${name}'}}\`, but the engine '${name}' can not be found.`, owner.hasRegistration(`engine:${name}`)));
5012
+ (!(owner.hasRegistration(`engine:${name}`)) && assert(`You used \`{{mount '${name}'}}\`, but the engine '${name}' can not be found.`, owner.hasRegistration(`engine:${name}`)));
4582
5013
  lastName = name;
4583
5014
  lastDef = curry(0, new MountDefinition(name), owner, captured, true);
4584
5015
  return lastDef;
4585
5016
  } else {
4586
- (isDevelopingApp() && !(name === null || name === undefined) && assert(`Invalid engine name '${name}' specified, engine name must be either a string, null or undefined.`, name === null || name === undefined));
5017
+ (!(name === null || name === undefined) && assert(`Invalid engine name '${name}' specified, engine name must be either a string, null or undefined.`, name === null || name === undefined));
4587
5018
  lastDef = null;
4588
5019
  lastName = null;
4589
5020
  return null;
@@ -4610,7 +5041,7 @@ const CAPABILITIES_MASK = capabilityFlagsFrom(CAPABILITIES);
4610
5041
  class RouteTemplateManager {
4611
5042
  create(_owner, _definition, args) {
4612
5043
  let self = args.named.get('controller');
4613
- if (isDevelopingApp()) {
5044
+ {
4614
5045
  self = createDebugAliasRef('this', self);
4615
5046
  }
4616
5047
  let controller = valueForRef(self);
@@ -4720,8 +5151,8 @@ function makeRouteTemplate(owner, name, template) {
4720
5151
  @public
4721
5152
  */
4722
5153
  const outletHelper = internalHelper((_args, owner, scope) => {
4723
- (isDevelopingApp() && !(owner) && assert('Expected owner to be present, {{outlet}} requires an owner', owner));
4724
- (isDevelopingApp() && !(scope) && assert('Expected dynamic scope to be present. You may have attempted to use the {{outlet}} keyword dynamically. This keyword cannot be used dynamically.', scope));
5154
+ (!(owner) && assert('Expected owner to be present, {{outlet}} requires an owner', owner));
5155
+ (!(scope) && assert('Expected dynamic scope to be present. You may have attempted to use the {{outlet}} keyword dynamically. This keyword cannot be used dynamically.', scope));
4725
5156
  let outletRef = createComputeRef(() => {
4726
5157
  let state = valueForRef(scope.get('outletState'));
4727
5158
  return state?.outlets?.main;
@@ -4761,7 +5192,7 @@ const outletHelper = internalHelper((_args, owner, scope) => {
4761
5192
  if (hasInternalComponentManager(template)) {
4762
5193
  component = template;
4763
5194
  } else {
4764
- if (isDevelopingApp()) {
5195
+ {
4765
5196
  // We don't appear to have a standard way or a brand to check, but for the
4766
5197
  // purpose of avoiding obvious user errors, this probably gets you close
4767
5198
  // enough.
@@ -4786,7 +5217,7 @@ const outletHelper = internalHelper((_args, owner, scope) => {
4786
5217
  } catch {
4787
5218
  label = 'an unknown object';
4788
5219
  }
4789
- (isDevelopingApp() && true && assert(`Failed to render the \`${state.name}\` route: expected ` + `a component or Template object, but got ${label}.`));
5220
+ (assert(`Failed to render the \`${state.name}\` route: expected ` + `a component or Template object, but got ${label}.`));
4790
5221
  }
4791
5222
  }
4792
5223
  component = makeRouteTemplate(outletOwner, state.name, template);
@@ -4816,7 +5247,7 @@ const outletHelper = internalHelper((_args, owner, scope) => {
4816
5247
  }
4817
5248
  return model;
4818
5249
  });
4819
- if (isDevelopingApp()) {
5250
+ {
4820
5251
  named['model'] = createDebugAliasRef('@model', named['model']);
4821
5252
  }
4822
5253
  let args = createCapturedArgs(named, EMPTY_POSITIONAL);
@@ -4904,17 +5335,7 @@ const BUILTIN_HELPERS = {
4904
5335
  hash,
4905
5336
  'unique-id': uniqueId
4906
5337
  };
4907
- if (isDevelopingApp()) {
4908
- BUILTIN_HELPERS['-disallow-dynamic-resolution'] = disallowDynamicResolution;
4909
- } else {
4910
- // Bug: this may be a quirk of our test setup?
4911
- // In prod builds, this is a no-op helper and is unused in practice. We shouldn't need
4912
- // to add it at all, but the current test build doesn't produce a "prod compiler", so
4913
- // we ended up running the debug-build for the template compliler in prod tests. Once
4914
- // that is fixed, this can be removed. For now, this allows the test to work and does
4915
- // not really harm anything, since it's just a no-op pass-through helper and the bytes
4916
- // has to be included anyway. In the future, perhaps we can avoid the latter by using
4917
- // `import(...)`?
5338
+ {
4918
5339
  BUILTIN_HELPERS['-disallow-dynamic-resolution'] = disallowDynamicResolution;
4919
5340
  }
4920
5341
 
@@ -4932,7 +5353,7 @@ class ResolverImpl {
4932
5353
  return null;
4933
5354
  }
4934
5355
  lookupHelper(name, owner) {
4935
- (isDevelopingApp() && !(!(BUILTIN_HELPERS[name] && owner.hasRegistration(`helper:${name}`))) && assert(`You attempted to overwrite the built-in helper "${name}" which is not allowed. Please rename the helper.`, !(BUILTIN_HELPERS[name] && owner.hasRegistration(`helper:${name}`))));
5356
+ (!(!(BUILTIN_HELPERS[name] && owner.hasRegistration(`helper:${name}`))) && assert(`You attempted to overwrite the built-in helper "${name}" which is not allowed. Please rename the helper.`, !(BUILTIN_HELPERS[name] && owner.hasRegistration(`helper:${name}`))));
4936
5357
  let helper = BUILTIN_HELPERS[name];
4937
5358
  if (helper !== undefined) {
4938
5359
  return helper;
@@ -4950,15 +5371,13 @@ class ResolverImpl {
4950
5371
  // than the raw value (`factoryFor(...).class`). This is because injections are already
4951
5372
  // bound in the factoryFor result, including type-based injections
4952
5373
 
4953
- if (isDevelopingApp()) {
5374
+ {
4954
5375
  // In DEBUG we need to only set the associated value once, otherwise
4955
5376
  // we'll trigger an assertion
4956
5377
  if (!CLASSIC_HELPER_MANAGER_ASSOCIATED.has(factory)) {
4957
5378
  CLASSIC_HELPER_MANAGER_ASSOCIATED.add(factory);
4958
5379
  setInternalHelperManager(CLASSIC_HELPER_MANAGER, factory);
4959
5380
  }
4960
- } else {
4961
- setInternalHelperManager(CLASSIC_HELPER_MANAGER, factory);
4962
5381
  }
4963
5382
  return factory;
4964
5383
  }
@@ -4984,7 +5403,7 @@ class ResolverImpl {
4984
5403
  lookupComponent(name, owner) {
4985
5404
  let pair = lookupComponentPair(owner, name);
4986
5405
  if (pair === null) {
4987
- (isDevelopingApp() && !(name !== 'text-area') && assert('Could not find component `<TextArea />` (did you mean `<Textarea />`?)', name !== 'text-area'));
5406
+ (!(name !== 'text-area') && assert('Could not find component `<TextArea />` (did you mean `<Textarea />`?)', name !== 'text-area'));
4988
5407
  return null;
4989
5408
  }
4990
5409
  let template = null;
@@ -5011,7 +5430,7 @@ class ResolverImpl {
5011
5430
  };
5012
5431
  } else {
5013
5432
  let factory = pair.component;
5014
- (isDevelopingApp() && !(factory.class !== undefined) && assert(`missing component class ${name}`, factory.class !== undefined));
5433
+ (!(factory.class !== undefined) && assert(`missing component class ${name}`, factory.class !== undefined));
5015
5434
  let ComponentClass = factory.class;
5016
5435
  let manager = getInternalComponentManager(ComponentClass);
5017
5436
  definition = {
@@ -5022,7 +5441,7 @@ class ResolverImpl {
5022
5441
  }
5023
5442
  finalizer();
5024
5443
  this.componentDefinitionCache.set(key, definition);
5025
- (isDevelopingApp() && !(!(definition === null && name === 'text-area')) && assert('Could not find component `<TextArea />` (did you mean `<Textarea />`?)', !(definition === null && name === 'text-area')));
5444
+ (!(!(definition === null && name === 'text-area')) && assert('Could not find component `<TextArea />` (did you mean `<Textarea />`?)', !(definition === null && name === 'text-area')));
5026
5445
  return definition;
5027
5446
  }
5028
5447
  }
@@ -5054,7 +5473,7 @@ class OutletView {
5054
5473
  template: templateFactory
5055
5474
  } = options;
5056
5475
  let owner = getOwner(options);
5057
- (isDevelopingApp() && !(owner) && assert('OutletView is unexpectedly missing an owner', owner));
5476
+ (!(owner) && assert('OutletView is unexpectedly missing an owner', owner));
5058
5477
  let template = templateFactory(owner);
5059
5478
  return new OutletView(_environment, owner, template, namespace);
5060
5479
  }
@@ -5125,11 +5544,11 @@ class DynamicScope {
5125
5544
  return new DynamicScope(this.view, this.outletState);
5126
5545
  }
5127
5546
  get(key) {
5128
- (isDevelopingApp() && !(key === 'outletState') && assert(`Using \`-get-dynamic-scope\` is only supported for \`outletState\` (you used \`${key}\`).`, key === 'outletState'));
5547
+ (!(key === 'outletState') && assert(`Using \`-get-dynamic-scope\` is only supported for \`outletState\` (you used \`${key}\`).`, key === 'outletState'));
5129
5548
  return this.outletState;
5130
5549
  }
5131
5550
  set(key, value) {
5132
- (isDevelopingApp() && !(key === 'outletState') && assert(`Using \`-with-dynamic-scope\` is only supported for \`outletState\` (you used \`${key}\`).`, key === 'outletState'));
5551
+ (!(key === 'outletState') && assert(`Using \`-with-dynamic-scope\` is only supported for \`outletState\` (you used \`${key}\`).`, key === 'outletState'));
5133
5552
  this.outletState = value;
5134
5553
  return value;
5135
5554
  }
@@ -5140,7 +5559,7 @@ const NO_OP = () => {};
5140
5559
  // during render. This prevents infinite revalidation type loops from occuring,
5141
5560
  // and ensures that errors are not swallowed by subsequent follow on failures.
5142
5561
  function errorLoopTransaction(fn) {
5143
- if (isDevelopingApp()) {
5562
+ {
5144
5563
  return () => {
5145
5564
  let didError = true;
5146
5565
  try {
@@ -5157,8 +5576,6 @@ function errorLoopTransaction(fn) {
5157
5576
  }
5158
5577
  }
5159
5578
  };
5160
- } else {
5161
- return fn;
5162
5579
  }
5163
5580
  }
5164
5581
  class ComponentRootState {
@@ -5203,7 +5620,7 @@ class ClassicRootState {
5203
5620
  env;
5204
5621
  constructor(root, context, owner, template, self, parentElement, dynamicScope, builder) {
5205
5622
  this.root = root;
5206
- (isDevelopingApp() && !(template !== undefined) && assert(`You cannot render \`${valueForRef(self)}\` without a template.`, template !== undefined));
5623
+ (!(template !== undefined) && assert(`You cannot render \`${valueForRef(self)}\` without a template.`, template !== undefined));
5207
5624
  this.id = root instanceof OutletView ? guidFor(root) : getViewId(root);
5208
5625
  this.result = undefined;
5209
5626
  this.destroyed = false;
@@ -5255,12 +5672,12 @@ function _resetRenderers() {
5255
5672
  renderers.length = 0;
5256
5673
  }
5257
5674
  function register(renderer) {
5258
- (isDevelopingApp() && !(renderers.indexOf(renderer) === -1) && assert('Cannot register the same renderer twice', renderers.indexOf(renderer) === -1));
5675
+ (!(renderers.indexOf(renderer) === -1) && assert('Cannot register the same renderer twice', renderers.indexOf(renderer) === -1));
5259
5676
  renderers.push(renderer);
5260
5677
  }
5261
5678
  function deregister(renderer) {
5262
5679
  let index = renderers.indexOf(renderer);
5263
- (isDevelopingApp() && !(index !== -1) && assert('Cannot deregister unknown unregistered renderer', index !== -1));
5680
+ (!(index !== -1) && assert('Cannot deregister unknown unregistered renderer', index !== -1));
5264
5681
  renderers.splice(index, 1);
5265
5682
  }
5266
5683
  function loopBegin() {
@@ -5401,7 +5818,7 @@ class RendererState {
5401
5818
  // each root is processed
5402
5819
  for (let i = 0; i < roots.length; i++) {
5403
5820
  let root = roots[i];
5404
- (isDevelopingApp() && !(root) && assert('has root', root));
5821
+ (true && !(root) && assert('has root', root));
5405
5822
  if (root.destroyed) {
5406
5823
  // add to the list of roots to be removed
5407
5824
  // they will be removed from `this._roots` later
@@ -5533,7 +5950,7 @@ component, {
5533
5950
  * NOTE: destruction is async
5534
5951
  */
5535
5952
  let existing = RENDER_CACHE.get(into);
5536
- existing?.destroy();
5953
+ existing?.result.destroy();
5537
5954
  /**
5538
5955
  * We can only replace the inner HTML the first time.
5539
5956
  * Because destruction is async, it won't be safe to
@@ -5542,8 +5959,30 @@ component, {
5542
5959
  if (!existing && into instanceof Element) {
5543
5960
  into.innerHTML = '';
5544
5961
  }
5962
+
5963
+ /**
5964
+ * If there's an existing render result with valid bounds, use its
5965
+ * firstNode as the nextSibling so that new content is inserted at
5966
+ * the same DOM position. This ensures stable ordering when multiple
5967
+ * renderComponent calls target the same element and one is re-invoked
5968
+ * (e.g., due to tracked dependency changes).
5969
+ *
5970
+ * The old content's DOM nodes are still present (destruction is async),
5971
+ * so firstNode() is a valid position reference. The new content is placed
5972
+ * BEFORE the old content. When the old content is eventually destroyed
5973
+ * (async clear of bounds), the new content remains in the correct position.
5974
+ */
5975
+ let renderTarget = into;
5976
+ if (existing?.glimmerResult) {
5977
+ let parentElement = into instanceof Element ? into : into.element;
5978
+ let firstNode = existing.glimmerResult.firstNode();
5979
+ renderTarget = {
5980
+ element: parentElement,
5981
+ nextSibling: firstNode
5982
+ };
5983
+ }
5545
5984
  let innerResult = renderer.render(component, {
5546
- into,
5985
+ into: renderTarget,
5547
5986
  args
5548
5987
  }).result;
5549
5988
  if (innerResult) {
@@ -5556,7 +5995,10 @@ component, {
5556
5995
  }
5557
5996
  }
5558
5997
  };
5559
- RENDER_CACHE.set(into, result);
5998
+ RENDER_CACHE.set(into, {
5999
+ result,
6000
+ glimmerResult: innerResult
6001
+ });
5560
6002
  return result;
5561
6003
  }
5562
6004
  const RENDER_CACHE = new WeakMap();
@@ -5594,7 +6036,7 @@ class BaseRenderer {
5594
6036
  let {
5595
6037
  debugRenderTree
5596
6038
  } = this.state.env;
5597
- (isDevelopingApp() && !(debugRenderTree) && assert('Attempted to access the DebugRenderTree, but it did not exist. Is the Ember Inspector open?', debugRenderTree));
6039
+ (!(debugRenderTree) && assert('Attempted to access the DebugRenderTree, but it did not exist. Is the Ember Inspector open?', debugRenderTree));
5598
6040
  return debugRenderTree;
5599
6041
  }
5600
6042
  isValid() {
@@ -5632,7 +6074,7 @@ class Renderer extends BaseRenderer {
5632
6074
  _viewRegistry
5633
6075
  } = props;
5634
6076
  let owner = getOwner(props);
5635
- (isDevelopingApp() && !(owner) && assert('Renderer is unexpectedly missing an owner', owner));
6077
+ (!(owner) && assert('Renderer is unexpectedly missing an owner', owner));
5636
6078
  let document = owner.lookup('service:-document');
5637
6079
  let env = owner.lookup('-environment:main');
5638
6080
  let rootTemplate = owner.lookup(privatize`template:-root`);
@@ -5696,7 +6138,7 @@ class Renderer extends BaseRenderer {
5696
6138
  let i = roots.length;
5697
6139
  while (i--) {
5698
6140
  let root = roots[i];
5699
- (isDevelopingApp() && !(root) && assert('has root', root));
6141
+ (!(root) && assert('has root', root));
5700
6142
  if (root.type === 'classic' && root.isFor(component)) {
5701
6143
  root.destroy();
5702
6144
  roots.splice(i, 1);
@@ -5724,7 +6166,7 @@ class Renderer extends BaseRenderer {
5724
6166
  }
5725
6167
  register(view) {
5726
6168
  let id = getViewId(view);
5727
- (isDevelopingApp() && !(!this._viewRegistry[id]) && assert('Attempted to register a view with an id already in use: ' + id, !this._viewRegistry[id]));
6169
+ (!(!this._viewRegistry[id]) && assert('Attempted to register a view with an id already in use: ' + id, !this._viewRegistry[id]));
5728
6170
  this._viewRegistry[id] = view;
5729
6171
  }
5730
6172
  unregister(view) {
@@ -5739,7 +6181,7 @@ class Renderer extends BaseRenderer {
5739
6181
  }
5740
6182
  getBounds(component) {
5741
6183
  let bounds = component[BOUNDS];
5742
- (isDevelopingApp() && !(bounds) && assert('object passed to getBounds must have the BOUNDS symbol as a property', bounds));
6184
+ (!(bounds) && assert('object passed to getBounds must have the BOUNDS symbol as a property', bounds));
5743
6185
  let parentElement = bounds.parentElement();
5744
6186
  let firstNode = bounds.firstNode();
5745
6187
  let lastNode = bounds.lastNode();
@@ -5759,8 +6201,10 @@ const OutletTemplate = templateFactory(
5759
6201
  "id": null,
5760
6202
  "block": "[[[46,[28,[32,0],null,null],null,null,null]],[],[\"component\"]]",
5761
6203
  "moduleName": "packages/@ember/-internals/glimmer/lib/templates/outlet.hbs",
5762
- "scope": () => [outletHelper],
6204
+ "scope": () => ({
6205
+ outletHelper
6206
+ }),
5763
6207
  "isStrictMode": true
5764
6208
  });
5765
6209
 
5766
- export { Component as C, Helper as H, Input as I, LinkTo as L, OutletView as O, Renderer as R, SafeString as S, Textarea as T, _resetRenderers as _, RootTemplate as a, TrustedHTML as b, htmlSafe as c, isTrustedHTML as d, renderSettled as e, OutletTemplate as f, helper$1 as h, isHTMLSafe as i, renderComponent as r, trustHTML as t, uniqueId$1 as u };
6210
+ export { Component as C, Helper as H, Input as I, LinkTo as L, OutletView as O, RootTemplate as R, SafeString as S, Textarea as T, _resetRenderers as _, OutletTemplate as a, Renderer as b, TrustedHTML as c, htmlSafe as d, isTrustedHTML as e, renderComponent as f, helper$1 as h, isHTMLSafe as i, renderSettled as r, trustHTML as t, uniqueId$1 as u };