ember-source 6.12.0-beta.3 → 7.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blueprints/initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +2 -2
- package/blueprints/instance-initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +3 -3
- package/build-metadata.json +3 -3
- package/dist/{packages/shared-chunks/registry-XY5cfmbH.js → dev/packages/@ember/-internals/container/index.js} +28 -27
- package/dist/{packages → dev/packages}/@ember/-internals/deprecations/index.js +5 -16
- package/dist/{packages/shared-chunks/env-DEd6hPbj.js → dev/packages/@ember/-internals/environment/index.js} +31 -53
- package/dist/dev/packages/@ember/-internals/glimmer/index.js +42 -0
- package/dist/{packages → dev/packages}/@ember/-internals/meta/lib/meta.js +37 -38
- package/dist/dev/packages/@ember/-internals/metal/index.js +63 -0
- package/dist/{packages → dev/packages}/@ember/-internals/routing/index.js +7 -8
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/ext/rsvp.js +1 -2
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/-proxy.js +14 -15
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/action_handler.js +21 -9
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/registry_proxy.js +11 -2
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/target_action_support.js +22 -9
- package/dist/{packages → dev/packages}/@ember/-internals/string/index.js +1 -2
- package/dist/dev/packages/@ember/-internals/utils/index.js +34 -0
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/fallback-view-registry.js +1 -2
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/mixins/action_support.js +16 -10
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/event_dispatcher.js +19 -20
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/utils.js +7 -23
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/core_view.js +6 -7
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/states.js +3 -4
- package/dist/{packages → dev/packages}/@ember/application/index.js +50 -121
- package/dist/{packages → dev/packages}/@ember/application/instance.js +17 -17
- package/dist/{packages → dev/packages}/@ember/application/namespace.js +27 -9
- package/dist/{packages → dev/packages}/@ember/array/index.js +34 -25
- package/dist/{packages → dev/packages}/@ember/array/proxy.js +19 -20
- package/dist/{packages → dev/packages}/@ember/canary-features/index.js +1 -1
- package/dist/dev/packages/@ember/component/helper.js +14 -0
- package/dist/{packages → dev/packages}/@ember/component/index.js +12 -12
- package/dist/{packages → dev/packages}/@ember/component/template-only.js +6 -6
- package/dist/{packages → dev/packages}/@ember/controller/index.js +7 -9
- package/dist/{packages → dev/packages}/@ember/debug/container-debug-adapter.js +6 -7
- package/dist/{packages → dev/packages}/@ember/debug/data-adapter.js +6 -7
- package/dist/{packages → dev/packages}/@ember/debug/index.js +4 -11
- package/dist/{packages → dev/packages}/@ember/debug/lib/assert.js +1 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/deprecate.js +7 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/handlers.js +1 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/warn.js +1 -2
- package/dist/{packages → dev/packages}/@ember/engine/index.js +22 -22
- package/dist/dev/packages/@ember/engine/instance.js +200 -0
- package/dist/{packages → dev/packages}/@ember/helper/index.js +12 -11
- package/dist/{packages → dev/packages}/@ember/instrumentation/index.js +3 -8
- package/dist/dev/packages/@ember/modifier/index.js +23 -0
- package/dist/{packages → dev/packages}/@ember/modifier/on.js +6 -6
- package/dist/dev/packages/@ember/object/-internals.js +49 -0
- package/dist/{packages → dev/packages}/@ember/object/compat.js +11 -12
- package/dist/{packages → dev/packages}/@ember/object/computed.js +7 -8
- package/dist/{packages → dev/packages}/@ember/object/core.js +28 -29
- package/dist/{packages → dev/packages}/@ember/object/evented.js +7 -8
- package/dist/dev/packages/@ember/object/events.js +11 -0
- package/dist/{packages → dev/packages}/@ember/object/index.js +18 -19
- package/dist/{packages → dev/packages}/@ember/object/internals.js +1 -1
- package/dist/{packages → dev/packages}/@ember/object/lib/computed/computed_macros.js +30 -27
- package/dist/{packages → dev/packages}/@ember/object/lib/computed/reduce_computed_macros.js +36 -37
- package/dist/{packages → dev/packages}/@ember/object/mixin.js +15 -23
- package/dist/dev/packages/@ember/object/observable.js +181 -0
- package/dist/dev/packages/@ember/object/observers.js +11 -0
- package/dist/{packages → dev/packages}/@ember/object/promise-proxy-mixin.js +7 -8
- package/dist/dev/packages/@ember/renderer/index.js +14 -0
- package/dist/dev/packages/@ember/routing/-internals.js +22 -0
- package/dist/{packages → dev/packages}/@ember/routing/hash-location.js +1 -1
- package/dist/{packages → dev/packages}/@ember/routing/history-location.js +9 -25
- package/dist/dev/packages/@ember/routing/index.js +14 -0
- package/dist/{packages → dev/packages}/@ember/routing/lib/dsl.js +5 -6
- package/dist/{packages → dev/packages}/@ember/routing/lib/generate_controller.js +22 -10
- package/dist/{packages → dev/packages}/@ember/routing/lib/location-utils.js +3 -16
- package/dist/{packages → dev/packages}/@ember/routing/lib/routing-service.js +19 -9
- package/dist/{packages → dev/packages}/@ember/routing/lib/utils.js +12 -13
- package/dist/{packages → dev/packages}/@ember/routing/none-location.js +2 -4
- package/dist/{packages → dev/packages}/@ember/routing/route.js +38 -39
- package/dist/{packages → dev/packages}/@ember/routing/router-service.js +13 -14
- package/dist/{packages → dev/packages}/@ember/routing/router.js +63 -71
- package/dist/{packages → dev/packages}/@ember/runloop/index.js +9 -8
- package/dist/{packages → dev/packages}/@ember/service/index.js +6 -7
- package/dist/dev/packages/@ember/template/index.js +14 -0
- package/dist/{packages → dev/packages}/@ember/template-compilation/index.js +3 -3
- package/dist/dev/packages/@ember/template-compiler/index.js +2 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/compile-options.js +11 -6
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/dasherize-component-name.js +1 -2
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-attrs.js +19 -3
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +11 -2
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +1 -2
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +3 -4
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/index.js +40 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-track-array.js +21 -2
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/transform-in-element.js +50 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-resolutions.js +2 -3
- package/dist/dev/packages/@ember/template-compiler/lib/template.js +248 -0
- package/dist/dev/packages/@ember/template-factory/index.js +8 -0
- package/dist/dev/packages/@ember/test/index.js +18 -0
- package/dist/{packages → dev/packages}/@ember/utils/lib/compare.js +5 -6
- package/dist/{packages → dev/packages}/@ember/utils/lib/is_empty.js +6 -7
- package/dist/{packages → dev/packages}/@glimmer/destroyable/index.js +21 -16
- package/dist/{packages/shared-chunks/encoder-CT1wqYMF.js → dev/packages/@glimmer/encoder/index.js} +3 -4
- package/dist/{packages → dev/packages}/@glimmer/global-context/index.js +6 -5
- package/dist/{packages/shared-chunks/api-1B_9SjFR.js → dev/packages/@glimmer/manager/index.js} +17 -14
- package/dist/dev/packages/@glimmer/node/index.js +40 -0
- package/dist/{packages → dev/packages}/@glimmer/opcode-compiler/index.js +5 -6
- package/dist/dev/packages/@glimmer/program/index.js +12 -0
- package/dist/dev/packages/@glimmer/reference/index.js +208 -0
- package/dist/dev/packages/@glimmer/runtime/index.js +11 -0
- package/dist/dev/packages/@glimmer/tracking/index.js +137 -0
- package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +11 -0
- package/dist/{packages → dev/packages}/@glimmer/util/index.js +2 -3
- package/dist/{packages → dev/packages}/@glimmer/validator/index.js +304 -372
- package/dist/{packages → dev/packages}/@glimmer/vm/index.js +1 -1
- package/dist/{packages → dev/packages}/ember/version.js +2 -2
- package/dist/dev/packages/ember-template-compiler/index.js +109 -0
- package/dist/{packages → dev/packages}/ember-testing/index.js +1 -3
- package/dist/dev/packages/ember-testing/lib/public-api.js +2 -0
- package/dist/dev/packages/ember-testing/lib/test/pending_requests.js +10 -0
- package/dist/dev/packages/ember-testing/lib/test.js +25 -0
- package/dist/{packages/shared-chunks/router-DSi8WnDi.js → dev/packages/router_js/index.js} +120 -58
- package/dist/{packages/shared-chunks/alias-BEMS3qgG.js → dev/packages/shared-chunks/alias-CSC0WIbj.js} +4 -5
- package/dist/{packages/shared-chunks/api-CkUl6KyJ.js → dev/packages/shared-chunks/api-BqXkkT0p.js} +14 -16
- package/dist/{packages/shared-chunks/args-proxy-B91L3LRK.js → dev/packages/shared-chunks/args-proxy-DgXMc9b5.js} +7 -8
- package/dist/{packages/shared-chunks/array-BqYCCatg.js → dev/packages/shared-chunks/array-D8PfjQHi.js} +3 -4
- package/dist/dev/packages/shared-chunks/capabilities-O_xc7Yqk.js +34 -0
- package/dist/{packages/shared-chunks/collections-B8me-ZlQ.js → dev/packages/shared-chunks/collections-D_nY_0UJ.js} +1 -2
- package/dist/{packages/@ember/template-compiler/lib/template.js → dev/packages/shared-chunks/compiler-CNj62pww.js} +22 -243
- package/dist/{packages/shared-chunks/constants-oDhF27qL.js → dev/packages/shared-chunks/constants-eoaL3OJQ.js} +9 -9
- package/dist/{packages/shared-chunks/debug-to-string-BsFOvUtQ.js → dev/packages/shared-chunks/debug-to-string-CFb7h0lY.js} +1 -3
- package/dist/{packages/shared-chunks/dynamic-CuBsUXX8.js → dev/packages/shared-chunks/dynamic-CFg3dljk.js} +108 -134
- package/dist/{packages/shared-chunks/element-builder-BuVym8EM.js → dev/packages/shared-chunks/element-builder-BOxP8emt.js} +4 -5
- package/dist/{packages/shared-chunks/flags-BsZlvEeR.js → dev/packages/shared-chunks/flags-B9qxc-pB.js} +1 -1
- package/dist/{packages/shared-chunks/capabilities-DHiXCCuB.js → dev/packages/shared-chunks/fragment-Cc5k9Oy4.js} +2 -33
- package/dist/{packages/shared-chunks/index-ByyoGpfz.js → dev/packages/shared-chunks/index-PxU6E7q8.js} +658 -214
- package/dist/{packages/shared-chunks/index-CQkjwqTv.js → dev/packages/shared-chunks/index-Q7JnrdBn.js} +20 -19
- package/dist/dev/packages/shared-chunks/invoke-DxRPE05O.js +67 -0
- package/dist/{packages/shared-chunks/is_proxy-C2q5rUMp.js → dev/packages/shared-chunks/is_proxy-B0smdQy8.js} +1 -1
- package/dist/{packages/shared-chunks/mandatory-setter-DLKyVs4Q.js → dev/packages/shared-chunks/mandatory-setter-DHZe7-kW.js} +47 -48
- package/dist/{packages/shared-chunks/name-DVtQREj6.js → dev/packages/shared-chunks/name-Z7dpqvzn.js} +1 -1
- package/dist/{packages/shared-chunks/namespace_search-ClQOZuFA.js → dev/packages/shared-chunks/namespace_search-uT8odThF.js} +3 -4
- package/dist/{packages/shared-chunks/observers-DhgQ6ba5.js → dev/packages/shared-chunks/observers-Bj9qLVau.js} +231 -87
- package/dist/{packages/shared-chunks/program-CcLlGnAU.js → dev/packages/shared-chunks/program-DfV0v8aa.js} +4 -6
- package/dist/{packages/shared-chunks/program-context-CZJnCFdo.js → dev/packages/shared-chunks/program-context-BRjCC_BA.js} +2 -2
- package/dist/{packages/shared-chunks/property_set-DrZnfGQ7.js → dev/packages/shared-chunks/property_set-DaoZXGM5.js} +11 -16
- package/dist/dev/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
- package/dist/{packages/shared-chunks/reference-B6HMX4y0.js → dev/packages/shared-chunks/reference-C3TKDRnP.js} +11 -12
- package/dist/{packages/@glimmer/runtime/index.js → dev/packages/shared-chunks/rehydrate-builder-DPImr9e9.js} +8 -16
- package/dist/{packages/shared-chunks/render-DTOhhssy.js → dev/packages/shared-chunks/render-sg8BuFaE.js} +16 -23
- package/dist/{packages/shared-chunks/serialize-builder-DEgRJgNQ.js → dev/packages/shared-chunks/serialize-builder-b_gSYCSS.js} +7 -7
- package/dist/{packages/shared-chunks/set_properties-Dag9Xz6u.js → dev/packages/shared-chunks/set_properties-kVGzZL_a.js} +2 -2
- package/dist/{packages/shared-chunks/setup-registry-Bbj8WQen.js → dev/packages/shared-chunks/setup-registry-DGdDOxrk.js} +12 -12
- package/dist/{packages/shared-chunks/simple-cast-BXTrayoV.js → dev/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
- package/dist/{packages/shared-chunks/template-CMHIG4cn.js → dev/packages/shared-chunks/template-kM-7TTcc.js} +3 -4
- package/dist/dev/packages/shared-chunks/to-string-C7M8LBLH.js +36 -0
- package/dist/{packages/shared-chunks/transform-resolutions-vHYYonpB.js → dev/packages/shared-chunks/transform-resolutions-fXGQKGsL.js} +331 -288
- package/dist/{packages/shared-chunks/unrecognized-url-error-BBMMZhBN.js → dev/packages/shared-chunks/unrecognized-url-error-B3wUTorp.js} +103 -39
- package/dist/prod/packages/@ember/-internals/browser-environment/index.js +2 -0
- package/dist/prod/packages/@ember/-internals/container/index.js +697 -0
- package/dist/prod/packages/@ember/-internals/deprecations/index.js +114 -0
- package/dist/prod/packages/@ember/-internals/environment/index.js +171 -0
- package/dist/prod/packages/@ember/-internals/error-handling/index.js +26 -0
- package/dist/prod/packages/@ember/-internals/glimmer/index.js +39 -0
- package/dist/prod/packages/@ember/-internals/meta/index.js +1 -0
- package/dist/prod/packages/@ember/-internals/meta/lib/meta.js +455 -0
- package/dist/prod/packages/@ember/-internals/metal/index.js +61 -0
- package/dist/prod/packages/@ember/-internals/owner/index.js +252 -0
- package/dist/prod/packages/@ember/-internals/routing/index.js +14 -0
- package/dist/prod/packages/@ember/-internals/runtime/index.js +9 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +51 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +89 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +187 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +37 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +44 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +42 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +142 -0
- package/dist/prod/packages/@ember/-internals/string/index.js +93 -0
- package/dist/prod/packages/@ember/-internals/utility-types/index.js +12 -0
- package/dist/prod/packages/@ember/-internals/utils/index.js +75 -0
- package/dist/prod/packages/@ember/-internals/views/index.js +7 -0
- package/dist/prod/packages/@ember/-internals/views/lib/compat/attrs.js +3 -0
- package/dist/prod/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +7 -0
- package/dist/prod/packages/@ember/-internals/views/lib/component_lookup.js +14 -0
- package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +35 -0
- package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +227 -0
- package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +172 -0
- package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +87 -0
- package/dist/prod/packages/@ember/-internals/views/lib/views/states.js +83 -0
- package/dist/prod/packages/@ember/application/index.js +899 -0
- package/dist/prod/packages/@ember/application/instance.js +438 -0
- package/dist/prod/packages/@ember/application/namespace.js +68 -0
- package/dist/prod/packages/@ember/array/-internals.js +9 -0
- package/dist/prod/packages/@ember/array/index.js +591 -0
- package/dist/prod/packages/@ember/array/lib/make-array.js +42 -0
- package/dist/prod/packages/@ember/array/make.js +1 -0
- package/dist/prod/packages/@ember/array/mutable.js +1 -0
- package/dist/prod/packages/@ember/array/proxy.js +267 -0
- package/dist/prod/packages/@ember/canary-features/index.js +67 -0
- package/dist/prod/packages/@ember/component/helper.js +12 -0
- package/dist/prod/packages/@ember/component/index.js +32 -0
- package/dist/prod/packages/@ember/component/template-only.js +39 -0
- package/dist/prod/packages/@ember/controller/index.js +177 -0
- package/dist/prod/packages/@ember/debug/container-debug-adapter.js +117 -0
- package/dist/prod/packages/@ember/debug/data-adapter.js +553 -0
- package/dist/prod/packages/@ember/debug/index.js +30 -0
- package/dist/prod/packages/@ember/debug/lib/assert.js +7 -0
- package/dist/prod/packages/@ember/debug/lib/capture-render-tree.js +28 -0
- package/dist/prod/packages/@ember/debug/lib/deprecate.js +56 -0
- package/dist/prod/packages/@ember/debug/lib/handlers.js +5 -0
- package/dist/prod/packages/@ember/debug/lib/inspect.js +120 -0
- package/dist/prod/packages/@ember/debug/lib/testing.js +9 -0
- package/dist/prod/packages/@ember/debug/lib/warn.js +6 -0
- package/dist/prod/packages/@ember/deprecated-features/index.js +7 -0
- package/dist/prod/packages/@ember/destroyable/index.js +251 -0
- package/dist/prod/packages/@ember/engine/index.js +450 -0
- package/dist/{packages → prod/packages}/@ember/engine/instance.js +24 -10
- package/dist/prod/packages/@ember/engine/lib/engine-parent.js +33 -0
- package/dist/prod/packages/@ember/engine/parent.js +1 -0
- package/dist/prod/packages/@ember/enumerable/index.js +20 -0
- package/dist/prod/packages/@ember/enumerable/mutable.js +22 -0
- package/dist/prod/packages/@ember/helper/index.js +489 -0
- package/dist/prod/packages/@ember/instrumentation/index.js +242 -0
- package/dist/prod/packages/@ember/modifier/index.js +21 -0
- package/dist/prod/packages/@ember/modifier/on.js +20 -0
- package/dist/prod/packages/@ember/object/-internals.js +28 -0
- package/dist/prod/packages/@ember/object/compat.js +128 -0
- package/dist/prod/packages/@ember/object/computed.js +10 -0
- package/dist/prod/packages/@ember/object/core.js +781 -0
- package/dist/prod/packages/@ember/object/evented.js +76 -0
- package/dist/prod/packages/@ember/object/events.js +6 -0
- package/dist/prod/packages/@ember/object/index.js +205 -0
- package/dist/prod/packages/@ember/object/internals.js +8 -0
- package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +776 -0
- package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +1032 -0
- package/dist/prod/packages/@ember/object/mixin.js +560 -0
- package/dist/{packages → prod/packages}/@ember/object/observable.js +80 -15
- package/dist/prod/packages/@ember/object/observers.js +6 -0
- package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +138 -0
- package/dist/prod/packages/@ember/object/proxy.js +98 -0
- package/dist/prod/packages/@ember/owner/index.js +88 -0
- package/dist/prod/packages/@ember/reactive/collections.js +1 -0
- package/dist/prod/packages/@ember/reactive/index.js +12 -0
- package/dist/prod/packages/@ember/renderer/index.js +12 -0
- package/dist/prod/packages/@ember/routing/hash-location.js +153 -0
- package/dist/prod/packages/@ember/routing/history-location.js +250 -0
- package/dist/prod/packages/@ember/routing/index.js +12 -0
- package/dist/prod/packages/@ember/routing/lib/cache.js +37 -0
- package/dist/prod/packages/@ember/routing/lib/controller_for.js +16 -0
- package/dist/prod/packages/@ember/routing/lib/dsl.js +178 -0
- package/dist/prod/packages/@ember/routing/lib/generate_controller.js +62 -0
- package/dist/prod/packages/@ember/routing/lib/location-utils.js +48 -0
- package/dist/prod/packages/@ember/routing/lib/query_params.js +9 -0
- package/dist/prod/packages/@ember/routing/lib/router_state.js +26 -0
- package/dist/prod/packages/@ember/routing/lib/routing-service.js +125 -0
- package/dist/prod/packages/@ember/routing/lib/utils.js +236 -0
- package/dist/prod/packages/@ember/routing/none-location.js +120 -0
- package/dist/prod/packages/@ember/routing/route.js +1604 -0
- package/dist/prod/packages/@ember/routing/router-service.js +640 -0
- package/dist/prod/packages/@ember/routing/router.js +1335 -0
- package/dist/prod/packages/@ember/runloop/index.js +736 -0
- package/dist/prod/packages/@ember/service/index.js +124 -0
- package/dist/prod/packages/@ember/template/index.js +12 -0
- package/dist/prod/packages/@ember/template-compilation/index.js +20 -0
- package/dist/prod/packages/@ember/template-compiler/-internal-primitives.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/-internal-utils.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/index.js +2 -0
- package/dist/prod/packages/@ember/template-compiler/lib/-internal/primitives.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +103 -0
- package/dist/prod/packages/@ember/template-compiler/lib/dasherize-component-name.js +21 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-attrs.js +49 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +34 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +22 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +37 -0
- package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/index.js +1 -1
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-action-syntax.js +65 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +51 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-track-array.js +50 -0
- package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/transform-in-element.js +20 -6
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +37 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +4 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +57 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/utils.js +55 -0
- package/dist/prod/packages/@ember/template-compiler/lib/public-api.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/runtime.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/system/calculate-location-display.js +28 -0
- package/dist/prod/packages/@ember/template-compiler/lib/template.js +245 -0
- package/dist/prod/packages/@ember/template-factory/index.js +5 -0
- package/dist/prod/packages/@ember/test/adapter.js +2 -0
- package/dist/prod/packages/@ember/test/index.js +18 -0
- package/dist/prod/packages/@ember/utils/index.js +7 -0
- package/dist/prod/packages/@ember/utils/lib/compare.js +159 -0
- package/dist/prod/packages/@ember/utils/lib/is-equal.js +60 -0
- package/dist/prod/packages/@ember/utils/lib/is_blank.js +36 -0
- package/dist/prod/packages/@ember/utils/lib/is_empty.js +67 -0
- package/dist/prod/packages/@ember/utils/lib/is_none.js +28 -0
- package/dist/prod/packages/@ember/utils/lib/is_present.js +39 -0
- package/dist/prod/packages/@ember/utils/lib/type-of.js +110 -0
- package/dist/prod/packages/@ember/version/index.js +1 -0
- package/dist/prod/packages/@glimmer/destroyable/index.js +128 -0
- package/dist/prod/packages/@glimmer/encoder/index.js +28 -0
- package/dist/prod/packages/@glimmer/env/index.js +4 -0
- package/dist/prod/packages/@glimmer/global-context/index.js +138 -0
- package/dist/prod/packages/@glimmer/manager/index.js +293 -0
- package/dist/{packages/shared-chunks/node-dom-helper-BYL7Plyj.js → prod/packages/@glimmer/node/index.js} +10 -12
- package/dist/prod/packages/@glimmer/opcode-compiler/index.js +40 -0
- package/dist/prod/packages/@glimmer/owner/index.js +19 -0
- package/dist/prod/packages/@glimmer/program/index.js +12 -0
- package/dist/{packages/shared-chunks/iterable-BKS7az3P.js → prod/packages/@glimmer/reference/index.js} +13 -12
- package/dist/prod/packages/@glimmer/runtime/index.js +9 -0
- package/dist/prod/packages/@glimmer/tracking/index.js +115 -0
- package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +6 -0
- package/dist/prod/packages/@glimmer/util/index.js +129 -0
- package/dist/prod/packages/@glimmer/validator/index.js +1027 -0
- package/dist/prod/packages/@glimmer/vm/index.js +15 -0
- package/dist/prod/packages/@glimmer/wire-format/index.js +102 -0
- package/dist/prod/packages/@simple-dom/document/index.js +355 -0
- package/dist/prod/packages/backburner.js/index.js +939 -0
- package/dist/prod/packages/dag-map/index.js +202 -0
- package/dist/prod/packages/ember/version.js +4 -0
- package/dist/prod/packages/ember-template-compiler/index.js +100 -0
- package/dist/prod/packages/ember-testing/index.js +6 -0
- package/dist/prod/packages/ember-testing/lib/adapters/adapter.js +49 -0
- package/dist/prod/packages/ember-testing/lib/public-api.js +2 -0
- package/dist/prod/packages/ember-testing/lib/test/adapter.js +32 -0
- package/dist/prod/packages/ember-testing/lib/test/pending_requests.js +10 -0
- package/dist/prod/packages/ember-testing/lib/test/waiters.js +128 -0
- package/dist/prod/packages/ember-testing/lib/test.js +25 -0
- package/dist/prod/packages/route-recognizer/index.js +671 -0
- package/dist/prod/packages/router_js/index.js +1527 -0
- package/dist/prod/packages/rsvp/index.js +1 -0
- package/dist/prod/packages/shared-chunks/alias-BkT-0B1G.js +81 -0
- package/dist/prod/packages/shared-chunks/api-Co-k4HVs.js +200 -0
- package/dist/prod/packages/shared-chunks/args-proxy-Dl0A0YWI.js +131 -0
- package/dist/prod/packages/shared-chunks/array-EwekEvId.js +117 -0
- package/dist/prod/packages/shared-chunks/array-utils-CZQxrdD3.js +45 -0
- package/dist/prod/packages/shared-chunks/assert-CUCJBR2C.js +19 -0
- package/dist/prod/packages/shared-chunks/cache-qDyqAcpg.js +35 -0
- package/dist/prod/packages/shared-chunks/capabilities-DGmQ_mz4.js +26 -0
- package/dist/prod/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +121 -0
- package/dist/prod/packages/shared-chunks/collections-GpG8lT2g.js +75 -0
- package/dist/prod/packages/shared-chunks/compiler-Ddfo5StE.js +6806 -0
- package/dist/prod/packages/shared-chunks/computed_cache-DmYKevAP.js +12 -0
- package/dist/prod/packages/shared-chunks/constants-b-2IVErl.js +210 -0
- package/dist/prod/packages/shared-chunks/debug-brand-B1TWjOCH.js +12 -0
- package/dist/prod/packages/shared-chunks/decorator-BdDDBUd2.js +123 -0
- package/dist/prod/packages/shared-chunks/dictionary-gc5gpyOG.js +13 -0
- package/dist/prod/packages/shared-chunks/element-builder-CiLTrXD6.js +776 -0
- package/dist/prod/packages/shared-chunks/flags-B9qxc-pB.js +24 -0
- package/dist/prod/packages/shared-chunks/fragment-EpVz5Xuc.js +910 -0
- package/dist/prod/packages/shared-chunks/get-debug-name-BDxIL2Y1.js +3 -0
- package/dist/prod/packages/shared-chunks/has-dom-DdQORPzI.js +4 -0
- package/dist/prod/packages/shared-chunks/index-CSVCFS_p.js +1904 -0
- package/dist/prod/packages/shared-chunks/index-Cc8WmrB-.js +21 -0
- package/dist/prod/packages/shared-chunks/index-DZLHQAlb.js +5842 -0
- package/dist/prod/packages/shared-chunks/injected_property-DL3vQoFA.js +58 -0
- package/dist/prod/packages/shared-chunks/invoke-DxL00a1D.js +53 -0
- package/dist/prod/packages/shared-chunks/is_proxy-Cr1qlMv_.js +16 -0
- package/dist/prod/packages/shared-chunks/lookup-descriptor-CwcVgaLv.js +13 -0
- package/dist/prod/packages/shared-chunks/name-C68GLLO3.js +11 -0
- package/dist/prod/packages/shared-chunks/namespace_search-Aog9nySA.js +1070 -0
- package/dist/prod/packages/shared-chunks/object-utils-AijlD-JH.js +12 -0
- package/dist/prod/packages/shared-chunks/observers-R1ZklwWy.js +714 -0
- package/dist/prod/packages/shared-chunks/on-CrTl7JQU.js +3329 -0
- package/dist/prod/packages/shared-chunks/program-B7SJZ5NF.js +176 -0
- package/dist/prod/packages/shared-chunks/program-context-C-JdYXRA.js +146 -0
- package/dist/prod/packages/shared-chunks/property_set-O080KTKZ.js +99 -0
- package/dist/prod/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
- package/dist/prod/packages/shared-chunks/reference-BNqcwZWH.js +151 -0
- package/dist/prod/packages/shared-chunks/registers-ylirb0dq.js +35 -0
- package/dist/prod/packages/shared-chunks/rehydrate-builder-CSn1aIO1.js +459 -0
- package/dist/prod/packages/shared-chunks/render-C1ZnScKH.js +1464 -0
- package/dist/prod/packages/shared-chunks/rsvp-CnCSY930.js +2306 -0
- package/dist/prod/packages/shared-chunks/serialize-builder-CVQ3q8rJ.js +124 -0
- package/dist/prod/packages/shared-chunks/set_properties-CjsDTRey.js +101 -0
- package/dist/prod/packages/shared-chunks/setup-registry-CMNYh2jY.js +53 -0
- package/dist/prod/packages/shared-chunks/simple-cast-DCvJLSin.js +33 -0
- package/dist/prod/packages/shared-chunks/super-Cm_a_cLQ.js +275 -0
- package/dist/prod/packages/shared-chunks/template-Dc_cBOoX.js +19 -0
- package/dist/prod/packages/shared-chunks/tracked-ChVNBE2f.js +131 -0
- package/dist/prod/packages/shared-chunks/transform-resolutions-C7wq_Q_c.js +6939 -0
- package/dist/prod/packages/shared-chunks/unrecognized-url-error-DDBwfzdm.js +537 -0
- package/docs/data.json +3009 -2358
- package/lib/index.js +157 -279
- package/package.json +27 -58
- package/types/stable/@ember/-internals/deprecations/index.d.ts +0 -6
- package/types/stable/@ember/-internals/environment/index.d.ts +0 -1
- package/types/stable/@ember/-internals/environment/lib/env.d.ts +0 -3
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -6
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +1 -2
- package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +22 -29
- package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +2 -2
- package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +0 -2
- package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +0 -1
- package/types/stable/@ember/-internals/meta/lib/meta.d.ts +1 -1
- package/types/stable/@ember/-internals/metal/lib/alias.d.ts +0 -11
- package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +0 -1
- package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +0 -1
- package/types/stable/@ember/-internals/metal/lib/observer.d.ts +0 -2
- package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +4 -10
- package/types/stable/@ember/-internals/utils/index.d.ts +0 -1
- package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +3 -15
- package/types/stable/@ember/application/index.d.ts +2 -63
- package/types/stable/@ember/routing/history-location.d.ts +0 -1
- package/types/stable/@ember/routing/lib/location-utils.d.ts +1 -2
- package/types/stable/@ember/routing/none-location.d.ts +1 -2
- package/types/stable/@ember/template-compiler/index.d.ts +1 -0
- package/types/stable/@ember/template-compiler/lib/plugins/allowed-globals.d.ts +26 -0
- package/types/stable/@ember/test/index.d.ts +0 -3
- package/types/stable/@glimmer/interfaces/lib/compile/wire-format/api.d.ts +1 -1
- package/types/stable/@glimmer/interfaces/lib/template.d.ts +1 -1
- package/types/stable/@glimmer/program/lib/program.d.ts +0 -1
- package/types/stable/@glimmer/validator/lib/collections/map.d.ts +1 -1
- package/types/stable/@handlebars/parser/types/ast.d.ts +148 -0
- package/types/stable/@handlebars/parser/types/index.d.ts +13 -0
- package/types/stable/ember-template-compiler/index.d.ts +0 -2
- package/types/stable/ember-template-compiler/lib/public-api.d.ts +0 -1
- package/types/stable/ember-testing/lib/public-api.d.ts +0 -6
- package/types/stable/ember-testing/lib/test/pending_requests.d.ts +0 -3
- package/types/stable/ember-testing/lib/test.d.ts +0 -23
- package/types/stable/index.d.ts +15 -32
- package/types/stable/router_js/index.d.ts +7 -0
- package/types/stable/router_js/lib/core.d.ts +9 -0
- package/types/stable/router_js/lib/route-info.d.ts +107 -0
- package/types/stable/router_js/lib/router.d.ts +245 -0
- package/types/stable/router_js/lib/transition-aborted-error.d.ts +15 -0
- package/types/stable/router_js/lib/transition-intent/named-transition-intent.d.ts +23 -0
- package/types/stable/router_js/lib/transition-intent/url-transition-intent.d.ts +12 -0
- package/types/stable/router_js/lib/transition-intent.d.ts +13 -0
- package/types/stable/router_js/lib/transition-state.d.ts +25 -0
- package/types/stable/router_js/lib/transition.d.ts +241 -0
- package/types/stable/router_js/lib/unrecognized-url-error.d.ts +11 -0
- package/types/stable/router_js/lib/utils.d.ts +41 -0
- package/dist/ember-template-compiler.js +0 -20631
- package/dist/ember-template-compiler.js.map +0 -1
- package/dist/ember-testing.js +0 -1351
- package/dist/ember-testing.js.map +0 -1
- package/dist/ember.debug.js +0 -52306
- package/dist/ember.debug.js.map +0 -1
- package/dist/ember.prod.js +0 -49369
- package/dist/ember.prod.js.map +0 -1
- package/dist/packages/@ember/-internals/container/index.js +0 -1
- package/dist/packages/@ember/-internals/environment/index.js +0 -1
- package/dist/packages/@ember/-internals/glimmer/index.js +0 -18
- package/dist/packages/@ember/-internals/metal/index.js +0 -51
- package/dist/packages/@ember/-internals/utils/index.js +0 -7
- package/dist/packages/@ember/application/lib/lazy_load.js +0 -68
- package/dist/packages/@ember/component/helper.js +0 -14
- package/dist/packages/@ember/modifier/index.js +0 -23
- package/dist/packages/@ember/object/-internals.js +0 -35
- package/dist/packages/@ember/object/events.js +0 -12
- package/dist/packages/@ember/object/observers.js +0 -12
- package/dist/packages/@ember/renderer/index.js +0 -14
- package/dist/packages/@ember/routing/index.js +0 -14
- package/dist/packages/@ember/template/index.js +0 -14
- package/dist/packages/@ember/template-factory/index.js +0 -8
- package/dist/packages/@ember/test/index.js +0 -27
- package/dist/packages/@glimmer/encoder/index.js +0 -1
- package/dist/packages/@glimmer/manager/index.js +0 -5
- package/dist/packages/@glimmer/node/index.js +0 -2
- package/dist/packages/@glimmer/program/index.js +0 -3
- package/dist/packages/@glimmer/reference/index.js +0 -2
- package/dist/packages/@glimmer/tracking/index.js +0 -48
- package/dist/packages/@glimmer/tracking/primitives/cache/index.js +0 -12
- package/dist/packages/ember/barrel.js +0 -511
- package/dist/packages/ember/index.js +0 -20
- package/dist/packages/ember-template-compiler/index.js +0 -17135
- package/dist/packages/ember-testing/lib/adapters/qunit.js +0 -53
- package/dist/packages/ember-testing/lib/ext/application.js +0 -174
- package/dist/packages/ember-testing/lib/ext/rsvp.js +0 -17
- package/dist/packages/ember-testing/lib/helpers/and_then.js +0 -11
- package/dist/packages/ember-testing/lib/helpers/current_path.js +0 -32
- package/dist/packages/ember-testing/lib/helpers/current_route_name.js +0 -32
- package/dist/packages/ember-testing/lib/helpers/current_url.js +0 -29
- package/dist/packages/ember-testing/lib/helpers/pause_test.js +0 -76
- package/dist/packages/ember-testing/lib/helpers/visit.js +0 -51
- package/dist/packages/ember-testing/lib/helpers/wait.js +0 -55
- package/dist/packages/ember-testing/lib/helpers.js +0 -17
- package/dist/packages/ember-testing/lib/initializers.js +0 -56
- package/dist/packages/ember-testing/lib/public-api.js +0 -8
- package/dist/packages/ember-testing/lib/setup_for_testing.js +0 -31
- package/dist/packages/ember-testing/lib/test/helpers.js +0 -133
- package/dist/packages/ember-testing/lib/test/on_inject_helpers.js +0 -39
- package/dist/packages/ember-testing/lib/test/pending_requests.js +0 -22
- package/dist/packages/ember-testing/lib/test/promise.js +0 -83
- package/dist/packages/ember-testing/lib/test/run.js +0 -11
- package/dist/packages/ember-testing/lib/test.js +0 -68
- package/dist/packages/router_js/index.js +0 -2
- package/dist/packages/shared-chunks/helpers-C1rIkuSd.js +0 -11
- package/dist/packages/shared-chunks/invoke-BjRgvK2V.js +0 -27
- package/dist/packages/shared-chunks/public-api-BQsJemZG.js +0 -20
- package/dist/packages/shared-chunks/template_registry-DigcUg9m.js +0 -24
- package/dist/packages/shared-chunks/to-string-CqD7_vQ4.js +0 -60
- package/types/stable/@ember/-internals/environment/lib/global.d.ts +0 -4
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +0 -34
- package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +0 -5
- package/types/stable/@ember/-internals/glimmer/lib/templates/empty.d.ts +0 -4
- package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +0 -4
- package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +0 -3
- package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +0 -5
- package/types/stable/@ember/application/lib/lazy_load.d.ts +0 -38
- package/types/stable/@ember/template-compiler/lib/public-types.d.ts +0 -3
- package/types/stable/ember/barrel.d.ts +0 -358
- package/types/stable/ember/index.d.ts +0 -358
- package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +0 -26
- package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +0 -3
- package/types/stable/ember-testing/lib/adapters/qunit.d.ts +0 -22
- package/types/stable/ember-testing/lib/ext/application.d.ts +0 -12
- package/types/stable/ember-testing/lib/ext/rsvp.d.ts +0 -4
- package/types/stable/ember-testing/lib/helpers/and_then.d.ts +0 -4
- package/types/stable/ember-testing/lib/helpers/current_path.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +0 -21
- package/types/stable/ember-testing/lib/helpers/current_url.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +0 -52
- package/types/stable/ember-testing/lib/helpers/visit.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/wait.d.ts +0 -34
- package/types/stable/ember-testing/lib/helpers.d.ts +0 -3
- package/types/stable/ember-testing/lib/initializers.d.ts +0 -3
- package/types/stable/ember-testing/lib/setup_for_testing.d.ts +0 -15
- package/types/stable/ember-testing/lib/test/helpers.d.ts +0 -116
- package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +0 -33
- package/types/stable/ember-testing/lib/test/promise.d.ts +0 -37
- package/types/stable/ember-testing/lib/test/run.d.ts +0 -3
- package/types/stable/loader/lib/index.d.ts +0 -4
- package/types/stable/require.d.ts +0 -4
- /package/dist/{packages → dev/packages}/@ember/-internals/browser-environment/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/error-handling/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/meta/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/comparable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/container_proxy.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/utility-types/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/attrs.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/component_lookup.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/-internals.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/lib/make-array.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/make.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/mutable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/capture-render-tree.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/inspect.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/testing.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/deprecated-features/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/destroyable/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/engine/lib/engine-parent.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/engine/parent.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/enumerable/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/enumerable/mutable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/object/proxy.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/reactive/collections.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/reactive/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/cache.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/controller_for.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/query_params.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/router_state.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-primitives.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-utils.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/-internal/primitives.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-action-syntax.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/utils.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/public-api.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/runtime.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/system/calculate-location-display.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/runtime.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/test/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is-equal.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_blank.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_none.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_present.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/type-of.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/version/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/env/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/wire-format/index.js +0 -0
- /package/dist/{packages → dev/packages}/@simple-dom/document/index.js +0 -0
- /package/dist/{packages → dev/packages}/backburner.js/index.js +0 -0
- /package/dist/{packages → dev/packages}/dag-map/index.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/adapters/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/test/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/test/waiters.js +0 -0
- /package/dist/{packages → dev/packages}/route-recognizer/index.js +0 -0
- /package/dist/{packages → dev/packages}/rsvp/index.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/array-utils-CZQxrdD3.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/assert-CUCJBR2C.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/cache-qDyqAcpg.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/computed_cache-DmYKevAP.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/debug-brand-B1TWjOCH.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/dictionary-gc5gpyOG.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/index-BGP1rw3B.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/object-utils-AijlD-JH.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/present-B1rrjAVM.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/registers-ylirb0dq.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/rsvp-CnCSY930.js +0 -0
- /package/dist/{packages → prod/packages}/@ember/routing/-internals.js +0 -0
- /package/dist/{packages/@ember/template-compiler/index.js → prod/packages/@ember/template-compiler/runtime.js} +0 -0
|
@@ -0,0 +1,1070 @@
|
|
|
1
|
+
import { peekMeta, meta } from '../@ember/-internals/meta/lib/meta.js';
|
|
2
|
+
import './super-Cm_a_cLQ.js';
|
|
3
|
+
import { context } from '../@ember/-internals/environment/index.js';
|
|
4
|
+
import inspect from '../@ember/debug/lib/inspect.js';
|
|
5
|
+
import { tagMetaFor, tagFor, validateTag, untrack, updateTag as UPDATE_TAG, valueForTag, consumeTag, ALLOW_CYCLES, track } from '../@glimmer/validator/index.js';
|
|
6
|
+
import { w as flushSyncObservers, x as resumeObserverDeactivation, v as markObjectAsDirty, y as suspendedObserverDeactivation, z as getChainTagsForKeys, l as finishLazyChains, c as addObserver, B as setObserverSuspended, d as revalidateObservers } from './observers-R1ZklwWy.js';
|
|
7
|
+
import { c as ComputedDescriptor, i as isElementDescriptor, m as makeComputedDecorator, b as descriptorForDecorator, d as descriptorForProperty, a as isClassicDecorator } from './decorator-BdDDBUd2.js';
|
|
8
|
+
import { s as setName, g as getName } from './name-C68GLLO3.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
@module @ember/object
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const END_WITH_EACH_REGEX = /\.@each$/;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
Expands `pattern`, invoking `callback` for each expansion.
|
|
18
|
+
|
|
19
|
+
The only pattern supported is brace-expansion, anything else will be passed
|
|
20
|
+
once to `callback` directly.
|
|
21
|
+
|
|
22
|
+
Example
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import { expandProperties } from '@ember/object/computed';
|
|
26
|
+
|
|
27
|
+
function echo(arg){ console.log(arg); }
|
|
28
|
+
|
|
29
|
+
expandProperties('foo.bar', echo); //=> 'foo.bar'
|
|
30
|
+
expandProperties('{foo,bar}', echo); //=> 'foo', 'bar'
|
|
31
|
+
expandProperties('foo.{bar,baz}', echo); //=> 'foo.bar', 'foo.baz'
|
|
32
|
+
expandProperties('{foo,bar}.baz', echo); //=> 'foo.baz', 'bar.baz'
|
|
33
|
+
expandProperties('foo.{bar,baz}.[]', echo) //=> 'foo.bar.[]', 'foo.baz.[]'
|
|
34
|
+
expandProperties('{foo,bar}.{spam,eggs}', echo) //=> 'foo.spam', 'foo.eggs', 'bar.spam', 'bar.eggs'
|
|
35
|
+
expandProperties('{foo}.bar.{baz}') //=> 'foo.bar.baz'
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
@method expandProperties
|
|
39
|
+
@static
|
|
40
|
+
@for @ember/object/computed
|
|
41
|
+
@public
|
|
42
|
+
@param {String} pattern The property pattern to expand.
|
|
43
|
+
@param {Function} callback The callback to invoke. It is invoked once per
|
|
44
|
+
expansion, and is passed the expansion.
|
|
45
|
+
*/
|
|
46
|
+
function expandProperties(pattern, callback) {
|
|
47
|
+
let start = pattern.indexOf('{');
|
|
48
|
+
if (start < 0) {
|
|
49
|
+
callback(pattern.replace(END_WITH_EACH_REGEX, '.[]'));
|
|
50
|
+
} else {
|
|
51
|
+
dive('', pattern, start, callback);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function dive(prefix, pattern, start, callback) {
|
|
55
|
+
let end = pattern.indexOf('}'),
|
|
56
|
+
i = 0,
|
|
57
|
+
newStart,
|
|
58
|
+
arrayLength;
|
|
59
|
+
let tempArr = pattern.substring(start + 1, end).split(',');
|
|
60
|
+
let after = pattern.substring(end + 1);
|
|
61
|
+
prefix = prefix + pattern.substring(0, start);
|
|
62
|
+
arrayLength = tempArr.length;
|
|
63
|
+
while (i < arrayLength) {
|
|
64
|
+
newStart = after.indexOf('{');
|
|
65
|
+
if (newStart < 0) {
|
|
66
|
+
callback((prefix + tempArr[i++] + after).replace(END_WITH_EACH_REGEX, '.[]'));
|
|
67
|
+
} else {
|
|
68
|
+
dive(prefix + tempArr[i++], after, newStart, callback);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
@module ember
|
|
75
|
+
@private
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
const PROPERTY_DID_CHANGE = Symbol('PROPERTY_DID_CHANGE');
|
|
79
|
+
let deferred = 0;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
This function is called just after an object property has changed.
|
|
83
|
+
It will notify any observers and clear caches among other things.
|
|
84
|
+
|
|
85
|
+
Normally you will not need to call this method directly but if for some
|
|
86
|
+
reason you can't directly watch a property you can invoke this method
|
|
87
|
+
manually.
|
|
88
|
+
|
|
89
|
+
@method notifyPropertyChange
|
|
90
|
+
@for @ember/object
|
|
91
|
+
@param {Object} obj The object with the property that will change
|
|
92
|
+
@param {String} keyName The property key (or path) that will change.
|
|
93
|
+
@param {Meta} [_meta] The objects meta.
|
|
94
|
+
@param {unknown} [value] The new value to set for the property
|
|
95
|
+
@return {void}
|
|
96
|
+
@since 3.1.0
|
|
97
|
+
@public
|
|
98
|
+
*/
|
|
99
|
+
function notifyPropertyChange(obj, keyName, _meta, value) {
|
|
100
|
+
let meta = _meta === undefined ? peekMeta(obj) : _meta;
|
|
101
|
+
if (meta !== null && (meta.isInitializing() || meta.isPrototypeMeta(obj))) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
markObjectAsDirty(obj, keyName);
|
|
105
|
+
if (deferred <= 0) {
|
|
106
|
+
flushSyncObservers();
|
|
107
|
+
}
|
|
108
|
+
if (PROPERTY_DID_CHANGE in obj) {
|
|
109
|
+
// that checks its arguments length, so we have to explicitly not call this with `value`
|
|
110
|
+
// if it is not passed to `notifyPropertyChange`
|
|
111
|
+
if (arguments.length === 4) {
|
|
112
|
+
obj[PROPERTY_DID_CHANGE](keyName, value);
|
|
113
|
+
} else {
|
|
114
|
+
obj[PROPERTY_DID_CHANGE](keyName);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
@method beginPropertyChanges
|
|
121
|
+
@chainable
|
|
122
|
+
@private
|
|
123
|
+
*/
|
|
124
|
+
function beginPropertyChanges() {
|
|
125
|
+
deferred++;
|
|
126
|
+
suspendedObserverDeactivation();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
@method endPropertyChanges
|
|
131
|
+
@private
|
|
132
|
+
*/
|
|
133
|
+
function endPropertyChanges() {
|
|
134
|
+
deferred--;
|
|
135
|
+
if (deferred <= 0) {
|
|
136
|
+
flushSyncObservers();
|
|
137
|
+
resumeObserverDeactivation();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
Make a series of property changes together in an
|
|
143
|
+
exception-safe way.
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
Ember.changeProperties(function() {
|
|
147
|
+
obj1.set('foo', mayBlowUpWhenSet);
|
|
148
|
+
obj2.set('bar', baz);
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
@method changeProperties
|
|
153
|
+
@param {Function} callback
|
|
154
|
+
@private
|
|
155
|
+
*/
|
|
156
|
+
function changeProperties(callback) {
|
|
157
|
+
beginPropertyChanges();
|
|
158
|
+
try {
|
|
159
|
+
callback();
|
|
160
|
+
} finally {
|
|
161
|
+
endPropertyChanges();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function noop() {}
|
|
166
|
+
/**
|
|
167
|
+
`@computed` is a decorator that turns a JavaScript getter and setter into a
|
|
168
|
+
computed property, which is a _cached, trackable value_. By default the getter
|
|
169
|
+
will only be called once and the result will be cached. You can specify
|
|
170
|
+
various properties that your computed property depends on. This will force the
|
|
171
|
+
cached result to be cleared if the dependencies are modified, and lazily recomputed the next time something asks for it.
|
|
172
|
+
|
|
173
|
+
In the following example we decorate a getter - `fullName` - by calling
|
|
174
|
+
`computed` with the property dependencies (`firstName` and `lastName`) as
|
|
175
|
+
arguments. The `fullName` getter will be called once (regardless of how many
|
|
176
|
+
times it is accessed) as long as its dependencies do not change. Once
|
|
177
|
+
`firstName` or `lastName` are updated any future calls to `fullName` will
|
|
178
|
+
incorporate the new values, and any watchers of the value such as templates
|
|
179
|
+
will be updated:
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
import { computed, set } from '@ember/object';
|
|
183
|
+
|
|
184
|
+
class Person {
|
|
185
|
+
constructor(firstName, lastName) {
|
|
186
|
+
set(this, 'firstName', firstName);
|
|
187
|
+
set(this, 'lastName', lastName);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
@computed('firstName', 'lastName')
|
|
191
|
+
get fullName() {
|
|
192
|
+
return `${this.firstName} ${this.lastName}`;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
let tom = new Person('Tom', 'Dale');
|
|
197
|
+
|
|
198
|
+
tom.fullName; // 'Tom Dale'
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
You can also provide a setter, which will be used when updating the computed
|
|
202
|
+
property. Ember's `set` function must be used to update the property
|
|
203
|
+
since it will also notify observers of the property:
|
|
204
|
+
|
|
205
|
+
```javascript
|
|
206
|
+
import { computed, set } from '@ember/object';
|
|
207
|
+
|
|
208
|
+
class Person {
|
|
209
|
+
constructor(firstName, lastName) {
|
|
210
|
+
set(this, 'firstName', firstName);
|
|
211
|
+
set(this, 'lastName', lastName);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
@computed('firstName', 'lastName')
|
|
215
|
+
get fullName() {
|
|
216
|
+
return `${this.firstName} ${this.lastName}`;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
set fullName(value) {
|
|
220
|
+
let [firstName, lastName] = value.split(' ');
|
|
221
|
+
|
|
222
|
+
set(this, 'firstName', firstName);
|
|
223
|
+
set(this, 'lastName', lastName);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
let person = new Person();
|
|
228
|
+
|
|
229
|
+
set(person, 'fullName', 'Peter Wagenet');
|
|
230
|
+
person.firstName; // 'Peter'
|
|
231
|
+
person.lastName; // 'Wagenet'
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
You can also pass a getter function or object with `get` and `set` functions
|
|
235
|
+
as the last argument to the computed decorator. This allows you to define
|
|
236
|
+
computed property _macros_:
|
|
237
|
+
|
|
238
|
+
```js
|
|
239
|
+
import { computed } from '@ember/object';
|
|
240
|
+
|
|
241
|
+
function join(...keys) {
|
|
242
|
+
return computed(...keys, function() {
|
|
243
|
+
return keys.map(key => this[key]).join(' ');
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
class Person {
|
|
248
|
+
@join('firstName', 'lastName')
|
|
249
|
+
fullName;
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Note that when defined this way, getters and setters receive the _key_ of the
|
|
254
|
+
property they are decorating as the first argument. Setters receive the value
|
|
255
|
+
they are setting to as the second argument instead. Additionally, setters must
|
|
256
|
+
_return_ the value that should be cached:
|
|
257
|
+
|
|
258
|
+
```javascript
|
|
259
|
+
import { computed, set } from '@ember/object';
|
|
260
|
+
|
|
261
|
+
function fullNameMacro(firstNameKey, lastNameKey) {
|
|
262
|
+
return computed(firstNameKey, lastNameKey, {
|
|
263
|
+
get() {
|
|
264
|
+
return `${this[firstNameKey]} ${this[lastNameKey]}`;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
set(key, value) {
|
|
268
|
+
let [firstName, lastName] = value.split(' ');
|
|
269
|
+
|
|
270
|
+
set(this, firstNameKey, firstName);
|
|
271
|
+
set(this, lastNameKey, lastName);
|
|
272
|
+
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
class Person {
|
|
279
|
+
constructor(firstName, lastName) {
|
|
280
|
+
set(this, 'firstName', firstName);
|
|
281
|
+
set(this, 'lastName', lastName);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
@fullNameMacro('firstName', 'lastName') fullName;
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
let person = new Person();
|
|
288
|
+
|
|
289
|
+
set(person, 'fullName', 'Peter Wagenet');
|
|
290
|
+
person.firstName; // 'Peter'
|
|
291
|
+
person.lastName; // 'Wagenet'
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Computed properties can also be used in classic classes. To do this, we
|
|
295
|
+
provide the getter and setter as the last argument like we would for a macro,
|
|
296
|
+
and we assign it to a property on the class definition. This is an _anonymous_
|
|
297
|
+
computed macro:
|
|
298
|
+
|
|
299
|
+
```javascript
|
|
300
|
+
import EmberObject, { computed, set } from '@ember/object';
|
|
301
|
+
|
|
302
|
+
let Person = EmberObject.extend({
|
|
303
|
+
// these will be supplied by `create`
|
|
304
|
+
firstName: null,
|
|
305
|
+
lastName: null,
|
|
306
|
+
|
|
307
|
+
fullName: computed('firstName', 'lastName', {
|
|
308
|
+
get() {
|
|
309
|
+
return `${this.firstName} ${this.lastName}`;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
set(key, value) {
|
|
313
|
+
let [firstName, lastName] = value.split(' ');
|
|
314
|
+
|
|
315
|
+
set(this, 'firstName', firstName);
|
|
316
|
+
set(this, 'lastName', lastName);
|
|
317
|
+
|
|
318
|
+
return value;
|
|
319
|
+
}
|
|
320
|
+
})
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
let tom = Person.create({
|
|
324
|
+
firstName: 'Tom',
|
|
325
|
+
lastName: 'Dale'
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
tom.get('fullName') // 'Tom Dale'
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
You can overwrite computed property without setters with a normal property (no
|
|
332
|
+
longer computed) that won't change if dependencies change. You can also mark
|
|
333
|
+
computed property as `.readOnly()` and block all attempts to set it.
|
|
334
|
+
|
|
335
|
+
```javascript
|
|
336
|
+
import { computed, set } from '@ember/object';
|
|
337
|
+
|
|
338
|
+
class Person {
|
|
339
|
+
constructor(firstName, lastName) {
|
|
340
|
+
set(this, 'firstName', firstName);
|
|
341
|
+
set(this, 'lastName', lastName);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
@computed('firstName', 'lastName').readOnly()
|
|
345
|
+
get fullName() {
|
|
346
|
+
return `${this.firstName} ${this.lastName}`;
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
let person = new Person();
|
|
351
|
+
person.set('fullName', 'Peter Wagenet'); // Uncaught Error: Cannot set read-only property "fullName" on object: <(...):emberXXX>
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Additional resources:
|
|
355
|
+
- [Decorators RFC](https://github.com/emberjs/rfcs/blob/master/text/0408-decorators.md)
|
|
356
|
+
- [New CP syntax RFC](https://github.com/emberjs/rfcs/blob/master/text/0011-improved-cp-syntax.md)
|
|
357
|
+
- [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)
|
|
358
|
+
|
|
359
|
+
@class ComputedProperty
|
|
360
|
+
@public
|
|
361
|
+
*/
|
|
362
|
+
class ComputedProperty extends ComputedDescriptor {
|
|
363
|
+
_readOnly = false;
|
|
364
|
+
_hasConfig = false;
|
|
365
|
+
_getter = undefined;
|
|
366
|
+
_setter = undefined;
|
|
367
|
+
constructor(args) {
|
|
368
|
+
super();
|
|
369
|
+
let maybeConfig = args[args.length - 1];
|
|
370
|
+
if (typeof maybeConfig === 'function' || maybeConfig !== null && typeof maybeConfig === 'object') {
|
|
371
|
+
this._hasConfig = true;
|
|
372
|
+
let config = args.pop();
|
|
373
|
+
if (typeof config === 'function') {
|
|
374
|
+
this._getter = config;
|
|
375
|
+
} else {
|
|
376
|
+
const objectConfig = config;
|
|
377
|
+
this._getter = objectConfig.get || noop;
|
|
378
|
+
this._setter = objectConfig.set;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
if (args.length > 0) {
|
|
382
|
+
this._property(...args);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
setup(obj, keyName, propertyDesc, meta) {
|
|
386
|
+
super.setup(obj, keyName, propertyDesc, meta);
|
|
387
|
+
if (this._hasConfig === false) {
|
|
388
|
+
let {
|
|
389
|
+
get,
|
|
390
|
+
set
|
|
391
|
+
} = propertyDesc;
|
|
392
|
+
if (get !== undefined) {
|
|
393
|
+
this._getter = get;
|
|
394
|
+
}
|
|
395
|
+
if (set !== undefined) {
|
|
396
|
+
this._setter = function setterWrapper(_key, value) {
|
|
397
|
+
let ret = set.call(this, value);
|
|
398
|
+
if (get !== undefined) {
|
|
399
|
+
return typeof ret === 'undefined' ? get.call(this) : ret;
|
|
400
|
+
}
|
|
401
|
+
return ret;
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
_property(...passedArgs) {
|
|
407
|
+
let args = [];
|
|
408
|
+
function addArg(property) {
|
|
409
|
+
args.push(property);
|
|
410
|
+
}
|
|
411
|
+
for (let arg of passedArgs) {
|
|
412
|
+
expandProperties(arg, addArg);
|
|
413
|
+
}
|
|
414
|
+
this._dependentKeys = args;
|
|
415
|
+
}
|
|
416
|
+
get(obj, keyName) {
|
|
417
|
+
let meta$1 = meta(obj);
|
|
418
|
+
let tagMeta = tagMetaFor(obj);
|
|
419
|
+
let propertyTag = tagFor(obj, keyName, tagMeta);
|
|
420
|
+
let ret;
|
|
421
|
+
let revision = meta$1.revisionFor(keyName);
|
|
422
|
+
if (revision !== undefined && validateTag(propertyTag, revision)) {
|
|
423
|
+
ret = meta$1.valueFor(keyName);
|
|
424
|
+
} else {
|
|
425
|
+
let {
|
|
426
|
+
_getter,
|
|
427
|
+
_dependentKeys
|
|
428
|
+
} = this;
|
|
429
|
+
|
|
430
|
+
// Create a tracker that absorbs any trackable actions inside the CP
|
|
431
|
+
untrack(() => {
|
|
432
|
+
ret = _getter.call(obj, keyName);
|
|
433
|
+
});
|
|
434
|
+
if (_dependentKeys !== undefined) {
|
|
435
|
+
UPDATE_TAG(propertyTag, getChainTagsForKeys(obj, _dependentKeys, tagMeta, meta$1));
|
|
436
|
+
}
|
|
437
|
+
meta$1.setValueFor(keyName, ret);
|
|
438
|
+
meta$1.setRevisionFor(keyName, valueForTag(propertyTag));
|
|
439
|
+
finishLazyChains(meta$1, keyName, ret);
|
|
440
|
+
}
|
|
441
|
+
consumeTag(propertyTag);
|
|
442
|
+
|
|
443
|
+
// Add the tag of the returned value if it is an array, since arrays
|
|
444
|
+
// should always cause updates if they are consumed and then changed
|
|
445
|
+
if (Array.isArray(ret)) {
|
|
446
|
+
consumeTag(tagFor(ret, '[]'));
|
|
447
|
+
}
|
|
448
|
+
return ret;
|
|
449
|
+
}
|
|
450
|
+
set(obj, keyName, value) {
|
|
451
|
+
if (this._readOnly) {
|
|
452
|
+
this._throwReadOnlyError(obj, keyName);
|
|
453
|
+
}
|
|
454
|
+
let meta$1 = meta(obj);
|
|
455
|
+
|
|
456
|
+
// ensure two way binding works when the component has defined a computed
|
|
457
|
+
// property with both a setter and dependent keys, in that scenario without
|
|
458
|
+
// the sync observer added below the caller's value will never be updated
|
|
459
|
+
//
|
|
460
|
+
// See GH#18147 / GH#19028 for details.
|
|
461
|
+
if (
|
|
462
|
+
// ensure that we only run this once, while the component is being instantiated
|
|
463
|
+
meta$1.isInitializing() && this._dependentKeys !== undefined && this._dependentKeys.length > 0 && typeof obj[PROPERTY_DID_CHANGE] === 'function' && obj.isComponent) {
|
|
464
|
+
addObserver(obj, keyName, () => {
|
|
465
|
+
obj[PROPERTY_DID_CHANGE](keyName);
|
|
466
|
+
}, undefined, true);
|
|
467
|
+
}
|
|
468
|
+
let ret;
|
|
469
|
+
try {
|
|
470
|
+
beginPropertyChanges();
|
|
471
|
+
ret = this._set(obj, keyName, value, meta$1);
|
|
472
|
+
finishLazyChains(meta$1, keyName, ret);
|
|
473
|
+
let tagMeta = tagMetaFor(obj);
|
|
474
|
+
let propertyTag = tagFor(obj, keyName, tagMeta);
|
|
475
|
+
let {
|
|
476
|
+
_dependentKeys
|
|
477
|
+
} = this;
|
|
478
|
+
if (_dependentKeys !== undefined) {
|
|
479
|
+
UPDATE_TAG(propertyTag, getChainTagsForKeys(obj, _dependentKeys, tagMeta, meta$1));
|
|
480
|
+
if (false /* DEBUG */) ;
|
|
481
|
+
}
|
|
482
|
+
meta$1.setRevisionFor(keyName, valueForTag(propertyTag));
|
|
483
|
+
} finally {
|
|
484
|
+
endPropertyChanges();
|
|
485
|
+
}
|
|
486
|
+
return ret;
|
|
487
|
+
}
|
|
488
|
+
_throwReadOnlyError(obj, keyName) {
|
|
489
|
+
throw new Error(`Cannot set read-only property "${keyName}" on object: ${inspect(obj)}`);
|
|
490
|
+
}
|
|
491
|
+
_set(obj, keyName, value, meta) {
|
|
492
|
+
let hadCachedValue = meta.revisionFor(keyName) !== undefined;
|
|
493
|
+
let cachedValue = meta.valueFor(keyName);
|
|
494
|
+
let ret;
|
|
495
|
+
let {
|
|
496
|
+
_setter
|
|
497
|
+
} = this;
|
|
498
|
+
setObserverSuspended(obj, keyName, true);
|
|
499
|
+
try {
|
|
500
|
+
ret = _setter.call(obj, keyName, value, cachedValue);
|
|
501
|
+
} finally {
|
|
502
|
+
setObserverSuspended(obj, keyName, false);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// allows setter to return the same value that is cached already
|
|
506
|
+
if (hadCachedValue && cachedValue === ret) {
|
|
507
|
+
return ret;
|
|
508
|
+
}
|
|
509
|
+
meta.setValueFor(keyName, ret);
|
|
510
|
+
notifyPropertyChange(obj, keyName, meta, value);
|
|
511
|
+
return ret;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/* called before property is overridden */
|
|
515
|
+
teardown(obj, keyName, meta) {
|
|
516
|
+
if (meta.revisionFor(keyName) !== undefined) {
|
|
517
|
+
meta.setRevisionFor(keyName, undefined);
|
|
518
|
+
meta.setValueFor(keyName, undefined);
|
|
519
|
+
}
|
|
520
|
+
super.teardown(obj, keyName, meta);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
class AutoComputedProperty extends ComputedProperty {
|
|
524
|
+
get(obj, keyName) {
|
|
525
|
+
let meta$1 = meta(obj);
|
|
526
|
+
let tagMeta = tagMetaFor(obj);
|
|
527
|
+
let propertyTag = tagFor(obj, keyName, tagMeta);
|
|
528
|
+
let ret;
|
|
529
|
+
let revision = meta$1.revisionFor(keyName);
|
|
530
|
+
if (revision !== undefined && validateTag(propertyTag, revision)) {
|
|
531
|
+
ret = meta$1.valueFor(keyName);
|
|
532
|
+
} else {
|
|
533
|
+
let {
|
|
534
|
+
_getter
|
|
535
|
+
} = this;
|
|
536
|
+
|
|
537
|
+
// Create a tracker that absorbs any trackable actions inside the CP
|
|
538
|
+
let tag = track(() => {
|
|
539
|
+
ret = _getter.call(obj, keyName);
|
|
540
|
+
});
|
|
541
|
+
UPDATE_TAG(propertyTag, tag);
|
|
542
|
+
meta$1.setValueFor(keyName, ret);
|
|
543
|
+
meta$1.setRevisionFor(keyName, valueForTag(propertyTag));
|
|
544
|
+
finishLazyChains(meta$1, keyName, ret);
|
|
545
|
+
}
|
|
546
|
+
consumeTag(propertyTag);
|
|
547
|
+
|
|
548
|
+
// Add the tag of the returned value if it is an array, since arrays
|
|
549
|
+
// should always cause updates if they are consumed and then changed
|
|
550
|
+
if (Array.isArray(ret)) {
|
|
551
|
+
consumeTag(tagFor(ret, '[]', tagMeta));
|
|
552
|
+
}
|
|
553
|
+
return ret;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
// TODO: This class can be svelted once `meta` has been deprecated
|
|
557
|
+
class ComputedDecoratorImpl extends Function {
|
|
558
|
+
/**
|
|
559
|
+
Call on a computed property to set it into read-only mode. When in this
|
|
560
|
+
mode the computed property will throw an error when set.
|
|
561
|
+
Example:
|
|
562
|
+
```javascript
|
|
563
|
+
import { computed, set } from '@ember/object';
|
|
564
|
+
class Person {
|
|
565
|
+
@computed().readOnly()
|
|
566
|
+
get guid() {
|
|
567
|
+
return 'guid-guid-guid';
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
let person = new Person();
|
|
571
|
+
set(person, 'guid', 'new-guid'); // will throw an exception
|
|
572
|
+
```
|
|
573
|
+
Classic Class Example:
|
|
574
|
+
```javascript
|
|
575
|
+
import EmberObject, { computed } from '@ember/object';
|
|
576
|
+
let Person = EmberObject.extend({
|
|
577
|
+
guid: computed(function() {
|
|
578
|
+
return 'guid-guid-guid';
|
|
579
|
+
}).readOnly()
|
|
580
|
+
});
|
|
581
|
+
let person = Person.create();
|
|
582
|
+
person.set('guid', 'new-guid'); // will throw an exception
|
|
583
|
+
```
|
|
584
|
+
@method readOnly
|
|
585
|
+
@return {ComputedProperty} this
|
|
586
|
+
@chainable
|
|
587
|
+
@public
|
|
588
|
+
*/
|
|
589
|
+
readOnly() {
|
|
590
|
+
let desc = descriptorForDecorator(this);
|
|
591
|
+
desc._readOnly = true;
|
|
592
|
+
return this;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
In some cases, you may want to annotate computed properties with additional
|
|
597
|
+
metadata about how they function or what values they operate on. For example,
|
|
598
|
+
computed property functions may close over variables that are then no longer
|
|
599
|
+
available for introspection. You can pass a hash of these values to a
|
|
600
|
+
computed property.
|
|
601
|
+
Example:
|
|
602
|
+
```javascript
|
|
603
|
+
import { computed } from '@ember/object';
|
|
604
|
+
import Person from 'my-app/utils/person';
|
|
605
|
+
class Store {
|
|
606
|
+
@computed().meta({ type: Person })
|
|
607
|
+
get person() {
|
|
608
|
+
let personId = this.personId;
|
|
609
|
+
return Person.create({ id: personId });
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
```
|
|
613
|
+
Classic Class Example:
|
|
614
|
+
```javascript
|
|
615
|
+
import { computed } from '@ember/object';
|
|
616
|
+
import Person from 'my-app/utils/person';
|
|
617
|
+
const Store = EmberObject.extend({
|
|
618
|
+
person: computed(function() {
|
|
619
|
+
let personId = this.get('personId');
|
|
620
|
+
return Person.create({ id: personId });
|
|
621
|
+
}).meta({ type: Person })
|
|
622
|
+
});
|
|
623
|
+
```
|
|
624
|
+
The hash that you pass to the `meta()` function will be saved on the
|
|
625
|
+
computed property descriptor under the `_meta` key. Ember runtime
|
|
626
|
+
exposes a public API for retrieving these values from classes,
|
|
627
|
+
via the `metaForProperty()` function.
|
|
628
|
+
@method meta
|
|
629
|
+
@param {Object} meta
|
|
630
|
+
@chainable
|
|
631
|
+
@public
|
|
632
|
+
*/
|
|
633
|
+
|
|
634
|
+
meta(meta) {
|
|
635
|
+
let prop = descriptorForDecorator(this);
|
|
636
|
+
if (arguments.length === 0) {
|
|
637
|
+
return prop._meta || {};
|
|
638
|
+
} else {
|
|
639
|
+
prop._meta = meta;
|
|
640
|
+
return this;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// TODO: Remove this when we can provide alternatives in the ecosystem to
|
|
645
|
+
// addons such as ember-macro-helpers that use it.
|
|
646
|
+
/** @internal */
|
|
647
|
+
get _getter() {
|
|
648
|
+
return descriptorForDecorator(this)._getter;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
// TODO: Refactor this, this is an internal API only
|
|
652
|
+
/** @internal */
|
|
653
|
+
set enumerable(value) {
|
|
654
|
+
descriptorForDecorator(this).enumerable = value;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
This helper returns a new property descriptor that wraps the passed
|
|
660
|
+
computed property function. You can use this helper to define properties with
|
|
661
|
+
native decorator syntax, mixins, or via `defineProperty()`.
|
|
662
|
+
|
|
663
|
+
Example:
|
|
664
|
+
|
|
665
|
+
```js
|
|
666
|
+
import { computed, set } from '@ember/object';
|
|
667
|
+
|
|
668
|
+
class Person {
|
|
669
|
+
constructor() {
|
|
670
|
+
this.firstName = 'Betty';
|
|
671
|
+
this.lastName = 'Jones';
|
|
672
|
+
},
|
|
673
|
+
|
|
674
|
+
@computed('firstName', 'lastName')
|
|
675
|
+
get fullName() {
|
|
676
|
+
return `${this.firstName} ${this.lastName}`;
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
let client = new Person();
|
|
681
|
+
|
|
682
|
+
client.fullName; // 'Betty Jones'
|
|
683
|
+
|
|
684
|
+
set(client, 'lastName', 'Fuller');
|
|
685
|
+
client.fullName; // 'Betty Fuller'
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
Classic Class Example:
|
|
689
|
+
|
|
690
|
+
```js
|
|
691
|
+
import EmberObject, { computed } from '@ember/object';
|
|
692
|
+
|
|
693
|
+
let Person = EmberObject.extend({
|
|
694
|
+
init() {
|
|
695
|
+
this._super(...arguments);
|
|
696
|
+
|
|
697
|
+
this.firstName = 'Betty';
|
|
698
|
+
this.lastName = 'Jones';
|
|
699
|
+
},
|
|
700
|
+
|
|
701
|
+
fullName: computed('firstName', 'lastName', function() {
|
|
702
|
+
return `${this.get('firstName')} ${this.get('lastName')}`;
|
|
703
|
+
})
|
|
704
|
+
});
|
|
705
|
+
|
|
706
|
+
let client = Person.create();
|
|
707
|
+
|
|
708
|
+
client.get('fullName'); // 'Betty Jones'
|
|
709
|
+
|
|
710
|
+
client.set('lastName', 'Fuller');
|
|
711
|
+
client.get('fullName'); // 'Betty Fuller'
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
You can also provide a setter, either directly on the class using native class
|
|
715
|
+
syntax, or by passing a hash with `get` and `set` functions.
|
|
716
|
+
|
|
717
|
+
Example:
|
|
718
|
+
|
|
719
|
+
```js
|
|
720
|
+
import { computed, set } from '@ember/object';
|
|
721
|
+
|
|
722
|
+
class Person {
|
|
723
|
+
constructor() {
|
|
724
|
+
this.firstName = 'Betty';
|
|
725
|
+
this.lastName = 'Jones';
|
|
726
|
+
},
|
|
727
|
+
|
|
728
|
+
@computed('firstName', 'lastName')
|
|
729
|
+
get fullName() {
|
|
730
|
+
return `${this.firstName} ${this.lastName}`;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
set fullName(value) {
|
|
734
|
+
let [firstName, lastName] = value.split(/\s+/);
|
|
735
|
+
|
|
736
|
+
set(this, 'firstName', firstName);
|
|
737
|
+
set(this, 'lastName', lastName);
|
|
738
|
+
|
|
739
|
+
return value;
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
let client = new Person();
|
|
744
|
+
|
|
745
|
+
client.fullName; // 'Betty Jones'
|
|
746
|
+
|
|
747
|
+
set(client, 'lastName', 'Fuller');
|
|
748
|
+
client.fullName; // 'Betty Fuller'
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
Classic Class Example:
|
|
752
|
+
|
|
753
|
+
```js
|
|
754
|
+
import EmberObject, { computed } from '@ember/object';
|
|
755
|
+
|
|
756
|
+
let Person = EmberObject.extend({
|
|
757
|
+
init() {
|
|
758
|
+
this._super(...arguments);
|
|
759
|
+
|
|
760
|
+
this.firstName = 'Betty';
|
|
761
|
+
this.lastName = 'Jones';
|
|
762
|
+
},
|
|
763
|
+
|
|
764
|
+
fullName: computed('firstName', 'lastName', {
|
|
765
|
+
get(key) {
|
|
766
|
+
return `${this.get('firstName')} ${this.get('lastName')}`;
|
|
767
|
+
},
|
|
768
|
+
set(key, value) {
|
|
769
|
+
let [firstName, lastName] = value.split(/\s+/);
|
|
770
|
+
this.setProperties({ firstName, lastName });
|
|
771
|
+
return value;
|
|
772
|
+
}
|
|
773
|
+
})
|
|
774
|
+
});
|
|
775
|
+
|
|
776
|
+
let client = Person.create();
|
|
777
|
+
client.get('firstName'); // 'Betty'
|
|
778
|
+
|
|
779
|
+
client.set('fullName', 'Carroll Fuller');
|
|
780
|
+
client.get('firstName'); // 'Carroll'
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
When passed as an argument, the `set` function should accept two parameters,
|
|
784
|
+
`key` and `value`. The value returned from `set` will be the new value of the
|
|
785
|
+
property.
|
|
786
|
+
|
|
787
|
+
_Note: This is the preferred way to define computed properties when writing third-party
|
|
788
|
+
libraries that depend on or use Ember, since there is no guarantee that the user
|
|
789
|
+
will have [prototype Extensions](https://guides.emberjs.com/release/configuring-ember/disabling-prototype-extensions/) enabled._
|
|
790
|
+
|
|
791
|
+
@method computed
|
|
792
|
+
@for @ember/object
|
|
793
|
+
@static
|
|
794
|
+
@param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.
|
|
795
|
+
@param {Function} func The computed property function.
|
|
796
|
+
@return {ComputedDecorator} property decorator instance
|
|
797
|
+
@public
|
|
798
|
+
*/
|
|
799
|
+
// @computed without parens or computed with descriptor args
|
|
800
|
+
|
|
801
|
+
// @computed with keys only
|
|
802
|
+
|
|
803
|
+
// @computed with keys and config
|
|
804
|
+
|
|
805
|
+
// @computed with config only
|
|
806
|
+
|
|
807
|
+
function computed(...args) {
|
|
808
|
+
if (isElementDescriptor(args)) {
|
|
809
|
+
// SAFETY: We passed in the impl for this class
|
|
810
|
+
let decorator = makeComputedDecorator(new ComputedProperty([]), ComputedDecoratorImpl);
|
|
811
|
+
return decorator(args[0], args[1], args[2]);
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
// SAFETY: We passed in the impl for this class
|
|
815
|
+
return makeComputedDecorator(new ComputedProperty(args), ComputedDecoratorImpl);
|
|
816
|
+
}
|
|
817
|
+
function autoComputed(...config) {
|
|
818
|
+
// SAFETY: We passed in the impl for this class
|
|
819
|
+
return makeComputedDecorator(new AutoComputedProperty(config), ComputedDecoratorImpl);
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/**
|
|
823
|
+
Allows checking if a given property on an object is a computed property. For the most part,
|
|
824
|
+
this doesn't matter (you would normally just access the property directly and use its value),
|
|
825
|
+
but for some tooling specific scenarios (e.g. the ember-inspector) it is important to
|
|
826
|
+
differentiate if a property is a computed property or a "normal" property.
|
|
827
|
+
|
|
828
|
+
This will work on either a class's prototype or an instance itself.
|
|
829
|
+
|
|
830
|
+
@static
|
|
831
|
+
@method isComputed
|
|
832
|
+
@for @ember/debug
|
|
833
|
+
@private
|
|
834
|
+
*/
|
|
835
|
+
function isComputed(obj, key) {
|
|
836
|
+
return Boolean(descriptorForProperty(obj, key));
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
@module @ember/object
|
|
841
|
+
*/
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
/**
|
|
845
|
+
NOTE: This is a low-level method used by other parts of the API. You almost
|
|
846
|
+
never want to call this method directly. Instead you should use
|
|
847
|
+
`mixin()` to define new properties.
|
|
848
|
+
|
|
849
|
+
Defines a property on an object. This method works much like the ES5
|
|
850
|
+
`Object.defineProperty()` method except that it can also accept computed
|
|
851
|
+
properties and other special descriptors.
|
|
852
|
+
|
|
853
|
+
Normally this method takes only three parameters. However if you pass an
|
|
854
|
+
instance of `Descriptor` as the third param then you can pass an
|
|
855
|
+
optional value as the fourth parameter. This is often more efficient than
|
|
856
|
+
creating new descriptor hashes for each property.
|
|
857
|
+
|
|
858
|
+
## Examples
|
|
859
|
+
|
|
860
|
+
```javascript
|
|
861
|
+
import { defineProperty, computed } from '@ember/object';
|
|
862
|
+
|
|
863
|
+
// ES5 compatible mode
|
|
864
|
+
defineProperty(contact, 'firstName', {
|
|
865
|
+
writable: true,
|
|
866
|
+
configurable: false,
|
|
867
|
+
enumerable: true,
|
|
868
|
+
value: 'Charles'
|
|
869
|
+
});
|
|
870
|
+
|
|
871
|
+
// define a simple property
|
|
872
|
+
defineProperty(contact, 'lastName', undefined, 'Jolley');
|
|
873
|
+
|
|
874
|
+
// define a computed property
|
|
875
|
+
defineProperty(contact, 'fullName', computed('firstName', 'lastName', function() {
|
|
876
|
+
return this.firstName+' '+this.lastName;
|
|
877
|
+
}));
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
@public
|
|
881
|
+
@method defineProperty
|
|
882
|
+
@static
|
|
883
|
+
@for @ember/object
|
|
884
|
+
@param {Object} obj the object to define this property on. This may be a prototype.
|
|
885
|
+
@param {String} keyName the name of the property
|
|
886
|
+
@param {Descriptor} [desc] an instance of `Descriptor` (typically a
|
|
887
|
+
computed property) or an ES5 descriptor.
|
|
888
|
+
You must provide this or `data` but not both.
|
|
889
|
+
@param {*} [data] something other than a descriptor, that will
|
|
890
|
+
become the explicit value of this property.
|
|
891
|
+
*/
|
|
892
|
+
function defineProperty(obj, keyName, desc, data, _meta) {
|
|
893
|
+
let meta$1 = _meta === undefined ? meta(obj) : _meta;
|
|
894
|
+
let previousDesc = descriptorForProperty(obj, keyName, meta$1);
|
|
895
|
+
let wasDescriptor = previousDesc !== undefined;
|
|
896
|
+
if (wasDescriptor) {
|
|
897
|
+
previousDesc.teardown(obj, keyName, meta$1);
|
|
898
|
+
}
|
|
899
|
+
if (isClassicDecorator(desc)) {
|
|
900
|
+
defineDecorator(obj, keyName, desc, meta$1);
|
|
901
|
+
} else if (desc === null || desc === undefined) {
|
|
902
|
+
defineValue(obj, keyName, data, wasDescriptor, true);
|
|
903
|
+
} else {
|
|
904
|
+
// fallback to ES5
|
|
905
|
+
Object.defineProperty(obj, keyName, desc);
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
// if key is being watched, override chains that
|
|
909
|
+
// were initialized with the prototype
|
|
910
|
+
if (!meta$1.isPrototypeMeta(obj)) {
|
|
911
|
+
revalidateObservers(obj);
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
function defineDecorator(obj, keyName, desc, meta) {
|
|
915
|
+
let propertyDesc;
|
|
916
|
+
{
|
|
917
|
+
propertyDesc = desc(obj, keyName, undefined, meta);
|
|
918
|
+
}
|
|
919
|
+
Object.defineProperty(obj, keyName, propertyDesc);
|
|
920
|
+
|
|
921
|
+
// pass the decorator function forward for backwards compat
|
|
922
|
+
return desc;
|
|
923
|
+
}
|
|
924
|
+
function defineValue(obj, keyName, value, wasDescriptor, enumerable = true) {
|
|
925
|
+
if (wasDescriptor === true || enumerable === false) {
|
|
926
|
+
Object.defineProperty(obj, keyName, {
|
|
927
|
+
configurable: true,
|
|
928
|
+
enumerable,
|
|
929
|
+
writable: true,
|
|
930
|
+
value
|
|
931
|
+
});
|
|
932
|
+
} else {
|
|
933
|
+
{
|
|
934
|
+
obj[keyName] = value;
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
return value;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
941
|
+
let searchDisabled = false;
|
|
942
|
+
const flags = {
|
|
943
|
+
_set: 0,
|
|
944
|
+
_unprocessedNamespaces: false,
|
|
945
|
+
get unprocessedNamespaces() {
|
|
946
|
+
return this._unprocessedNamespaces;
|
|
947
|
+
},
|
|
948
|
+
set unprocessedNamespaces(v) {
|
|
949
|
+
this._set++;
|
|
950
|
+
this._unprocessedNamespaces = v;
|
|
951
|
+
}
|
|
952
|
+
};
|
|
953
|
+
let unprocessedMixins = false;
|
|
954
|
+
const NAMESPACES = [];
|
|
955
|
+
const NAMESPACES_BY_ID = Object.create(null);
|
|
956
|
+
function addNamespace(namespace) {
|
|
957
|
+
flags.unprocessedNamespaces = true;
|
|
958
|
+
NAMESPACES.push(namespace);
|
|
959
|
+
}
|
|
960
|
+
function removeNamespace(namespace) {
|
|
961
|
+
let name = getName(namespace);
|
|
962
|
+
delete NAMESPACES_BY_ID[name];
|
|
963
|
+
NAMESPACES.splice(NAMESPACES.indexOf(namespace), 1);
|
|
964
|
+
if (name in context.lookup && namespace === context.lookup[name]) {
|
|
965
|
+
context.lookup[name] = undefined;
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
function findNamespaces() {
|
|
969
|
+
if (!flags.unprocessedNamespaces) {
|
|
970
|
+
return;
|
|
971
|
+
}
|
|
972
|
+
let lookup = context.lookup;
|
|
973
|
+
let keys = Object.keys(lookup);
|
|
974
|
+
for (let key of keys) {
|
|
975
|
+
// Only process entities that start with uppercase A-Z
|
|
976
|
+
if (!isUppercase(key.charCodeAt(0))) {
|
|
977
|
+
continue;
|
|
978
|
+
}
|
|
979
|
+
let obj = tryIsNamespace(lookup, key);
|
|
980
|
+
if (obj) {
|
|
981
|
+
setName(obj, key);
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
function findNamespace(name) {
|
|
986
|
+
if (!searchDisabled) {
|
|
987
|
+
processAllNamespaces();
|
|
988
|
+
}
|
|
989
|
+
return NAMESPACES_BY_ID[name];
|
|
990
|
+
}
|
|
991
|
+
function processNamespace(namespace) {
|
|
992
|
+
_processNamespace([namespace.toString()], namespace, new Set());
|
|
993
|
+
}
|
|
994
|
+
function processAllNamespaces() {
|
|
995
|
+
let unprocessedNamespaces = flags.unprocessedNamespaces;
|
|
996
|
+
if (unprocessedNamespaces) {
|
|
997
|
+
findNamespaces();
|
|
998
|
+
flags.unprocessedNamespaces = false;
|
|
999
|
+
}
|
|
1000
|
+
if (unprocessedNamespaces || unprocessedMixins) {
|
|
1001
|
+
let namespaces = NAMESPACES;
|
|
1002
|
+
for (let namespace of namespaces) {
|
|
1003
|
+
processNamespace(namespace);
|
|
1004
|
+
}
|
|
1005
|
+
unprocessedMixins = false;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
function isSearchDisabled() {
|
|
1009
|
+
return searchDisabled;
|
|
1010
|
+
}
|
|
1011
|
+
function setSearchDisabled(flag) {
|
|
1012
|
+
searchDisabled = Boolean(flag);
|
|
1013
|
+
}
|
|
1014
|
+
function setUnprocessedMixins() {
|
|
1015
|
+
unprocessedMixins = true;
|
|
1016
|
+
}
|
|
1017
|
+
function _processNamespace(paths, root, seen) {
|
|
1018
|
+
let idx = paths.length;
|
|
1019
|
+
let id = paths.join('.');
|
|
1020
|
+
NAMESPACES_BY_ID[id] = root;
|
|
1021
|
+
setName(root, id);
|
|
1022
|
+
|
|
1023
|
+
// Loop over all of the keys in the namespace, looking for classes
|
|
1024
|
+
for (let key in root) {
|
|
1025
|
+
if (!hasOwnProperty.call(root, key)) {
|
|
1026
|
+
continue;
|
|
1027
|
+
}
|
|
1028
|
+
let obj = root[key];
|
|
1029
|
+
|
|
1030
|
+
// If we are processing the `Ember` namespace, for example, the
|
|
1031
|
+
// `paths` will start with `["Ember"]`. Every iteration through
|
|
1032
|
+
// the loop will update the **second** element of this list with
|
|
1033
|
+
// the key, so processing `Ember.View` will make the Array
|
|
1034
|
+
// `['Ember', 'View']`.
|
|
1035
|
+
paths[idx] = key;
|
|
1036
|
+
|
|
1037
|
+
// If we have found an unprocessed class
|
|
1038
|
+
if (obj && getName(obj) === void 0) {
|
|
1039
|
+
// Replace the class' `toString` with the dot-separated path
|
|
1040
|
+
setName(obj, paths.join('.'));
|
|
1041
|
+
// Support nested namespaces
|
|
1042
|
+
} else if (obj && isNamespace(obj)) {
|
|
1043
|
+
// Skip aliased namespaces
|
|
1044
|
+
if (seen.has(obj)) {
|
|
1045
|
+
continue;
|
|
1046
|
+
}
|
|
1047
|
+
seen.add(obj);
|
|
1048
|
+
// Process the child namespace
|
|
1049
|
+
_processNamespace(paths, obj, seen);
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
paths.length = idx; // cut out last item
|
|
1053
|
+
}
|
|
1054
|
+
function isNamespace(obj) {
|
|
1055
|
+
return obj != null && typeof obj === 'object' && obj.isNamespace;
|
|
1056
|
+
}
|
|
1057
|
+
function isUppercase(code) {
|
|
1058
|
+
return code >= 65 && code <= 90 // A
|
|
1059
|
+
; // Z
|
|
1060
|
+
}
|
|
1061
|
+
function tryIsNamespace(lookup, prop) {
|
|
1062
|
+
try {
|
|
1063
|
+
let obj = lookup[prop];
|
|
1064
|
+
return (obj !== null && typeof obj === 'object' || typeof obj === 'function') && obj.isNamespace && obj;
|
|
1065
|
+
} catch (_e) {
|
|
1066
|
+
// continue
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
export { ComputedProperty as C, NAMESPACES as N, PROPERTY_DID_CHANGE as P, endPropertyChanges as a, beginPropertyChanges as b, computed as c, defineProperty as d, expandProperties as e, defineValue as f, defineDecorator as g, NAMESPACES_BY_ID as h, findNamespace as i, addNamespace as j, findNamespaces as k, processNamespace as l, autoComputed as m, notifyPropertyChange as n, changeProperties as o, processAllNamespaces as p, isComputed as q, removeNamespace as r, setUnprocessedMixins as s, isSearchDisabled as t, setSearchDisabled as u };
|