ember-source 4.10.0-beta.2 → 4.11.0-alpha.2
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/CHANGELOG.md +5 -1
- package/build-metadata.json +3 -3
- package/dist/ember-template-compiler.js +147 -172
- package/dist/ember-template-compiler.map +1 -1
- package/dist/ember-testing.js +129 -6
- package/dist/ember-testing.map +1 -1
- package/dist/ember.debug.js +334 -314
- package/dist/ember.debug.map +1 -1
- package/dist/header/license.js +1 -1
- package/dist/packages/@ember/-internals/glimmer/index.js +60 -59
- package/dist/packages/@ember/-internals/metal/index.js +6 -6
- package/dist/packages/@ember/-internals/{utils/types.js → utility-types/index.js} +0 -0
- package/dist/packages/@ember/-internals/utils/index.js +3 -137
- package/dist/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -2
- package/dist/packages/@ember/-internals/views/lib/views/states/default.js +1 -2
- package/dist/packages/@ember/-internals/views/lib/views/states/destroying.js +2 -3
- package/dist/packages/@ember/-internals/views/lib/views/states/in_dom.js +1 -2
- package/dist/packages/@ember/array/-internals.js +8 -0
- package/dist/packages/@ember/array/index.js +2 -2
- package/dist/packages/@ember/array/lib/make-array.js +10 -0
- package/dist/packages/@ember/canary-features/index.js +0 -4
- package/dist/packages/@ember/debug/data-adapter.js +16 -16
- package/dist/packages/@ember/debug/index.js +2 -3
- package/dist/packages/@ember/debug/lib/inspect.js +117 -0
- package/dist/packages/@ember/engine/instance.js +1 -2
- package/dist/packages/@ember/instrumentation/index.js +2 -8
- package/dist/packages/@ember/object/core.js +2 -1
- package/dist/packages/@ember/object/mixin.js +11 -2
- package/dist/packages/@ember/object/promise-proxy-mixin.js +1 -2
- package/dist/packages/@ember/owner/index.js +2 -2
- package/dist/packages/@ember/routing/lib/utils.js +1 -2
- package/dist/packages/@ember/routing/router.js +36 -37
- package/dist/packages/ember/index.js +3 -3
- package/dist/packages/ember/version.js +1 -1
- package/dist/packages/ember-testing/lib/adapters/qunit.js +1 -1
- package/docs/data.json +252 -253
- package/package.json +19 -19
- package/types/preview/@ember/controller/index.d.ts +1 -1
- package/types/preview/@ember/engine/-private/container-proxy-mixin.d.ts +1 -1
- package/types/preview/@ember/engine/-private/registry-proxy-mixin.d.ts +1 -1
- package/types/preview/@ember/error/index.d.ts +2 -2
- package/types/preview/ember/index.d.ts +1 -1
- package/types/preview/index.d.ts +0 -2
- package/types/publish.mjs +314 -294
- package/types/stable/@ember/-internals/bootstrap/index.d.ts +3 -0
- package/types/stable/@ember/-internals/browser-environment/index.d.ts +9 -0
- package/types/stable/@ember/-internals/browser-environment/lib/has-dom.d.ts +4 -0
- package/types/stable/@ember/-internals/container/index.d.ts +4 -0
- package/types/stable/@ember/-internals/container/lib/container.d.ts +164 -0
- package/types/stable/@ember/-internals/container/lib/registry.d.ts +292 -0
- package/types/stable/@ember/-internals/environment/index.d.ts +5 -0
- package/types/stable/@ember/-internals/environment/lib/context.d.ts +10 -0
- package/types/stable/@ember/-internals/environment/lib/env.d.ts +153 -0
- package/types/stable/@ember/-internals/environment/lib/global.d.ts +4 -0
- package/types/stable/@ember/-internals/error-handling/index.d.ts +9 -0
- package/types/stable/@ember/-internals/glimmer/index.d.ts +456 -0
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +47 -0
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/mount.d.ts +41 -0
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +51 -0
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +23 -0
- package/types/stable/@ember/-internals/glimmer/lib/component.d.ts +840 -0
- package/types/stable/@ember/-internals/glimmer/lib/components/abstract-input.d.ts +37 -0
- package/types/stable/@ember/-internals/glimmer/lib/components/input.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/components/internal.d.ts +48 -0
- package/types/stable/@ember/-internals/glimmer/lib/components/link-to.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/components/textarea.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/dom.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/environment.d.ts +11 -0
- package/types/stable/@ember/-internals/glimmer/lib/glimmer-component-docs.d.ts +387 -0
- package/types/stable/@ember/-internals/glimmer/lib/glimmer-tracking-docs.d.ts +249 -0
- package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +160 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/-disallow-dynamic-resolution.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/-in-element-null-check.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/-normalize-class.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/-resolve.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/-track-array.d.ts +9 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/action.d.ts +268 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/array.d.ts +40 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/component.d.ts +148 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/concat.d.ts +27 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/each-in.d.ts +160 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/fn.d.ts +72 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/get.d.ts +99 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/hash.d.ts +43 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/helper.d.ts +42 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/if-unless.d.ts +181 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/internal-helper.d.ts +5 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/log.d.ts +18 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/modifier.d.ts +41 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/mut.d.ts +77 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/page-title.d.ts +19 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/readonly.d.ts +119 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/unbound.d.ts +34 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/unique-id.d.ts +7 -0
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/action.d.ts +30 -0
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +33 -0
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/on.d.ts +94 -0
- package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +96 -0
- package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +16 -0
- package/types/stable/@ember/-internals/glimmer/lib/setup-registry.d.ts +5 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/in-element.d.ts +46 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/let.d.ts +54 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/mount.d.ts +43 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/outlet.d.ts +27 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/template.d.ts +6 -0
- package/types/stable/@ember/-internals/glimmer/lib/template_registry.d.ts +11 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +10 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/curly-component-state-bucket.d.ts +31 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/iterator.d.ts +5 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/managers.d.ts +19 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/outlet.d.ts +51 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/process-args.d.ts +4 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.d.ts +3 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/string.d.ts +61 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/to-bool.d.ts +3 -0
- package/types/stable/@ember/-internals/glimmer/lib/views/outlet.d.ts +34 -0
- package/types/stable/@ember/-internals/meta/index.d.ts +3 -0
- package/types/stable/@ember/-internals/meta/lib/meta.d.ts +174 -0
- package/types/stable/@ember/-internals/metal/index.d.ts +26 -0
- package/types/stable/@ember/-internals/metal/lib/alias.d.ts +22 -0
- package/types/stable/@ember/-internals/metal/lib/array.d.ts +18 -0
- package/types/stable/@ember/-internals/metal/lib/array_events.d.ts +6 -0
- package/types/stable/@ember/-internals/metal/lib/cache.d.ts +121 -0
- package/types/stable/@ember/-internals/metal/lib/cached.d.ts +3 -0
- package/types/stable/@ember/-internals/metal/lib/chain-tags.d.ts +8 -0
- package/types/stable/@ember/-internals/metal/lib/change_event.d.ts +3 -0
- package/types/stable/@ember/-internals/metal/lib/computed.d.ts +484 -0
- package/types/stable/@ember/-internals/metal/lib/computed_cache.d.ts +3 -0
- package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +64 -0
- package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +2 -0
- package/types/stable/@ember/-internals/metal/lib/deprecate_property.d.ts +18 -0
- package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +5 -0
- package/types/stable/@ember/-internals/metal/lib/events.d.ts +91 -0
- package/types/stable/@ember/-internals/metal/lib/expand_properties.d.ts +33 -0
- package/types/stable/@ember/-internals/metal/lib/get_properties.d.ts +36 -0
- package/types/stable/@ember/-internals/metal/lib/injected_property.d.ts +25 -0
- package/types/stable/@ember/-internals/metal/lib/libraries.d.ts +31 -0
- package/types/stable/@ember/-internals/metal/lib/namespace_search.d.ts +19 -0
- package/types/stable/@ember/-internals/metal/lib/observer.d.ts +54 -0
- package/types/stable/@ember/-internals/metal/lib/path_cache.d.ts +3 -0
- package/types/stable/@ember/-internals/metal/lib/properties.d.ts +58 -0
- package/types/stable/@ember/-internals/metal/lib/property_events.d.ts +59 -0
- package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +44 -0
- package/types/stable/@ember/-internals/metal/lib/property_set.d.ts +52 -0
- package/types/stable/@ember/-internals/metal/lib/set_properties.d.ts +32 -0
- package/types/stable/@ember/-internals/metal/lib/tags.d.ts +7 -0
- package/types/stable/@ember/-internals/metal/lib/tracked.d.ts +78 -0
- package/types/stable/@ember/-internals/overrides/index.d.ts +3 -0
- package/types/stable/@ember/-internals/owner/index.d.ts +646 -0
- package/types/stable/@ember/-internals/routing/index.d.ts +3 -0
- package/types/stable/@ember/-internals/runtime/index.d.ts +11 -0
- package/types/stable/@ember/-internals/runtime/lib/ext/rsvp.d.ts +5 -0
- package/types/stable/@ember/-internals/runtime/lib/mixins/-proxy.d.ts +34 -0
- package/types/stable/@ember/-internals/runtime/lib/mixins/action_handler.d.ts +23 -0
- package/types/stable/@ember/-internals/runtime/lib/mixins/comparable.d.ts +22 -0
- package/types/stable/@ember/-internals/runtime/lib/mixins/container_proxy.d.ts +22 -0
- package/types/stable/@ember/-internals/runtime/lib/mixins/registry_proxy.d.ts +22 -0
- package/types/stable/@ember/-internals/runtime/lib/mixins/target_action_support.d.ts +29 -0
- package/types/stable/@ember/-internals/utility-types/index.d.ts +10 -0
- package/types/stable/@ember/-internals/utils/index.d.ts +16 -0
- package/types/stable/@ember/-internals/utils/lib/cache.d.ts +14 -0
- package/types/stable/@ember/-internals/utils/lib/dictionary.d.ts +7 -0
- package/types/stable/@ember/-internals/utils/lib/get-debug-name.d.ts +4 -0
- package/types/stable/@ember/-internals/utils/lib/guid.d.ts +60 -0
- package/types/stable/@ember/-internals/utils/lib/intern.d.ts +42 -0
- package/types/stable/@ember/-internals/utils/lib/invoke.d.ts +24 -0
- package/types/stable/@ember/-internals/utils/lib/is_proxy.d.ts +5 -0
- package/types/stable/@ember/-internals/utils/lib/lookup-descriptor.d.ts +3 -0
- package/types/stable/@ember/-internals/utils/lib/mandatory-setter.d.ts +6 -0
- package/types/stable/@ember/-internals/utils/lib/name.d.ts +4 -0
- package/types/stable/@ember/-internals/utils/lib/spec.d.ts +14 -0
- package/types/stable/@ember/-internals/utils/lib/super.d.ts +31 -0
- package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +5 -0
- package/types/stable/@ember/-internals/utils/lib/to-string.d.ts +3 -0
- package/types/stable/@ember/-internals/views/index.d.ts +13 -0
- package/types/stable/@ember/-internals/views/lib/compat/attrs.d.ts +3 -0
- package/types/stable/@ember/-internals/views/lib/compat/fallback-view-registry.d.ts +6 -0
- package/types/stable/@ember/-internals/views/lib/component_lookup.d.ts +5 -0
- package/types/stable/@ember/-internals/views/lib/mixins/action_support.d.ts +13 -0
- package/types/stable/@ember/-internals/views/lib/mixins/child_views_support.d.ts +13 -0
- package/types/stable/@ember/-internals/views/lib/mixins/class_names_support.d.ts +14 -0
- package/types/stable/@ember/-internals/views/lib/mixins/view_state_support.d.ts +13 -0
- package/types/stable/@ember/-internals/views/lib/mixins/view_support.d.ts +25 -0
- package/types/stable/@ember/-internals/views/lib/system/action_manager.d.ts +11 -0
- package/types/stable/@ember/-internals/views/lib/system/event_dispatcher.d.ts +117 -0
- package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +94 -0
- package/types/stable/@ember/-internals/views/lib/views/core_view.d.ts +60 -0
- package/types/stable/@ember/-internals/views/lib/views/states/default.d.ts +5 -0
- package/types/stable/@ember/-internals/views/lib/views/states/destroying.d.ts +5 -0
- package/types/stable/@ember/-internals/views/lib/views/states/has_element.d.ts +5 -0
- package/types/stable/@ember/-internals/views/lib/views/states/in_dom.d.ts +5 -0
- package/types/stable/@ember/-internals/views/lib/views/states/pre_render.d.ts +11 -0
- package/types/stable/@ember/-internals/views/lib/views/states.d.ts +25 -0
- package/types/stable/@ember/application/index.d.ts +814 -0
- package/types/stable/@ember/application/instance.d.ts +288 -0
- package/types/stable/@ember/application/lib/lazy_load.d.ts +38 -0
- package/types/stable/@ember/application/namespace.d.ts +38 -0
- package/types/stable/@ember/array/-internals.d.ts +5 -0
- package/types/stable/@ember/array/index.d.ts +1457 -0
- package/types/stable/@ember/array/lib/make-array.d.ts +34 -0
- package/types/stable/@ember/array/mutable.d.ts +3 -0
- package/types/stable/@ember/array/proxy.d.ts +158 -0
- package/types/stable/@ember/canary-features/index.d.ts +49 -0
- package/types/stable/@ember/component/helper.d.ts +3 -0
- package/types/stable/@ember/component/index.d.ts +5 -0
- package/types/stable/@ember/component/template-only.d.ts +33 -0
- package/types/stable/@ember/controller/index.d.ts +277 -0
- package/types/stable/@ember/debug/container-debug-adapter.d.ts +73 -0
- package/types/stable/@ember/debug/data-adapter.d.ts +325 -0
- package/types/stable/@ember/debug/index.d.ts +52 -0
- package/types/stable/@ember/debug/lib/capture-render-tree.d.ts +21 -0
- package/types/stable/@ember/debug/lib/deprecate.d.ts +72 -0
- package/types/stable/@ember/debug/lib/handlers.d.ts +14 -0
- package/types/stable/@ember/debug/lib/inspect.d.ts +20 -0
- package/types/stable/@ember/debug/lib/testing.d.ts +4 -0
- package/types/stable/@ember/debug/lib/warn.d.ts +14 -0
- package/types/stable/@ember/deprecated-features/index.d.ts +3 -0
- package/types/stable/@ember/destroyable/index.d.ts +237 -0
- package/types/stable/@ember/engine/index.d.ts +347 -0
- package/types/stable/@ember/engine/instance.d.ts +127 -0
- package/types/stable/@ember/engine/lib/engine-parent.d.ts +27 -0
- package/types/stable/@ember/enumerable/index.d.ts +19 -0
- package/types/stable/@ember/enumerable/mutable.d.ts +21 -0
- package/types/stable/@ember/error/index.d.ts +15 -0
- package/types/stable/@ember/helper/index.d.ts +314 -0
- package/types/stable/@ember/instrumentation/index.d.ts +127 -0
- package/types/stable/@ember/modifier/index.d.ts +5 -0
- package/types/stable/@ember/object/-internals.d.ts +9 -0
- package/types/stable/@ember/object/compat.d.ts +90 -0
- package/types/stable/@ember/object/computed.d.ts +5 -0
- package/types/stable/@ember/object/core.d.ts +638 -0
- package/types/stable/@ember/object/evented.d.ts +134 -0
- package/types/stable/@ember/object/events.d.ts +3 -0
- package/types/stable/@ember/object/index.d.ts +60 -0
- package/types/stable/@ember/object/internals.d.ts +3 -0
- package/types/stable/@ember/object/lib/computed/computed_macros.d.ts +644 -0
- package/types/stable/@ember/object/lib/computed/reduce_computed_macros.d.ts +791 -0
- package/types/stable/@ember/object/mixin.d.ts +157 -0
- package/types/stable/@ember/object/observable.d.ts +383 -0
- package/types/stable/@ember/object/observers.d.ts +3 -0
- package/types/stable/@ember/object/promise-proxy-mixin.d.ts +167 -0
- package/types/stable/@ember/object/proxy.d.ts +88 -0
- package/types/stable/@ember/owner/index.d.ts +80 -0
- package/types/stable/@ember/polyfills/index.d.ts +4 -0
- package/types/stable/@ember/polyfills/lib/assign.d.ts +9 -0
- package/types/stable/@ember/renderer/index.d.ts +28 -0
- package/types/stable/@ember/routing/-internals.d.ts +11 -0
- package/types/stable/@ember/routing/auto-location.d.ts +149 -0
- package/types/stable/@ember/routing/hash-location.d.ts +113 -0
- package/types/stable/@ember/routing/history-location.d.ts +143 -0
- package/types/stable/@ember/routing/index.d.ts +3 -0
- package/types/stable/@ember/routing/lib/cache.d.ts +16 -0
- package/types/stable/@ember/routing/lib/controller_for.d.ts +15 -0
- package/types/stable/@ember/routing/lib/dsl.d.ts +52 -0
- package/types/stable/@ember/routing/lib/engines.d.ts +14 -0
- package/types/stable/@ember/routing/lib/generate_controller.d.ts +25 -0
- package/types/stable/@ember/routing/lib/location-utils.d.ts +31 -0
- package/types/stable/@ember/routing/lib/query_params.d.ts +7 -0
- package/types/stable/@ember/routing/lib/route-info.d.ts +3 -0
- package/types/stable/@ember/routing/lib/router_state.d.ts +13 -0
- package/types/stable/@ember/routing/lib/routing-service.d.ts +35 -0
- package/types/stable/@ember/routing/lib/utils.d.ts +36 -0
- package/types/stable/@ember/routing/location.d.ts +108 -0
- package/types/stable/@ember/routing/none-location.d.ts +83 -0
- package/types/stable/@ember/routing/route-info.d.ts +125 -0
- package/types/stable/@ember/routing/route.d.ts +1456 -0
- package/types/stable/@ember/routing/router-service.d.ts +588 -0
- package/types/stable/@ember/routing/router.d.ts +431 -0
- package/types/stable/@ember/routing/transition.d.ts +180 -0
- package/types/stable/@ember/runloop/index.d.ts +657 -0
- package/types/stable/@ember/service/index.d.ts +82 -0
- package/types/stable/@ember/string/index.d.ts +152 -0
- package/types/stable/@ember/string/lib/string_registry.d.ts +9 -0
- package/types/stable/@ember/template/index.d.ts +3 -0
- package/types/stable/@ember/template-compilation/index.d.ts +4 -0
- package/types/stable/@ember/template-factory/index.d.ts +3 -0
- package/types/stable/@ember/test/adapter.d.ts +4 -0
- package/types/stable/@ember/test/index.d.ts +8 -0
- package/types/stable/@ember/utils/index.d.ts +9 -0
- package/types/stable/@ember/utils/lib/compare.d.ts +54 -0
- package/types/stable/@ember/utils/lib/is-equal.d.ts +52 -0
- package/types/stable/@ember/utils/lib/is_blank.d.ts +32 -0
- package/types/stable/@ember/utils/lib/is_empty.d.ts +38 -0
- package/types/stable/@ember/utils/lib/is_none.d.ts +26 -0
- package/types/stable/@ember/utils/lib/is_present.d.ts +35 -0
- package/types/stable/@ember/utils/lib/type-of.d.ts +68 -0
- package/types/stable/@ember/version/index.d.ts +3 -0
- package/types/stable/@glimmer/tracking/index.d.ts +203 -0
- package/types/stable/@glimmer/tracking/primitives/cache.d.ts +3 -0
- package/types/stable/ember/index.d.ts +376 -0
- package/types/stable/ember-template-compiler/index.d.ts +21 -0
- package/types/stable/ember-template-compiler/lib/plugins/assert-against-attrs.d.ts +20 -0
- package/types/stable/ember-template-compiler/lib/plugins/assert-against-named-outlets.d.ts +14 -0
- package/types/stable/ember-template-compiler/lib/plugins/assert-input-helper-without-block.d.ts +5 -0
- package/types/stable/ember-template-compiler/lib/plugins/assert-reserved-named-arguments.d.ts +5 -0
- package/types/stable/ember-template-compiler/lib/plugins/assert-splattribute-expression.d.ts +5 -0
- package/types/stable/ember-template-compiler/lib/plugins/index.d.ts +5 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-action-syntax.d.ts +28 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-each-in-into-each.d.ts +24 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-each-track-array.d.ts +24 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-in-element.d.ts +22 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.d.ts +4 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-resolutions.d.ts +5 -0
- package/types/stable/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.d.ts +36 -0
- package/types/stable/ember-template-compiler/lib/plugins/utils.d.ts +13 -0
- package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +26 -0
- package/types/stable/ember-template-compiler/lib/system/calculate-location-display.d.ts +4 -0
- package/types/stable/ember-template-compiler/lib/system/compile-options.d.ts +6 -0
- package/types/stable/ember-template-compiler/lib/system/compile.d.ts +13 -0
- package/types/stable/ember-template-compiler/lib/system/dasherize-component-name.d.ts +5 -0
- package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +3 -0
- package/types/stable/ember-template-compiler/lib/system/precompile.d.ts +17 -0
- package/types/stable/ember-testing/index.d.ts +10 -0
- package/types/stable/ember-testing/lib/adapters/adapter.d.ts +20 -0
- package/types/stable/ember-testing/lib/adapters/qunit.d.ts +19 -0
- package/types/stable/ember-testing/lib/ext/application.d.ts +12 -0
- package/types/stable/ember-testing/lib/ext/rsvp.d.ts +4 -0
- package/types/stable/ember-testing/lib/helpers/and_then.d.ts +4 -0
- package/types/stable/ember-testing/lib/helpers/current_path.d.ts +22 -0
- package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +21 -0
- package/types/stable/ember-testing/lib/helpers/current_url.d.ts +22 -0
- package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +53 -0
- package/types/stable/ember-testing/lib/helpers/visit.d.ts +22 -0
- package/types/stable/ember-testing/lib/helpers/wait.d.ts +34 -0
- package/types/stable/ember-testing/lib/helpers.d.ts +3 -0
- package/types/stable/ember-testing/lib/initializers.d.ts +3 -0
- package/types/stable/ember-testing/lib/setup_for_testing.d.ts +15 -0
- package/types/stable/ember-testing/lib/test/adapter.d.ts +7 -0
- package/types/stable/ember-testing/lib/test/helpers.d.ts +115 -0
- package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +33 -0
- package/types/stable/ember-testing/lib/test/pending_requests.d.ts +6 -0
- package/types/stable/ember-testing/lib/test/promise.d.ts +38 -0
- package/types/stable/ember-testing/lib/test/run.d.ts +3 -0
- package/types/stable/ember-testing/lib/test/waiters.d.ts +67 -0
- package/types/stable/ember-testing/lib/test.d.ts +47 -0
- package/types/stable/index.d.ts +47 -0
- package/types/preview/@ember/application/tsconfig.json +0 -3
- package/types/preview/@ember/array/tsconfig.json +0 -3
- package/types/preview/@ember/component/tsconfig.json +0 -3
- package/types/preview/@ember/controller/tsconfig.json +0 -3
- package/types/preview/@ember/debug/tsconfig.json +0 -3
- package/types/preview/@ember/destroyable/tsconfig.json +0 -3
- package/types/preview/@ember/engine/tsconfig.json +0 -3
- package/types/preview/@ember/error/tsconfig.json +0 -3
- package/types/preview/@ember/helper/tsconfig.json +0 -3
- package/types/preview/@ember/modifier/tsconfig.json +0 -3
- package/types/preview/@ember/object/tsconfig.json +0 -3
- package/types/preview/@ember/owner/index.d.ts +0 -423
- package/types/preview/@ember/owner/tsconfig.json +0 -3
- package/types/preview/@ember/polyfills/tsconfig.json +0 -3
- package/types/preview/@ember/routing/tsconfig.json +0 -3
- package/types/preview/@ember/runloop/tsconfig.json +0 -3
- package/types/preview/@ember/service/tsconfig.json +0 -3
- package/types/preview/@ember/string/tsconfig.json +0 -3
- package/types/preview/@ember/template/tsconfig.json +0 -3
- package/types/preview/@ember/test/tsconfig.json +0 -3
- package/types/preview/@ember/utils/tsconfig.json +0 -3
- package/types/preview/ember/tsconfig.json +0 -3
- package/types/preview/tsconfig.json +0 -6
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
declare module '@ember/-internals/metal/lib/computed.d.ts' {
|
|
2
|
+
import type { Meta } from '@ember/-internals/meta';
|
|
3
|
+
import type { ExtendedMethodDecorator, DecoratorPropertyDescriptor } from './decorator';
|
|
4
|
+
import { ComputedDescriptor } from './decorator';
|
|
5
|
+
export type ComputedPropertyGetterFunction = (this: any, key: string) => unknown;
|
|
6
|
+
export type ComputedPropertySetterFunction = (this: any, key: string, newVal: unknown, oldVal: unknown) => unknown;
|
|
7
|
+
export interface ComputedPropertyGetterObj {
|
|
8
|
+
get(this: any, key: string): unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface ComputedPropertySetterObj {
|
|
11
|
+
set(this: any, key: string, value: unknown): unknown;
|
|
12
|
+
}
|
|
13
|
+
export type ComputedPropertyObj = ComputedPropertyGetterObj | ComputedPropertySetterObj | (ComputedPropertyGetterObj & ComputedPropertySetterObj);
|
|
14
|
+
export type ComputedPropertyGetter = ComputedPropertyGetterFunction | ComputedPropertyGetterObj;
|
|
15
|
+
export type ComputedPropertySetter = ComputedPropertySetterFunction | ComputedPropertySetterObj;
|
|
16
|
+
export type ComputedPropertyCallback = ComputedPropertyGetterFunction | ComputedPropertyObj;
|
|
17
|
+
/**
|
|
18
|
+
`@computed` is a decorator that turns a JavaScript getter and setter into a
|
|
19
|
+
computed property, which is a _cached, trackable value_. By default the getter
|
|
20
|
+
will only be called once and the result will be cached. You can specify
|
|
21
|
+
various properties that your computed property depends on. This will force the
|
|
22
|
+
cached result to be cleared if the dependencies are modified, and lazily recomputed the next time something asks for it.
|
|
23
|
+
|
|
24
|
+
In the following example we decorate a getter - `fullName` - by calling
|
|
25
|
+
`computed` with the property dependencies (`firstName` and `lastName`) as
|
|
26
|
+
arguments. The `fullName` getter will be called once (regardless of how many
|
|
27
|
+
times it is accessed) as long as its dependencies do not change. Once
|
|
28
|
+
`firstName` or `lastName` are updated any future calls to `fullName` will
|
|
29
|
+
incorporate the new values, and any watchers of the value such as templates
|
|
30
|
+
will be updated:
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
import { computed, set } from '@ember/object';
|
|
34
|
+
|
|
35
|
+
class Person {
|
|
36
|
+
constructor(firstName, lastName) {
|
|
37
|
+
set(this, 'firstName', firstName);
|
|
38
|
+
set(this, 'lastName', lastName);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@computed('firstName', 'lastName')
|
|
42
|
+
get fullName() {
|
|
43
|
+
return `${this.firstName} ${this.lastName}`;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
let tom = new Person('Tom', 'Dale');
|
|
48
|
+
|
|
49
|
+
tom.fullName; // 'Tom Dale'
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
You can also provide a setter, which will be used when updating the computed
|
|
53
|
+
property. Ember's `set` function must be used to update the property
|
|
54
|
+
since it will also notify observers of the property:
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
import { computed, set } from '@ember/object';
|
|
58
|
+
|
|
59
|
+
class Person {
|
|
60
|
+
constructor(firstName, lastName) {
|
|
61
|
+
set(this, 'firstName', firstName);
|
|
62
|
+
set(this, 'lastName', lastName);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@computed('firstName', 'lastName')
|
|
66
|
+
get fullName() {
|
|
67
|
+
return `${this.firstName} ${this.lastName}`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
set fullName(value) {
|
|
71
|
+
let [firstName, lastName] = value.split(' ');
|
|
72
|
+
|
|
73
|
+
set(this, 'firstName', firstName);
|
|
74
|
+
set(this, 'lastName', lastName);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
let person = new Person();
|
|
79
|
+
|
|
80
|
+
set(person, 'fullName', 'Peter Wagenet');
|
|
81
|
+
person.firstName; // 'Peter'
|
|
82
|
+
person.lastName; // 'Wagenet'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
You can also pass a getter function or object with `get` and `set` functions
|
|
86
|
+
as the last argument to the computed decorator. This allows you to define
|
|
87
|
+
computed property _macros_:
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
import { computed } from '@ember/object';
|
|
91
|
+
|
|
92
|
+
function join(...keys) {
|
|
93
|
+
return computed(...keys, function() {
|
|
94
|
+
return keys.map(key => this[key]).join(' ');
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
class Person {
|
|
99
|
+
@join('firstName', 'lastName')
|
|
100
|
+
fullName;
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Note that when defined this way, getters and setters receive the _key_ of the
|
|
105
|
+
property they are decorating as the first argument. Setters receive the value
|
|
106
|
+
they are setting to as the second argument instead. Additionally, setters must
|
|
107
|
+
_return_ the value that should be cached:
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
import { computed, set } from '@ember/object';
|
|
111
|
+
|
|
112
|
+
function fullNameMacro(firstNameKey, lastNameKey) {
|
|
113
|
+
return computed(firstNameKey, lastNameKey, {
|
|
114
|
+
get() {
|
|
115
|
+
return `${this[firstNameKey]} ${this[lastNameKey]}`;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
set(key, value) {
|
|
119
|
+
let [firstName, lastName] = value.split(' ');
|
|
120
|
+
|
|
121
|
+
set(this, firstNameKey, firstName);
|
|
122
|
+
set(this, lastNameKey, lastName);
|
|
123
|
+
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
class Person {
|
|
130
|
+
constructor(firstName, lastName) {
|
|
131
|
+
set(this, 'firstName', firstName);
|
|
132
|
+
set(this, 'lastName', lastName);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@fullNameMacro('firstName', 'lastName') fullName;
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
let person = new Person();
|
|
139
|
+
|
|
140
|
+
set(person, 'fullName', 'Peter Wagenet');
|
|
141
|
+
person.firstName; // 'Peter'
|
|
142
|
+
person.lastName; // 'Wagenet'
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Computed properties can also be used in classic classes. To do this, we
|
|
146
|
+
provide the getter and setter as the last argument like we would for a macro,
|
|
147
|
+
and we assign it to a property on the class definition. This is an _anonymous_
|
|
148
|
+
computed macro:
|
|
149
|
+
|
|
150
|
+
```javascript
|
|
151
|
+
import EmberObject, { computed, set } from '@ember/object';
|
|
152
|
+
|
|
153
|
+
let Person = EmberObject.extend({
|
|
154
|
+
// these will be supplied by `create`
|
|
155
|
+
firstName: null,
|
|
156
|
+
lastName: null,
|
|
157
|
+
|
|
158
|
+
fullName: computed('firstName', 'lastName', {
|
|
159
|
+
get() {
|
|
160
|
+
return `${this.firstName} ${this.lastName}`;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
set(key, value) {
|
|
164
|
+
let [firstName, lastName] = value.split(' ');
|
|
165
|
+
|
|
166
|
+
set(this, 'firstName', firstName);
|
|
167
|
+
set(this, 'lastName', lastName);
|
|
168
|
+
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
let tom = Person.create({
|
|
175
|
+
firstName: 'Tom',
|
|
176
|
+
lastName: 'Dale'
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
tom.get('fullName') // 'Tom Dale'
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
You can overwrite computed property without setters with a normal property (no
|
|
183
|
+
longer computed) that won't change if dependencies change. You can also mark
|
|
184
|
+
computed property as `.readOnly()` and block all attempts to set it.
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
import { computed, set } from '@ember/object';
|
|
188
|
+
|
|
189
|
+
class Person {
|
|
190
|
+
constructor(firstName, lastName) {
|
|
191
|
+
set(this, 'firstName', firstName);
|
|
192
|
+
set(this, 'lastName', lastName);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@computed('firstName', 'lastName').readOnly()
|
|
196
|
+
get fullName() {
|
|
197
|
+
return `${this.firstName} ${this.lastName}`;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
let person = new Person();
|
|
202
|
+
person.set('fullName', 'Peter Wagenet'); // Uncaught Error: Cannot set read-only property "fullName" on object: <(...):emberXXX>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Additional resources:
|
|
206
|
+
- [Decorators RFC](https://github.com/emberjs/rfcs/blob/master/text/0408-decorators.md)
|
|
207
|
+
- [New CP syntax RFC](https://github.com/emberjs/rfcs/blob/master/text/0011-improved-cp-syntax.md)
|
|
208
|
+
- [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)
|
|
209
|
+
|
|
210
|
+
@class ComputedProperty
|
|
211
|
+
@public
|
|
212
|
+
*/
|
|
213
|
+
export class ComputedProperty extends ComputedDescriptor {
|
|
214
|
+
_readOnly: boolean;
|
|
215
|
+
protected _hasConfig: boolean;
|
|
216
|
+
_getter?: ComputedPropertyGetterFunction;
|
|
217
|
+
_setter?: ComputedPropertySetterFunction;
|
|
218
|
+
constructor(args: Array<string | ComputedPropertyCallback>);
|
|
219
|
+
setup(obj: object, keyName: string, propertyDesc: DecoratorPropertyDescriptor, meta: Meta): void;
|
|
220
|
+
_property(...passedArgs: string[]): void;
|
|
221
|
+
get(obj: object, keyName: string): unknown;
|
|
222
|
+
set(obj: object, keyName: string, value: unknown): unknown;
|
|
223
|
+
_throwReadOnlyError(obj: object, keyName: string): never;
|
|
224
|
+
_set(obj: object, keyName: string, value: unknown, meta: Meta): unknown;
|
|
225
|
+
teardown(obj: object, keyName: string, meta: Meta): void;
|
|
226
|
+
}
|
|
227
|
+
export type ComputedDecorator = ExtendedMethodDecorator & PropertyDecorator & ComputedDecoratorImpl;
|
|
228
|
+
class ComputedDecoratorImpl extends Function {
|
|
229
|
+
/**
|
|
230
|
+
Call on a computed property to set it into read-only mode. When in this
|
|
231
|
+
mode the computed property will throw an error when set.
|
|
232
|
+
|
|
233
|
+
Example:
|
|
234
|
+
|
|
235
|
+
```javascript
|
|
236
|
+
import { computed, set } from '@ember/object';
|
|
237
|
+
|
|
238
|
+
class Person {
|
|
239
|
+
@computed().readOnly()
|
|
240
|
+
get guid() {
|
|
241
|
+
return 'guid-guid-guid';
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
let person = new Person();
|
|
246
|
+
set(person, 'guid', 'new-guid'); // will throw an exception
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Classic Class Example:
|
|
250
|
+
|
|
251
|
+
```javascript
|
|
252
|
+
import EmberObject, { computed } from '@ember/object';
|
|
253
|
+
|
|
254
|
+
let Person = EmberObject.extend({
|
|
255
|
+
guid: computed(function() {
|
|
256
|
+
return 'guid-guid-guid';
|
|
257
|
+
}).readOnly()
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
let person = Person.create();
|
|
261
|
+
person.set('guid', 'new-guid'); // will throw an exception
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
@method readOnly
|
|
265
|
+
@return {ComputedProperty} this
|
|
266
|
+
@chainable
|
|
267
|
+
@public
|
|
268
|
+
*/
|
|
269
|
+
readOnly(this: ExtendedMethodDecorator): ExtendedMethodDecorator;
|
|
270
|
+
/**
|
|
271
|
+
In some cases, you may want to annotate computed properties with additional
|
|
272
|
+
metadata about how they function or what values they operate on. For example,
|
|
273
|
+
computed property functions may close over variables that are then no longer
|
|
274
|
+
available for introspection. You can pass a hash of these values to a
|
|
275
|
+
computed property.
|
|
276
|
+
|
|
277
|
+
Example:
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
import { computed } from '@ember/object';
|
|
281
|
+
import Person from 'my-app/utils/person';
|
|
282
|
+
|
|
283
|
+
class Store {
|
|
284
|
+
@computed().meta({ type: Person })
|
|
285
|
+
get person() {
|
|
286
|
+
let personId = this.personId;
|
|
287
|
+
return Person.create({ id: personId });
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Classic Class Example:
|
|
293
|
+
|
|
294
|
+
```javascript
|
|
295
|
+
import { computed } from '@ember/object';
|
|
296
|
+
import Person from 'my-app/utils/person';
|
|
297
|
+
|
|
298
|
+
const Store = EmberObject.extend({
|
|
299
|
+
person: computed(function() {
|
|
300
|
+
let personId = this.get('personId');
|
|
301
|
+
return Person.create({ id: personId });
|
|
302
|
+
}).meta({ type: Person })
|
|
303
|
+
});
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
The hash that you pass to the `meta()` function will be saved on the
|
|
307
|
+
computed property descriptor under the `_meta` key. Ember runtime
|
|
308
|
+
exposes a public API for retrieving these values from classes,
|
|
309
|
+
via the `metaForProperty()` function.
|
|
310
|
+
|
|
311
|
+
@method meta
|
|
312
|
+
@param {Object} meta
|
|
313
|
+
@chainable
|
|
314
|
+
@public
|
|
315
|
+
*/
|
|
316
|
+
meta(this: ExtendedMethodDecorator, meta?: unknown): unknown;
|
|
317
|
+
/** @internal */
|
|
318
|
+
get _getter(): ComputedPropertyGetterFunction | undefined;
|
|
319
|
+
/** @internal */
|
|
320
|
+
set enumerable(value: boolean);
|
|
321
|
+
}
|
|
322
|
+
type ComputedDecoratorKeysAndConfig = [...keys: string[], config: ComputedPropertyCallback];
|
|
323
|
+
/**
|
|
324
|
+
This helper returns a new property descriptor that wraps the passed
|
|
325
|
+
computed property function. You can use this helper to define properties with
|
|
326
|
+
native decorator syntax, mixins, or via `defineProperty()`.
|
|
327
|
+
|
|
328
|
+
Example:
|
|
329
|
+
|
|
330
|
+
```js
|
|
331
|
+
import { computed, set } from '@ember/object';
|
|
332
|
+
|
|
333
|
+
class Person {
|
|
334
|
+
constructor() {
|
|
335
|
+
this.firstName = 'Betty';
|
|
336
|
+
this.lastName = 'Jones';
|
|
337
|
+
},
|
|
338
|
+
|
|
339
|
+
@computed('firstName', 'lastName')
|
|
340
|
+
get fullName() {
|
|
341
|
+
return `${this.firstName} ${this.lastName}`;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
let client = new Person();
|
|
346
|
+
|
|
347
|
+
client.fullName; // 'Betty Jones'
|
|
348
|
+
|
|
349
|
+
set(client, 'lastName', 'Fuller');
|
|
350
|
+
client.fullName; // 'Betty Fuller'
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Classic Class Example:
|
|
354
|
+
|
|
355
|
+
```js
|
|
356
|
+
import EmberObject, { computed } from '@ember/object';
|
|
357
|
+
|
|
358
|
+
let Person = EmberObject.extend({
|
|
359
|
+
init() {
|
|
360
|
+
this._super(...arguments);
|
|
361
|
+
|
|
362
|
+
this.firstName = 'Betty';
|
|
363
|
+
this.lastName = 'Jones';
|
|
364
|
+
},
|
|
365
|
+
|
|
366
|
+
fullName: computed('firstName', 'lastName', function() {
|
|
367
|
+
return `${this.get('firstName')} ${this.get('lastName')}`;
|
|
368
|
+
})
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
let client = Person.create();
|
|
372
|
+
|
|
373
|
+
client.get('fullName'); // 'Betty Jones'
|
|
374
|
+
|
|
375
|
+
client.set('lastName', 'Fuller');
|
|
376
|
+
client.get('fullName'); // 'Betty Fuller'
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
You can also provide a setter, either directly on the class using native class
|
|
380
|
+
syntax, or by passing a hash with `get` and `set` functions.
|
|
381
|
+
|
|
382
|
+
Example:
|
|
383
|
+
|
|
384
|
+
```js
|
|
385
|
+
import { computed, set } from '@ember/object';
|
|
386
|
+
|
|
387
|
+
class Person {
|
|
388
|
+
constructor() {
|
|
389
|
+
this.firstName = 'Betty';
|
|
390
|
+
this.lastName = 'Jones';
|
|
391
|
+
},
|
|
392
|
+
|
|
393
|
+
@computed('firstName', 'lastName')
|
|
394
|
+
get fullName() {
|
|
395
|
+
return `${this.firstName} ${this.lastName}`;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
set fullName(value) {
|
|
399
|
+
let [firstName, lastName] = value.split(/\s+/);
|
|
400
|
+
|
|
401
|
+
set(this, 'firstName', firstName);
|
|
402
|
+
set(this, 'lastName', lastName);
|
|
403
|
+
|
|
404
|
+
return value;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
let client = new Person();
|
|
409
|
+
|
|
410
|
+
client.fullName; // 'Betty Jones'
|
|
411
|
+
|
|
412
|
+
set(client, 'lastName', 'Fuller');
|
|
413
|
+
client.fullName; // 'Betty Fuller'
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Classic Class Example:
|
|
417
|
+
|
|
418
|
+
```js
|
|
419
|
+
import EmberObject, { computed } from '@ember/object';
|
|
420
|
+
|
|
421
|
+
let Person = EmberObject.extend({
|
|
422
|
+
init() {
|
|
423
|
+
this._super(...arguments);
|
|
424
|
+
|
|
425
|
+
this.firstName = 'Betty';
|
|
426
|
+
this.lastName = 'Jones';
|
|
427
|
+
},
|
|
428
|
+
|
|
429
|
+
fullName: computed('firstName', 'lastName', {
|
|
430
|
+
get(key) {
|
|
431
|
+
return `${this.get('firstName')} ${this.get('lastName')}`;
|
|
432
|
+
},
|
|
433
|
+
set(key, value) {
|
|
434
|
+
let [firstName, lastName] = value.split(/\s+/);
|
|
435
|
+
this.setProperties({ firstName, lastName });
|
|
436
|
+
return value;
|
|
437
|
+
}
|
|
438
|
+
})
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
let client = Person.create();
|
|
442
|
+
client.get('firstName'); // 'Betty'
|
|
443
|
+
|
|
444
|
+
client.set('fullName', 'Carroll Fuller');
|
|
445
|
+
client.get('firstName'); // 'Carroll'
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
When passed as an argument, the `set` function should accept two parameters,
|
|
449
|
+
`key` and `value`. The value returned from `set` will be the new value of the
|
|
450
|
+
property.
|
|
451
|
+
|
|
452
|
+
_Note: This is the preferred way to define computed properties when writing third-party
|
|
453
|
+
libraries that depend on or use Ember, since there is no guarantee that the user
|
|
454
|
+
will have [prototype Extensions](https://guides.emberjs.com/release/configuring-ember/disabling-prototype-extensions/) enabled._
|
|
455
|
+
|
|
456
|
+
@method computed
|
|
457
|
+
@for @ember/object
|
|
458
|
+
@static
|
|
459
|
+
@param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.
|
|
460
|
+
@param {Function} func The computed property function.
|
|
461
|
+
@return {ComputedDecorator} property decorator instance
|
|
462
|
+
@public
|
|
463
|
+
*/
|
|
464
|
+
export function computed(target: object, propertyName: string, descriptor: DecoratorPropertyDescriptor): DecoratorPropertyDescriptor | void;
|
|
465
|
+
export function computed(...dependentKeys: string[]): ComputedDecorator;
|
|
466
|
+
export function computed(...args: ComputedDecoratorKeysAndConfig): ComputedDecorator;
|
|
467
|
+
export function computed(callback: ComputedPropertyCallback): ComputedDecorator;
|
|
468
|
+
export function autoComputed(...config: [ComputedPropertyObj | ComputedPropertyGetterFunction]): ComputedDecorator;
|
|
469
|
+
/**
|
|
470
|
+
Allows checking if a given property on an object is a computed property. For the most part,
|
|
471
|
+
this doesn't matter (you would normally just access the property directly and use its value),
|
|
472
|
+
but for some tooling specific scenarios (e.g. the ember-inspector) it is important to
|
|
473
|
+
differentiate if a property is a computed property or a "normal" property.
|
|
474
|
+
|
|
475
|
+
This will work on either a class's prototype or an instance itself.
|
|
476
|
+
|
|
477
|
+
@static
|
|
478
|
+
@method isComputed
|
|
479
|
+
@for @ember/debug
|
|
480
|
+
@private
|
|
481
|
+
*/
|
|
482
|
+
export function isComputed(obj: object, key: string): boolean;
|
|
483
|
+
export default computed;
|
|
484
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
declare module '@ember/-internals/metal/lib/decorator.d.ts' {
|
|
2
|
+
import type { Meta } from '@ember/-internals/meta';
|
|
3
|
+
export type DecoratorPropertyDescriptor = (PropertyDescriptor & {
|
|
4
|
+
initializer?: any;
|
|
5
|
+
}) | undefined;
|
|
6
|
+
export type ExtendedMethodDecorator = (target: object, key: string, desc: DecoratorPropertyDescriptor, maybeMeta?: Meta, isClassicDecorator?: boolean) => DecoratorPropertyDescriptor;
|
|
7
|
+
export type ElementDescriptor = [
|
|
8
|
+
target: object,
|
|
9
|
+
propertyName: string,
|
|
10
|
+
descriptor?: DecoratorPropertyDescriptor
|
|
11
|
+
];
|
|
12
|
+
export function isElementDescriptor(args: unknown[]): args is ElementDescriptor;
|
|
13
|
+
export function nativeDescDecorator(propertyDesc: PropertyDescriptor): () => PropertyDescriptor;
|
|
14
|
+
/**
|
|
15
|
+
Objects of this type can implement an interface to respond to requests to
|
|
16
|
+
get and set. The default implementation handles simple properties.
|
|
17
|
+
|
|
18
|
+
@class Descriptor
|
|
19
|
+
@private
|
|
20
|
+
*/
|
|
21
|
+
export abstract class ComputedDescriptor {
|
|
22
|
+
enumerable: boolean;
|
|
23
|
+
configurable: boolean;
|
|
24
|
+
_dependentKeys?: string[];
|
|
25
|
+
_meta: any;
|
|
26
|
+
setup(_obj: object, keyName: string, _propertyDesc: DecoratorPropertyDescriptor | undefined, meta: Meta): void;
|
|
27
|
+
teardown(_obj: object, keyName: string, meta: Meta): void;
|
|
28
|
+
abstract get(obj: object, keyName: string): any | null | undefined;
|
|
29
|
+
abstract set(obj: object, keyName: string, value: any | null | undefined): any | null | undefined;
|
|
30
|
+
}
|
|
31
|
+
export let COMPUTED_GETTERS: WeakSet<() => unknown>;
|
|
32
|
+
export const COMPUTED_SETTERS: WeakSet<object>;
|
|
33
|
+
export function makeComputedDecorator(desc: ComputedDescriptor, DecoratorClass: {
|
|
34
|
+
prototype: object;
|
|
35
|
+
}): ExtendedMethodDecorator;
|
|
36
|
+
/**
|
|
37
|
+
Returns the CP descriptor associated with `obj` and `keyName`, if any.
|
|
38
|
+
|
|
39
|
+
@method descriptorForProperty
|
|
40
|
+
@param {Object} obj the object to check
|
|
41
|
+
@param {String} keyName the key to check
|
|
42
|
+
@return {Descriptor}
|
|
43
|
+
@private
|
|
44
|
+
*/
|
|
45
|
+
export function descriptorForProperty(obj: object, keyName: string, _meta?: Meta | null): any;
|
|
46
|
+
export function descriptorForDecorator(dec: Function): ComputedDescriptor | true | undefined;
|
|
47
|
+
/**
|
|
48
|
+
Check whether a value is a decorator
|
|
49
|
+
|
|
50
|
+
@method isClassicDecorator
|
|
51
|
+
@param {any} possibleDesc the value to check
|
|
52
|
+
@return {boolean}
|
|
53
|
+
@private
|
|
54
|
+
*/
|
|
55
|
+
export function isClassicDecorator(dec: unknown): dec is ExtendedMethodDecorator;
|
|
56
|
+
/**
|
|
57
|
+
Set a value as a decorator
|
|
58
|
+
|
|
59
|
+
@method setClassicDecorator
|
|
60
|
+
@param {function} decorator the value to mark as a decorator
|
|
61
|
+
@private
|
|
62
|
+
*/
|
|
63
|
+
export function setClassicDecorator(dec: ExtendedMethodDecorator, value?: ComputedDescriptor | true): void;
|
|
64
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare module '@ember/-internals/metal/lib/deprecate_property.d.ts' {
|
|
2
|
+
/**
|
|
3
|
+
@module ember
|
|
4
|
+
*/
|
|
5
|
+
import type { DeprecationOptions } from '@ember/debug';
|
|
6
|
+
/**
|
|
7
|
+
Used internally to allow changing properties in a backwards compatible way, and print a helpful
|
|
8
|
+
deprecation warning.
|
|
9
|
+
|
|
10
|
+
@method deprecateProperty
|
|
11
|
+
@param {Object} object The object to add the deprecated property to.
|
|
12
|
+
@param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
|
|
13
|
+
@param {String} newKey The property that will be aliased.
|
|
14
|
+
@private
|
|
15
|
+
@since 1.7.0
|
|
16
|
+
*/
|
|
17
|
+
export function deprecateProperty(object: object, deprecatedKey: string, newKey: string, options?: DeprecationOptions): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare module '@ember/-internals/metal/lib/each_proxy_events.d.ts' {
|
|
2
|
+
export const EACH_PROXIES: WeakMap<object, any>;
|
|
3
|
+
export function eachProxyArrayWillChange(array: any, idx: number, removedCnt: number, addedCnt: number): void;
|
|
4
|
+
export function eachProxyArrayDidChange(array: any, idx: number, removedCnt: number, addedCnt: number): void;
|
|
5
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
declare module '@ember/-internals/metal/lib/events.d.ts' {
|
|
2
|
+
/**
|
|
3
|
+
@module @ember/object
|
|
4
|
+
*/
|
|
5
|
+
import type { Meta } from '@ember/-internals/meta';
|
|
6
|
+
import type { AnyFn } from '@ember/-internals/utility-types';
|
|
7
|
+
/**
|
|
8
|
+
Add an event listener
|
|
9
|
+
|
|
10
|
+
@method addListener
|
|
11
|
+
@static
|
|
12
|
+
@for @ember/object/events
|
|
13
|
+
@param obj
|
|
14
|
+
@param {String} eventName
|
|
15
|
+
@param {Object|Function} target A target object or a function
|
|
16
|
+
@param {Function|String} method A function or the name of a function to be called on `target`
|
|
17
|
+
@param {Boolean} once A flag whether a function should only be called once
|
|
18
|
+
@public
|
|
19
|
+
*/
|
|
20
|
+
export function addListener(obj: object, eventName: string, target: object | Function | null, method?: Function | PropertyKey, once?: boolean, sync?: boolean): void;
|
|
21
|
+
/**
|
|
22
|
+
Remove an event listener
|
|
23
|
+
|
|
24
|
+
Arguments should match those passed to `addListener`.
|
|
25
|
+
|
|
26
|
+
@method removeListener
|
|
27
|
+
@static
|
|
28
|
+
@for @ember/object/events
|
|
29
|
+
@param obj
|
|
30
|
+
@param {String} eventName
|
|
31
|
+
@param {Object|Function} target A target object or a function
|
|
32
|
+
@param {Function|String} method A function or the name of a function to be called on `target`
|
|
33
|
+
@public
|
|
34
|
+
*/
|
|
35
|
+
export function removeListener(obj: object, eventName: string, targetOrFunction: object | Function | null, functionOrName?: string | Function): void;
|
|
36
|
+
/**
|
|
37
|
+
Send an event. The execution of suspended listeners
|
|
38
|
+
is skipped, and once listeners are removed. A listener without
|
|
39
|
+
a target is executed on the passed object. If an array of actions
|
|
40
|
+
is not passed, the actions stored on the passed object are invoked.
|
|
41
|
+
|
|
42
|
+
@method sendEvent
|
|
43
|
+
@static
|
|
44
|
+
@for @ember/object/events
|
|
45
|
+
@param obj
|
|
46
|
+
@param {String} eventName
|
|
47
|
+
@param {Array} params Optional parameters for each listener.
|
|
48
|
+
@return {Boolean} if the event was delivered to one or more actions
|
|
49
|
+
@public
|
|
50
|
+
*/
|
|
51
|
+
export function sendEvent(obj: object, eventName: string, params?: any[], actions?: any[], _meta?: Meta | null): boolean;
|
|
52
|
+
/**
|
|
53
|
+
@public
|
|
54
|
+
@method hasListeners
|
|
55
|
+
@static
|
|
56
|
+
@for @ember/object/events
|
|
57
|
+
@param obj
|
|
58
|
+
@param {String} eventName
|
|
59
|
+
@return {Boolean} if `obj` has listeners for event `eventName`
|
|
60
|
+
*/
|
|
61
|
+
export function hasListeners(obj: object, eventName: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
Define a property as a function that should be executed when
|
|
64
|
+
a specified event or events are triggered.
|
|
65
|
+
|
|
66
|
+
``` javascript
|
|
67
|
+
import EmberObject from '@ember/object';
|
|
68
|
+
import { on } from '@ember/object/evented';
|
|
69
|
+
import { sendEvent } from '@ember/object/events';
|
|
70
|
+
|
|
71
|
+
let Job = EmberObject.extend({
|
|
72
|
+
logCompleted: on('completed', function() {
|
|
73
|
+
console.log('Job completed!');
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
let job = Job.create();
|
|
78
|
+
|
|
79
|
+
sendEvent(job, 'completed'); // Logs 'Job completed!'
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
@method on
|
|
83
|
+
@static
|
|
84
|
+
@for @ember/object/evented
|
|
85
|
+
@param {String} eventNames*
|
|
86
|
+
@param {Function} func
|
|
87
|
+
@return {Function} the listener function, passed as last argument to on(...)
|
|
88
|
+
@public
|
|
89
|
+
*/
|
|
90
|
+
export function on<T extends AnyFn>(...args: [...eventNames: string[], func: T]): T;
|
|
91
|
+
}
|