diff --git a/broccoli/amd-compat-entrypoints/ember.debug.js b/broccoli/amd-compat-entrypoints/ember.debug.js index d7bad5dfa06..8b302ca3391 100644 --- a/broccoli/amd-compat-entrypoints/ember.debug.js +++ b/broccoli/amd-compat-entrypoints/ember.debug.js @@ -62,9 +62,6 @@ d( emberinternalsRuntimeLibMixinsActionHandler ); -import * as emberinternalsRuntimeLibMixinsComparable from '@ember/-internals/runtime/lib/mixins/comparable'; -d('@ember/-internals/runtime/lib/mixins/comparable', emberinternalsRuntimeLibMixinsComparable); - import * as emberinternalsRuntimeLibMixinsContainerProxy from '@ember/-internals/runtime/lib/mixins/container_proxy'; d( '@ember/-internals/runtime/lib/mixins/container_proxy', diff --git a/package.json b/package.json index a6b748a6cfe..ebbd29b0033 100644 --- a/package.json +++ b/package.json @@ -204,7 +204,6 @@ "@ember/-internals/runtime/index.js": "ember-source/@ember/-internals/runtime/index.js", "@ember/-internals/runtime/lib/ext/rsvp.js": "ember-source/@ember/-internals/runtime/lib/ext/rsvp.js", "@ember/-internals/runtime/lib/mixins/action_handler.js": "ember-source/@ember/-internals/runtime/lib/mixins/action_handler.js", - "@ember/-internals/runtime/lib/mixins/comparable.js": "ember-source/@ember/-internals/runtime/lib/mixins/comparable.js", "@ember/-internals/runtime/lib/mixins/container_proxy.js": "ember-source/@ember/-internals/runtime/lib/mixins/container_proxy.js", "@ember/-internals/runtime/lib/mixins/registry_proxy.js": "ember-source/@ember/-internals/runtime/lib/mixins/registry_proxy.js", "@ember/-internals/runtime/lib/mixins/target_action_support.js": "ember-source/@ember/-internals/runtime/lib/mixins/target_action_support.js", diff --git a/packages/@ember/-internals/runtime/index.ts b/packages/@ember/-internals/runtime/index.ts index ed6b65848e1..5ebfca3fa2a 100644 --- a/packages/@ember/-internals/runtime/index.ts +++ b/packages/@ember/-internals/runtime/index.ts @@ -1,6 +1,5 @@ export { default as RegistryProxyMixin } from './lib/mixins/registry_proxy'; export { default as ContainerProxyMixin } from './lib/mixins/container_proxy'; -export { default as Comparable } from './lib/mixins/comparable'; export { default as ActionHandler } from './lib/mixins/action_handler'; export { default as MutableEnumerable } from '@ember/enumerable/mutable'; export { default as TargetActionSupport } from './lib/mixins/target_action_support'; diff --git a/packages/@ember/-internals/runtime/lib/mixins/comparable.ts b/packages/@ember/-internals/runtime/lib/mixins/comparable.ts deleted file mode 100644 index 451fd1d4885..00000000000 --- a/packages/@ember/-internals/runtime/lib/mixins/comparable.ts +++ /dev/null @@ -1,43 +0,0 @@ -import Mixin from '@ember/object/mixin'; - -/** -@module ember -*/ - -/** - Implements some standard methods for comparing objects. Add this mixin to - any class you create that can compare its instances. - - You should implement the `compare()` method. - - @class Comparable - @namespace Ember - @since Ember 0.9 - @private -*/ -interface Comparable { - compare: ((a: unknown, b: unknown) => -1 | 0 | 1) | null; -} -const Comparable = Mixin.create({ - /** - __Required.__ You must implement this method to apply this mixin. - - Override to return the result of the comparison of the two parameters. The - compare method should return: - - - `-1` if `a < b` - - `0` if `a == b` - - `1` if `a > b` - - Default implementation raises an exception. - - @method compare - @param a {Object} the first object to compare - @param b {Object} the second object to compare - @return {Number} the result of the comparison - @private - */ - compare: null, -}); - -export default Comparable; diff --git a/packages/@ember/-internals/runtime/tests/mixins/comparable_test.js b/packages/@ember/-internals/runtime/tests/mixins/comparable_test.js deleted file mode 100644 index 14920e423b2..00000000000 --- a/packages/@ember/-internals/runtime/tests/mixins/comparable_test.js +++ /dev/null @@ -1,36 +0,0 @@ -import EmberObject, { get } from '@ember/object'; -import { compare } from '@ember/utils'; -import Comparable from '../../lib/mixins/comparable'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -class Rectangle extends EmberObject.extend(Comparable) { - length = 0; - width = 0; - - area() { - return get(this, 'length') * get(this, 'width'); - } - - compare(a, b) { - return compare(a.area(), b.area()); - } -} - -let r1, r2; - -moduleFor( - 'Comparable', - class extends AbstractTestCase { - beforeEach() { - r1 = Rectangle.create({ length: 6, width: 12 }); - r2 = Rectangle.create({ length: 6, width: 13 }); - } - - ['@test should be comparable and return the correct result'](assert) { - assert.equal(Comparable.detect(r1), true); - assert.equal(compare(r1, r1), 0); - assert.equal(compare(r1, r2), -1); - assert.equal(compare(r2, r1), 1); - } - } -); diff --git a/packages/@ember/utils/lib/compare.ts b/packages/@ember/utils/lib/compare.ts index ed070317f29..4d6887c7b9a 100644 --- a/packages/@ember/utils/lib/compare.ts +++ b/packages/@ember/utils/lib/compare.ts @@ -1,6 +1,5 @@ import type { TypeName } from './type-of'; import typeOf from './type-of'; -import { Comparable } from '@ember/-internals/runtime'; import { assert } from '@ember/debug'; const TYPE_ORDER: Record = { @@ -104,15 +103,6 @@ export default function compare(v: T, w: T): Compare { let type1 = typeOf(v); let type2 = typeOf(w); - if (type1 === 'instance' && isComparable(v) && v.constructor.compare) { - return v.constructor.compare(v, w); - } - - if (type2 === 'instance' && isComparable(w) && w.constructor.compare) { - // SAFETY: Multiplying by a negative just changes the sign - return (w.constructor.compare(w, v) * -1) as Compare; - } - let res = spaceship(TYPE_ORDER[type1], TYPE_ORDER[type2]); if (res !== 0) { @@ -149,9 +139,6 @@ export default function compare(v: T, w: T): Compare { return spaceship(vLen, wLen); } case 'instance': - if (isComparable(v) && v.compare) { - return v.compare(v, w); - } return 0; case 'date': @@ -162,11 +149,3 @@ export default function compare(v: T, w: T): Compare { return 0; } } - -interface ComparableConstructor { - constructor: Comparable; -} - -function isComparable(value: unknown): value is Comparable & ComparableConstructor { - return Comparable.detect(value); -} diff --git a/packages/@ember/utils/tests/compare_test.js b/packages/@ember/utils/tests/compare_test.js index 9be6181a23f..2f62a06884f 100644 --- a/packages/@ember/utils/tests/compare_test.js +++ b/packages/@ember/utils/tests/compare_test.js @@ -1,16 +1,8 @@ import { compare, typeOf } from '@ember/utils'; import EmberObject from '@ember/object'; -import { Comparable } from '@ember/-internals/runtime'; import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; let data = []; -let Comp = EmberObject.extend(Comparable); - -Comp.reopenClass({ - compare(obj) { - return obj.get('val'); - }, -}); moduleFor( 'Ember.compare()', @@ -62,27 +54,5 @@ moduleFor( } } } - - ['@test comparables should return values in the range of -1, 0, 1'](assert) { - let negOne = Comp.create({ - val: -1, - }); - - let zero = Comp.create({ - val: 0, - }); - - let one = Comp.create({ - val: 1, - }); - - assert.equal(compare(negOne, 'a'), -1, 'First item comparable - returns -1 (not negated)'); - assert.equal(compare(zero, 'b'), 0, 'First item comparable - returns 0 (not negated)'); - assert.equal(compare(one, 'c'), 1, 'First item comparable - returns 1 (not negated)'); - - assert.equal(compare('a', negOne), 1, 'Second item comparable - returns -1 (negated)'); - assert.equal(compare('b', zero), 0, 'Second item comparable - returns 0 (negated)'); - assert.equal(compare('c', one), -1, 'Second item comparable - returns 1 (negated)'); - } } ); diff --git a/packages/ember/barrel.ts b/packages/ember/barrel.ts index 6774486294d..fb685374322 100644 --- a/packages/ember/barrel.ts +++ b/packages/ember/barrel.ts @@ -48,7 +48,6 @@ import { RegistryProxyMixin, ContainerProxyMixin, RSVP as _RSVP, - Comparable as InternalComparable, ActionHandler as InternalActionHandler, } from '@ember/-internals/runtime'; import { @@ -183,8 +182,6 @@ namespace Ember { export const _RegistryProxyMixin = RegistryProxyMixin; export const ActionHandler = InternalActionHandler; export type ActionHandler = InternalActionHandler; - export const Comparable = InternalComparable; - export type Comparable = InternalComparable; // ****@ember/-internals/view**** export const ComponentLookup = views.ComponentLookup; diff --git a/packages/ember/tests/reexports_test.js b/packages/ember/tests/reexports_test.js index 96342f12c93..a293af7aa95 100644 --- a/packages/ember/tests/reexports_test.js +++ b/packages/ember/tests/reexports_test.js @@ -333,7 +333,6 @@ let allExports = [ ['_Input', '@ember/-internals/glimmer', 'Input', test56], ['_RegistryProxyMixin', '@ember/-internals/runtime', 'RegistryProxyMixin', test57], ['_ContainerProxyMixin', '@ember/-internals/runtime', 'ContainerProxyMixin', test57], - ['Comparable', '@ember/-internals/runtime', null, test57], ['ActionHandler', '@ember/-internals/runtime', null, test57], ['MutableEnumerable', '@ember/-internals/runtime', null, test57], ['controllerFor', '@ember/-internals/routing', null, test58],