ember-source 6.12.0 → 7.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +30 -58
  381. package/types/stable/@ember/-internals/deprecations/index.d.ts +0 -6
  382. package/types/stable/@ember/-internals/environment/index.d.ts +0 -1
  383. package/types/stable/@ember/-internals/environment/lib/env.d.ts +0 -3
  384. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -6
  385. package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +1 -2
  386. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +22 -29
  387. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +2 -2
  388. package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +0 -2
  389. package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +0 -1
  390. package/types/stable/@ember/-internals/meta/lib/meta.d.ts +1 -1
  391. package/types/stable/@ember/-internals/metal/lib/alias.d.ts +0 -11
  392. package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +0 -1
  393. package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +0 -1
  394. package/types/stable/@ember/-internals/metal/lib/observer.d.ts +0 -2
  395. package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +4 -10
  396. package/types/stable/@ember/-internals/utils/index.d.ts +0 -1
  397. package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +3 -15
  398. package/types/stable/@ember/application/index.d.ts +2 -63
  399. package/types/stable/@ember/routing/history-location.d.ts +0 -1
  400. package/types/stable/@ember/routing/lib/location-utils.d.ts +1 -2
  401. package/types/stable/@ember/routing/none-location.d.ts +1 -2
  402. package/types/stable/@ember/template-compiler/index.d.ts +1 -0
  403. package/types/stable/@ember/template-compiler/lib/plugins/allowed-globals.d.ts +26 -0
  404. package/types/stable/@ember/test/index.d.ts +0 -3
  405. package/types/stable/@glimmer/interfaces/lib/compile/wire-format/api.d.ts +1 -1
  406. package/types/stable/@glimmer/interfaces/lib/template.d.ts +1 -1
  407. package/types/stable/@glimmer/program/lib/program.d.ts +0 -1
  408. package/types/stable/@glimmer/validator/lib/collections/map.d.ts +1 -1
  409. package/types/stable/@handlebars/parser/types/ast.d.ts +148 -0
  410. package/types/stable/@handlebars/parser/types/index.d.ts +13 -0
  411. package/types/stable/ember-template-compiler/index.d.ts +0 -2
  412. package/types/stable/ember-template-compiler/lib/public-api.d.ts +0 -1
  413. package/types/stable/ember-testing/lib/public-api.d.ts +0 -6
  414. package/types/stable/ember-testing/lib/test/pending_requests.d.ts +0 -3
  415. package/types/stable/ember-testing/lib/test.d.ts +0 -23
  416. package/types/stable/index.d.ts +15 -32
  417. package/types/stable/router_js/index.d.ts +7 -0
  418. package/types/stable/router_js/lib/core.d.ts +9 -0
  419. package/types/stable/router_js/lib/route-info.d.ts +107 -0
  420. package/types/stable/router_js/lib/router.d.ts +245 -0
  421. package/types/stable/router_js/lib/transition-aborted-error.d.ts +15 -0
  422. package/types/stable/router_js/lib/transition-intent/named-transition-intent.d.ts +23 -0
  423. package/types/stable/router_js/lib/transition-intent/url-transition-intent.d.ts +12 -0
  424. package/types/stable/router_js/lib/transition-intent.d.ts +13 -0
  425. package/types/stable/router_js/lib/transition-state.d.ts +25 -0
  426. package/types/stable/router_js/lib/transition.d.ts +241 -0
  427. package/types/stable/router_js/lib/unrecognized-url-error.d.ts +11 -0
  428. package/types/stable/router_js/lib/utils.d.ts +41 -0
  429. package/dist/ember-template-compiler.js +0 -20631
  430. package/dist/ember-template-compiler.js.map +0 -1
  431. package/dist/ember-testing.js +0 -1351
  432. package/dist/ember-testing.js.map +0 -1
  433. package/dist/ember.debug.js +0 -52306
  434. package/dist/ember.debug.js.map +0 -1
  435. package/dist/ember.prod.js +0 -49369
  436. package/dist/ember.prod.js.map +0 -1
  437. package/dist/packages/@ember/-internals/container/index.js +0 -1
  438. package/dist/packages/@ember/-internals/environment/index.js +0 -1
  439. package/dist/packages/@ember/-internals/glimmer/index.js +0 -18
  440. package/dist/packages/@ember/-internals/metal/index.js +0 -51
  441. package/dist/packages/@ember/-internals/utils/index.js +0 -7
  442. package/dist/packages/@ember/application/lib/lazy_load.js +0 -68
  443. package/dist/packages/@ember/component/helper.js +0 -14
  444. package/dist/packages/@ember/modifier/index.js +0 -23
  445. package/dist/packages/@ember/object/-internals.js +0 -35
  446. package/dist/packages/@ember/object/events.js +0 -12
  447. package/dist/packages/@ember/object/observers.js +0 -12
  448. package/dist/packages/@ember/renderer/index.js +0 -14
  449. package/dist/packages/@ember/routing/index.js +0 -14
  450. package/dist/packages/@ember/template/index.js +0 -14
  451. package/dist/packages/@ember/template-factory/index.js +0 -8
  452. package/dist/packages/@ember/test/index.js +0 -27
  453. package/dist/packages/@glimmer/encoder/index.js +0 -1
  454. package/dist/packages/@glimmer/manager/index.js +0 -5
  455. package/dist/packages/@glimmer/node/index.js +0 -2
  456. package/dist/packages/@glimmer/program/index.js +0 -3
  457. package/dist/packages/@glimmer/reference/index.js +0 -2
  458. package/dist/packages/@glimmer/tracking/index.js +0 -48
  459. package/dist/packages/@glimmer/tracking/primitives/cache/index.js +0 -12
  460. package/dist/packages/ember/barrel.js +0 -511
  461. package/dist/packages/ember/index.js +0 -20
  462. package/dist/packages/ember-template-compiler/index.js +0 -17135
  463. package/dist/packages/ember-testing/lib/adapters/qunit.js +0 -53
  464. package/dist/packages/ember-testing/lib/ext/application.js +0 -174
  465. package/dist/packages/ember-testing/lib/ext/rsvp.js +0 -17
  466. package/dist/packages/ember-testing/lib/helpers/and_then.js +0 -11
  467. package/dist/packages/ember-testing/lib/helpers/current_path.js +0 -32
  468. package/dist/packages/ember-testing/lib/helpers/current_route_name.js +0 -32
  469. package/dist/packages/ember-testing/lib/helpers/current_url.js +0 -29
  470. package/dist/packages/ember-testing/lib/helpers/pause_test.js +0 -76
  471. package/dist/packages/ember-testing/lib/helpers/visit.js +0 -51
  472. package/dist/packages/ember-testing/lib/helpers/wait.js +0 -55
  473. package/dist/packages/ember-testing/lib/helpers.js +0 -17
  474. package/dist/packages/ember-testing/lib/initializers.js +0 -56
  475. package/dist/packages/ember-testing/lib/public-api.js +0 -8
  476. package/dist/packages/ember-testing/lib/setup_for_testing.js +0 -31
  477. package/dist/packages/ember-testing/lib/test/helpers.js +0 -133
  478. package/dist/packages/ember-testing/lib/test/on_inject_helpers.js +0 -39
  479. package/dist/packages/ember-testing/lib/test/pending_requests.js +0 -22
  480. package/dist/packages/ember-testing/lib/test/promise.js +0 -83
  481. package/dist/packages/ember-testing/lib/test/run.js +0 -11
  482. package/dist/packages/ember-testing/lib/test.js +0 -68
  483. package/dist/packages/router_js/index.js +0 -2
  484. package/dist/packages/shared-chunks/helpers-C1rIkuSd.js +0 -11
  485. package/dist/packages/shared-chunks/invoke-BjRgvK2V.js +0 -27
  486. package/dist/packages/shared-chunks/public-api-BQsJemZG.js +0 -20
  487. package/dist/packages/shared-chunks/template_registry-DigcUg9m.js +0 -24
  488. package/dist/packages/shared-chunks/to-string-CqD7_vQ4.js +0 -60
  489. package/types/stable/@ember/-internals/environment/lib/global.d.ts +0 -4
  490. package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +0 -34
  491. package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +0 -5
  492. package/types/stable/@ember/-internals/glimmer/lib/templates/empty.d.ts +0 -4
  493. package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +0 -4
  494. package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +0 -3
  495. package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +0 -5
  496. package/types/stable/@ember/application/lib/lazy_load.d.ts +0 -38
  497. package/types/stable/@ember/template-compiler/lib/public-types.d.ts +0 -3
  498. package/types/stable/ember/barrel.d.ts +0 -358
  499. package/types/stable/ember/index.d.ts +0 -358
  500. package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +0 -26
  501. package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +0 -3
  502. package/types/stable/ember-testing/lib/adapters/qunit.d.ts +0 -22
  503. package/types/stable/ember-testing/lib/ext/application.d.ts +0 -12
  504. package/types/stable/ember-testing/lib/ext/rsvp.d.ts +0 -4
  505. package/types/stable/ember-testing/lib/helpers/and_then.d.ts +0 -4
  506. package/types/stable/ember-testing/lib/helpers/current_path.d.ts +0 -22
  507. package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +0 -21
  508. package/types/stable/ember-testing/lib/helpers/current_url.d.ts +0 -22
  509. package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +0 -52
  510. package/types/stable/ember-testing/lib/helpers/visit.d.ts +0 -22
  511. package/types/stable/ember-testing/lib/helpers/wait.d.ts +0 -34
  512. package/types/stable/ember-testing/lib/helpers.d.ts +0 -3
  513. package/types/stable/ember-testing/lib/initializers.d.ts +0 -3
  514. package/types/stable/ember-testing/lib/setup_for_testing.d.ts +0 -15
  515. package/types/stable/ember-testing/lib/test/helpers.d.ts +0 -116
  516. package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +0 -33
  517. package/types/stable/ember-testing/lib/test/promise.d.ts +0 -37
  518. package/types/stable/ember-testing/lib/test/run.d.ts +0 -3
  519. package/types/stable/loader/lib/index.d.ts +0 -4
  520. package/types/stable/require.d.ts +0 -4
  521. /package/dist/{packages → dev/packages}/@ember/-internals/browser-environment/index.js +0 -0
  522. /package/dist/{packages → dev/packages}/@ember/-internals/error-handling/index.js +0 -0
  523. /package/dist/{packages → dev/packages}/@ember/-internals/meta/index.js +0 -0
  524. /package/dist/{packages → dev/packages}/@ember/-internals/owner/index.js +0 -0
  525. /package/dist/{packages → dev/packages}/@ember/-internals/runtime/index.js +0 -0
  526. /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/comparable.js +0 -0
  527. /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/container_proxy.js +0 -0
  528. /package/dist/{packages → dev/packages}/@ember/-internals/utility-types/index.js +0 -0
  529. /package/dist/{packages → dev/packages}/@ember/-internals/views/index.js +0 -0
  530. /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/attrs.js +0 -0
  531. /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/component_lookup.js +0 -0
  532. /package/dist/{packages → dev/packages}/@ember/array/-internals.js +0 -0
  533. /package/dist/{packages → dev/packages}/@ember/array/lib/make-array.js +0 -0
  534. /package/dist/{packages → dev/packages}/@ember/array/make.js +0 -0
  535. /package/dist/{packages → dev/packages}/@ember/array/mutable.js +0 -0
  536. /package/dist/{packages → dev/packages}/@ember/debug/lib/capture-render-tree.js +0 -0
  537. /package/dist/{packages → dev/packages}/@ember/debug/lib/inspect.js +0 -0
  538. /package/dist/{packages → dev/packages}/@ember/debug/lib/testing.js +0 -0
  539. /package/dist/{packages → dev/packages}/@ember/deprecated-features/index.js +0 -0
  540. /package/dist/{packages → dev/packages}/@ember/destroyable/index.js +0 -0
  541. /package/dist/{packages → dev/packages}/@ember/engine/lib/engine-parent.js +0 -0
  542. /package/dist/{packages → dev/packages}/@ember/engine/parent.js +0 -0
  543. /package/dist/{packages → dev/packages}/@ember/enumerable/index.js +0 -0
  544. /package/dist/{packages → dev/packages}/@ember/enumerable/mutable.js +0 -0
  545. /package/dist/{packages → dev/packages}/@ember/object/proxy.js +0 -0
  546. /package/dist/{packages → dev/packages}/@ember/owner/index.js +0 -0
  547. /package/dist/{packages → dev/packages}/@ember/reactive/collections.js +0 -0
  548. /package/dist/{packages → dev/packages}/@ember/reactive/index.js +0 -0
  549. /package/dist/{packages → dev/packages}/@ember/routing/lib/cache.js +0 -0
  550. /package/dist/{packages → dev/packages}/@ember/routing/lib/controller_for.js +0 -0
  551. /package/dist/{packages → dev/packages}/@ember/routing/lib/query_params.js +0 -0
  552. /package/dist/{packages → dev/packages}/@ember/routing/lib/router_state.js +0 -0
  553. /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-primitives.js +0 -0
  554. /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-utils.js +0 -0
  555. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/-internal/primitives.js +0 -0
  556. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-action-syntax.js +0 -0
  557. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +0 -0
  558. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -0
  559. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +0 -0
  560. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/utils.js +0 -0
  561. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/public-api.js +0 -0
  562. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/runtime.js +0 -0
  563. /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/system/calculate-location-display.js +0 -0
  564. /package/dist/{packages → dev/packages}/@ember/template-compiler/runtime.js +0 -0
  565. /package/dist/{packages → dev/packages}/@ember/test/adapter.js +0 -0
  566. /package/dist/{packages → dev/packages}/@ember/utils/index.js +0 -0
  567. /package/dist/{packages → dev/packages}/@ember/utils/lib/is-equal.js +0 -0
  568. /package/dist/{packages → dev/packages}/@ember/utils/lib/is_blank.js +0 -0
  569. /package/dist/{packages → dev/packages}/@ember/utils/lib/is_none.js +0 -0
  570. /package/dist/{packages → dev/packages}/@ember/utils/lib/is_present.js +0 -0
  571. /package/dist/{packages → dev/packages}/@ember/utils/lib/type-of.js +0 -0
  572. /package/dist/{packages → dev/packages}/@ember/version/index.js +0 -0
  573. /package/dist/{packages → dev/packages}/@glimmer/env/index.js +0 -0
  574. /package/dist/{packages → dev/packages}/@glimmer/owner/index.js +0 -0
  575. /package/dist/{packages → dev/packages}/@glimmer/wire-format/index.js +0 -0
  576. /package/dist/{packages → dev/packages}/@simple-dom/document/index.js +0 -0
  577. /package/dist/{packages → dev/packages}/backburner.js/index.js +0 -0
  578. /package/dist/{packages → dev/packages}/dag-map/index.js +0 -0
  579. /package/dist/{packages → dev/packages}/ember-testing/lib/adapters/adapter.js +0 -0
  580. /package/dist/{packages → dev/packages}/ember-testing/lib/test/adapter.js +0 -0
  581. /package/dist/{packages → dev/packages}/ember-testing/lib/test/waiters.js +0 -0
  582. /package/dist/{packages → dev/packages}/route-recognizer/index.js +0 -0
  583. /package/dist/{packages → dev/packages}/rsvp/index.js +0 -0
  584. /package/dist/{packages → dev/packages}/shared-chunks/array-utils-CZQxrdD3.js +0 -0
  585. /package/dist/{packages → dev/packages}/shared-chunks/assert-CUCJBR2C.js +0 -0
  586. /package/dist/{packages → dev/packages}/shared-chunks/cache-qDyqAcpg.js +0 -0
  587. /package/dist/{packages → dev/packages}/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +0 -0
  588. /package/dist/{packages → dev/packages}/shared-chunks/computed_cache-DmYKevAP.js +0 -0
  589. /package/dist/{packages → dev/packages}/shared-chunks/debug-brand-B1TWjOCH.js +0 -0
  590. /package/dist/{packages → dev/packages}/shared-chunks/dictionary-gc5gpyOG.js +0 -0
  591. /package/dist/{packages → dev/packages}/shared-chunks/index-BGP1rw3B.js +0 -0
  592. /package/dist/{packages → dev/packages}/shared-chunks/object-utils-AijlD-JH.js +0 -0
  593. /package/dist/{packages → dev/packages}/shared-chunks/present-B1rrjAVM.js +0 -0
  594. /package/dist/{packages → dev/packages}/shared-chunks/registers-ylirb0dq.js +0 -0
  595. /package/dist/{packages → dev/packages}/shared-chunks/rsvp-CnCSY930.js +0 -0
  596. /package/dist/{packages → prod/packages}/@ember/routing/-internals.js +0 -0
  597. /package/dist/{packages/@ember/template-compiler/index.js → prod/packages/@ember/template-compiler/runtime.js} +0 -0
