ember-source 7.1.0-alpha.4 → 7.1.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 (499) hide show
  1. package/build-metadata.json +3 -3
  2. package/dist/dev/packages/@ember/-internals/container/index.js +4 -401
  3. package/dist/dev/packages/@ember/-internals/deprecations/index.js +1 -1
  4. package/dist/dev/packages/@ember/-internals/environment/index.js +3 -161
  5. package/dist/dev/packages/@ember/-internals/glimmer/index.js +14 -15
  6. package/dist/dev/packages/@ember/-internals/meta/lib/meta.js +0 -1
  7. package/dist/dev/packages/@ember/-internals/metal/index.js +18 -9
  8. package/dist/dev/packages/@ember/-internals/routing/index.js +1 -10
  9. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +10 -12
  10. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -10
  11. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +3 -10
  12. package/dist/dev/packages/@ember/-internals/string/index.js +0 -1
  13. package/dist/dev/packages/@ember/-internals/utils/index.js +8 -3
  14. package/dist/dev/packages/@ember/-internals/views/index.js +0 -1
  15. package/dist/dev/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +0 -1
  16. package/dist/dev/packages/@ember/-internals/views/lib/mixins/action_support.js +3 -12
  17. package/dist/dev/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -11
  18. package/dist/dev/packages/@ember/-internals/views/lib/system/utils.js +1 -1
  19. package/dist/dev/packages/@ember/-internals/views/lib/views/core_view.js +2 -19
  20. package/dist/dev/packages/@ember/-internals/views/lib/views/states.js +1 -1
  21. package/dist/dev/packages/@ember/application/index.js +5 -28
  22. package/dist/dev/packages/@ember/application/instance.js +3 -22
  23. package/dist/dev/packages/@ember/application/namespace.js +4 -11
  24. package/dist/dev/packages/@ember/array/index.js +7 -15
  25. package/dist/dev/packages/@ember/array/proxy.js +10 -14
  26. package/dist/dev/packages/@ember/canary-features/index.js +1 -1
  27. package/dist/dev/packages/@ember/component/helper.js +1 -14
  28. package/dist/dev/packages/@ember/component/index.js +1356 -17
  29. package/dist/dev/packages/@ember/component/template-only.js +1 -9
  30. package/dist/dev/packages/@ember/controller/index.js +3 -19
  31. package/dist/dev/packages/@ember/debug/container-debug-adapter.js +0 -19
  32. package/dist/dev/packages/@ember/debug/data-adapter.js +4 -11
  33. package/dist/dev/packages/@ember/debug/index.js +1 -1
  34. package/dist/dev/packages/@ember/debug/lib/deprecate.js +1 -1
  35. package/dist/dev/packages/@ember/engine/index.js +3 -31
  36. package/dist/dev/packages/@ember/engine/instance.js +3 -8
  37. package/dist/dev/packages/@ember/helper/index.js +159 -21
  38. package/dist/dev/packages/@ember/instrumentation/index.js +1 -1
  39. package/dist/dev/packages/@ember/modifier/index.js +2 -16
  40. package/dist/dev/packages/@ember/modifier/on.js +1 -9
  41. package/dist/dev/packages/@ember/object/-internals.js +3 -11
  42. package/dist/dev/packages/@ember/object/compat.js +3 -10
  43. package/dist/dev/packages/@ember/object/computed.js +2 -12
  44. package/dist/dev/packages/@ember/object/core.js +10 -18
  45. package/dist/dev/packages/@ember/object/evented.js +2 -12
  46. package/dist/dev/packages/@ember/object/events.js +1 -11
  47. package/dist/dev/packages/@ember/object/index.js +10 -14
  48. package/dist/dev/packages/@ember/object/internals.js +1 -1
  49. package/dist/dev/packages/@ember/object/lib/computed/computed_macros.js +6 -23
  50. package/dist/dev/packages/@ember/object/lib/computed/reduce_computed_macros.js +3 -12
  51. package/dist/dev/packages/@ember/object/mixin.js +7 -10
  52. package/dist/dev/packages/@ember/object/observable.js +8 -12
  53. package/dist/dev/packages/@ember/object/observers.js +1 -11
  54. package/dist/dev/packages/@ember/object/promise-proxy-mixin.js +3 -13
  55. package/dist/dev/packages/@ember/object/proxy.js +0 -7
  56. package/dist/dev/packages/@ember/reactive/collections.js +591 -1
  57. package/dist/dev/packages/@ember/renderer/index.js +1 -14
  58. package/dist/dev/packages/@ember/routing/-internals.js +1 -10
  59. package/dist/dev/packages/@ember/routing/index.js +614 -14
  60. package/dist/dev/packages/@ember/routing/lib/generate_controller.js +2 -11
  61. package/dist/dev/packages/@ember/routing/lib/routing-service.js +7 -17
  62. package/dist/dev/packages/@ember/routing/lib/utils.js +2 -11
  63. package/dist/dev/packages/@ember/routing/route.js +13 -24
  64. package/dist/dev/packages/@ember/routing/router-service.js +9 -18
  65. package/dist/dev/packages/@ember/routing/router.js +5 -21
  66. package/dist/dev/packages/@ember/runloop/index.js +1 -10
  67. package/dist/dev/packages/@ember/service/index.js +1 -11
  68. package/dist/dev/packages/@ember/template/index.js +1 -14
  69. package/dist/dev/packages/@ember/template-compiler/lib/compile-options.js +12 -15
  70. package/dist/dev/packages/@ember/template-compiler/lib/dasherize-component-name.js +0 -1
  71. package/dist/dev/packages/@ember/template-compiler/lib/plugins/auto-import-builtins.js +13 -60
  72. package/dist/dev/packages/@ember/template-compiler/lib/plugins/index.js +1 -1
  73. package/dist/dev/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +1 -3
  74. package/dist/dev/packages/@ember/template-compiler/lib/template.js +3 -11
  75. package/dist/dev/packages/@ember/template-factory/index.js +1 -8
  76. package/dist/dev/packages/@ember/utils/lib/compare.js +0 -7
  77. package/dist/dev/packages/@ember/utils/lib/is_empty.js +1 -12
  78. package/dist/dev/packages/@glimmer/destroyable/index.js +1 -1
  79. package/dist/dev/packages/@glimmer/manager/index.js +5 -315
  80. package/dist/dev/packages/@glimmer/node/index.js +3 -11
  81. package/dist/dev/packages/@glimmer/opcode-compiler/index.js +2 -7
  82. package/dist/dev/packages/@glimmer/program/index.js +194 -3
  83. package/dist/dev/packages/@glimmer/reference/index.js +4 -5
  84. package/dist/dev/packages/@glimmer/runtime/index.js +15 -10
  85. package/dist/dev/packages/@glimmer/tracking/index.js +2 -11
  86. package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +1 -11
  87. package/dist/dev/packages/@glimmer/util/index.js +1 -2
  88. package/dist/dev/packages/@glimmer/validator/index.js +4 -1253
  89. package/dist/dev/packages/@glimmer/vm/index.js +1 -1
  90. package/dist/dev/packages/@glimmer/wire-format/index.js +3 -65
  91. package/dist/dev/packages/ember/version.js +1 -1
  92. package/dist/dev/packages/ember-template-compiler/index.js +7 -7
  93. package/dist/dev/packages/shared-chunks/{alias-CSC0WIbj.js → alias-ZcMQckQV.js} +8 -4
  94. package/dist/dev/packages/shared-chunks/api-BAmlf_CN.js +310 -0
  95. package/dist/dev/packages/shared-chunks/{api-BQMslHhq.js → api-BawZUDYD.js} +5 -6
  96. package/dist/dev/packages/shared-chunks/{args-proxy-DgXMc9b5.js → args-proxy-BNLuRFlO.js} +2 -4
  97. package/dist/dev/packages/shared-chunks/{array-D8PfjQHi.js → array-Bh_kUjzy.js} +2 -1
  98. package/dist/dev/packages/shared-chunks/assert-Zqc4wiAV.js +6 -0
  99. package/dist/dev/packages/shared-chunks/cache-B7dqAS38.js +596 -0
  100. package/dist/dev/packages/shared-chunks/{capabilities-O_xc7Yqk.js → capabilities-CZkuOqqC.js} +0 -5
  101. package/dist/dev/packages/shared-chunks/chain-tags-D6tuFUj_.js +190 -0
  102. package/dist/dev/packages/shared-chunks/{collections-D_nY_0UJ.js → collections-DPkjqeA3.js} +0 -1
  103. package/dist/dev/packages/shared-chunks/{compiler-D1leQ3Gl.js → compiler-QUSl_urU.js} +7043 -235
  104. package/dist/dev/packages/shared-chunks/computed-CJnghmXC.js +980 -0
  105. package/dist/dev/packages/shared-chunks/container-BzzHmCNj.js +404 -0
  106. package/dist/dev/packages/shared-chunks/curly-BBzF_bI8.js +617 -0
  107. package/dist/dev/packages/shared-chunks/curried-BZnYakIg.js +5 -0
  108. package/dist/dev/packages/shared-chunks/{debug-to-string-CFb7h0lY.js → debug-to-string-C6LsA_qz.js} +1 -2
  109. package/dist/dev/packages/shared-chunks/decorator-B5Uh5NFI.js +135 -0
  110. package/dist/dev/packages/shared-chunks/element-DQJOvSlQ.js +109 -0
  111. package/dist/dev/packages/shared-chunks/element-builder--iTIJyCB.js +812 -0
  112. package/dist/dev/packages/shared-chunks/env-g-kaAFLN.js +161 -0
  113. package/dist/dev/packages/shared-chunks/events-6aFVjD4k.js +180 -0
  114. package/dist/dev/packages/shared-chunks/get-D5b5QlqE.js +138 -0
  115. package/dist/dev/packages/shared-chunks/get-debug-name-CSniHBsn.js +45 -0
  116. package/dist/dev/packages/shared-chunks/get_properties-CIm8IAtP.js +55 -0
  117. package/dist/dev/packages/shared-chunks/guid-Cbq2sNV_.js +123 -0
  118. package/dist/dev/packages/shared-chunks/hash-BRRFQJ99.js +192 -0
  119. package/dist/dev/packages/shared-chunks/helper-Do7NCZHI.js +314 -0
  120. package/dist/dev/packages/shared-chunks/index-CwnQYqK5.js +2500 -0
  121. package/dist/dev/packages/shared-chunks/{index-BUPd6pkm.js → index-CyZiGiEI.js} +28 -29
  122. package/dist/dev/packages/shared-chunks/index-D-xTBV4B.js +220 -0
  123. package/dist/dev/packages/shared-chunks/injected_property-B4T-FzZZ.js +70 -0
  124. package/dist/dev/packages/shared-chunks/intern-zquhAEIg.js +51 -0
  125. package/dist/dev/packages/shared-chunks/internal-CAL-jHZt.js +140 -0
  126. package/dist/dev/packages/shared-chunks/internal-helper-Ez7zbEIa.js +7 -0
  127. package/dist/dev/packages/shared-chunks/{neq-DujMPv1k.js → invoke-B8M5fQQS.js} +4 -32
  128. package/dist/{prod/packages/shared-chunks/is_proxy-Cr1qlMv_.js → dev/packages/shared-chunks/is_proxy-Bzg0d4m4.js} +1 -1
  129. package/dist/dev/packages/shared-chunks/libraries-CHBwbR72.js +79 -0
  130. package/dist/dev/packages/shared-chunks/mandatory-setter-BpbAMTzV.js +107 -0
  131. package/dist/dev/packages/shared-chunks/meta-BmRXesrk.js +46 -0
  132. package/dist/{prod/packages/shared-chunks/name-C68GLLO3.js → dev/packages/shared-chunks/name-Clp4Vsod.js} +1 -1
  133. package/dist/dev/packages/shared-chunks/{namespace_search-uT8odThF.js → namespace_search-BfvzEQzN.js} +1 -2
  134. package/dist/dev/packages/shared-chunks/normalize-CKySQVU7.js +84 -0
  135. package/dist/dev/packages/shared-chunks/observers-C2DurkLG.js +199 -0
  136. package/dist/dev/packages/shared-chunks/on-BueSMv9L.js +253 -0
  137. package/dist/dev/packages/shared-chunks/opcodes-CplRyHl_.js +50 -0
  138. package/dist/dev/packages/shared-chunks/or-O0eJQ4K-.js +118 -0
  139. package/dist/{prod/packages/shared-chunks/program-B7SJZ5NF.js → dev/packages/shared-chunks/program-DzAfcWFj.js} +1 -1
  140. package/dist/{prod/packages/shared-chunks/program-context-DFiwaPMR.js → dev/packages/shared-chunks/program-context-CadjldRr.js} +4 -3
  141. package/dist/dev/packages/shared-chunks/property_get-CIBS9umw.js +139 -0
  142. package/dist/dev/packages/shared-chunks/{property_set-DaoZXGM5.js → property_set-D3PKyisF.js} +4 -2
  143. package/dist/dev/packages/shared-chunks/props-fiqxqhAH.js +85 -0
  144. package/dist/dev/packages/shared-chunks/{reference-C3TKDRnP.js → reference-BoPB2LfI.js} +3 -4
  145. package/dist/{prod/packages/shared-chunks/registers-ylirb0dq.js → dev/packages/shared-chunks/registers-C_W2qYHJ.js} +1 -1
  146. package/dist/{prod/packages/shared-chunks/rehydrate-builder-D3t52iGR.js → dev/packages/shared-chunks/rehydrate-builder-DCyIgnCR.js} +7 -4
  147. package/dist/dev/packages/shared-chunks/{render-DCchifOK.js → render-CpKaO-BO.js} +512 -16
  148. package/dist/{prod/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js → dev/packages/shared-chunks/runtime-CYyqkz5q-BOdRhmsS.js} +4 -59
  149. package/dist/{prod/packages/shared-chunks/serialize-builder-iXiRs1Pg.js → dev/packages/shared-chunks/serialize-builder-DxgGRvH_.js} +2 -7
  150. package/dist/dev/packages/shared-chunks/set_properties-BghuuGJx.js +48 -0
  151. package/dist/dev/packages/shared-chunks/{setup-registry-DxchCIL2.js → setup-registry-BC5VMvei.js} +34 -14
  152. package/dist/dev/packages/shared-chunks/spec-BXl1reqK.js +16 -0
  153. package/dist/dev/packages/shared-chunks/super-BBBjgF69.js +91 -0
  154. package/dist/dev/packages/shared-chunks/syscall-ops-BPFtDquC.js +133 -0
  155. package/dist/dev/packages/shared-chunks/template-BRrQR6KS.js +16 -0
  156. package/dist/dev/packages/shared-chunks/{template-kM-7TTcc.js → template-R_5UMHhb.js} +1 -1
  157. package/dist/dev/packages/shared-chunks/template-only-BqOt8bDl.js +78 -0
  158. package/dist/dev/packages/shared-chunks/textarea-WSlUEr0y.js +468 -0
  159. package/dist/dev/packages/shared-chunks/tracked-CKE4wnE6.js +148 -0
  160. package/dist/dev/packages/shared-chunks/tracked-data-CGnA4ytZ.js +31 -0
  161. package/dist/dev/packages/shared-chunks/transform-resolutions-h1ik8gqW.js +645 -0
  162. package/dist/dev/packages/shared-chunks/unique-id-CgmHQiwi.js +32 -0
  163. package/dist/{prod/packages/shared-chunks/on-CersD7PL.js → dev/packages/shared-chunks/untouchable-this-B3DVwpHS.js} +215 -1397
  164. package/dist/dev/packages/shared-chunks/vm-ops-ImHv0Wtg.js +12 -0
  165. package/dist/dev/packages/shared-chunks/well-known-_EVO9RaV.js +17 -0
  166. package/dist/prod/packages/@ember/-internals/container/index.js +4 -315
  167. package/dist/prod/packages/@ember/-internals/deprecations/index.js +1 -1
  168. package/dist/prod/packages/@ember/-internals/environment/index.js +3 -158
  169. package/dist/prod/packages/@ember/-internals/glimmer/index.js +14 -13
  170. package/dist/prod/packages/@ember/-internals/meta/lib/meta.js +0 -3
  171. package/dist/prod/packages/@ember/-internals/metal/index.js +18 -13
  172. package/dist/prod/packages/@ember/-internals/routing/index.js +1 -6
  173. package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +0 -1
  174. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +9 -10
  175. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -6
  176. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +0 -1
  177. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +2 -6
  178. package/dist/prod/packages/@ember/-internals/string/index.js +0 -2
  179. package/dist/prod/packages/@ember/-internals/utils/index.js +32 -30
  180. package/dist/prod/packages/@ember/-internals/views/index.js +0 -1
  181. package/dist/prod/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +0 -2
  182. package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -6
  183. package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -7
  184. package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +1 -2
  185. package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +2 -15
  186. package/dist/prod/packages/@ember/-internals/views/lib/views/states.js +0 -2
  187. package/dist/prod/packages/@ember/application/index.js +5 -24
  188. package/dist/prod/packages/@ember/application/instance.js +5 -18
  189. package/dist/prod/packages/@ember/application/namespace.js +4 -8
  190. package/dist/prod/packages/@ember/array/index.js +7 -12
  191. package/dist/prod/packages/@ember/array/proxy.js +9 -10
  192. package/dist/prod/packages/@ember/canary-features/index.js +1 -1
  193. package/dist/prod/packages/@ember/component/helper.js +1 -12
  194. package/dist/prod/packages/@ember/component/index.js +1291 -15
  195. package/dist/prod/packages/@ember/component/template-only.js +1 -6
  196. package/dist/prod/packages/@ember/controller/index.js +3 -16
  197. package/dist/prod/packages/@ember/debug/container-debug-adapter.js +1 -15
  198. package/dist/prod/packages/@ember/debug/data-adapter.js +5 -7
  199. package/dist/prod/packages/@ember/debug/index.js +1 -1
  200. package/dist/prod/packages/@ember/debug/lib/deprecate.js +1 -1
  201. package/dist/prod/packages/@ember/engine/index.js +3 -27
  202. package/dist/prod/packages/@ember/engine/instance.js +3 -9
  203. package/dist/prod/packages/@ember/helper/index.js +159 -19
  204. package/dist/prod/packages/@ember/instrumentation/index.js +1 -1
  205. package/dist/prod/packages/@ember/modifier/index.js +2 -14
  206. package/dist/prod/packages/@ember/modifier/on.js +1 -6
  207. package/dist/prod/packages/@ember/object/-internals.js +2 -6
  208. package/dist/prod/packages/@ember/object/compat.js +3 -7
  209. package/dist/prod/packages/@ember/object/computed.js +2 -8
  210. package/dist/prod/packages/@ember/object/core.js +8 -15
  211. package/dist/prod/packages/@ember/object/evented.js +2 -7
  212. package/dist/prod/packages/@ember/object/events.js +1 -6
  213. package/dist/prod/packages/@ember/object/index.js +10 -12
  214. package/dist/prod/packages/@ember/object/internals.js +2 -6
  215. package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +5 -20
  216. package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +2 -9
  217. package/dist/prod/packages/@ember/object/mixin.js +6 -9
  218. package/dist/prod/packages/@ember/object/observable.js +7 -9
  219. package/dist/prod/packages/@ember/object/observers.js +1 -6
  220. package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +3 -9
  221. package/dist/prod/packages/@ember/object/proxy.js +0 -7
  222. package/dist/prod/packages/@ember/reactive/collections.js +591 -1
  223. package/dist/prod/packages/@ember/renderer/index.js +1 -12
  224. package/dist/prod/packages/@ember/routing/history-location.js +0 -1
  225. package/dist/prod/packages/@ember/routing/index.js +580 -12
  226. package/dist/prod/packages/@ember/routing/lib/dsl.js +0 -2
  227. package/dist/prod/packages/@ember/routing/lib/generate_controller.js +1 -6
  228. package/dist/prod/packages/@ember/routing/lib/routing-service.js +4 -14
  229. package/dist/prod/packages/@ember/routing/lib/utils.js +1 -6
  230. package/dist/prod/packages/@ember/routing/none-location.js +0 -1
  231. package/dist/prod/packages/@ember/routing/route.js +12 -22
  232. package/dist/prod/packages/@ember/routing/router-service.js +6 -15
  233. package/dist/prod/packages/@ember/routing/router.js +4 -17
  234. package/dist/prod/packages/@ember/runloop/index.js +1 -6
  235. package/dist/prod/packages/@ember/service/index.js +1 -7
  236. package/dist/prod/packages/@ember/template/index.js +1 -12
  237. package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +12 -14
  238. package/dist/prod/packages/@ember/template-compiler/lib/dasherize-component-name.js +0 -2
  239. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-attrs.js +0 -1
  240. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +0 -1
  241. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +0 -1
  242. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +0 -2
  243. package/dist/prod/packages/@ember/template-compiler/lib/plugins/auto-import-builtins.js +13 -60
  244. package/dist/prod/packages/@ember/template-compiler/lib/plugins/index.js +1 -1
  245. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-track-array.js +0 -1
  246. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-in-element.js +0 -1
  247. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +126 -4
  248. package/dist/prod/packages/@ember/template-compiler/lib/template.js +2 -7
  249. package/dist/prod/packages/@ember/template-factory/index.js +1 -5
  250. package/dist/prod/packages/@ember/utils/lib/compare.js +0 -8
  251. package/dist/prod/packages/@ember/utils/lib/is_empty.js +1 -7
  252. package/dist/prod/packages/@glimmer/manager/index.js +4 -292
  253. package/dist/prod/packages/@glimmer/node/index.js +3 -8
  254. package/dist/prod/packages/@glimmer/opcode-compiler/index.js +2 -5
  255. package/dist/prod/packages/@glimmer/program/index.js +194 -3
  256. package/dist/prod/packages/@glimmer/reference/index.js +4 -4
  257. package/dist/prod/packages/@glimmer/runtime/index.js +14 -8
  258. package/dist/prod/packages/@glimmer/tracking/index.js +2 -7
  259. package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +1 -6
  260. package/dist/prod/packages/@glimmer/util/index.js +2 -2
  261. package/dist/prod/packages/@glimmer/validator/index.js +5 -1016
  262. package/dist/prod/packages/@glimmer/vm/index.js +1 -1
  263. package/dist/prod/packages/@glimmer/wire-format/index.js +3 -65
  264. package/dist/prod/packages/ember/version.js +1 -1
  265. package/dist/prod/packages/ember-template-compiler/index.js +4 -7
  266. package/dist/prod/packages/shared-chunks/{alias-BLBQkche.js → alias-DBW_V5vD.js} +7 -6
  267. package/dist/prod/packages/shared-chunks/api-CM1trl_4.js +289 -0
  268. package/dist/prod/packages/shared-chunks/{api-B5UrgITK.js → api-zh_k31vb.js} +4 -5
  269. package/dist/prod/packages/shared-chunks/{args-proxy-Dl0A0YWI.js → args-proxy-BDXbXCF9.js} +2 -2
  270. package/dist/prod/packages/shared-chunks/{array-kVQfzrQn.js → array-D6Couewv.js} +2 -3
  271. package/dist/prod/packages/shared-chunks/assert-Zqc4wiAV.js +6 -0
  272. package/dist/prod/packages/shared-chunks/cache-BIlOoPA7.js +371 -0
  273. package/dist/prod/packages/shared-chunks/{capabilities-DXA-L0iT.js → capabilities-_5e35539.js} +0 -3
  274. package/dist/prod/packages/shared-chunks/chain-tags-C9rFtQ_x.js +178 -0
  275. package/dist/prod/packages/shared-chunks/{compiler-Bbki2GT_.js → compiler-c4yUVrl_.js} +7044 -193
  276. package/dist/prod/packages/shared-chunks/{namespace_search-Dcdalhj6.js → computed-DjCIU_ht.js} +108 -239
  277. package/dist/prod/packages/shared-chunks/container-BYOnjnwz.js +315 -0
  278. package/dist/prod/packages/shared-chunks/curly-ZzX43b50.js +545 -0
  279. package/dist/prod/packages/shared-chunks/curried-BZnYakIg.js +5 -0
  280. package/dist/prod/packages/shared-chunks/debug-render-tree-CF5O4-WI.js +2049 -0
  281. package/dist/prod/packages/shared-chunks/{decorator-BdDDBUd2.js → decorator-9ikVwsjY.js} +0 -1
  282. package/dist/prod/packages/shared-chunks/element-DUOVW5Ho.js +100 -0
  283. package/dist/prod/packages/shared-chunks/{element-builder-CzXb9l1W.js → element-builder-CnlTPNyw.js} +109 -88
  284. package/dist/prod/packages/shared-chunks/env-DXxsTFkM.js +158 -0
  285. package/dist/prod/packages/shared-chunks/events-DYrYz3V8.js +174 -0
  286. package/dist/prod/packages/shared-chunks/get-t0-itmA-.js +138 -0
  287. package/dist/prod/packages/shared-chunks/get_properties-Nn08mLAH.js +55 -0
  288. package/dist/prod/packages/shared-chunks/guid-Cbq2sNV_.js +123 -0
  289. package/dist/prod/packages/shared-chunks/hash-mcs3pEFO.js +192 -0
  290. package/dist/prod/packages/shared-chunks/helper-DLjV2ZZW.js +298 -0
  291. package/dist/prod/packages/shared-chunks/{index-CjaDF9kC.js → index-Bj71BDDA.js} +17 -10
  292. package/dist/prod/packages/shared-chunks/index-D-xTBV4B.js +220 -0
  293. package/dist/prod/packages/shared-chunks/index-qDFz6Mfe.js +2322 -0
  294. package/dist/prod/packages/shared-chunks/{injected_property-CTVs5FPh.js → injected_property--eJunJph.js} +2 -3
  295. package/dist/prod/packages/shared-chunks/intern-zquhAEIg.js +51 -0
  296. package/dist/prod/packages/shared-chunks/internal-DidurjJB.js +137 -0
  297. package/dist/prod/packages/shared-chunks/internal-helper-DIbr1RgC.js +7 -0
  298. package/dist/prod/packages/shared-chunks/{neq-BqdovTuC.js → invoke-Cj5zMqHz.js} +4 -24
  299. package/dist/{dev/packages/shared-chunks/is_proxy-B0smdQy8.js → prod/packages/shared-chunks/is_proxy-Bzg0d4m4.js} +1 -1
  300. package/dist/prod/packages/shared-chunks/libraries-_k-4KK5_.js +59 -0
  301. package/dist/prod/packages/shared-chunks/meta-B9mldqPL.js +36 -0
  302. package/dist/{dev/packages/shared-chunks/name-Z7dpqvzn.js → prod/packages/shared-chunks/name-Clp4Vsod.js} +1 -1
  303. package/dist/prod/packages/shared-chunks/namespace_search-BfvzEQzN.js +134 -0
  304. package/dist/prod/packages/shared-chunks/normalize-D9jDJVGg.js +84 -0
  305. package/dist/prod/packages/shared-chunks/observers-CDkeR0nI.js +199 -0
  306. package/dist/prod/packages/shared-chunks/on-B5NVufs_.js +228 -0
  307. package/dist/prod/packages/shared-chunks/opcodes-CplRyHl_.js +50 -0
  308. package/dist/prod/packages/shared-chunks/or-3AxY5TPj.js +91 -0
  309. package/dist/{dev/packages/shared-chunks/program-DfV0v8aa.js → prod/packages/shared-chunks/program-B7CWdS8W.js} +1 -2
  310. package/dist/{dev/packages/shared-chunks/program-context-sJz0oHOA.js → prod/packages/shared-chunks/program-context-B8HKU7wu.js} +4 -3
  311. package/dist/prod/packages/shared-chunks/property_get-CAFdpRyu.js +121 -0
  312. package/dist/prod/packages/shared-chunks/{property_set-B2sZxeCw.js → property_set-BunbMFtp.js} +3 -5
  313. package/dist/prod/packages/shared-chunks/props-fiqxqhAH.js +85 -0
  314. package/dist/prod/packages/shared-chunks/{reference-BNqcwZWH.js → reference-BshxG6wn.js} +3 -3
  315. package/dist/{dev/packages/shared-chunks/registers-ylirb0dq.js → prod/packages/shared-chunks/registers-C_W2qYHJ.js} +1 -1
  316. package/dist/{dev/packages/shared-chunks/rehydrate-builder-BRH0p0wA.js → prod/packages/shared-chunks/rehydrate-builder-DJ8k-6fg.js} +7 -7
  317. package/dist/prod/packages/shared-chunks/{render-D78XHdek.js → render-DkJJmoI4.js} +488 -12
  318. package/dist/{dev/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js → prod/packages/shared-chunks/runtime-CYyqkz5q-BOdRhmsS.js} +4 -59
  319. package/dist/{dev/packages/shared-chunks/serialize-builder-DiO7Ak9_.js → prod/packages/shared-chunks/serialize-builder-R3Ozg0sC.js} +2 -10
  320. package/dist/prod/packages/shared-chunks/set_properties-LT3RzRmJ.js +48 -0
  321. package/dist/prod/packages/shared-chunks/{setup-registry-Cs-7NIJU.js → setup-registry-C2KfZJWI.js} +34 -13
  322. package/dist/prod/packages/shared-chunks/spec-BXl1reqK.js +16 -0
  323. package/dist/prod/packages/shared-chunks/super-BBBjgF69.js +91 -0
  324. package/dist/prod/packages/shared-chunks/syscall-ops-BPFtDquC.js +133 -0
  325. package/dist/prod/packages/shared-chunks/template-BRrQR6KS.js +16 -0
  326. package/dist/prod/packages/shared-chunks/template-only-BtLl0uH0.js +78 -0
  327. package/dist/prod/packages/shared-chunks/textarea-CHqL0Rdh.js +454 -0
  328. package/dist/prod/packages/shared-chunks/{tracked-Cl5l4v8b.js → tracked-DAVrVqJl.js} +5 -4
  329. package/dist/prod/packages/shared-chunks/tracked-data-C83f5V5S.js +31 -0
  330. package/dist/prod/packages/shared-chunks/unique-id-CfHImDRV.js +32 -0
  331. package/dist/prod/packages/shared-chunks/vm-ops-ImHv0Wtg.js +12 -0
  332. package/dist/prod/packages/shared-chunks/well-known-_EVO9RaV.js +17 -0
  333. package/docs/data.json +1237 -1023
  334. package/lib/index.js +0 -1
  335. package/package.json +14 -12
  336. package/types/stable/@ember/-internals/container/lib/registry.d.ts +1 -1
  337. package/types/stable/@ember/-internals/deprecations/index.d.ts +1 -1
  338. package/types/stable/@ember/-internals/glimmer/index.d.ts +1 -1
  339. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +1 -1
  340. package/types/stable/@ember/-internals/glimmer/lib/component-managers/mount.d.ts +1 -1
  341. package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +1 -1
  342. package/types/stable/@ember/-internals/glimmer/lib/component-managers/route-template.d.ts +2 -2
  343. package/types/stable/@ember/-internals/glimmer/lib/component.d.ts +9 -7
  344. package/types/stable/@ember/-internals/glimmer/lib/components/abstract-input.d.ts +1 -1
  345. package/types/stable/@ember/-internals/glimmer/lib/dom.d.ts +6 -2
  346. package/types/stable/@ember/-internals/glimmer/lib/environment.d.ts +1 -1
  347. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +1 -1
  348. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +3 -3
  349. package/types/stable/@ember/-internals/glimmer/lib/setup-registry.d.ts +1 -1
  350. package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +1 -1
  351. package/types/stable/@ember/-internals/glimmer/lib/utils/curly-component-state-bucket.d.ts +3 -2
  352. package/types/stable/@ember/-internals/glimmer/lib/utils/iterator.d.ts +1 -1
  353. package/types/stable/@ember/-internals/glimmer/lib/utils/managers.d.ts +2 -1
  354. package/types/stable/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.d.ts +1 -1
  355. package/types/stable/@ember/-internals/glimmer/lib/utils/string.d.ts +1 -1
  356. package/types/stable/@ember/-internals/meta/lib/meta.d.ts +3 -2
  357. package/types/stable/@ember/-internals/metal/lib/cache.d.ts +1 -1
  358. package/types/stable/@ember/-internals/metal/lib/chain-tags.d.ts +3 -2
  359. package/types/stable/@ember/-internals/metal/lib/computed.d.ts +1 -1
  360. package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +1 -1
  361. package/types/stable/@ember/-internals/metal/lib/deprecate_property.d.ts +1 -1
  362. package/types/stable/@ember/-internals/metal/lib/events.d.ts +1 -1
  363. package/types/stable/@ember/-internals/metal/lib/observer.d.ts +1 -1
  364. package/types/stable/@ember/-internals/metal/lib/properties.d.ts +1 -1
  365. package/types/stable/@ember/-internals/metal/lib/property_events.d.ts +1 -1
  366. package/types/stable/@ember/-internals/metal/lib/tags.d.ts +2 -1
  367. package/types/stable/@ember/-internals/runtime/lib/mixins/container_proxy.d.ts +1 -1
  368. package/types/stable/@ember/-internals/runtime/lib/mixins/registry_proxy.d.ts +1 -1
  369. package/types/stable/@ember/-internals/utils/lib/is_proxy.d.ts +1 -1
  370. package/types/stable/@ember/-internals/utils/lib/mandatory-setter.d.ts +1 -1
  371. package/types/stable/@ember/-internals/views/index.d.ts +0 -1
  372. package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +1 -1
  373. package/types/stable/@ember/-internals/views/lib/views/core_view.d.ts +2 -2
  374. package/types/stable/@ember/-internals/views/lib/views/states.d.ts +1 -1
  375. package/types/stable/@ember/application/index.d.ts +5 -4
  376. package/types/stable/@ember/application/instance.d.ts +4 -3
  377. package/types/stable/@ember/application/namespace.d.ts +1 -1
  378. package/types/stable/@ember/array/proxy.d.ts +4 -3
  379. package/types/stable/@ember/component/helper.d.ts +1 -1
  380. package/types/stable/@ember/component/index.d.ts +6 -3
  381. package/types/stable/@ember/controller/index.d.ts +2 -2
  382. package/types/stable/@ember/debug/container-debug-adapter.d.ts +1 -1
  383. package/types/stable/@ember/engine/index.d.ts +3 -3
  384. package/types/stable/@ember/engine/instance.d.ts +4 -3
  385. package/types/stable/@ember/helper/index.d.ts +167 -5
  386. package/types/stable/@ember/modifier/index.d.ts +1 -1
  387. package/types/stable/@ember/object/-internals.d.ts +2 -2
  388. package/types/stable/@ember/object/compat.d.ts +2 -2
  389. package/types/stable/@ember/object/computed.d.ts +3 -1
  390. package/types/stable/@ember/object/evented.d.ts +1 -1
  391. package/types/stable/@ember/object/events.d.ts +1 -1
  392. package/types/stable/@ember/object/index.d.ts +8 -2
  393. package/types/stable/@ember/object/lib/computed/computed_macros.d.ts +1 -1
  394. package/types/stable/@ember/object/mixin.d.ts +1 -1
  395. package/types/stable/@ember/object/observers.d.ts +1 -1
  396. package/types/stable/@ember/object/proxy.d.ts +1 -1
  397. package/types/stable/@ember/reactive/collections.d.ts +6 -6
  398. package/types/stable/@ember/renderer/index.d.ts +2 -2
  399. package/types/stable/@ember/routing/index.d.ts +1 -1
  400. package/types/stable/@ember/routing/lib/controller_for.d.ts +2 -2
  401. package/types/stable/@ember/routing/route.d.ts +2 -2
  402. package/types/stable/@ember/routing/router.d.ts +2 -2
  403. package/types/stable/@ember/service/index.d.ts +1 -1
  404. package/types/stable/@ember/template/index.d.ts +1 -1
  405. package/types/stable/@ember/template-compiler/lib/dasherize-component-name.d.ts +1 -1
  406. package/types/stable/@ember/template-compiler/lib/plugins/assert-against-attrs.d.ts +1 -1
  407. package/types/stable/@ember/template-compiler/lib/plugins/assert-against-named-outlets.d.ts +1 -1
  408. package/types/stable/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.d.ts +1 -1
  409. package/types/stable/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.d.ts +1 -1
  410. package/types/stable/@ember/template-compiler/lib/plugins/auto-import-builtins.d.ts +1 -4
  411. package/types/stable/@ember/template-compiler/lib/plugins/transform-action-syntax.d.ts +1 -1
  412. package/types/stable/@ember/template-compiler/lib/plugins/transform-each-in-into-each.d.ts +1 -1
  413. package/types/stable/@ember/template-compiler/lib/plugins/transform-each-track-array.d.ts +1 -1
  414. package/types/stable/@ember/template-compiler/lib/plugins/transform-in-element.d.ts +1 -1
  415. package/types/stable/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.d.ts +1 -1
  416. package/types/stable/@ember/template-compiler/lib/plugins/transform-resolutions.d.ts +1 -1
  417. package/types/stable/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.d.ts +1 -1
  418. package/types/stable/@ember/template-compiler/lib/plugins/utils.d.ts +1 -1
  419. package/types/stable/@ember/template-compiler/lib/system/calculate-location-display.d.ts +1 -1
  420. package/types/stable/@ember/template-compiler/lib/types.d.ts +2 -1
  421. package/types/stable/@ember/template-factory/index.d.ts +1 -1
  422. package/types/stable/@glimmer/compiler/lib/builder/builder-interface.d.ts +2 -2
  423. package/types/stable/@glimmer/compiler/lib/builder/builder.d.ts +2 -2
  424. package/types/stable/@glimmer/compiler/lib/compiler.d.ts +1 -1
  425. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/context.d.ts +2 -1
  426. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/index.d.ts +2 -1
  427. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/impl.d.ts +2 -1
  428. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/curry.d.ts +1 -1
  429. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/dynamic-vars.d.ts +1 -1
  430. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/has-block.d.ts +2 -1
  431. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/if-unless.d.ts +1 -1
  432. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/log.d.ts +1 -1
  433. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/element/classified.d.ts +1 -1
  434. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/element/component.d.ts +1 -1
  435. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/element/simple-element.d.ts +2 -1
  436. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/expressions.d.ts +1 -1
  437. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/statements.d.ts +1 -1
  438. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/strict-mode.d.ts +1 -1
  439. package/types/stable/@glimmer/compiler/lib/passes/2-encoding/expressions.d.ts +1 -1
  440. package/types/stable/@glimmer/compiler/lib/passes/2-encoding/mir.d.ts +3 -1
  441. package/types/stable/@glimmer/compiler/lib/shared/result.d.ts +1 -1
  442. package/types/stable/@glimmer/manager/lib/public/component.d.ts +1 -1
  443. package/types/stable/@glimmer/manager/lib/util/args-proxy.d.ts +1 -1
  444. package/types/stable/@glimmer/manager/lib/util/capabilities.d.ts +1 -1
  445. package/types/stable/@glimmer/node/lib/node-dom-helper.d.ts +1 -1
  446. package/types/stable/@glimmer/opcode-compiler/lib/opcode-builder/helpers/components.d.ts +1 -1
  447. package/types/stable/@glimmer/runtime/index.d.ts +7 -4
  448. package/types/stable/@glimmer/runtime/lib/compiled/expressions/concat.d.ts +1 -1
  449. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/-debug-strip.d.ts +4 -3
  450. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/component.d.ts +1 -1
  451. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/dom.d.ts +2 -2
  452. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/vm.d.ts +2 -2
  453. package/types/stable/@glimmer/runtime/lib/component/template-only.d.ts +1 -1
  454. package/types/stable/@glimmer/runtime/lib/curried-value.d.ts +1 -1
  455. package/types/stable/@glimmer/runtime/lib/helpers/and.d.ts +3 -0
  456. package/types/stable/@glimmer/runtime/lib/helpers/gt.d.ts +8 -0
  457. package/types/stable/@glimmer/runtime/lib/helpers/gte.d.ts +8 -0
  458. package/types/stable/@glimmer/runtime/lib/helpers/invoke.d.ts +1 -1
  459. package/types/stable/@glimmer/runtime/lib/helpers/lt.d.ts +8 -0
  460. package/types/stable/@glimmer/runtime/lib/helpers/lte.d.ts +8 -0
  461. package/types/stable/@glimmer/runtime/lib/helpers/not.d.ts +3 -0
  462. package/types/stable/@glimmer/runtime/lib/helpers/or.d.ts +3 -0
  463. package/types/stable/@glimmer/runtime/lib/opcodes.d.ts +2 -2
  464. package/types/stable/@glimmer/runtime/lib/references/class-list.d.ts +1 -1
  465. package/types/stable/@glimmer/runtime/lib/references/curry-value.d.ts +1 -1
  466. package/types/stable/@glimmer/runtime/lib/render.d.ts +1 -1
  467. package/types/stable/@glimmer/runtime/lib/scope.d.ts +1 -1
  468. package/types/stable/@glimmer/runtime/lib/vm/append.d.ts +3 -2
  469. package/types/stable/@glimmer/runtime/lib/vm/arguments.d.ts +2 -2
  470. package/types/stable/@glimmer/runtime/lib/vm/content/text.d.ts +1 -1
  471. package/types/stable/@glimmer/runtime/lib/vm/element-builder.d.ts +1 -1
  472. package/types/stable/@glimmer/runtime/lib/vm/low-level.d.ts +2 -1
  473. package/types/stable/@glimmer/runtime/lib/vm/rehydrate-builder.d.ts +1 -1
  474. package/types/stable/@glimmer/runtime/lib/vm/update.d.ts +2 -1
  475. package/types/stable/@glimmer/syntax/lib/keywords.d.ts +2 -2
  476. package/types/stable/@glimmer/tracking/index.d.ts +2 -1
  477. package/types/stable/@glimmer/tracking/primitives/cache.d.ts +1 -1
  478. package/types/stable/index.d.ts +7 -1
  479. package/dist/dev/packages/@ember/-internals/views/lib/component_lookup.js +0 -14
  480. package/dist/dev/packages/shared-chunks/assert-CUCJBR2C.js +0 -19
  481. package/dist/dev/packages/shared-chunks/constants-BbdWMvgs.js +0 -213
  482. package/dist/dev/packages/shared-chunks/dynamic-CgX8M02_.js +0 -3823
  483. package/dist/dev/packages/shared-chunks/element-builder-BpJIoi99.js +0 -404
  484. package/dist/dev/packages/shared-chunks/fragment-Cc5k9Oy4.js +0 -911
  485. package/dist/dev/packages/shared-chunks/index-RzG0Jvjx.js +0 -6306
  486. package/dist/dev/packages/shared-chunks/mandatory-setter-DHZe7-kW.js +0 -425
  487. package/dist/dev/packages/shared-chunks/observers-Bj9qLVau.js +0 -2062
  488. package/dist/dev/packages/shared-chunks/set_properties-kVGzZL_a.js +0 -100
  489. package/dist/dev/packages/shared-chunks/transform-resolutions-D-YtZ0_g.js +0 -7458
  490. package/dist/prod/packages/@ember/-internals/views/lib/component_lookup.js +0 -14
  491. package/dist/prod/packages/shared-chunks/constants-DThhT5fu.js +0 -210
  492. package/dist/prod/packages/shared-chunks/fragment-D7nBU9ae.js +0 -925
  493. package/dist/prod/packages/shared-chunks/index-r-Dz_hzt.js +0 -5931
  494. package/dist/prod/packages/shared-chunks/observers-tZ2aOzr4.js +0 -714
  495. package/dist/prod/packages/shared-chunks/set_properties-C1T46IiN.js +0 -101
  496. package/dist/prod/packages/shared-chunks/super-Cm_a_cLQ.js +0 -275
  497. package/dist/prod/packages/shared-chunks/transform-resolutions-DR4GLmR2.js +0 -6936
  498. package/types/stable/@ember/-internals/views/lib/component_lookup.d.ts +0 -8
  499. package/dist/prod/packages/shared-chunks/{collections-GpG8lT2g.js → collections-C3Y8z_9v.js} +9 -9
