#

API Docs for: v2.11.1
Show: Inherited Protected Private Deprecated

# File: packages/ember-metal/lib/deprecate_property.js

    /**
    @module ember
    @submodule ember-metal
    */

    import { deprecate } from './debug';
    import { get } from './property_get';
    import { set } from './property_set';

    /**
      Used internally to allow changing properties in a backwards compatible way, and print a helpful
      deprecation warning.

      @method deprecateProperty
      @param {Object} object The object to add the deprecated property to.
      @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
      @param {String} newKey The property that will be aliased.
      @private
      @since 1.7.0
    */

    export function deprecateProperty(object, deprecatedKey, newKey, options) {
      function _deprecate() {
        deprecate(
          `Usage of \`${deprecatedKey}\` is deprecated, use \`${newKey}\` instead.`,
          false,
          options
        );
      }

      Object.defineProperty(object, deprecatedKey, {
        configurable: true,
        enumerable: false,
        set(value) {
          _deprecate();
          set(this, newKey, value);
        },
        get() {
          _deprecate();
          return get(this, newKey);
        }
      });
    }