@@ -0,0 +1,1464 @@
1
+ import { u as unwrap, e as expect, S as StackImpl } from './collections-GpG8lT2g.js';
2
+ import { u as unwrapHandle } from './constants-b-2IVErl.js';
3
+ import { track, updateTag as UPDATE_TAG, beginTrackFrame, endTrackFrame } from '../@glimmer/validator/index.js';
4
+ import { U as UNDEFINED_REFERENCE, v as valueForRef, u as updateRef, a as createConstRef, b as childRefFor } from './reference-BNqcwZWH.js';
5
+ import { a as assert } from './assert-CUCJBR2C.js';
6
+ import { P as ProgramImpl } from './program-B7SJZ5NF.js';
7
+ import { G as DebugRenderTreeImpl, H as isArgumentError, e as DOMChangesImpl, I as APPEND_OPCODES, J as move, i as clear, V as VMArgumentsImpl, K as externs, L as JumpIfNotModifiedOpcode, M as BeginTrackFrameOpcode, O as EndTrackFrameOpcode } from './on-CrTl7JQU.js';
8
+ import { D as DOMTreeConstruction, N as NewTreeBuilder } from './element-builder-CiLTrXD6.js';
9
+ import { a as assign } from './object-utils-AijlD-JH.js';
10
+ import { destroyChildren, associateDestroyableChild, destroy, registerDestructor } from '../@glimmer/destroyable/index.js';
11
+ import { createIteratorItemRef } from '../@glimmer/reference/index.js';
12
+ import { r as reverse } from './array-utils-CZQxrdD3.js';
13
+ import { a as $pc, b as $ra, c as $fp, d as $sp, i as isLowLevelRegister } from './registers-ylirb0dq.js';
14
+ import { l as VM_RETURN_TO_OP, m as VM_RETURN_OP, n as VM_JUMP_OP, o as VM_INVOKE_VIRTUAL_OP, k as VM_INVOKE_STATIC_OP, p as VM_POP_FRAME_OP, q as VM_PUSH_FRAME_OP } from './fragment-EpVz5Xuc.js';
15
+
16
+ class DynamicScopeImpl {
17
+ bucket;
18
+ constructor(bucket) {
19
+ if (bucket) {
20
+ this.bucket = assign({}, bucket);
21
+ } else {
22
+ this.bucket = {};
23
+ }
24
+ }
25
+ get(key) {
26
+ return unwrap(this.bucket[key]);
27
+ }
28
+ set(key, reference) {
29
+ return this.bucket[key] = reference;
30
+ }
31
+ child() {
32
+ return new DynamicScopeImpl(this.bucket);
33
+ }
34
+ }
35
+ class ScopeImpl {
36
+ static root(owner, {
37
+ self,
38
+ size = 0
39
+ }) {
40
+ let refs = new Array(size + 1).fill(UNDEFINED_REFERENCE);
41
+ return new ScopeImpl(owner, refs, null).init({
42
+ self
43
+ });
44
+ }
45
+ static sized(owner, size = 0) {
46
+ let refs = new Array(size + 1).fill(UNDEFINED_REFERENCE);
47
+ return new ScopeImpl(owner, refs, null);
48
+ }
49
+ owner;
50
+ slots;
51
+ callerScope;
52
+ constructor(owner,
53
+ // the 0th slot is `self`
54
+ slots,
55
+ // a single program can mix owners via curried components, and the state lives on root scopes
56
+ callerScope) {
57
+ this.owner = owner;
58
+ this.slots = slots;
59
+ this.callerScope = callerScope;
60
+ }
61
+ init({
62
+ self
63
+ }) {
64
+ this.slots[0] = self;
65
+ return this;
66
+ }
67
+
68
+ /**
69
+ * @debug
70
+ */
71
+ snapshot() {
72
+ return this.slots.slice();
73
+ }
74
+ getSelf() {
75
+ return this.get(0);
76
+ }
77
+ getSymbol(symbol) {
78
+ return this.get(symbol);
79
+ }
80
+ getBlock(symbol) {
81
+ let block = this.get(symbol);
82
+ return block === UNDEFINED_REFERENCE ? null : block;
83
+ }
84
+ bind(symbol, value) {
85
+ this.set(symbol, value);
86
+ }
87
+ bindSelf(self) {
88
+ this.set(0, self);
89
+ }
90
+ bindSymbol(symbol, value) {
91
+ this.set(symbol, value);
92
+ }
93
+ bindBlock(symbol, value) {
94
+ this.set(symbol, value);
95
+ }
96
+ bindCallerScope(scope) {
97
+ this.callerScope = scope;
98
+ }
99
+ getCallerScope() {
100
+ return this.callerScope;
101
+ }
102
+ child() {
103
+ return new ScopeImpl(this.owner, this.slots.slice(), this.callerScope);
104
+ }
105
+ get(index) {
106
+ if (index >= this.slots.length) {
107
+ throw new RangeError(`BUG: cannot get $${index} from scope; length=${this.slots.length}`);
108
+ }
109
+ return this.slots[index];
110
+ }
111
+ set(index, value) {
112
+ if (index >= this.slots.length) {
113
+ throw new RangeError(`BUG: cannot get $${index} from scope; length=${this.slots.length}`);
114
+ }
115
+ this.slots[index] = value;
116
+ }
117
+ }
118
+
119
+ const TRANSACTION = Symbol('TRANSACTION');
120
+ class TransactionImpl {
121
+ scheduledInstallModifiers = [];
122
+ scheduledUpdateModifiers = [];
123
+ createdComponents = [];
124
+ updatedComponents = [];
125
+ didCreate(component) {
126
+ this.createdComponents.push(component);
127
+ }
128
+ didUpdate(component) {
129
+ this.updatedComponents.push(component);
130
+ }
131
+ scheduleInstallModifier(modifier) {
132
+ this.scheduledInstallModifiers.push(modifier);
133
+ }
134
+ scheduleUpdateModifier(modifier) {
135
+ this.scheduledUpdateModifiers.push(modifier);
136
+ }
137
+ commit() {
138
+ let {
139
+ createdComponents,
140
+ updatedComponents
141
+ } = this;
142
+ for (const {
143
+ manager,
144
+ state
145
+ } of createdComponents) {
146
+ manager.didCreate(state);
147
+ }
148
+ for (const {
149
+ manager,
150
+ state
151
+ } of updatedComponents) {
152
+ manager.didUpdate(state);
153
+ }
154
+ let {
155
+ scheduledInstallModifiers,
156
+ scheduledUpdateModifiers
157
+ } = this;
158
+ for (const {
159
+ manager,
160
+ state,
161
+ definition
162
+ } of scheduledInstallModifiers) {
163
+ let modifierTag = manager.getTag(state);
164
+ if (modifierTag !== null) {
165
+ let tag = track(() => manager.install(state));
166
+ UPDATE_TAG(modifierTag, tag);
167
+ } else {
168
+ manager.install(state);
169
+ }
170
+ }
171
+ for (const {
172
+ manager,
173
+ state,
174
+ definition
175
+ } of scheduledUpdateModifiers) {
176
+ let modifierTag = manager.getTag(state);
177
+ if (modifierTag !== null) {
178
+ let tag = track(() => manager.update(state));
179
+ UPDATE_TAG(modifierTag, tag);
180
+ } else {
181
+ manager.update(state);
182
+ }
183
+ }
184
+ }
185
+ }
186
+ class EnvironmentImpl {
187
+ [TRANSACTION] = null;
188
+ updateOperations;
189
+
190
+ // Delegate methods and values
191
+ isInteractive;
192
+
193
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
194
+ isArgumentCaptureError;
195
+ debugRenderTree;
196
+ constructor(options, delegate) {
197
+ this.delegate = delegate;
198
+ this.isInteractive = delegate.isInteractive;
199
+ this.debugRenderTree = this.delegate.enableDebugTooling ? new DebugRenderTreeImpl() : undefined;
200
+ this.isArgumentCaptureError = this.delegate.enableDebugTooling ? isArgumentError : undefined;
201
+ if (options.appendOperations) {
202
+ this.appendOperations = options.appendOperations;
203
+ this.updateOperations = options.updateOperations;
204
+ } else if (options.document) {
205
+ this.appendOperations = new DOMTreeConstruction(options.document);
206
+ this.updateOperations = new DOMChangesImpl(options.document);
207
+ } else ;
208
+ }
209
+ getAppendOperations() {
210
+ return this.appendOperations;
211
+ }
212
+ getDOM() {
213
+ return expect(this.updateOperations);
214
+ }
215
+ begin() {
216
+ assert(!this[TRANSACTION]);
217
+ this.debugRenderTree?.begin();
218
+ this[TRANSACTION] = new TransactionImpl();
219
+ }
220
+ get transaction() {
221
+ return expect(this[TRANSACTION]);
222
+ }
223
+ didCreate(component) {
224
+ this.transaction.didCreate(component);
225
+ }
226
+ didUpdate(component) {
227
+ this.transaction.didUpdate(component);
228
+ }
229
+ scheduleInstallModifier(modifier) {
230
+ if (this.isInteractive) {
231
+ this.transaction.scheduleInstallModifier(modifier);
232
+ }
233
+ }
234
+ scheduleUpdateModifier(modifier) {
235
+ if (this.isInteractive) {
236
+ this.transaction.scheduleUpdateModifier(modifier);
237
+ }
238
+ }
239
+ commit() {
240
+ let transaction = this.transaction;
241
+ this[TRANSACTION] = null;
242
+ transaction.commit();
243
+ this.debugRenderTree?.commit();
244
+ this.delegate.onTransactionCommit();
245
+ }
246
+ }
247
+ function runtimeOptions(options, delegate, artifacts, resolver) {
248
+ return {
249
+ env: new EnvironmentImpl(options, delegate),
250
+ program: new ProgramImpl(artifacts.constants, artifacts.heap),
251
+ resolver
252
+ };
253
+ }
254
+ function inTransaction(env, block) {
255
+ if (!env[TRANSACTION]) {
256
+ env.begin();
257
+ try {
258
+ block();
259
+ } finally {
260
+ env.commit();
261
+ }
262
+ } else {
263
+ block();
264
+ }
265
+ }
266
+
267
+ function initializeRegistersWithSP(sp) {
268
+ return [0, -1, sp, 0];
269
+ }
270
+ class LowLevelVM {
271
+ currentOpSize = 0;
272
+ registers;
273
+ context;
274
+ constructor(stack, context, externs, registers) {
275
+ this.stack = stack;
276
+ this.externs = externs;
277
+ this.context = context;
278
+ this.registers = registers;
279
+ }
280
+ fetchRegister(register) {
281
+ return this.registers[register];
282
+ }
283
+ loadRegister(register, value) {
284
+ this.registers[register] = value;
285
+ }
286
+ setPc(pc) {
287
+ this.registers[$pc] = pc;
288
+ }
289
+
290
+ // Start a new frame and save $ra and $fp on the stack
291
+ pushFrame() {
292
+ this.stack.push(this.registers[$ra]);
293
+ this.stack.push(this.registers[$fp]);
294
+ this.registers[$fp] = this.registers[$sp] - 1;
295
+ }
296
+
297
+ // Restore $ra, $sp and $fp
298
+ popFrame() {
299
+ this.registers[$sp] = this.registers[$fp] - 1;
300
+ this.registers[$ra] = this.stack.get(0);
301
+ this.registers[$fp] = this.stack.get(1);
302
+ }
303
+ pushSmallFrame() {
304
+ this.stack.push(this.registers[$ra]);
305
+ }
306
+ popSmallFrame() {
307
+ this.registers[$ra] = this.stack.pop();
308
+ }
309
+
310
+ // Jump to an address in `program`
311
+ goto(offset) {
312
+ this.setPc(this.target(offset));
313
+ }
314
+ target(offset) {
315
+ return this.registers[$pc] + offset - this.currentOpSize;
316
+ }
317
+
318
+ // Save $pc into $ra, then jump to a new address in `program` (jal in MIPS)
319
+ call(handle) {
320
+ this.registers[$ra] = this.registers[$pc];
321
+ this.setPc(this.context.program.heap.getaddr(handle));
322
+ }
323
+
324
+ // Put a specific `program` address in $ra
325
+ returnTo(offset) {
326
+ this.registers[$ra] = this.target(offset);
327
+ }
328
+
329
+ // Return to the `program` address stored in $ra
330
+ return() {
331
+ this.setPc(this.registers[$ra]);
332
+ }
333
+ nextStatement() {
334
+ let {
335
+ registers,
336
+ context
337
+ } = this;
338
+ let pc = registers[$pc];
339
+ if (pc === -1) {
340
+ return null;
341
+ }
342
+
343
+ // We have to save off the current operations size so that
344
+ // when we do a jump we can calculate the correct offset
345
+ // to where we are going. We can't simply ask for the size
346
+ // in a jump because we have have already incremented the
347
+ // program counter to the next instruction prior to executing.
348
+ let opcode = context.program.opcode(pc);
349
+ let operationSize = this.currentOpSize = opcode.size;
350
+ this.registers[$pc] += operationSize;
351
+ return opcode;
352
+ }
353
+ evaluateOuter(opcode, vm) {
354
+ {
355
+ this.evaluateInner(opcode, vm);
356
+ }
357
+ }
358
+ evaluateInner(opcode, vm) {
359
+ if (opcode.isMachine) {
360
+ this.evaluateMachine(opcode, vm);
361
+ } else {
362
+ this.evaluateSyscall(opcode, vm);
363
+ }
364
+ }
365
+ evaluateMachine(opcode, vm) {
366
+ switch (opcode.type) {
367
+ case VM_PUSH_FRAME_OP:
368
+ return void this.pushFrame();
369
+ case VM_POP_FRAME_OP:
370
+ return void this.popFrame();
371
+ case VM_INVOKE_STATIC_OP:
372
+ return void this.call(opcode.op1);
373
+ case VM_INVOKE_VIRTUAL_OP:
374
+ return void vm.call(this.stack.pop());
375
+ case VM_JUMP_OP:
376
+ return void this.goto(opcode.op1);
377
+ case VM_RETURN_OP:
378
+ return void vm.return();
379
+ case VM_RETURN_TO_OP:
380
+ return void this.returnTo(opcode.op1);
381
+ }
382
+ }
383
+ evaluateSyscall(opcode, vm) {
384
+ APPEND_OPCODES.evaluate(vm, opcode, opcode.type);
385
+ }
386
+ }
387
+
388
+ class UpdatingVM {
389
+ env;
390
+ dom;
391
+ alwaysRevalidate;
392
+ frameStack = new StackImpl();
393
+ constructor(env, {
394
+ alwaysRevalidate = false
395
+ }) {
396
+ this.env = env;
397
+ this.dom = env.getDOM();
398
+ this.alwaysRevalidate = alwaysRevalidate;
399
+ }
400
+ execute(opcodes, handler) {
401
+ {
402
+ this._execute(opcodes, handler);
403
+ }
404
+ }
405
+ _execute(opcodes, handler) {
406
+ let {
407
+ frameStack
408
+ } = this;
409
+ this.try(opcodes, handler);
410
+ while (!frameStack.isEmpty()) {
411
+ let opcode = this.frame.nextStatement();
412
+ if (opcode === undefined) {
413
+ frameStack.pop();
414
+ continue;
415
+ }
416
+ opcode.evaluate(this);
417
+ }
418
+ }
419
+ get frame() {
420
+ return expect(this.frameStack.current);
421
+ }
422
+ goto(index) {
423
+ this.frame.goto(index);
424
+ }
425
+ try(ops, handler) {
426
+ this.frameStack.push(new UpdatingVMFrame(ops, handler));
427
+ }
428
+ throw() {
429
+ this.frame.handleException();
430
+ this.frameStack.pop();
431
+ }
432
+ }
433
+ class BlockOpcode {
434
+ children;
435
+ bounds;
436
+ constructor(state, context, bounds, children) {
437
+ this.state = state;
438
+ this.context = context;
439
+ this.children = children;
440
+ this.bounds = bounds;
441
+ }
442
+ parentElement() {
443
+ return this.bounds.parentElement();
444
+ }
445
+ firstNode() {
446
+ return this.bounds.firstNode();
447
+ }
448
+ lastNode() {
449
+ return this.bounds.lastNode();
450
+ }
451
+ evaluate(vm) {
452
+ vm.try(this.children, null);
453
+ }
454
+ }
455
+ class TryOpcode extends BlockOpcode {
456
+ type = 'try';
457
+ // Shadows property on base class
458
+
459
+ evaluate(vm) {
460
+ vm.try(this.children, this);
461
+ }
462
+ handleException() {
463
+ let {
464
+ state,
465
+ bounds,
466
+ context: {
467
+ env
468
+ }
469
+ } = this;
470
+ destroyChildren(this);
471
+ let tree = NewTreeBuilder.resume(env, bounds);
472
+ let vm = state.evaluate(tree);
473
+ let children = this.children = [];
474
+ let result = vm.execute(vm => {
475
+ vm.updateWith(this);
476
+ vm.pushUpdating(children);
477
+ });
478
+ associateDestroyableChild(this, result.drop);
479
+ }
480
+ }
481
+ class ListItemOpcode extends TryOpcode {
482
+ retained = false;
483
+ index = -1;
484
+ constructor(state, context, bounds, key, memo, value) {
485
+ super(state, context, bounds, []);
486
+ this.key = key;
487
+ this.memo = memo;
488
+ this.value = value;
489
+ }
490
+ shouldRemove() {
491
+ return !this.retained;
492
+ }
493
+ reset() {
494
+ this.retained = false;
495
+ }
496
+ }
497
+ class ListBlockOpcode extends BlockOpcode {
498
+ type = 'list-block';
499
+ opcodeMap = new Map();
500
+ marker = null;
501
+ lastIterator;
502
+ constructor(state, context, bounds, children, iterableRef) {
503
+ super(state, context, bounds, children);
504
+ this.iterableRef = iterableRef;
505
+ this.lastIterator = valueForRef(iterableRef);
506
+ }
507
+ initializeChild(opcode) {
508
+ opcode.index = this.children.length - 1;
509
+ this.opcodeMap.set(opcode.key, opcode);
510
+ }
511
+ evaluate(vm) {
512
+ let iterator = valueForRef(this.iterableRef);
513
+ if (this.lastIterator !== iterator) {
514
+ let {
515
+ bounds
516
+ } = this;
517
+ let {
518
+ dom
519
+ } = vm;
520
+ let marker = this.marker = dom.createComment('');
521
+ dom.insertAfter(bounds.parentElement(), marker, expect(bounds.lastNode()));
522
+ this.sync(iterator);
523
+ this.parentElement().removeChild(marker);
524
+ this.marker = null;
525
+ this.lastIterator = iterator;
526
+ }
527
+
528
+ // Run now-updated updating opcodes
529
+ super.evaluate(vm);
530
+ }
531
+ sync(iterator) {
532
+ let {
533
+ opcodeMap: itemMap,
534
+ children
535
+ } = this;
536
+ let currentOpcodeIndex = 0;
537
+ let seenIndex = 0;
538
+ this.children = this.bounds.boundList = [];
539
+ while (true) {
540
+ let item = iterator.next();
541
+ if (item === null) break;
542
+ let opcode = children[currentOpcodeIndex];
543
+ let {
544
+ key
545
+ } = item;
546
+
547
+ // Items that have already been found and moved will already be retained,
548
+ // we can continue until we find the next unretained item
549
+ while (opcode !== undefined && opcode.retained) {
550
+ opcode = children[++currentOpcodeIndex];
551
+ }
552
+ if (opcode !== undefined && opcode.key === key) {
553
+ this.retainItem(opcode, item);
554
+ currentOpcodeIndex++;
555
+ } else if (itemMap.has(key)) {
556
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
557
+ let itemOpcode = itemMap.get(key);
558
+
559
+ // The item opcode was seen already, so we should move it.
560
+ if (itemOpcode.index < seenIndex) {
561
+ this.moveItem(itemOpcode, item, opcode);
562
+ } else {
563
+ // Update the seen index, we are going to be moving this item around
564
+ // so any other items that come before it will likely need to move as
565
+ // well.
566
+ seenIndex = itemOpcode.index;
567
+ let seenUnretained = false;
568
+
569
+ // iterate through all of the opcodes between the current position and
570
+ // the position of the item's opcode, and determine if they are all
571
+ // retained.
572
+ for (let i = currentOpcodeIndex + 1; i < seenIndex; i++) {
573
+ if (!unwrap(children[i]).retained) {
574
+ seenUnretained = true;
575
+ break;
576
+ }
577
+ }
578
+
579
+ // If we have seen only retained opcodes between this and the matching
580
+ // opcode, it means that all the opcodes in between have been moved
581
+ // already, and we can safely retain this item's opcode.
582
+ if (!seenUnretained) {
583
+ this.retainItem(itemOpcode, item);
584
+ currentOpcodeIndex = seenIndex + 1;
585
+ } else {
586
+ this.moveItem(itemOpcode, item, opcode);
587
+ currentOpcodeIndex++;
588
+ }
589
+ }
590
+ } else {
591
+ this.insertItem(item, opcode);
592
+ }
593
+ }
594
+ for (const opcode of children) {
595
+ if (!opcode.retained) {
596
+ this.deleteItem(opcode);
597
+ } else {
598
+ opcode.reset();
599
+ }
600
+ }
601
+ }
602
+ retainItem(opcode, item) {
603
+ let {
604
+ children
605
+ } = this;
606
+ updateRef(opcode.memo, item.memo);
607
+ updateRef(opcode.value, item.value);
608
+ opcode.retained = true;
609
+ opcode.index = children.length;
610
+ children.push(opcode);
611
+ }
612
+ insertItem(item, before) {
613
+ let {
614
+ opcodeMap,
615
+ bounds,
616
+ state,
617
+ children,
618
+ context: {
619
+ env
620
+ }
621
+ } = this;
622
+ let {
623
+ key
624
+ } = item;
625
+ let nextSibling = before === undefined ? this.marker : before.firstNode();
626
+ let elementStack = NewTreeBuilder.forInitialRender(env, {
627
+ element: bounds.parentElement(),
628
+ nextSibling
629
+ });
630
+ let vm = state.evaluate(elementStack);
631
+ vm.execute(vm => {
632
+ let opcode = vm.enterItem(item);
633
+ opcode.index = children.length;
634
+ children.push(opcode);
635
+ opcodeMap.set(key, opcode);
636
+ associateDestroyableChild(this, opcode);
637
+ });
638
+ }
639
+ moveItem(opcode, item, before) {
640
+ let {
641
+ children
642
+ } = this;
643
+ updateRef(opcode.memo, item.memo);
644
+ updateRef(opcode.value, item.value);
645
+ opcode.retained = true;
646
+ let currentSibling, nextSibling;
647
+ if (before === undefined) {
648
+ move(opcode, this.marker);
649
+ } else {
650
+ currentSibling = opcode.lastNode().nextSibling;
651
+ nextSibling = before.firstNode();
652
+
653
+ // Items are moved throughout the algorithm, so there are cases where the
654
+ // the items already happen to be siblings (e.g. an item in between was
655
+ // moved before this move happened). Check to see if they are siblings
656
+ // first before doing the move.
657
+ if (currentSibling !== nextSibling) {
658
+ move(opcode, nextSibling);
659
+ }
660
+ }
661
+ opcode.index = children.length;
662
+ children.push(opcode);
663
+ }
664
+ deleteItem(opcode) {
665
+ destroy(opcode);
666
+ clear(opcode);
667
+ this.opcodeMap.delete(opcode.key);
668
+ }
669
+ }
670
+ class UpdatingVMFrame {
671
+ current = 0;
672
+ constructor(ops, exceptionHandler) {
673
+ this.ops = ops;
674
+ this.exceptionHandler = exceptionHandler;
675
+ }
676
+ goto(index) {
677
+ this.current = index;
678
+ }
679
+ nextStatement() {
680
+ return this.ops[this.current++];
681
+ }
682
+ handleException() {
683
+ if (this.exceptionHandler) {
684
+ this.exceptionHandler.handleException();
685
+ }
686
+ }
687
+ }
688
+
689
+ class RenderResultImpl {
690
+ constructor(env, updating, bounds, drop) {
691
+ this.env = env;
692
+ this.updating = updating;
693
+ this.bounds = bounds;
694
+ this.drop = drop;
695
+ associateDestroyableChild(this, drop);
696
+ registerDestructor(this, () => clear(this.bounds));
697
+ }
698
+ rerender({
699
+ alwaysRevalidate = false
700
+ } = {
701
+ alwaysRevalidate: false
702
+ }) {
703
+ let {
704
+ env,
705
+ updating
706
+ } = this;
707
+ let vm = new UpdatingVM(env, {
708
+ alwaysRevalidate
709
+ });
710
+ vm.execute(updating, this);
711
+ }
712
+ parentElement() {
713
+ return this.bounds.parentElement();
714
+ }
715
+ firstNode() {
716
+ return this.bounds.firstNode();
717
+ }
718
+ lastNode() {
719
+ return this.bounds.lastNode();
720
+ }
721
+ handleException() {
722
+ }
723
+ }
724
+
725
+ class EvaluationStackImpl {
726
+ static restore(snapshot, pc) {
727
+ const stack = new this(snapshot.slice(), initializeRegistersWithSP(snapshot.length - 1));
728
+ stack.registers[$pc] = pc;
729
+ stack.registers[$sp] = snapshot.length - 1;
730
+ stack.registers[$fp] = -1;
731
+ return stack;
732
+ }
733
+ registers;
734
+
735
+ // fp -> sp
736
+ constructor(stack = [], registers) {
737
+ this.stack = stack;
738
+ this.registers = registers;
739
+ }
740
+ push(value) {
741
+ this.stack[++this.registers[$sp]] = value;
742
+ }
743
+ dup(position = this.registers[$sp]) {
744
+ this.stack[++this.registers[$sp]] = this.stack[position];
745
+ }
746
+ copy(from, to) {
747
+ this.stack[to] = this.stack[from];
748
+ }
749
+ pop(n = 1) {
750
+ let top = this.stack[this.registers[$sp]];
751
+ this.registers[$sp] -= n;
752
+ return top;
753
+ }
754
+ peek(offset = 0) {
755
+ return this.stack[this.registers[$sp] - offset];
756
+ }
757
+ get(offset, base = this.registers[$fp]) {
758
+ return this.stack[base + offset];
759
+ }
760
+ set(value, offset, base = this.registers[$fp]) {
761
+ this.stack[base + offset] = value;
762
+ }
763
+ slice(start, end) {
764
+ return this.stack.slice(start, end);
765
+ }
766
+ capture(items) {
767
+ let end = this.registers[$sp] + 1;
768
+ let start = end - items;
769
+ return this.stack.slice(start, end);
770
+ }
771
+ reset() {
772
+ this.stack.length = 0;
773
+ }
774
+ static {
775
+ }
776
+ }
777
+
778
+ class Stacks {
779
+ drop = {};
780
+ scope = new StackImpl();
781
+ dynamicScope = new StackImpl();
782
+ updating = new StackImpl();
783
+ cache = new StackImpl();
784
+ list = new StackImpl();
785
+ destroyable = new StackImpl();
786
+ constructor(scope, dynamicScope) {
787
+ this.scope.push(scope);
788
+ this.dynamicScope.push(dynamicScope);
789
+ this.destroyable.push(this.drop);
790
+ }
791
+ }
792
+ class VM {
793
+ #stacks;
794
+ args;
795
+ lowlevel;
796
+ debug;
797
+ trace;
798
+ get stack() {
799
+ return this.lowlevel.stack;
800
+ }
801
+
802
+ /* Registers */
803
+
804
+ get pc() {
805
+ return this.lowlevel.fetchRegister($pc);
806
+ }
807
+ #registers = [null, null, null, null, null, null, null, null, null];
808
+
809
+ /**
810
+ * Fetch a value from a syscall register onto the stack.
811
+ *
812
+ * ## Opcodes
813
+ *
814
+ * - Append: `Fetch`
815
+ *
816
+ * ## State changes
817
+ *
818
+ * [!] push Eval Stack <- $register
819
+ */
820
+ fetch(register) {
821
+ let value = this.fetchValue(register);
822
+ this.stack.push(value);
823
+ }
824
+
825
+ /**
826
+ * Load a value from the stack into a syscall register.
827
+ *
828
+ * ## Opcodes
829
+ *
830
+ * - Append: `Load`
831
+ *
832
+ * ## State changes
833
+ *
834
+ * [!] pop Eval Stack -> `value`
835
+ * [$] $register <- `value`
836
+ */
837
+ load(register) {
838
+ let value = this.stack.pop();
839
+ this.loadValue(register, value);
840
+ }
841
+
842
+ /**
843
+ * Load a value into a syscall register.
844
+ *
845
+ * ## State changes
846
+ *
847
+ * [$] $register <- `value`
848
+ *
849
+ * @utility
850
+ */
851
+ loadValue(register, value) {
852
+ this.#registers[register] = value;
853
+ }
854
+
855
+ /**
856
+ * Fetch a value from a register (machine or syscall).
857
+ *
858
+ * ## State changes
859
+ *
860
+ * [ ] get $register
861
+ *
862
+ * @utility
863
+ */
864
+
865
+ fetchValue(register) {
866
+ if (isLowLevelRegister(register)) {
867
+ return this.lowlevel.fetchRegister(register);
868
+ }
869
+ return this.#registers[register];
870
+ }
871
+
872
+ // Save $pc into $ra, then jump to a new address in `program` (jal in MIPS)
873
+ call(handle) {
874
+ if (handle !== null) {
875
+ this.lowlevel.call(handle);
876
+ }
877
+ }
878
+
879
+ // Return to the `program` address stored in $ra
880
+ return() {
881
+ this.lowlevel.return();
882
+ }
883
+ #tree;
884
+ context;
885
+ constructor({
886
+ scope,
887
+ dynamicScope,
888
+ stack,
889
+ pc
890
+ }, context, tree) {
891
+ let evalStack = EvaluationStackImpl.restore(stack, pc);
892
+ this.#tree = tree;
893
+ this.context = context;
894
+ this.#stacks = new Stacks(scope, dynamicScope);
895
+ this.args = new VMArgumentsImpl();
896
+ this.lowlevel = new LowLevelVM(evalStack, context, externs(), evalStack.registers);
897
+ this.pushUpdating();
898
+ }
899
+ static initial(context, options) {
900
+ let scope = ScopeImpl.root(options.owner, options.scope ?? {
901
+ self: UNDEFINED_REFERENCE,
902
+ size: 0
903
+ });
904
+ const state = closureState(context.program.heap.getaddr(options.handle), scope, options.dynamicScope);
905
+ return new VM(state, context, options.tree);
906
+ }
907
+ compile(block) {
908
+ let handle = unwrapHandle(block.compile(this.context));
909
+ return handle;
910
+ }
911
+ get constants() {
912
+ return this.context.program.constants;
913
+ }
914
+ get program() {
915
+ return this.context.program;
916
+ }
917
+ get env() {
918
+ return this.context.env;
919
+ }
920
+ captureClosure(args, pc = this.lowlevel.fetchRegister($pc)) {
921
+ return {
922
+ pc,
923
+ scope: this.scope(),
924
+ dynamicScope: this.dynamicScope(),
925
+ stack: this.stack.capture(args)
926
+ };
927
+ }
928
+ capture(args, pc = this.lowlevel.fetchRegister($pc)) {
929
+ return new Closure(this.captureClosure(args, pc), this.context);
930
+ }
931
+
932
+ /**
933
+ * ## Opcodes
934
+ *
935
+ * - Append: `BeginComponentTransaction`
936
+ *
937
+ * ## State Changes
938
+ *
939
+ * [ ] create `guard` (`JumpIfNotModifiedOpcode`)
940
+ * [ ] create `tracker` (`BeginTrackFrameOpcode`)
941
+ * [!] push Updating Stack <- `guard`
942
+ * [!] push Updating Stack <- `tracker`
943
+ * [!] push Cache Stack <- `guard`
944
+ * [!] push Tracking Stack
945
+ */
946
+ beginCacheGroup(name) {
947
+ let opcodes = this.updating();
948
+ let guard = new JumpIfNotModifiedOpcode();
949
+ opcodes.push(guard);
950
+ opcodes.push(new BeginTrackFrameOpcode(name));
951
+ this.#stacks.cache.push(guard);
952
+ beginTrackFrame();
953
+ }
954
+
955
+ /**
956
+ * ## Opcodes
957
+ *
958
+ * - Append: `CommitComponentTransaction`
959
+ *
960
+ * ## State Changes
961
+ *
962
+ * Create a new `EndTrackFrameOpcode` (`end`)
963
+ *
964
+ * [!] pop CacheStack -> `guard`
965
+ * [!] pop Tracking Stack -> `tag`
966
+ * [ ] create `end` (`EndTrackFrameOpcode`) with `guard`
967
+ * [-] consume `tag`
968
+ */
969
+ commitCacheGroup() {
970
+ let opcodes = this.updating();
971
+ let guard = expect(this.#stacks.cache.pop());
972
+ let tag = endTrackFrame();
973
+ opcodes.push(new EndTrackFrameOpcode(guard));
974
+ guard.finalize(tag, opcodes.length);
975
+ }
976
+
977
+ /**
978
+ * ## Opcodes
979
+ *
980
+ * - Append: `Enter`
981
+ *
982
+ * ## State changes
983
+ *
984
+ * [!] push Element Stack as `block`
985
+ * [ ] create `try` (`TryOpcode`) with `block`, capturing `args` from the Eval Stack
986
+ *
987
+ * Did Enter (`try`):
988
+ * [-] associate destroyable `try`
989
+ * [!] push Destroyable Stack <- `try`
990
+ * [!] push Updating List <- `try`
991
+ * [!] push Updating Stack <- `try.children`
992
+ */
993
+ enter(args) {
994
+ let updating = [];
995
+ let state = this.capture(args);
996
+ let block = this.tree().pushResettableBlock();
997
+ let tryOpcode = new TryOpcode(state, this.context, block, updating);
998
+ this.didEnter(tryOpcode);
999
+ }
1000
+
1001
+ /**
1002
+ * ## Opcodes
1003
+ *
1004
+ * - Append: `Iterate`
1005
+ * - Update: `ListBlock`
1006
+ *
1007
+ * ## State changes
1008
+ *
1009
+ * Create a new ref for the iterator item (`value`).
1010
+ * Create a new ref for the iterator key (`key`).
1011
+ *
1012
+ * [ ] create `valueRef` (`Reference`) from `value`
1013
+ * [ ] create `keyRef` (`Reference`) from `key`
1014
+ * [!] push Eval Stack <- `valueRef`
1015
+ * [!] push Eval Stack <- `keyRef`
1016
+ * [!] push Element Stack <- `UpdatableBlock` as `block`
1017
+ * [ ] capture `closure` with *2* items from the Eval Stack
1018
+ * [ ] create `iteration` (`ListItemOpcode`) with `closure`, `block`, `key`, `keyRef` and `valueRef`
1019
+ *
1020
+ * Did Enter (`iteration`):
1021
+ * [-] associate destroyable `iteration`
1022
+ * [!] push Destroyable Stack <- `iteration`
1023
+ * [!] push Updating List <- `iteration`
1024
+ * [!] push Updating Stack <- `iteration.children`
1025
+ */
1026
+ enterItem({
1027
+ key,
1028
+ value,
1029
+ memo
1030
+ }) {
1031
+ let {
1032
+ stack
1033
+ } = this;
1034
+ let valueRef = createIteratorItemRef(value);
1035
+ let memoRef = createIteratorItemRef(memo);
1036
+ stack.push(valueRef);
1037
+ stack.push(memoRef);
1038
+ let state = this.capture(2);
1039
+ let block = this.tree().pushResettableBlock();
1040
+ let opcode = new ListItemOpcode(state, this.context, block, key, memoRef, valueRef);
1041
+ this.didEnter(opcode);
1042
+ return opcode;
1043
+ }
1044
+ registerItem(opcode) {
1045
+ this.listBlock().initializeChild(opcode);
1046
+ }
1047
+
1048
+ /**
1049
+ * ## Opcodes
1050
+ *
1051
+ * - Append: `EnterList`
1052
+ *
1053
+ * ## State changes
1054
+ *
1055
+ * [ ] capture `closure` with *0* items from the Eval Stack, and `$pc` from `offset`
1056
+ * [ ] create `updating` (empty `Array`)
1057
+ * [!] push Element Stack <- `list` (`BlockList`) with `updating`
1058
+ * [ ] create `list` (`ListBlockOpcode`) with `closure`, `list`, `updating` and `iterableRef`
1059
+ * [!] push List Stack <- `list`
1060
+ *
1061
+ * Did Enter (`list`):
1062
+ * [-] associate destroyable `list`
1063
+ * [!] push Destroyable Stack <- `list`
1064
+ * [!] push Updating List <- `list`
1065
+ * [!] push Updating Stack <- `list.children`
1066
+ */
1067
+ enterList(iterableRef, offset) {
1068
+ let updating = [];
1069
+ let addr = this.lowlevel.target(offset);
1070
+ let state = this.capture(0, addr);
1071
+ let list = this.tree().pushBlockList(updating);
1072
+ let opcode = new ListBlockOpcode(state, this.context, list, updating, iterableRef);
1073
+ this.#stacks.list.push(opcode);
1074
+ this.didEnter(opcode);
1075
+ }
1076
+
1077
+ /**
1078
+ * ## Opcodes
1079
+ *
1080
+ * - Append: `Enter`
1081
+ * - Append: `Iterate`
1082
+ * - Append: `EnterList`
1083
+ * - Update: `ListBlock`
1084
+ *
1085
+ * ## State changes
1086
+ *
1087
+ * [-] associate destroyable `opcode`
1088
+ * [!] push Destroyable Stack <- `opcode`
1089
+ * [!] push Updating List <- `opcode`
1090
+ * [!] push Updating Stack <- `opcode.children`
1091
+ *
1092
+ */
1093
+ didEnter(opcode) {
1094
+ this.associateDestroyable(opcode);
1095
+ this.#stacks.destroyable.push(opcode);
1096
+ this.updateWith(opcode);
1097
+ this.pushUpdating(opcode.children);
1098
+ }
1099
+
1100
+ /**
1101
+ * ## Opcodes
1102
+ *
1103
+ * - Append: `Exit`
1104
+ * - Append: `ExitList`
1105
+ *
1106
+ * ## State changes
1107
+ *
1108
+ * [!] pop Destroyable Stack
1109
+ * [!] pop Element Stack
1110
+ * [!] pop Updating Stack
1111
+ */
1112
+ exit() {
1113
+ this.#stacks.destroyable.pop();
1114
+ this.#tree.popBlock();
1115
+ this.popUpdating();
1116
+ }
1117
+
1118
+ /**
1119
+ * ## Opcodes
1120
+ *
1121
+ * - Append: `ExitList`
1122
+ *
1123
+ * ## State changes
1124
+ *
1125
+ * Pop List:
1126
+ * [!] pop Destroyable Stack
1127
+ * [!] pop Element Stack
1128
+ * [!] pop Updating Stack
1129
+ *
1130
+ * [!] pop List Stack
1131
+ */
1132
+ exitList() {
1133
+ this.exit();
1134
+ this.#stacks.list.pop();
1135
+ }
1136
+
1137
+ /**
1138
+ * ## Opcodes
1139
+ *
1140
+ * - Append: `RootScope`
1141
+ * - Append: `VirtualRootScope`
1142
+ *
1143
+ * ## State changes
1144
+ *
1145
+ * [!] push Scope Stack
1146
+ */
1147
+ pushRootScope(size, owner) {
1148
+ let scope = ScopeImpl.sized(owner, size);
1149
+ this.#stacks.scope.push(scope);
1150
+ return scope;
1151
+ }
1152
+
1153
+ /**
1154
+ * ## Opcodes
1155
+ *
1156
+ * - Append: `ChildScope`
1157
+ *
1158
+ * ## State changes
1159
+ *
1160
+ * [!] push Scope Stack <- `child` of current Scope
1161
+ */
1162
+ pushChildScope() {
1163
+ this.#stacks.scope.push(this.scope().child());
1164
+ }
1165
+
1166
+ /**
1167
+ * ## Opcodes
1168
+ *
1169
+ * - Append: `Yield`
1170
+ *
1171
+ * ## State changes
1172
+ *
1173
+ * [!] push Scope Stack <- `scope`
1174
+ */
1175
+ pushScope(scope) {
1176
+ this.#stacks.scope.push(scope);
1177
+ }
1178
+
1179
+ /**
1180
+ * ## Opcodes
1181
+ *
1182
+ * - Append: `PopScope`
1183
+ *
1184
+ * ## State changes
1185
+ *
1186
+ * [!] pop Scope Stack
1187
+ */
1188
+ popScope() {
1189
+ this.#stacks.scope.pop();
1190
+ }
1191
+
1192
+ /**
1193
+ * ## Opcodes
1194
+ *
1195
+ * - Append: `PushDynamicScope`
1196
+ *
1197
+ * ## State changes:
1198
+ *
1199
+ * [!] push Dynamic Scope Stack <- child of current Dynamic Scope
1200
+ */
1201
+ pushDynamicScope() {
1202
+ let child = this.dynamicScope().child();
1203
+ this.#stacks.dynamicScope.push(child);
1204
+ return child;
1205
+ }
1206
+
1207
+ /**
1208
+ * ## Opcodes
1209
+ *
1210
+ * - Append: `BindDynamicScope`
1211
+ *
1212
+ * ## State changes:
1213
+ *
1214
+ * [!] pop Dynamic Scope Stack `names.length` times
1215
+ */
1216
+ bindDynamicScope(names) {
1217
+ let scope = this.dynamicScope();
1218
+ for (const name of reverse(names)) {
1219
+ scope.set(name, this.stack.pop());
1220
+ }
1221
+ }
1222
+
1223
+ /**
1224
+ * ## State changes
1225
+ *
1226
+ * - [!] push Updating Stack
1227
+ *
1228
+ * @utility
1229
+ */
1230
+ pushUpdating(list = []) {
1231
+ this.#stacks.updating.push(list);
1232
+ }
1233
+
1234
+ /**
1235
+ * ## State changes
1236
+ *
1237
+ * [!] pop Updating Stack
1238
+ *
1239
+ * @utility
1240
+ */
1241
+ popUpdating() {
1242
+ return expect(this.#stacks.updating.pop());
1243
+ }
1244
+
1245
+ /**
1246
+ * ## State changes
1247
+ *
1248
+ * [!] push Updating List
1249
+ *
1250
+ * @utility
1251
+ */
1252
+ updateWith(opcode) {
1253
+ this.updating().push(opcode);
1254
+ }
1255
+ listBlock() {
1256
+ return expect(this.#stacks.list.current);
1257
+ }
1258
+
1259
+ /**
1260
+ * ## State changes
1261
+ *
1262
+ * [-] associate destroyable `child`
1263
+ *
1264
+ * @utility
1265
+ */
1266
+ associateDestroyable(child) {
1267
+ let parent = expect(this.#stacks.destroyable.current);
1268
+ associateDestroyableChild(parent, child);
1269
+ }
1270
+ updating() {
1271
+ return expect(this.#stacks.updating.current);
1272
+ }
1273
+
1274
+ /**
1275
+ * Get Tree Builder
1276
+ */
1277
+ tree() {
1278
+ return this.#tree;
1279
+ }
1280
+
1281
+ /**
1282
+ * Get current Scope
1283
+ */
1284
+ scope() {
1285
+ return expect(this.#stacks.scope.current);
1286
+ }
1287
+
1288
+ /**
1289
+ * Get current Dynamic Scope
1290
+ */
1291
+ dynamicScope() {
1292
+ return expect(this.#stacks.dynamicScope.current);
1293
+ }
1294
+ popDynamicScope() {
1295
+ this.#stacks.dynamicScope.pop();
1296
+ }
1297
+
1298
+ /// SCOPE HELPERS
1299
+
1300
+ getOwner() {
1301
+ return this.scope().owner;
1302
+ }
1303
+
1304
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1305
+ getSelf() {
1306
+ return this.scope().getSelf();
1307
+ }
1308
+ referenceForSymbol(symbol) {
1309
+ return this.scope().getSymbol(symbol);
1310
+ }
1311
+
1312
+ /// EXECUTION
1313
+
1314
+ execute(initialize) {
1315
+ {
1316
+ return this._execute(initialize);
1317
+ }
1318
+ }
1319
+ _execute(initialize) {
1320
+ if (initialize) initialize(this);
1321
+ let result;
1322
+ do result = this.next(); while (!result.done);
1323
+ return result.value;
1324
+ }
1325
+ next() {
1326
+ let {
1327
+ env
1328
+ } = this;
1329
+ let opcode = this.lowlevel.nextStatement();
1330
+ let result;
1331
+ if (opcode !== null) {
1332
+ this.lowlevel.evaluateOuter(opcode, this);
1333
+ result = {
1334
+ done: false,
1335
+ value: null
1336
+ };
1337
+ } else {
1338
+ // Unload the stack
1339
+ this.stack.reset();
1340
+ result = {
1341
+ done: true,
1342
+ value: new RenderResultImpl(env, this.popUpdating(), this.#tree.popBlock(), this.#stacks.drop)
1343
+ };
1344
+ }
1345
+ return result;
1346
+ }
1347
+ }
1348
+ function closureState(pc, scope, dynamicScope) {
1349
+ return {
1350
+ pc,
1351
+ scope,
1352
+ dynamicScope,
1353
+ stack: []
1354
+ };
1355
+ }
1356
+ /**
1357
+ * A closure captures the state of the VM for a particular block of code that is necessary to
1358
+ * re-invoke the block in the future.
1359
+ *
1360
+ * In practice, this allows us to clear the previous render and "replay" the block's execution,
1361
+ * rendering content in the same position as the first render.
1362
+ */
1363
+ class Closure {
1364
+ state;
1365
+ context;
1366
+ constructor(state, context) {
1367
+ this.state = state;
1368
+ this.context = context;
1369
+ }
1370
+ evaluate(tree) {
1371
+ return new VM(this.state, this.context, tree);
1372
+ }
1373
+ }
1374
+
1375
+ class TemplateIteratorImpl {
1376
+ constructor(vm) {
1377
+ this.vm = vm;
1378
+ }
1379
+ next() {
1380
+ return this.vm.next();
1381
+ }
1382
+ sync() {
1383
+ {
1384
+ return this.vm.execute();
1385
+ }
1386
+ }
1387
+ }
1388
+ function renderSync(env, iterator) {
1389
+ let result;
1390
+ inTransaction(env, () => result = iterator.sync());
1391
+
1392
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
1393
+ return result;
1394
+ }
1395
+ function renderMain(context, owner, self, tree, layout, dynamicScope = new DynamicScopeImpl()) {
1396
+ let handle = unwrapHandle(layout.compile(context));
1397
+ let numSymbols = layout.symbolTable.symbols.length;
1398
+ let vm = VM.initial(context, {
1399
+ scope: {
1400
+ self,
1401
+ size: numSymbols
1402
+ },
1403
+ dynamicScope,
1404
+ tree,
1405
+ handle,
1406
+ owner
1407
+ });
1408
+ return new TemplateIteratorImpl(vm);
1409
+ }
1410
+ function renderInvocation(vm, context, owner, definition, args) {
1411
+ // Get a list of tuples of argument names and references, like
1412
+ // [['title', reference], ['name', reference]]
1413
+ const argList = Object.keys(args).map(key => [key, args[key]]);
1414
+ const blockNames = ['main', 'else', 'attrs'];
1415
+ // Prefix argument names with `@` symbol
1416
+ const argNames = argList.map(([name]) => `@${name}`);
1417
+ let reified = vm.constants.component(definition, owner, undefined, '{ROOT}');
1418
+ vm.lowlevel.pushFrame();
1419
+
1420
+ // Push blocks on to the stack, three stack values per block
1421
+ for (let i = 0; i < 3 * blockNames.length; i++) {
1422
+ vm.stack.push(null);
1423
+ }
1424
+ vm.stack.push(null);
1425
+
1426
+ // For each argument, push its backing reference on to the stack
1427
+ argList.forEach(([, reference]) => {
1428
+ vm.stack.push(reference);
1429
+ });
1430
+
1431
+ // Configure VM based on blocks and args just pushed on to the stack.
1432
+ vm.args.setup(vm.stack, argNames, blockNames, 0, true);
1433
+ const compilable = expect(reified.compilable);
1434
+ const layoutHandle = unwrapHandle(compilable.compile(context));
1435
+ const invocation = {
1436
+ handle: layoutHandle,
1437
+ symbolTable: compilable.symbolTable
1438
+ };
1439
+
1440
+ // Needed for the Op.Main opcode: arguments, component invocation object, and
1441
+ // component definition.
1442
+ vm.stack.push(vm.args);
1443
+ vm.stack.push(invocation);
1444
+ vm.stack.push(reified);
1445
+ return new TemplateIteratorImpl(vm);
1446
+ }
1447
+ function renderComponent(context, tree, owner, definition, args = {}, dynamicScope = new DynamicScopeImpl()) {
1448
+ let vm = VM.initial(context, {
1449
+ tree,
1450
+ handle: context.stdlib.main,
1451
+ dynamicScope,
1452
+ owner
1453
+ });
1454
+ return renderInvocation(vm, context, owner, definition, recordToReference(args));
1455
+ }
1456
+ function recordToReference(record) {
1457
+ const root = createConstRef(record);
1458
+ return Object.keys(record).reduce((acc, key) => {
1459
+ acc[key] = childRefFor(root, key);
1460
+ return acc;
1461
+ }, {});
1462
+ }
1463
+
1464
+ export { DynamicScopeImpl as D, EnvironmentImpl as E, LowLevelVM as L, ScopeImpl as S, UpdatingVM as U, renderMain as a, renderSync as b, runtimeOptions as c, inTransaction as i, renderComponent as r };