@@ -0,0 +1,980 @@
1
+ import { meta, peekMeta } from '../@ember/-internals/meta/lib/meta.js';
2
+ import { s as setWithMandatorySetter } from './mandatory-setter-BpbAMTzV.js';
3
+ import { d as descriptorForProperty, a as isClassicDecorator, c as ComputedDescriptor, i as isElementDescriptor, m as makeComputedDecorator, b as descriptorForDecorator } from './decorator-B5Uh5NFI.js';
4
+ import { c as revalidateObservers, d as flushSyncObservers, e as resumeObserverDeactivation, s as suspendedObserverDeactivation, b as addObserver, g as setObserverSuspended } from './observers-C2DurkLG.js';
5
+ import { t as toString } from './to-string-C7M8LBLH.js';
6
+ import inspect from '../@ember/debug/lib/inspect.js';
7
+ import '../@ember/debug/index.js';
8
+ import { isDestroyed } from '../@glimmer/destroyable/index.js';
9
+ import { y as validateTag, x as untrack, U as UPDATE_TAG, A as ALLOW_CYCLES, z as valueForTag, k as consumeTag, w as track } from './cache-B7dqAS38.js';
10
+ import { a as tagMetaFor, t as tagFor } from './meta-BmRXesrk.js';
11
+ import { m as markObjectAsDirty, b as getChainTagsForKeys, f as finishLazyChains } from './chain-tags-D6tuFUj_.js';
12
+ import { assert } from '../@ember/debug/lib/assert.js';
13
+
14
+ /**
15
+ @module @ember/object
16
+ */
17
+
18
+ const END_WITH_EACH_REGEX = /\.@each$/;
19
+
20
+ /**
21
+ Expands `pattern`, invoking `callback` for each expansion.
22
+
23
+ The only pattern supported is brace-expansion, anything else will be passed
24
+ once to `callback` directly.
25
+
26
+ Example
27
+
28
+ ```js
29
+ import { expandProperties } from '@ember/object/computed';
30
+
31
+ function echo(arg){ console.log(arg); }
32
+
33
+ expandProperties('foo.bar', echo); //=> 'foo.bar'
34
+ expandProperties('{foo,bar}', echo); //=> 'foo', 'bar'
35
+ expandProperties('foo.{bar,baz}', echo); //=> 'foo.bar', 'foo.baz'
36
+ expandProperties('{foo,bar}.baz', echo); //=> 'foo.baz', 'bar.baz'
37
+ expandProperties('foo.{bar,baz}.[]', echo) //=> 'foo.bar.[]', 'foo.baz.[]'
38
+ expandProperties('{foo,bar}.{spam,eggs}', echo) //=> 'foo.spam', 'foo.eggs', 'bar.spam', 'bar.eggs'
39
+ expandProperties('{foo}.bar.{baz}') //=> 'foo.bar.baz'
40
+ ```
41
+
42
+ @method expandProperties
43
+ @static
44
+ @for @ember/object/computed
45
+ @public
46
+ @param {String} pattern The property pattern to expand.
47
+ @param {Function} callback The callback to invoke. It is invoked once per
48
+ expansion, and is passed the expansion.
49
+ */
50
+ function expandProperties(pattern, callback) {
51
+ (!(typeof pattern === 'string') && assert(`A computed property key must be a string, you passed ${typeof pattern} ${pattern}`, typeof pattern === 'string'));
52
+ (!(pattern.indexOf(' ') === -1) && assert('Brace expanded properties cannot contain spaces, e.g. "user.{firstName, lastName}" should be "user.{firstName,lastName}"', pattern.indexOf(' ') === -1)); // regex to look for double open, double close, or unclosed braces
53
+ (!(pattern.match(/\{[^}{]*\{|\}[^}{]*\}|\{[^}]*$/g) === null) && assert(`Brace expanded properties have to be balanced and cannot be nested, pattern: ${pattern}`, pattern.match(/\{[^}{]*\{|\}[^}{]*\}|\{[^}]*$/g) === null));
54
+ let start = pattern.indexOf('{');
55
+ if (start < 0) {
56
+ callback(pattern.replace(END_WITH_EACH_REGEX, '.[]'));
57
+ } else {
58
+ dive('', pattern, start, callback);
59
+ }
60
+ }
61
+ function dive(prefix, pattern, start, callback) {
62
+ let end = pattern.indexOf('}'),
63
+ i = 0,
64
+ newStart,
65
+ arrayLength;
66
+ let tempArr = pattern.substring(start + 1, end).split(',');
67
+ let after = pattern.substring(end + 1);
68
+ prefix = prefix + pattern.substring(0, start);
69
+ arrayLength = tempArr.length;
70
+ while (i < arrayLength) {
71
+ newStart = after.indexOf('{');
72
+ if (newStart < 0) {
73
+ callback((prefix + tempArr[i++] + after).replace(END_WITH_EACH_REGEX, '.[]'));
74
+ } else {
75
+ dive(prefix + tempArr[i++], after, newStart, callback);
76
+ }
77
+ }
78
+ }
79
+
80
+ /**
81
+ @module @ember/object
82
+ */
83
+
84
+
85
+ /**
86
+ NOTE: This is a low-level method used by other parts of the API. You almost
87
+ never want to call this method directly. Instead you should use
88
+ `mixin()` to define new properties.
89
+
90
+ Defines a property on an object. This method works much like the ES5
91
+ `Object.defineProperty()` method except that it can also accept computed
92
+ properties and other special descriptors.
93
+
94
+ Normally this method takes only three parameters. However if you pass an
95
+ instance of `Descriptor` as the third param then you can pass an
96
+ optional value as the fourth parameter. This is often more efficient than
97
+ creating new descriptor hashes for each property.
98
+
99
+ ## Examples
100
+
101
+ ```javascript
102
+ import { defineProperty, computed } from '@ember/object';
103
+
104
+ // ES5 compatible mode
105
+ defineProperty(contact, 'firstName', {
106
+ writable: true,
107
+ configurable: false,
108
+ enumerable: true,
109
+ value: 'Charles'
110
+ });
111
+
112
+ // define a simple property
113
+ defineProperty(contact, 'lastName', undefined, 'Jolley');
114
+
115
+ // define a computed property
116
+ defineProperty(contact, 'fullName', computed('firstName', 'lastName', function() {
117
+ return this.firstName+' '+this.lastName;
118
+ }));
119
+ ```
120
+
121
+ @public
122
+ @method defineProperty
123
+ @static
124
+ @for @ember/object
125
+ @param {Object} obj the object to define this property on. This may be a prototype.
126
+ @param {String} keyName the name of the property
127
+ @param {Descriptor} [desc] an instance of `Descriptor` (typically a
128
+ computed property) or an ES5 descriptor.
129
+ You must provide this or `data` but not both.
130
+ @param {*} [data] something other than a descriptor, that will
131
+ become the explicit value of this property.
132
+ */
133
+ function defineProperty(obj, keyName, desc, data, _meta) {
134
+ let meta$1 = _meta === undefined ? meta(obj) : _meta;
135
+ let previousDesc = descriptorForProperty(obj, keyName, meta$1);
136
+ let wasDescriptor = previousDesc !== undefined;
137
+ if (wasDescriptor) {
138
+ previousDesc.teardown(obj, keyName, meta$1);
139
+ }
140
+ if (isClassicDecorator(desc)) {
141
+ defineDecorator(obj, keyName, desc, meta$1);
142
+ } else if (desc === null || desc === undefined) {
143
+ defineValue(obj, keyName, data, wasDescriptor, true);
144
+ } else {
145
+ // fallback to ES5
146
+ Object.defineProperty(obj, keyName, desc);
147
+ }
148
+
149
+ // if key is being watched, override chains that
150
+ // were initialized with the prototype
151
+ if (!meta$1.isPrototypeMeta(obj)) {
152
+ revalidateObservers(obj);
153
+ }
154
+ }
155
+ function defineDecorator(obj, keyName, desc, meta) {
156
+ let propertyDesc;
157
+ {
158
+ propertyDesc = desc(obj, keyName, undefined, meta, true);
159
+ }
160
+ Object.defineProperty(obj, keyName, propertyDesc);
161
+
162
+ // pass the decorator function forward for backwards compat
163
+ return desc;
164
+ }
165
+ function defineValue(obj, keyName, value, wasDescriptor, enumerable = true) {
166
+ if (wasDescriptor === true || enumerable === false) {
167
+ Object.defineProperty(obj, keyName, {
168
+ configurable: true,
169
+ enumerable,
170
+ writable: true,
171
+ value
172
+ });
173
+ } else {
174
+ {
175
+ setWithMandatorySetter(obj, keyName, value);
176
+ }
177
+ }
178
+ return value;
179
+ }
180
+
181
+ /**
182
+ @module ember
183
+ @private
184
+ */
185
+
186
+ const PROPERTY_DID_CHANGE = Symbol('PROPERTY_DID_CHANGE');
187
+ function hasPropertyDidChange(obj) {
188
+ return obj != null && typeof obj === 'object' && typeof obj[PROPERTY_DID_CHANGE] === 'function';
189
+ }
190
+ let deferred = 0;
191
+
192
+ /**
193
+ This function is called just after an object property has changed.
194
+ It will notify any observers and clear caches among other things.
195
+
196
+ Normally you will not need to call this method directly but if for some
197
+ reason you can't directly watch a property you can invoke this method
198
+ manually.
199
+
200
+ @method notifyPropertyChange
201
+ @for @ember/object
202
+ @param {Object} obj The object with the property that will change
203
+ @param {String} keyName The property key (or path) that will change.
204
+ @param {Meta} [_meta] The objects meta.
205
+ @param {unknown} [value] The new value to set for the property
206
+ @return {void}
207
+ @since 3.1.0
208
+ @public
209
+ */
210
+ function notifyPropertyChange(obj, keyName, _meta, value) {
211
+ let meta = _meta === undefined ? peekMeta(obj) : _meta;
212
+ if (meta !== null && (meta.isInitializing() || meta.isPrototypeMeta(obj))) {
213
+ return;
214
+ }
215
+ markObjectAsDirty(obj, keyName);
216
+ if (deferred <= 0) {
217
+ flushSyncObservers();
218
+ }
219
+ if (PROPERTY_DID_CHANGE in obj) {
220
+ // It's redundant to do this here, but we don't want to check above so we can avoid an extra function call in prod.
221
+ (!(hasPropertyDidChange(obj)) && assert('property did change hook is invalid', hasPropertyDidChange(obj))); // we need to check the arguments length here; there's a check in Component's `PROPERTY_DID_CHANGE`
222
+ // that checks its arguments length, so we have to explicitly not call this with `value`
223
+ // if it is not passed to `notifyPropertyChange`
224
+ if (arguments.length === 4) {
225
+ obj[PROPERTY_DID_CHANGE](keyName, value);
226
+ } else {
227
+ obj[PROPERTY_DID_CHANGE](keyName);
228
+ }
229
+ }
230
+ }
231
+
232
+ /**
233
+ @method beginPropertyChanges
234
+ @chainable
235
+ @private
236
+ */
237
+ function beginPropertyChanges() {
238
+ deferred++;
239
+ suspendedObserverDeactivation();
240
+ }
241
+
242
+ /**
243
+ @method endPropertyChanges
244
+ @private
245
+ */
246
+ function endPropertyChanges() {
247
+ deferred--;
248
+ if (deferred <= 0) {
249
+ flushSyncObservers();
250
+ resumeObserverDeactivation();
251
+ }
252
+ }
253
+
254
+ /**
255
+ Make a series of property changes together in an
256
+ exception-safe way.
257
+
258
+ ```javascript
259
+ Ember.changeProperties(function() {
260
+ obj1.set('foo', mayBlowUpWhenSet);
261
+ obj2.set('bar', baz);
262
+ });
263
+ ```
264
+
265
+ @method changeProperties
266
+ @param {Function} callback
267
+ @private
268
+ */
269
+ function changeProperties(callback) {
270
+ beginPropertyChanges();
271
+ try {
272
+ callback();
273
+ } finally {
274
+ endPropertyChanges();
275
+ }
276
+ }
277
+
278
+ /**
279
+ @module @ember/object
280
+ */
281
+
282
+ const DEEP_EACH_REGEX = /\.@each\.[^.]+\./;
283
+ function noop() {}
284
+ /**
285
+ `@computed` is a decorator that turns a JavaScript getter and setter into a
286
+ computed property, which is a _cached, trackable value_. By default the getter
287
+ will only be called once and the result will be cached. You can specify
288
+ various properties that your computed property depends on. This will force the
289
+ cached result to be cleared if the dependencies are modified, and lazily recomputed the next time something asks for it.
290
+
291
+ In the following example we decorate a getter - `fullName` - by calling
292
+ `computed` with the property dependencies (`firstName` and `lastName`) as
293
+ arguments. The `fullName` getter will be called once (regardless of how many
294
+ times it is accessed) as long as its dependencies do not change. Once
295
+ `firstName` or `lastName` are updated any future calls to `fullName` will
296
+ incorporate the new values, and any watchers of the value such as templates
297
+ will be updated:
298
+
299
+ ```javascript
300
+ import { computed, set } from '@ember/object';
301
+
302
+ class Person {
303
+ constructor(firstName, lastName) {
304
+ set(this, 'firstName', firstName);
305
+ set(this, 'lastName', lastName);
306
+ }
307
+
308
+ @computed('firstName', 'lastName')
309
+ get fullName() {
310
+ return `${this.firstName} ${this.lastName}`;
311
+ }
312
+ });
313
+
314
+ let tom = new Person('Tom', 'Dale');
315
+
316
+ tom.fullName; // 'Tom Dale'
317
+ ```
318
+
319
+ You can also provide a setter, which will be used when updating the computed
320
+ property. Ember's `set` function must be used to update the property
321
+ since it will also notify observers of the property:
322
+
323
+ ```javascript
324
+ import { computed, set } from '@ember/object';
325
+
326
+ class Person {
327
+ constructor(firstName, lastName) {
328
+ set(this, 'firstName', firstName);
329
+ set(this, 'lastName', lastName);
330
+ }
331
+
332
+ @computed('firstName', 'lastName')
333
+ get fullName() {
334
+ return `${this.firstName} ${this.lastName}`;
335
+ }
336
+
337
+ set fullName(value) {
338
+ let [firstName, lastName] = value.split(' ');
339
+
340
+ set(this, 'firstName', firstName);
341
+ set(this, 'lastName', lastName);
342
+ }
343
+ });
344
+
345
+ let person = new Person();
346
+
347
+ set(person, 'fullName', 'Peter Wagenet');
348
+ person.firstName; // 'Peter'
349
+ person.lastName; // 'Wagenet'
350
+ ```
351
+
352
+ You can also pass a getter function or object with `get` and `set` functions
353
+ as the last argument to the computed decorator. This allows you to define
354
+ computed property _macros_:
355
+
356
+ ```js
357
+ import { computed } from '@ember/object';
358
+
359
+ function join(...keys) {
360
+ return computed(...keys, function() {
361
+ return keys.map(key => this[key]).join(' ');
362
+ });
363
+ }
364
+
365
+ class Person {
366
+ @join('firstName', 'lastName')
367
+ fullName;
368
+ }
369
+ ```
370
+
371
+ Note that when defined this way, getters and setters receive the _key_ of the
372
+ property they are decorating as the first argument. Setters receive the value
373
+ they are setting to as the second argument instead. Additionally, setters must
374
+ _return_ the value that should be cached:
375
+
376
+ ```javascript
377
+ import { computed, set } from '@ember/object';
378
+
379
+ function fullNameMacro(firstNameKey, lastNameKey) {
380
+ return computed(firstNameKey, lastNameKey, {
381
+ get() {
382
+ return `${this[firstNameKey]} ${this[lastNameKey]}`;
383
+ }
384
+
385
+ set(key, value) {
386
+ let [firstName, lastName] = value.split(' ');
387
+
388
+ set(this, firstNameKey, firstName);
389
+ set(this, lastNameKey, lastName);
390
+
391
+ return value;
392
+ }
393
+ });
394
+ }
395
+
396
+ class Person {
397
+ constructor(firstName, lastName) {
398
+ set(this, 'firstName', firstName);
399
+ set(this, 'lastName', lastName);
400
+ }
401
+
402
+ @fullNameMacro('firstName', 'lastName') fullName;
403
+ });
404
+
405
+ let person = new Person();
406
+
407
+ set(person, 'fullName', 'Peter Wagenet');
408
+ person.firstName; // 'Peter'
409
+ person.lastName; // 'Wagenet'
410
+ ```
411
+
412
+ Computed properties can also be used in classic classes. To do this, we
413
+ provide the getter and setter as the last argument like we would for a macro,
414
+ and we assign it to a property on the class definition. This is an _anonymous_
415
+ computed macro:
416
+
417
+ ```javascript
418
+ import EmberObject, { computed, set } from '@ember/object';
419
+
420
+ let Person = EmberObject.extend({
421
+ // these will be supplied by `create`
422
+ firstName: null,
423
+ lastName: null,
424
+
425
+ fullName: computed('firstName', 'lastName', {
426
+ get() {
427
+ return `${this.firstName} ${this.lastName}`;
428
+ }
429
+
430
+ set(key, value) {
431
+ let [firstName, lastName] = value.split(' ');
432
+
433
+ set(this, 'firstName', firstName);
434
+ set(this, 'lastName', lastName);
435
+
436
+ return value;
437
+ }
438
+ })
439
+ });
440
+
441
+ let tom = Person.create({
442
+ firstName: 'Tom',
443
+ lastName: 'Dale'
444
+ });
445
+
446
+ tom.get('fullName') // 'Tom Dale'
447
+ ```
448
+
449
+ You can overwrite computed property without setters with a normal property (no
450
+ longer computed) that won't change if dependencies change. You can also mark
451
+ computed property as `.readOnly()` and block all attempts to set it.
452
+
453
+ ```javascript
454
+ import { computed, set } from '@ember/object';
455
+
456
+ class Person {
457
+ constructor(firstName, lastName) {
458
+ set(this, 'firstName', firstName);
459
+ set(this, 'lastName', lastName);
460
+ }
461
+
462
+ @computed('firstName', 'lastName').readOnly()
463
+ get fullName() {
464
+ return `${this.firstName} ${this.lastName}`;
465
+ }
466
+ });
467
+
468
+ let person = new Person();
469
+ person.set('fullName', 'Peter Wagenet'); // Uncaught Error: Cannot set read-only property "fullName" on object: <(...):emberXXX>
470
+ ```
471
+
472
+ Additional resources:
473
+ - [Decorators RFC](https://github.com/emberjs/rfcs/blob/master/text/0408-decorators.md)
474
+ - [New CP syntax RFC](https://github.com/emberjs/rfcs/blob/master/text/0011-improved-cp-syntax.md)
475
+ - [New computed syntax explained in "Ember 1.12 released" ](https://emberjs.com/blog/2015/05/13/ember-1-12-released.html#toc_new-computed-syntax)
476
+
477
+ @class ComputedProperty
478
+ @public
479
+ */
480
+ class ComputedProperty extends ComputedDescriptor {
481
+ _readOnly = false;
482
+ _hasConfig = false;
483
+ _getter = undefined;
484
+ _setter = undefined;
485
+ constructor(args) {
486
+ super();
487
+ let maybeConfig = args[args.length - 1];
488
+ if (typeof maybeConfig === 'function' || maybeConfig !== null && typeof maybeConfig === 'object') {
489
+ this._hasConfig = true;
490
+ let config = args.pop();
491
+ if (typeof config === 'function') {
492
+ (!(!isClassicDecorator(config)) && assert(`You attempted to pass a computed property instance to computed(). Computed property instances are decorator functions, and cannot be passed to computed() because they cannot be turned into decorators twice`, !isClassicDecorator(config)));
493
+ this._getter = config;
494
+ } else {
495
+ const objectConfig = config;
496
+ (!(typeof objectConfig === 'object' && !Array.isArray(objectConfig)) && assert('computed expects a function or an object as last argument.', typeof objectConfig === 'object' && !Array.isArray(objectConfig)));
497
+ (!(Object.keys(objectConfig).every(key => key === 'get' || key === 'set')) && assert('Config object passed to computed can only contain `get` and `set` keys.', Object.keys(objectConfig).every(key => key === 'get' || key === 'set')));
498
+ (!(Boolean(objectConfig.get) || Boolean(objectConfig.set)) && assert('Computed properties must receive a getter or a setter, you passed none.', Boolean(objectConfig.get) || Boolean(objectConfig.set)));
499
+ this._getter = objectConfig.get || noop;
500
+ this._setter = objectConfig.set;
501
+ }
502
+ }
503
+ if (args.length > 0) {
504
+ this._property(...args);
505
+ }
506
+ }
507
+ setup(obj, keyName, propertyDesc, meta) {
508
+ super.setup(obj, keyName, propertyDesc, meta);
509
+ (!(!(propertyDesc && typeof propertyDesc.value === 'function')) && assert(`@computed can only be used on accessors or fields, attempted to use it with ${keyName} but that was a method. Try converting it to a getter (e.g. \`get ${keyName}() {}\`)`, !(propertyDesc && typeof propertyDesc.value === 'function')));
510
+ (!(!propertyDesc || !propertyDesc.initializer) && assert(`@computed can only be used on empty fields. ${keyName} has an initial value (e.g. \`${keyName} = someValue\`)`, !propertyDesc || !propertyDesc.initializer));
511
+ (!(!(this._hasConfig && propertyDesc && (typeof propertyDesc.get === 'function' || typeof propertyDesc.set === 'function'))) && assert(`Attempted to apply a computed property that already has a getter/setter to a ${keyName}, but it is a method or an accessor. If you passed @computed a function or getter/setter (e.g. \`@computed({ get() { ... } })\`), then it must be applied to a field`, !(this._hasConfig && propertyDesc && (typeof propertyDesc.get === 'function' || typeof propertyDesc.set === 'function'))));
512
+ if (this._hasConfig === false) {
513
+ (!(propertyDesc && (typeof propertyDesc.get === 'function' || typeof propertyDesc.set === 'function')) && assert(`Attempted to use @computed on ${keyName}, but it did not have a getter or a setter. You must either pass a get a function or getter/setter to @computed directly (e.g. \`@computed({ get() { ... } })\`) or apply @computed directly to a getter/setter`, propertyDesc && (typeof propertyDesc.get === 'function' || typeof propertyDesc.set === 'function')));
514
+ let {
515
+ get,
516
+ set
517
+ } = propertyDesc;
518
+ if (get !== undefined) {
519
+ this._getter = get;
520
+ }
521
+ if (set !== undefined) {
522
+ this._setter = function setterWrapper(_key, value) {
523
+ let ret = set.call(this, value);
524
+ if (get !== undefined) {
525
+ return typeof ret === 'undefined' ? get.call(this) : ret;
526
+ }
527
+ return ret;
528
+ };
529
+ }
530
+ }
531
+ }
532
+ _property(...passedArgs) {
533
+ let args = [];
534
+ function addArg(property) {
535
+ (!(DEEP_EACH_REGEX.test(property) === false) && assert(`Dependent keys containing @each only work one level deep. ` + `You used the key "${property}" which is invalid. ` + `Please create an intermediary computed property or ` + `switch to using tracked properties.`, DEEP_EACH_REGEX.test(property) === false));
536
+ args.push(property);
537
+ }
538
+ for (let arg of passedArgs) {
539
+ expandProperties(arg, addArg);
540
+ }
541
+ this._dependentKeys = args;
542
+ }
543
+ get(obj, keyName) {
544
+ let meta$1 = meta(obj);
545
+ let tagMeta = tagMetaFor(obj);
546
+ let propertyTag = tagFor(obj, keyName, tagMeta);
547
+ let ret;
548
+ let revision = meta$1.revisionFor(keyName);
549
+ if (revision !== undefined && validateTag(propertyTag, revision)) {
550
+ ret = meta$1.valueFor(keyName);
551
+ } else {
552
+ // For backwards compatibility, we only throw if the CP has any dependencies. CPs without dependencies
553
+ // should be allowed, even after the object has been destroyed, which is why we check _dependentKeys.
554
+ (!(this._dependentKeys === undefined || !isDestroyed(obj)) && assert(`Attempted to access the computed ${obj}.${keyName} on a destroyed object, which is not allowed`, this._dependentKeys === undefined || !isDestroyed(obj)));
555
+ let {
556
+ _getter,
557
+ _dependentKeys
558
+ } = this;
559
+
560
+ // Create a tracker that absorbs any trackable actions inside the CP
561
+ untrack(() => {
562
+ ret = _getter.call(obj, keyName);
563
+ });
564
+ if (_dependentKeys !== undefined) {
565
+ UPDATE_TAG(propertyTag, getChainTagsForKeys(obj, _dependentKeys, tagMeta, meta$1));
566
+ {
567
+ ALLOW_CYCLES.set(propertyTag, true);
568
+ }
569
+ }
570
+ meta$1.setValueFor(keyName, ret);
571
+ meta$1.setRevisionFor(keyName, valueForTag(propertyTag));
572
+ finishLazyChains(meta$1, keyName, ret);
573
+ }
574
+ consumeTag(propertyTag);
575
+
576
+ // Add the tag of the returned value if it is an array, since arrays
577
+ // should always cause updates if they are consumed and then changed
578
+ if (Array.isArray(ret)) {
579
+ consumeTag(tagFor(ret, '[]'));
580
+ }
581
+ return ret;
582
+ }
583
+ set(obj, keyName, value) {
584
+ if (this._readOnly) {
585
+ this._throwReadOnlyError(obj, keyName);
586
+ }
587
+ (!(this._setter !== undefined) && assert(`Cannot override the computed property \`${keyName}\` on ${toString(obj)}.`, this._setter !== undefined));
588
+ let meta$1 = meta(obj);
589
+
590
+ // ensure two way binding works when the component has defined a computed
591
+ // property with both a setter and dependent keys, in that scenario without
592
+ // the sync observer added below the caller's value will never be updated
593
+ //
594
+ // See GH#18147 / GH#19028 for details.
595
+ if (
596
+ // ensure that we only run this once, while the component is being instantiated
597
+ meta$1.isInitializing() && this._dependentKeys !== undefined && this._dependentKeys.length > 0 && typeof obj[PROPERTY_DID_CHANGE] === 'function' && obj.isComponent) {
598
+ // It's redundant to do this here, but we don't want to check above so we can avoid an extra function call in prod.
599
+ (!(hasPropertyDidChange(obj)) && assert('property did change hook is invalid', hasPropertyDidChange(obj)));
600
+ addObserver(obj, keyName, () => {
601
+ obj[PROPERTY_DID_CHANGE](keyName);
602
+ }, undefined, true);
603
+ }
604
+ let ret;
605
+ try {
606
+ beginPropertyChanges();
607
+ ret = this._set(obj, keyName, value, meta$1);
608
+ finishLazyChains(meta$1, keyName, ret);
609
+ let tagMeta = tagMetaFor(obj);
610
+ let propertyTag = tagFor(obj, keyName, tagMeta);
611
+ let {
612
+ _dependentKeys
613
+ } = this;
614
+ if (_dependentKeys !== undefined) {
615
+ UPDATE_TAG(propertyTag, getChainTagsForKeys(obj, _dependentKeys, tagMeta, meta$1));
616
+ if (true /* DEBUG */) {
617
+ ALLOW_CYCLES.set(propertyTag, true);
618
+ }
619
+ }
620
+ meta$1.setRevisionFor(keyName, valueForTag(propertyTag));
621
+ } finally {
622
+ endPropertyChanges();
623
+ }
624
+ return ret;
625
+ }
626
+ _throwReadOnlyError(obj, keyName) {
627
+ throw new Error(`Cannot set read-only property "${keyName}" on object: ${inspect(obj)}`);
628
+ }
629
+ _set(obj, keyName, value, meta) {
630
+ let hadCachedValue = meta.revisionFor(keyName) !== undefined;
631
+ let cachedValue = meta.valueFor(keyName);
632
+ let ret;
633
+ let {
634
+ _setter
635
+ } = this;
636
+ setObserverSuspended(obj, keyName, true);
637
+ try {
638
+ ret = _setter.call(obj, keyName, value, cachedValue);
639
+ } finally {
640
+ setObserverSuspended(obj, keyName, false);
641
+ }
642
+
643
+ // allows setter to return the same value that is cached already
644
+ if (hadCachedValue && cachedValue === ret) {
645
+ return ret;
646
+ }
647
+ meta.setValueFor(keyName, ret);
648
+ notifyPropertyChange(obj, keyName, meta, value);
649
+ return ret;
650
+ }
651
+
652
+ /* called before property is overridden */
653
+ teardown(obj, keyName, meta) {
654
+ if (meta.revisionFor(keyName) !== undefined) {
655
+ meta.setRevisionFor(keyName, undefined);
656
+ meta.setValueFor(keyName, undefined);
657
+ }
658
+ super.teardown(obj, keyName, meta);
659
+ }
660
+ }
661
+ class AutoComputedProperty extends ComputedProperty {
662
+ get(obj, keyName) {
663
+ let meta$1 = meta(obj);
664
+ let tagMeta = tagMetaFor(obj);
665
+ let propertyTag = tagFor(obj, keyName, tagMeta);
666
+ let ret;
667
+ let revision = meta$1.revisionFor(keyName);
668
+ if (revision !== undefined && validateTag(propertyTag, revision)) {
669
+ ret = meta$1.valueFor(keyName);
670
+ } else {
671
+ (!(!isDestroyed(obj)) && assert(`Attempted to access the computed ${obj}.${keyName} on a destroyed object, which is not allowed`, !isDestroyed(obj)));
672
+ let {
673
+ _getter
674
+ } = this;
675
+
676
+ // Create a tracker that absorbs any trackable actions inside the CP
677
+ let tag = track(() => {
678
+ ret = _getter.call(obj, keyName);
679
+ });
680
+ UPDATE_TAG(propertyTag, tag);
681
+ meta$1.setValueFor(keyName, ret);
682
+ meta$1.setRevisionFor(keyName, valueForTag(propertyTag));
683
+ finishLazyChains(meta$1, keyName, ret);
684
+ }
685
+ consumeTag(propertyTag);
686
+
687
+ // Add the tag of the returned value if it is an array, since arrays
688
+ // should always cause updates if they are consumed and then changed
689
+ if (Array.isArray(ret)) {
690
+ consumeTag(tagFor(ret, '[]', tagMeta));
691
+ }
692
+ return ret;
693
+ }
694
+ }
695
+ // TODO: This class can be svelted once `meta` has been deprecated
696
+ class ComputedDecoratorImpl extends Function {
697
+ /**
698
+ Call on a computed property to set it into read-only mode. When in this
699
+ mode the computed property will throw an error when set.
700
+ Example:
701
+ ```javascript
702
+ import { computed, set } from '@ember/object';
703
+ class Person {
704
+ @computed().readOnly()
705
+ get guid() {
706
+ return 'guid-guid-guid';
707
+ }
708
+ }
709
+ let person = new Person();
710
+ set(person, 'guid', 'new-guid'); // will throw an exception
711
+ ```
712
+ Classic Class Example:
713
+ ```javascript
714
+ import EmberObject, { computed } from '@ember/object';
715
+ let Person = EmberObject.extend({
716
+ guid: computed(function() {
717
+ return 'guid-guid-guid';
718
+ }).readOnly()
719
+ });
720
+ let person = Person.create();
721
+ person.set('guid', 'new-guid'); // will throw an exception
722
+ ```
723
+ @method readOnly
724
+ @return {ComputedProperty} this
725
+ @chainable
726
+ @public
727
+ */
728
+ readOnly() {
729
+ let desc = descriptorForDecorator(this);
730
+ (!(!(desc._setter && desc._setter !== desc._getter)) && assert('Computed properties that define a setter using the new syntax cannot be read-only', !(desc._setter && desc._setter !== desc._getter)));
731
+ desc._readOnly = true;
732
+ return this;
733
+ }
734
+
735
+ /**
736
+ In some cases, you may want to annotate computed properties with additional
737
+ metadata about how they function or what values they operate on. For example,
738
+ computed property functions may close over variables that are then no longer
739
+ available for introspection. You can pass a hash of these values to a
740
+ computed property.
741
+ Example:
742
+ ```javascript
743
+ import { computed } from '@ember/object';
744
+ import Person from 'my-app/utils/person';
745
+ class Store {
746
+ @computed().meta({ type: Person })
747
+ get person() {
748
+ let personId = this.personId;
749
+ return Person.create({ id: personId });
750
+ }
751
+ }
752
+ ```
753
+ Classic Class Example:
754
+ ```javascript
755
+ import { computed } from '@ember/object';
756
+ import Person from 'my-app/utils/person';
757
+ const Store = EmberObject.extend({
758
+ person: computed(function() {
759
+ let personId = this.get('personId');
760
+ return Person.create({ id: personId });
761
+ }).meta({ type: Person })
762
+ });
763
+ ```
764
+ The hash that you pass to the `meta()` function will be saved on the
765
+ computed property descriptor under the `_meta` key. Ember runtime
766
+ exposes a public API for retrieving these values from classes,
767
+ via the `metaForProperty()` function.
768
+ @method meta
769
+ @param {Object} meta
770
+ @chainable
771
+ @public
772
+ */
773
+
774
+ meta(meta) {
775
+ let prop = descriptorForDecorator(this);
776
+ if (arguments.length === 0) {
777
+ return prop._meta || {};
778
+ } else {
779
+ prop._meta = meta;
780
+ return this;
781
+ }
782
+ }
783
+
784
+ // TODO: Remove this when we can provide alternatives in the ecosystem to
785
+ // addons such as ember-macro-helpers that use it.
786
+ /** @internal */
787
+ get _getter() {
788
+ return descriptorForDecorator(this)._getter;
789
+ }
790
+
791
+ // TODO: Refactor this, this is an internal API only
792
+ /** @internal */
793
+ set enumerable(value) {
794
+ descriptorForDecorator(this).enumerable = value;
795
+ }
796
+ }
797
+
798
+ /**
799
+ This helper returns a new property descriptor that wraps the passed
800
+ computed property function. You can use this helper to define properties with
801
+ native decorator syntax, mixins, or via `defineProperty()`.
802
+
803
+ Example:
804
+
805
+ ```js
806
+ import { computed, set } from '@ember/object';
807
+
808
+ class Person {
809
+ constructor() {
810
+ this.firstName = 'Betty';
811
+ this.lastName = 'Jones';
812
+ },
813
+
814
+ @computed('firstName', 'lastName')
815
+ get fullName() {
816
+ return `${this.firstName} ${this.lastName}`;
817
+ }
818
+ }
819
+
820
+ let client = new Person();
821
+
822
+ client.fullName; // 'Betty Jones'
823
+
824
+ set(client, 'lastName', 'Fuller');
825
+ client.fullName; // 'Betty Fuller'
826
+ ```
827
+
828
+ Classic Class Example:
829
+
830
+ ```js
831
+ import EmberObject, { computed } from '@ember/object';
832
+
833
+ let Person = EmberObject.extend({
834
+ init() {
835
+ this._super(...arguments);
836
+
837
+ this.firstName = 'Betty';
838
+ this.lastName = 'Jones';
839
+ },
840
+
841
+ fullName: computed('firstName', 'lastName', function() {
842
+ return `${this.get('firstName')} ${this.get('lastName')}`;
843
+ })
844
+ });
845
+
846
+ let client = Person.create();
847
+
848
+ client.get('fullName'); // 'Betty Jones'
849
+
850
+ client.set('lastName', 'Fuller');
851
+ client.get('fullName'); // 'Betty Fuller'
852
+ ```
853
+
854
+ You can also provide a setter, either directly on the class using native class
855
+ syntax, or by passing a hash with `get` and `set` functions.
856
+
857
+ Example:
858
+
859
+ ```js
860
+ import { computed, set } from '@ember/object';
861
+
862
+ class Person {
863
+ constructor() {
864
+ this.firstName = 'Betty';
865
+ this.lastName = 'Jones';
866
+ },
867
+
868
+ @computed('firstName', 'lastName')
869
+ get fullName() {
870
+ return `${this.firstName} ${this.lastName}`;
871
+ }
872
+
873
+ set fullName(value) {
874
+ let [firstName, lastName] = value.split(/\s+/);
875
+
876
+ set(this, 'firstName', firstName);
877
+ set(this, 'lastName', lastName);
878
+
879
+ return value;
880
+ }
881
+ }
882
+
883
+ let client = new Person();
884
+
885
+ client.fullName; // 'Betty Jones'
886
+
887
+ set(client, 'lastName', 'Fuller');
888
+ client.fullName; // 'Betty Fuller'
889
+ ```
890
+
891
+ Classic Class Example:
892
+
893
+ ```js
894
+ import EmberObject, { computed } from '@ember/object';
895
+
896
+ let Person = EmberObject.extend({
897
+ init() {
898
+ this._super(...arguments);
899
+
900
+ this.firstName = 'Betty';
901
+ this.lastName = 'Jones';
902
+ },
903
+
904
+ fullName: computed('firstName', 'lastName', {
905
+ get(key) {
906
+ return `${this.get('firstName')} ${this.get('lastName')}`;
907
+ },
908
+ set(key, value) {
909
+ let [firstName, lastName] = value.split(/\s+/);
910
+ this.setProperties({ firstName, lastName });
911
+ return value;
912
+ }
913
+ })
914
+ });
915
+
916
+ let client = Person.create();
917
+ client.get('firstName'); // 'Betty'
918
+
919
+ client.set('fullName', 'Carroll Fuller');
920
+ client.get('firstName'); // 'Carroll'
921
+ ```
922
+
923
+ When passed as an argument, the `set` function should accept two parameters,
924
+ `key` and `value`. The value returned from `set` will be the new value of the
925
+ property.
926
+
927
+ _Note: This is the preferred way to define computed properties when writing third-party
928
+ libraries that depend on or use Ember, since there is no guarantee that the user
929
+ will have [prototype Extensions](https://guides.emberjs.com/release/configuring-ember/disabling-prototype-extensions/) enabled._
930
+
931
+ @method computed
932
+ @for @ember/object
933
+ @static
934
+ @param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.
935
+ @param {Function} func The computed property function.
936
+ @return {ComputedDecorator} property decorator instance
937
+ @public
938
+ */
939
+ // @computed without parens or computed with descriptor args
940
+
941
+ // @computed with keys only
942
+
943
+ // @computed with keys and config
944
+
945
+ // @computed with config only
946
+
947
+ function computed(...args) {
948
+ (!(!(isElementDescriptor(args.slice(0, 3)) && args.length === 5 && args[4] === true)) && assert(`@computed can only be used directly as a native decorator. If you're using tracked in classic classes, add parenthesis to call it like a function: computed()`, !(isElementDescriptor(args.slice(0, 3)) && args.length === 5 && args[4] === true)));
949
+ if (isElementDescriptor(args)) {
950
+ // SAFETY: We passed in the impl for this class
951
+ let decorator = makeComputedDecorator(new ComputedProperty([]), ComputedDecoratorImpl);
952
+ return decorator(args[0], args[1], args[2]);
953
+ }
954
+
955
+ // SAFETY: We passed in the impl for this class
956
+ return makeComputedDecorator(new ComputedProperty(args), ComputedDecoratorImpl);
957
+ }
958
+ function autoComputed(...config) {
959
+ // SAFETY: We passed in the impl for this class
960
+ return makeComputedDecorator(new AutoComputedProperty(config), ComputedDecoratorImpl);
961
+ }
962
+
963
+ /**
964
+ Allows checking if a given property on an object is a computed property. For the most part,
965
+ this doesn't matter (you would normally just access the property directly and use its value),
966
+ but for some tooling specific scenarios (e.g. the ember-inspector) it is important to
967
+ differentiate if a property is a computed property or a "normal" property.
968
+
969
+ This will work on either a class's prototype or an instance itself.
970
+
971
+ @static
972
+ @method isComputed
973
+ @for @ember/debug
974
+ @private
975
+ */
976
+ function isComputed(obj, key) {
977
+ return Boolean(descriptorForProperty(obj, key));
978
+ }
979
+
980
+ export { ComputedProperty as C, PROPERTY_DID_CHANGE as P, endPropertyChanges as a, beginPropertyChanges as b, computed as c, defineProperty as d, expandProperties as e, changeProperties as f, defineValue as g, defineDecorator as h, autoComputed as i, isComputed as j, notifyPropertyChange as n };