From 8df09bd4a2d5db73f53452647fc4568a2842b88a Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Wed, 19 Dec 2018 17:30:15 +0100 Subject: [PATCH 1/2] mixins/array: Remove deprecated `ARRAY_AT_EACH` code --- .../-internals/runtime/lib/mixins/array.js | 43 +------------------ .../runtime/tests/mixins/array_test.js | 35 --------------- packages/@ember/deprecated-features/index.ts | 1 - tests/docs/expected.js | 1 - 4 files changed, 1 insertion(+), 79 deletions(-) diff --git a/packages/@ember/-internals/runtime/lib/mixins/array.js b/packages/@ember/-internals/runtime/lib/mixins/array.js index f34bd43ea30..8aebbbff79e 100644 --- a/packages/@ember/-internals/runtime/lib/mixins/array.js +++ b/packages/@ember/-internals/runtime/lib/mixins/array.js @@ -1,10 +1,9 @@ /** @module @ember/array */ -import { ARRAY_AT_EACH } from '@ember/deprecated-features'; import { DEBUG } from '@glimmer/env'; import { PROXY_CONTENT } from '@ember/-internals/metal'; -import { symbol, toString, HAS_NATIVE_PROXY, tryInvoke } from '@ember/-internals/utils'; +import { symbol, HAS_NATIVE_PROXY, tryInvoke } from '@ember/-internals/utils'; import { get, set, @@ -15,7 +14,6 @@ import { aliasMethod, Mixin, hasListeners, - eachProxyFor, beginPropertyChanges, endPropertyChanges, addArrayObserver, @@ -1137,45 +1135,6 @@ const ArrayMixin = Mixin.create(Enumerable, { let predicate = value === value ? item => item !== value : item => item === item; return this.filter(predicate); }, - - /** - Returns a special object that can be used to observe individual properties - on the array. Just get an equivalent property on this object and it will - return an array that maps automatically to the named key on the - member objects. - - `@each` should only be used in a non-terminal context. Example: - - ```javascript - myMethod: computed('posts.@each.author', function(){ - ... - }); - ``` - - If you merely want to watch for the array being changed, like an object being - replaced, added or removed, use `[]` instead of `@each`. - - ```javascript - myMethod: computed('posts.[]', function(){ - ... - }); - ``` - - @property @each - @deprecated - @public - */ - '@each': ARRAY_AT_EACH - ? nonEnumerableComputed(function() { - deprecate(`Getting the '@each' property on object ${toString(this)} is deprecated`, false, { - id: 'ember-metal.getting-each', - until: '3.5.0', - url: 'https://emberjs.com/deprecations/v3.x#toc_getting-the-each-property', - }); - - return eachProxyFor(this); - }).readOnly() - : undefined, }); /** diff --git a/packages/@ember/-internals/runtime/tests/mixins/array_test.js b/packages/@ember/-internals/runtime/tests/mixins/array_test.js index 5b16d13fd01..62f0fc01728 100644 --- a/packages/@ember/-internals/runtime/tests/mixins/array_test.js +++ b/packages/@ember/-internals/runtime/tests/mixins/array_test.js @@ -283,22 +283,6 @@ moduleFor( assert.equal(called, 1, 'calls observer when object is pushed'); } - ['@test getting @each is deprecated'](assert) { - assert.expect(1); - - expectDeprecation(() => { - get(ary, '@each'); - }, /Getting the '@each' property on object .* is deprecated/); - } - - ['@test @each is readOnly'](assert) { - assert.expect(1); - - assert.throws(function() { - set(ary, '@each', 'foo'); - }, /Cannot set read-only property "@each"/); - } - ['@test using @each to observe arrays that does not return objects raise error'](assert) { let called = 0; @@ -328,25 +312,6 @@ moduleFor( assert.equal(called, 0, 'not calls observer when object is pushed'); } - ['@test modifying the array should also indicate the isDone prop itself has changed'](assert) { - // NOTE: we never actually get the '@each.isDone' property here. This is - // important because it tests the case where we don't have an isDone - // EachArray materialized but just want to know when the property has - // changed. - let each; - expectDeprecation(() => { - each = get(ary, '@each'); - }); - let count = 0; - - addObserver(each, 'isDone', () => count++); - - count = 0; - let item = objectAt(ary, 2); - set(item, 'isDone', !get(item, 'isDone')); - assert.equal(count, 1, '@each.isDone should have notified'); - } - ['@test `objectAt` returns correct object'](assert) { let arr = ['first', 'second', 'third', 'fourth']; assert.equal(objectAt(arr, 2), 'third'); diff --git a/packages/@ember/deprecated-features/index.ts b/packages/@ember/deprecated-features/index.ts index 87e5fb60b8f..d8c273a22ae 100644 --- a/packages/@ember/deprecated-features/index.ts +++ b/packages/@ember/deprecated-features/index.ts @@ -4,7 +4,6 @@ export const SEND_ACTION = !!'3.4.0'; export const EMBER_EXTEND_PROTOTYPES = !!'3.2.0-beta.5'; export const RUN_SYNC = !!'3.0.0-beta.4'; export const LOGGER = !!'3.2.0-beta.1'; -export const ARRAY_AT_EACH = !!'3.1.0-beta.1'; export const MERGE = !!'3.6.0-beta.1'; export const HANDLER_INFOS = !!'3.9.0'; export const ROUTER_EVENTS = !!'3.9.0'; diff --git a/tests/docs/expected.js b/tests/docs/expected.js index b87b07bc25a..1552b2734f7 100644 --- a/tests/docs/expected.js +++ b/tests/docs/expected.js @@ -1,7 +1,6 @@ module.exports = { classitems: [ '$', - '@each', 'A', 'EXTEND_PROTOTYPES', 'GUID_KEY', From 26e66a3d3a86902df2ee62654ae2b04bf942e2c8 Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Wed, 19 Dec 2018 17:31:07 +0100 Subject: [PATCH 2/2] mixins/array: Remove deprecated `copy()` method --- .../-internals/runtime/lib/mixins/array.js | 14 -------------- .../native_array/copyable_suite_test.js | 19 ------------------- 2 files changed, 33 deletions(-) delete mode 100644 packages/@ember/-internals/runtime/tests/system/native_array/copyable_suite_test.js diff --git a/packages/@ember/-internals/runtime/lib/mixins/array.js b/packages/@ember/-internals/runtime/lib/mixins/array.js index 8aebbbff79e..ceb17776819 100644 --- a/packages/@ember/-internals/runtime/lib/mixins/array.js +++ b/packages/@ember/-internals/runtime/lib/mixins/array.js @@ -26,7 +26,6 @@ import Enumerable from './enumerable'; import compare from '../compare'; import { ENV } from '@ember/-internals/environment'; import Observable from '../mixins/observable'; -import copy from '../copy'; import MutableEnumerable from './mutable_enumerable'; import { typeOf } from '../type-of'; @@ -1583,19 +1582,6 @@ let NativeArray = Mixin.create(MutableArray, Observable, { return this; }, - - copy(deep) { - deprecate(`Using \`NativeArray#copy\` is deprecated`, false, { - id: 'ember-runtime.using-array-copy', - until: '3.5.0', - }); - - if (deep) { - return this.map(item => copy(item, true)); - } - - return this.slice(); - }, }); // Remove any methods implemented natively so we don't override them diff --git a/packages/@ember/-internals/runtime/tests/system/native_array/copyable_suite_test.js b/packages/@ember/-internals/runtime/tests/system/native_array/copyable_suite_test.js deleted file mode 100644 index bb0c1daecd7..00000000000 --- a/packages/@ember/-internals/runtime/tests/system/native_array/copyable_suite_test.js +++ /dev/null @@ -1,19 +0,0 @@ -import { A as emberA } from '../../../lib/mixins/array'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -moduleFor( - 'NativeArray Copyable', - class extends AbstractTestCase { - ['@test deep copy is respected'](assert) { - let array = emberA([{ id: 1 }, { id: 2 }, { id: 3 }]); - let copiedArray; - - expectDeprecation(() => { - copiedArray = array.copy(true); - }, `Using \`NativeArray#copy\` is deprecated`); - - assert.deepEqual(copiedArray, array, 'copied array is equivalent'); - assert.ok(copiedArray[0] !== array[0], 'objects inside should be unique'); - } - } -);