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,157 @@
|
|
|
1
|
+
declare module '@ember/object/mixin.d.ts' {
|
|
2
|
+
/**
|
|
3
|
+
@module @ember/object/mixin
|
|
4
|
+
*/
|
|
5
|
+
import { INIT_FACTORY } from '@ember/-internals/container';
|
|
6
|
+
export function applyMixin(obj: Record<string, any>, mixins: Array<Mixin | Record<string, unknown>>, _hideKeys?: boolean): Record<string, any>;
|
|
7
|
+
/**
|
|
8
|
+
@method mixin
|
|
9
|
+
@param obj
|
|
10
|
+
@param mixins*
|
|
11
|
+
@return obj
|
|
12
|
+
@private
|
|
13
|
+
*/
|
|
14
|
+
export function mixin(obj: object, ...args: any[]): object;
|
|
15
|
+
/**
|
|
16
|
+
The `Mixin` class allows you to create mixins, whose properties can be
|
|
17
|
+
added to other classes. For instance,
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
import Mixin from '@ember/object/mixin';
|
|
21
|
+
|
|
22
|
+
const EditableMixin = Mixin.create({
|
|
23
|
+
edit() {
|
|
24
|
+
console.log('starting to edit');
|
|
25
|
+
this.set('isEditing', true);
|
|
26
|
+
},
|
|
27
|
+
isEditing: false
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
import EmberObject from '@ember/object';
|
|
33
|
+
import EditableMixin from '../mixins/editable';
|
|
34
|
+
|
|
35
|
+
// Mix mixins into classes by passing them as the first arguments to
|
|
36
|
+
// `.extend.`
|
|
37
|
+
const Comment = EmberObject.extend(EditableMixin, {
|
|
38
|
+
post: null
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
let comment = Comment.create({
|
|
42
|
+
post: somePost
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
comment.edit(); // outputs 'starting to edit'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Note that Mixins are created with `Mixin.create`, not
|
|
49
|
+
`Mixin.extend`.
|
|
50
|
+
|
|
51
|
+
Note that mixins extend a constructor's prototype so arrays and object literals
|
|
52
|
+
defined as properties will be shared amongst objects that implement the mixin.
|
|
53
|
+
If you want to define a property in a mixin that is not shared, you can define
|
|
54
|
+
it either as a computed property or have it be created on initialization of the object.
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
// filters array will be shared amongst any object implementing mixin
|
|
58
|
+
import Mixin from '@ember/object/mixin';
|
|
59
|
+
import { A } from '@ember/array';
|
|
60
|
+
|
|
61
|
+
const FilterableMixin = Mixin.create({
|
|
62
|
+
filters: A()
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```javascript
|
|
67
|
+
import Mixin from '@ember/object/mixin';
|
|
68
|
+
import { A } from '@ember/array';
|
|
69
|
+
import { computed } from '@ember/object';
|
|
70
|
+
|
|
71
|
+
// filters will be a separate array for every object implementing the mixin
|
|
72
|
+
const FilterableMixin = Mixin.create({
|
|
73
|
+
filters: computed(function() {
|
|
74
|
+
return A();
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```javascript
|
|
80
|
+
import Mixin from '@ember/object/mixin';
|
|
81
|
+
import { A } from '@ember/array';
|
|
82
|
+
|
|
83
|
+
// filters will be created as a separate array during the object's initialization
|
|
84
|
+
const Filterable = Mixin.create({
|
|
85
|
+
filters: null,
|
|
86
|
+
|
|
87
|
+
init() {
|
|
88
|
+
this._super(...arguments);
|
|
89
|
+
this.set("filters", A());
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
@class Mixin
|
|
95
|
+
@public
|
|
96
|
+
*/
|
|
97
|
+
export default class Mixin {
|
|
98
|
+
/** @internal */
|
|
99
|
+
static _disableDebugSeal?: boolean;
|
|
100
|
+
/** @internal */
|
|
101
|
+
mixins: Mixin[] | undefined;
|
|
102
|
+
/** @internal */
|
|
103
|
+
properties: {
|
|
104
|
+
[key: string]: any;
|
|
105
|
+
} | undefined;
|
|
106
|
+
/** @internal */
|
|
107
|
+
ownerConstructor: any;
|
|
108
|
+
/** @internal */
|
|
109
|
+
_without: any[] | undefined;
|
|
110
|
+
[INIT_FACTORY]?: null;
|
|
111
|
+
/** @internal */
|
|
112
|
+
constructor(mixins: Mixin[] | undefined, properties?: {
|
|
113
|
+
[key: string]: any;
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
@method create
|
|
117
|
+
@for @ember/object/mixin
|
|
118
|
+
@static
|
|
119
|
+
@param arguments*
|
|
120
|
+
@public
|
|
121
|
+
*/
|
|
122
|
+
static create(...args: any[]): Mixin;
|
|
123
|
+
/** @internal */
|
|
124
|
+
static mixins(obj: object): Mixin[];
|
|
125
|
+
/**
|
|
126
|
+
@method reopen
|
|
127
|
+
@param arguments*
|
|
128
|
+
@private
|
|
129
|
+
@internal
|
|
130
|
+
*/
|
|
131
|
+
reopen(...args: any[]): this | undefined;
|
|
132
|
+
/**
|
|
133
|
+
@method apply
|
|
134
|
+
@param obj
|
|
135
|
+
@return applied object
|
|
136
|
+
@private
|
|
137
|
+
@internal
|
|
138
|
+
*/
|
|
139
|
+
apply(obj: object, _hideKeys?: boolean): Record<string, any>;
|
|
140
|
+
/** @internal */
|
|
141
|
+
applyPartial(obj: object): Record<string, any>;
|
|
142
|
+
/**
|
|
143
|
+
@method detect
|
|
144
|
+
@param obj
|
|
145
|
+
@return {Boolean}
|
|
146
|
+
@private
|
|
147
|
+
@internal
|
|
148
|
+
*/
|
|
149
|
+
detect(obj: any): boolean;
|
|
150
|
+
/** @internal */
|
|
151
|
+
without(...args: any[]): Mixin;
|
|
152
|
+
/** @internal */
|
|
153
|
+
keys(): Set<string>;
|
|
154
|
+
/** @internal */
|
|
155
|
+
toString(): string;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
declare module '@ember/object/observable.d.ts' {
|
|
2
|
+
/**
|
|
3
|
+
@module @ember/object/observable
|
|
4
|
+
*/
|
|
5
|
+
import Mixin from '@ember/object/mixin';
|
|
6
|
+
export type ObserverMethod<Target, Sender> = keyof Target | ((this: Target, sender: Sender, key: string, value: any, rev: number) => void);
|
|
7
|
+
/**
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This mixin provides properties and property observing functionality, core
|
|
11
|
+
features of the Ember object model.
|
|
12
|
+
|
|
13
|
+
Properties and observers allow one object to observe changes to a
|
|
14
|
+
property on another object. This is one of the fundamental ways that
|
|
15
|
+
models, controllers and views communicate with each other in an Ember
|
|
16
|
+
application.
|
|
17
|
+
|
|
18
|
+
Any object that has this mixin applied can be used in observer
|
|
19
|
+
operations. That includes `EmberObject` and most objects you will
|
|
20
|
+
interact with as you write your Ember application.
|
|
21
|
+
|
|
22
|
+
Note that you will not generally apply this mixin to classes yourself,
|
|
23
|
+
but you will use the features provided by this module frequently, so it
|
|
24
|
+
is important to understand how to use it.
|
|
25
|
+
|
|
26
|
+
## Using `get()` and `set()`
|
|
27
|
+
|
|
28
|
+
Because of Ember's support for bindings and observers, you will always
|
|
29
|
+
access properties using the get method, and set properties using the
|
|
30
|
+
set method. This allows the observing objects to be notified and
|
|
31
|
+
computed properties to be handled properly.
|
|
32
|
+
|
|
33
|
+
More documentation about `get` and `set` are below.
|
|
34
|
+
|
|
35
|
+
## Observing Property Changes
|
|
36
|
+
|
|
37
|
+
You typically observe property changes simply by using the `observer`
|
|
38
|
+
function in classes that you write.
|
|
39
|
+
|
|
40
|
+
For example:
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
import { observer } from '@ember/object';
|
|
44
|
+
import EmberObject from '@ember/object';
|
|
45
|
+
|
|
46
|
+
EmberObject.extend({
|
|
47
|
+
valueObserver: observer('value', function(sender, key, value, rev) {
|
|
48
|
+
// Executes whenever the "value" property changes
|
|
49
|
+
// See the addObserver method for more information about the callback arguments
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Although this is the most common way to add an observer, this capability
|
|
55
|
+
is actually built into the `EmberObject` class on top of two methods
|
|
56
|
+
defined in this mixin: `addObserver` and `removeObserver`. You can use
|
|
57
|
+
these two methods to add and remove observers yourself if you need to
|
|
58
|
+
do so at runtime.
|
|
59
|
+
|
|
60
|
+
To add an observer for a property, call:
|
|
61
|
+
|
|
62
|
+
```javascript
|
|
63
|
+
object.addObserver('propertyKey', targetObject, targetAction)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This will call the `targetAction` method on the `targetObject` whenever
|
|
67
|
+
the value of the `propertyKey` changes.
|
|
68
|
+
|
|
69
|
+
Note that if `propertyKey` is a computed property, the observer will be
|
|
70
|
+
called when any of the property dependencies are changed, even if the
|
|
71
|
+
resulting value of the computed property is unchanged. This is necessary
|
|
72
|
+
because computed properties are not computed until `get` is called.
|
|
73
|
+
|
|
74
|
+
@class Observable
|
|
75
|
+
@public
|
|
76
|
+
*/
|
|
77
|
+
interface Observable {
|
|
78
|
+
/**
|
|
79
|
+
Retrieves the value of a property from the object.
|
|
80
|
+
|
|
81
|
+
This method is usually similar to using `object[keyName]` or `object.keyName`,
|
|
82
|
+
however it supports both computed properties and the unknownProperty
|
|
83
|
+
handler.
|
|
84
|
+
|
|
85
|
+
Because `get` unifies the syntax for accessing all these kinds
|
|
86
|
+
of properties, it can make many refactorings easier, such as replacing a
|
|
87
|
+
simple property with a computed property, or vice versa.
|
|
88
|
+
|
|
89
|
+
### Computed Properties
|
|
90
|
+
|
|
91
|
+
Computed properties are methods defined with the `property` modifier
|
|
92
|
+
declared at the end, such as:
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
import { computed } from '@ember/object';
|
|
96
|
+
|
|
97
|
+
fullName: computed('firstName', 'lastName', function() {
|
|
98
|
+
return this.get('firstName') + ' ' + this.get('lastName');
|
|
99
|
+
})
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
When you call `get` on a computed property, the function will be
|
|
103
|
+
called and the return value will be returned instead of the function
|
|
104
|
+
itself.
|
|
105
|
+
|
|
106
|
+
### Unknown Properties
|
|
107
|
+
|
|
108
|
+
Likewise, if you try to call `get` on a property whose value is
|
|
109
|
+
`undefined`, the `unknownProperty()` method will be called on the object.
|
|
110
|
+
If this method returns any value other than `undefined`, it will be returned
|
|
111
|
+
instead. This allows you to implement "virtual" properties that are
|
|
112
|
+
not defined upfront.
|
|
113
|
+
|
|
114
|
+
@method get
|
|
115
|
+
@param {String} keyName The property to retrieve
|
|
116
|
+
@return {Object} The property value or undefined.
|
|
117
|
+
@public
|
|
118
|
+
*/
|
|
119
|
+
get(key: string): unknown;
|
|
120
|
+
/**
|
|
121
|
+
To get the values of multiple properties at once, call `getProperties`
|
|
122
|
+
with a list of strings or an array:
|
|
123
|
+
|
|
124
|
+
```javascript
|
|
125
|
+
record.getProperties('firstName', 'lastName', 'zipCode');
|
|
126
|
+
// { firstName: 'John', lastName: 'Doe', zipCode: '10011' }
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
is equivalent to:
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
record.getProperties(['firstName', 'lastName', 'zipCode']);
|
|
133
|
+
// { firstName: 'John', lastName: 'Doe', zipCode: '10011' }
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
@method getProperties
|
|
137
|
+
@param {String...|Array} list of keys to get
|
|
138
|
+
@return {Object}
|
|
139
|
+
@public
|
|
140
|
+
*/
|
|
141
|
+
getProperties<L extends string[]>(list: L): {
|
|
142
|
+
[Key in L[number]]: unknown;
|
|
143
|
+
};
|
|
144
|
+
getProperties<L extends string[]>(...list: L): {
|
|
145
|
+
[Key in L[number]]: unknown;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
Sets the provided key or path to the value.
|
|
149
|
+
|
|
150
|
+
```javascript
|
|
151
|
+
record.set("key", value);
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
This method is generally very similar to calling `object["key"] = value` or
|
|
155
|
+
`object.key = value`, except that it provides support for computed
|
|
156
|
+
properties, the `setUnknownProperty()` method and property observers.
|
|
157
|
+
|
|
158
|
+
### Computed Properties
|
|
159
|
+
|
|
160
|
+
If you try to set a value on a key that has a computed property handler
|
|
161
|
+
defined (see the `get()` method for an example), then `set()` will call
|
|
162
|
+
that method, passing both the value and key instead of simply changing
|
|
163
|
+
the value itself. This is useful for those times when you need to
|
|
164
|
+
implement a property that is composed of one or more member
|
|
165
|
+
properties.
|
|
166
|
+
|
|
167
|
+
### Unknown Properties
|
|
168
|
+
|
|
169
|
+
If you try to set a value on a key that is undefined in the target
|
|
170
|
+
object, then the `setUnknownProperty()` handler will be called instead. This
|
|
171
|
+
gives you an opportunity to implement complex "virtual" properties that
|
|
172
|
+
are not predefined on the object. If `setUnknownProperty()` returns
|
|
173
|
+
undefined, then `set()` will simply set the value on the object.
|
|
174
|
+
|
|
175
|
+
### Property Observers
|
|
176
|
+
|
|
177
|
+
In addition to changing the property, `set()` will also register a property
|
|
178
|
+
change with the object. Unless you have placed this call inside of a
|
|
179
|
+
`beginPropertyChanges()` and `endPropertyChanges(),` any "local" observers
|
|
180
|
+
(i.e. observer methods declared on the same object), will be called
|
|
181
|
+
immediately. Any "remote" observers (i.e. observer methods declared on
|
|
182
|
+
another object) will be placed in a queue and called at a later time in a
|
|
183
|
+
coalesced manner.
|
|
184
|
+
|
|
185
|
+
@method set
|
|
186
|
+
@param {String} keyName The property to set
|
|
187
|
+
@param {Object} value The value to set or `null`.
|
|
188
|
+
@return {Object} The passed value
|
|
189
|
+
@public
|
|
190
|
+
*/
|
|
191
|
+
set<T>(key: string, value: T): T;
|
|
192
|
+
/**
|
|
193
|
+
Sets a list of properties at once. These properties are set inside
|
|
194
|
+
a single `beginPropertyChanges` and `endPropertyChanges` batch, so
|
|
195
|
+
observers will be buffered.
|
|
196
|
+
|
|
197
|
+
```javascript
|
|
198
|
+
record.setProperties({ firstName: 'Charles', lastName: 'Jolley' });
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
@method setProperties
|
|
202
|
+
@param {Object} hash the hash of keys and values to set
|
|
203
|
+
@return {Object} The passed in hash
|
|
204
|
+
@public
|
|
205
|
+
*/
|
|
206
|
+
setProperties<T extends Record<string, any>>(hash: T): T;
|
|
207
|
+
/**
|
|
208
|
+
Convenience method to call `propertyWillChange` and `propertyDidChange` in
|
|
209
|
+
succession.
|
|
210
|
+
|
|
211
|
+
Notify the observer system that a property has just changed.
|
|
212
|
+
|
|
213
|
+
Sometimes you need to change a value directly or indirectly without
|
|
214
|
+
actually calling `get()` or `set()` on it. In this case, you can use this
|
|
215
|
+
method instead. Calling this method will notify all observers that the
|
|
216
|
+
property has potentially changed value.
|
|
217
|
+
|
|
218
|
+
@method notifyPropertyChange
|
|
219
|
+
@param {String} keyName The property key to be notified about.
|
|
220
|
+
@return {Observable}
|
|
221
|
+
@public
|
|
222
|
+
*/
|
|
223
|
+
notifyPropertyChange(keyName: string): this;
|
|
224
|
+
/**
|
|
225
|
+
Adds an observer on a property.
|
|
226
|
+
|
|
227
|
+
This is the core method used to register an observer for a property.
|
|
228
|
+
|
|
229
|
+
Once you call this method, any time the key's value is set, your observer
|
|
230
|
+
will be notified. Note that the observers are triggered any time the
|
|
231
|
+
value is set, regardless of whether it has actually changed. Your
|
|
232
|
+
observer should be prepared to handle that.
|
|
233
|
+
|
|
234
|
+
There are two common invocation patterns for `.addObserver()`:
|
|
235
|
+
|
|
236
|
+
- Passing two arguments:
|
|
237
|
+
- the name of the property to observe (as a string)
|
|
238
|
+
- the function to invoke (an actual function)
|
|
239
|
+
- Passing three arguments:
|
|
240
|
+
- the name of the property to observe (as a string)
|
|
241
|
+
- the target object (will be used to look up and invoke a
|
|
242
|
+
function on)
|
|
243
|
+
- the name of the function to invoke on the target object
|
|
244
|
+
(as a string).
|
|
245
|
+
|
|
246
|
+
```app/components/my-component.js
|
|
247
|
+
import Component from '@ember/component';
|
|
248
|
+
|
|
249
|
+
export default Component.extend({
|
|
250
|
+
init() {
|
|
251
|
+
this._super(...arguments);
|
|
252
|
+
|
|
253
|
+
// the following are equivalent:
|
|
254
|
+
|
|
255
|
+
// using three arguments
|
|
256
|
+
this.addObserver('foo', this, 'fooDidChange');
|
|
257
|
+
|
|
258
|
+
// using two arguments
|
|
259
|
+
this.addObserver('foo', (...args) => {
|
|
260
|
+
this.fooDidChange(...args);
|
|
261
|
+
});
|
|
262
|
+
},
|
|
263
|
+
|
|
264
|
+
fooDidChange() {
|
|
265
|
+
// your custom logic code
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Observer Methods
|
|
271
|
+
|
|
272
|
+
Observer methods have the following signature:
|
|
273
|
+
|
|
274
|
+
```app/components/my-component.js
|
|
275
|
+
import Component from '@ember/component';
|
|
276
|
+
|
|
277
|
+
export default Component.extend({
|
|
278
|
+
init() {
|
|
279
|
+
this._super(...arguments);
|
|
280
|
+
this.addObserver('foo', this, 'fooDidChange');
|
|
281
|
+
},
|
|
282
|
+
|
|
283
|
+
fooDidChange(sender, key, value, rev) {
|
|
284
|
+
// your code
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
The `sender` is the object that changed. The `key` is the property that
|
|
290
|
+
changes. The `value` property is currently reserved and unused. The `rev`
|
|
291
|
+
is the last property revision of the object when it changed, which you can
|
|
292
|
+
use to detect if the key value has really changed or not.
|
|
293
|
+
|
|
294
|
+
Usually you will not need the value or revision parameters at
|
|
295
|
+
the end. In this case, it is common to write observer methods that take
|
|
296
|
+
only a sender and key value as parameters or, if you aren't interested in
|
|
297
|
+
any of these values, to write an observer that has no parameters at all.
|
|
298
|
+
|
|
299
|
+
@method addObserver
|
|
300
|
+
@param {String} key The key to observe
|
|
301
|
+
@param {Object} target The target object to invoke
|
|
302
|
+
@param {String|Function} method The method to invoke
|
|
303
|
+
@param {Boolean} sync Whether the observer is sync or not
|
|
304
|
+
@return {Observable}
|
|
305
|
+
@public
|
|
306
|
+
*/
|
|
307
|
+
addObserver<Target>(key: keyof this, target: Target, method: ObserverMethod<Target, this>): this;
|
|
308
|
+
addObserver(key: keyof this, method: ObserverMethod<this, this>): this;
|
|
309
|
+
/**
|
|
310
|
+
Remove an observer you have previously registered on this object. Pass
|
|
311
|
+
the same key, target, and method you passed to `addObserver()` and your
|
|
312
|
+
target will no longer receive notifications.
|
|
313
|
+
|
|
314
|
+
@method removeObserver
|
|
315
|
+
@param {String} key The key to observe
|
|
316
|
+
@param {Object} target The target object to invoke
|
|
317
|
+
@param {String|Function} method The method to invoke
|
|
318
|
+
@param {Boolean} sync Whether the observer is async or not
|
|
319
|
+
@return {Observable}
|
|
320
|
+
@public
|
|
321
|
+
*/
|
|
322
|
+
removeObserver<Target>(key: keyof this, target: Target, method: ObserverMethod<Target, this>): this;
|
|
323
|
+
removeObserver(key: keyof this, method: ObserverMethod<this, this>): this;
|
|
324
|
+
/**
|
|
325
|
+
Set the value of a property to the current value plus some amount.
|
|
326
|
+
|
|
327
|
+
```javascript
|
|
328
|
+
person.incrementProperty('age');
|
|
329
|
+
team.incrementProperty('score', 2);
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
@method incrementProperty
|
|
333
|
+
@param {String} keyName The name of the property to increment
|
|
334
|
+
@param {Number} increment The amount to increment by. Defaults to 1
|
|
335
|
+
@return {Number} The new property value
|
|
336
|
+
@public
|
|
337
|
+
*/
|
|
338
|
+
incrementProperty(keyName: keyof this, increment?: number): number;
|
|
339
|
+
/**
|
|
340
|
+
Set the value of a property to the current value minus some amount.
|
|
341
|
+
|
|
342
|
+
```javascript
|
|
343
|
+
player.decrementProperty('lives');
|
|
344
|
+
orc.decrementProperty('health', 5);
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
@method decrementProperty
|
|
348
|
+
@param {String} keyName The name of the property to decrement
|
|
349
|
+
@param {Number} decrement The amount to decrement by. Defaults to 1
|
|
350
|
+
@return {Number} The new property value
|
|
351
|
+
@public
|
|
352
|
+
*/
|
|
353
|
+
decrementProperty(keyName: keyof this, decrement?: number): number;
|
|
354
|
+
/**
|
|
355
|
+
Set the value of a boolean property to the opposite of its
|
|
356
|
+
current value.
|
|
357
|
+
|
|
358
|
+
```javascript
|
|
359
|
+
starship.toggleProperty('warpDriveEngaged');
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
@method toggleProperty
|
|
363
|
+
@param {String} keyName The name of the property to toggle
|
|
364
|
+
@return {Boolean} The new property value
|
|
365
|
+
@public
|
|
366
|
+
*/
|
|
367
|
+
toggleProperty(keyName: keyof this): boolean;
|
|
368
|
+
/**
|
|
369
|
+
Returns the cached value of a computed property, if it exists.
|
|
370
|
+
This allows you to inspect the value of a computed property
|
|
371
|
+
without accidentally invoking it if it is intended to be
|
|
372
|
+
generated lazily.
|
|
373
|
+
|
|
374
|
+
@method cacheFor
|
|
375
|
+
@param {String} keyName
|
|
376
|
+
@return {Object} The cached value of the computed property, if any
|
|
377
|
+
@public
|
|
378
|
+
*/
|
|
379
|
+
cacheFor<K extends keyof this>(key: K): unknown;
|
|
380
|
+
}
|
|
381
|
+
const Observable: Mixin;
|
|
382
|
+
export default Observable;
|
|
383
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
declare module '@ember/object/promise-proxy-mixin.d.ts' {
|
|
2
|
+
import Mixin from '@ember/object/mixin';
|
|
3
|
+
/**
|
|
4
|
+
A low level mixin making ObjectProxy promise-aware.
|
|
5
|
+
|
|
6
|
+
```javascript
|
|
7
|
+
import { resolve } from 'rsvp';
|
|
8
|
+
import $ from 'jquery';
|
|
9
|
+
import ObjectProxy from '@ember/object/proxy';
|
|
10
|
+
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
|
|
11
|
+
|
|
12
|
+
let ObjectPromiseProxy = ObjectProxy.extend(PromiseProxyMixin);
|
|
13
|
+
|
|
14
|
+
let proxy = ObjectPromiseProxy.create({
|
|
15
|
+
promise: resolve($.getJSON('/some/remote/data.json'))
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
proxy.then(function(json){
|
|
19
|
+
// the json
|
|
20
|
+
}, function(reason) {
|
|
21
|
+
// the reason why you have no json
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
the proxy has bindable attributes which
|
|
26
|
+
track the promises life cycle
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
proxy.get('isPending') //=> true
|
|
30
|
+
proxy.get('isSettled') //=> false
|
|
31
|
+
proxy.get('isRejected') //=> false
|
|
32
|
+
proxy.get('isFulfilled') //=> false
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
When the $.getJSON completes, and the promise is fulfilled
|
|
36
|
+
with json, the life cycle attributes will update accordingly.
|
|
37
|
+
Note that $.getJSON doesn't return an ECMA specified promise,
|
|
38
|
+
it is useful to wrap this with an `RSVP.resolve` so that it behaves
|
|
39
|
+
as a spec compliant promise.
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
proxy.get('isPending') //=> false
|
|
43
|
+
proxy.get('isSettled') //=> true
|
|
44
|
+
proxy.get('isRejected') //=> false
|
|
45
|
+
proxy.get('isFulfilled') //=> true
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
As the proxy is an ObjectProxy, and the json now its content,
|
|
49
|
+
all the json properties will be available directly from the proxy.
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// Assuming the following json:
|
|
53
|
+
{
|
|
54
|
+
firstName: 'Stefan',
|
|
55
|
+
lastName: 'Penner'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// both properties will accessible on the proxy
|
|
59
|
+
proxy.get('firstName') //=> 'Stefan'
|
|
60
|
+
proxy.get('lastName') //=> 'Penner'
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
@class PromiseProxyMixin
|
|
64
|
+
@public
|
|
65
|
+
*/
|
|
66
|
+
interface PromiseProxyMixin<T> {
|
|
67
|
+
/**
|
|
68
|
+
If the proxied promise is rejected this will contain the reason
|
|
69
|
+
provided.
|
|
70
|
+
|
|
71
|
+
@property reason
|
|
72
|
+
@default null
|
|
73
|
+
@public
|
|
74
|
+
*/
|
|
75
|
+
reason: unknown;
|
|
76
|
+
/**
|
|
77
|
+
Once the proxied promise has settled this will become `false`.
|
|
78
|
+
|
|
79
|
+
@property isPending
|
|
80
|
+
@default true
|
|
81
|
+
@public
|
|
82
|
+
*/
|
|
83
|
+
readonly isPending: boolean;
|
|
84
|
+
/**
|
|
85
|
+
Once the proxied promise has settled this will become `true`.
|
|
86
|
+
|
|
87
|
+
@property isSettled
|
|
88
|
+
@default false
|
|
89
|
+
@public
|
|
90
|
+
*/
|
|
91
|
+
readonly isSettled: boolean;
|
|
92
|
+
/**
|
|
93
|
+
Will become `true` if the proxied promise is rejected.
|
|
94
|
+
|
|
95
|
+
@property isRejected
|
|
96
|
+
@default false
|
|
97
|
+
@public
|
|
98
|
+
*/
|
|
99
|
+
isRejected: boolean;
|
|
100
|
+
/**
|
|
101
|
+
Will become `true` if the proxied promise is fulfilled.
|
|
102
|
+
|
|
103
|
+
@property isFulfilled
|
|
104
|
+
@default false
|
|
105
|
+
@public
|
|
106
|
+
*/
|
|
107
|
+
isFulfilled: boolean;
|
|
108
|
+
/**
|
|
109
|
+
The promise whose fulfillment value is being proxied by this object.
|
|
110
|
+
|
|
111
|
+
This property must be specified upon creation, and should not be
|
|
112
|
+
changed once created.
|
|
113
|
+
|
|
114
|
+
Example:
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
import ObjectProxy from '@ember/object/proxy';
|
|
118
|
+
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
|
|
119
|
+
|
|
120
|
+
ObjectProxy.extend(PromiseProxyMixin).create({
|
|
121
|
+
promise: <thenable>
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
@property promise
|
|
126
|
+
@public
|
|
127
|
+
*/
|
|
128
|
+
promise: Promise<T>;
|
|
129
|
+
/**
|
|
130
|
+
An alias to the proxied promise's `then`.
|
|
131
|
+
|
|
132
|
+
See RSVP.Promise.then.
|
|
133
|
+
|
|
134
|
+
@method then
|
|
135
|
+
@param {Function} callback
|
|
136
|
+
@return {RSVP.Promise}
|
|
137
|
+
@public
|
|
138
|
+
*/
|
|
139
|
+
then: this['promise']['then'];
|
|
140
|
+
/**
|
|
141
|
+
An alias to the proxied promise's `catch`.
|
|
142
|
+
|
|
143
|
+
See RSVP.Promise.catch.
|
|
144
|
+
|
|
145
|
+
@method catch
|
|
146
|
+
@param {Function} callback
|
|
147
|
+
@return {RSVP.Promise}
|
|
148
|
+
@since 1.3.0
|
|
149
|
+
@public
|
|
150
|
+
*/
|
|
151
|
+
catch: this['promise']['catch'];
|
|
152
|
+
/**
|
|
153
|
+
An alias to the proxied promise's `finally`.
|
|
154
|
+
|
|
155
|
+
See RSVP.Promise.finally.
|
|
156
|
+
|
|
157
|
+
@method finally
|
|
158
|
+
@param {Function} callback
|
|
159
|
+
@return {RSVP.Promise}
|
|
160
|
+
@since 1.3.0
|
|
161
|
+
@public
|
|
162
|
+
*/
|
|
163
|
+
finally: this['promise']['finally'];
|
|
164
|
+
}
|
|
165
|
+
const PromiseProxyMixin: Mixin;
|
|
166
|
+
export default PromiseProxyMixin;
|
|
167
|
+
}
|