From ca106b1b87175e36fd820e8d798f6a507be526b3 Mon Sep 17 00:00:00 2001 From: Nathaniel Furniss Date: Wed, 21 Jul 2021 12:02:49 -0700 Subject: [PATCH] Ember.assign polyfill uses Object.assign directly --- .../-internals/routing/lib/system/router.ts | 7 +++-- packages/@ember/deprecated-features/index.ts | 2 +- packages/@ember/polyfills/index.ts | 3 +-- packages/@ember/polyfills/lib/assign.ts | 27 +++---------------- .../@ember/polyfills/tests/assign_test.js | 11 +------- packages/ember/index.js | 2 +- 6 files changed, 10 insertions(+), 42 deletions(-) diff --git a/packages/@ember/-internals/routing/lib/system/router.ts b/packages/@ember/-internals/routing/lib/system/router.ts index ccabbe8bc1d..384e5c11c25 100644 --- a/packages/@ember/-internals/routing/lib/system/router.ts +++ b/packages/@ember/-internals/routing/lib/system/router.ts @@ -9,7 +9,6 @@ import Controller from '@ember/controller'; import { assert, deprecate, info } from '@ember/debug'; import { APP_CTRL_ROUTER_PROPS, ROUTER_EVENTS } from '@ember/deprecated-features'; import EmberError from '@ember/error'; -import { assign } from '@ember/polyfills'; import { cancel, once, run, scheduleOnce } from '@ember/runloop'; import { DEBUG } from '@glimmer/env'; import EmberLocation, { EmberLocation as IEmberLocation } from '../location/api'; @@ -1018,7 +1017,7 @@ class EmberRouter extends EmberObject.extend(Evented) implements Evented { this._processActiveTransitionQueryParams(targetRouteName, models, queryParams, _queryParams); - assign(queryParams, _queryParams); + Object.assign(queryParams, _queryParams); this._prepareQueryParams( targetRouteName, models, @@ -1059,7 +1058,7 @@ class EmberRouter extends EmberObject.extend(Evented) implements Evented { // from the active transition. this._fullyScopeQueryParams(targetRouteName, models, _queryParams); this._fullyScopeQueryParams(targetRouteName, models, unchangedQPs); - assign(queryParams, unchangedQPs); + Object.assign(queryParams, unchangedQPs); } /** @@ -1156,7 +1155,7 @@ class EmberRouter extends EmberObject.extend(Evented) implements Evented { qps.push(qp); } - assign(map, qpMeta.map); + Object.assign(map, qpMeta.map); } let finalQPMeta = { qps, map }; diff --git a/packages/@ember/deprecated-features/index.ts b/packages/@ember/deprecated-features/index.ts index f797b9e4c64..62fa61f47a4 100644 --- a/packages/@ember/deprecated-features/index.ts +++ b/packages/@ember/deprecated-features/index.ts @@ -8,4 +8,4 @@ export const JQUERY_INTEGRATION = !!'3.9.0'; export const APP_CTRL_ROUTER_PROPS = !!'3.10.0-beta.1'; export const MOUSE_ENTER_LEAVE_MOVE_EVENTS = !!'3.13.0-beta.1'; export const PARTIALS = !!'3.15.0-beta.1'; -export const ASSIGN = !!'4.0.0'; +export const ASSIGN = !!'4.0.0-beta.1'; diff --git a/packages/@ember/polyfills/index.ts b/packages/@ember/polyfills/index.ts index 58f3eed8a65..9a45df979f9 100644 --- a/packages/@ember/polyfills/index.ts +++ b/packages/@ember/polyfills/index.ts @@ -1,4 +1,3 @@ -// Export `assignPolyfill` for testing -export { default as assign, assign as assignPolyfill } from './lib/assign'; +export { assign } from './lib/assign'; export const hasPropertyAccessors = true; diff --git a/packages/@ember/polyfills/lib/assign.ts b/packages/@ember/polyfills/lib/assign.ts index 340d10defe2..d5e11401d40 100644 --- a/packages/@ember/polyfills/lib/assign.ts +++ b/packages/@ember/polyfills/lib/assign.ts @@ -7,7 +7,7 @@ import { deprecate } from '@ember/debug'; export function assign(target: T, source: U): T & U; export function assign(target: T, source1: U, source2: V): T & U & V; export function assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; -export function assign(target: object, ...sources: any[]): any; +export function assign(target: object, ...sources: object[]): object; /** Copy properties from a source object to a target object. Source arguments remain unchanged. @@ -29,7 +29,7 @@ export function assign(target: object, ...sources: any[]): any; @public @static */ -export function assign(target: object) { +export function assign(target: object): object { deprecate( 'Use of `assign` has been deprecated. Please use `Object.assign` or the spread operator instead.', false, @@ -44,26 +44,5 @@ export function assign(target: object) { } ); - for (let i = 1; i < arguments.length; i++) { - let arg = arguments[i]; - if (!arg) { - continue; - } - - let updates = Object.keys(arg); - - for (let i = 0; i < updates.length; i++) { - let prop = updates[i]; - target[prop] = arg[prop]; - } - } - - return target; + return Object.assign(target, ...arguments); } - -// Note: We use the bracket notation so -// that the babel plugin does not -// transform it. -// https://www.npmjs.com/package/babel-plugin-transform-object-assign -const { assign: _assign } = Object; -export default (_assign || assign) as typeof assign; diff --git a/packages/@ember/polyfills/tests/assign_test.js b/packages/@ember/polyfills/tests/assign_test.js index 90328e5358b..d9c8510990e 100644 --- a/packages/@ember/polyfills/tests/assign_test.js +++ b/packages/@ember/polyfills/tests/assign_test.js @@ -1,4 +1,4 @@ -import { assignPolyfill, assign } from '..'; +import { assign as assignPolyfill } from '..'; import { moduleFor, AbstractTestCase as TestCase } from 'internal-test-helpers'; class AssignTests extends TestCase { @@ -55,12 +55,3 @@ moduleFor( } } ); - -moduleFor( - 'Ember.assign (maybe not-polyfill ;) )', - class extends AssignTests { - assign() { - return assign(...arguments); - } - } -); diff --git a/packages/ember/index.js b/packages/ember/index.js index efd62ebc418..dbcda790b68 100644 --- a/packages/ember/index.js +++ b/packages/ember/index.js @@ -223,7 +223,7 @@ Ember.get = metal.get; Ember._getPath = metal._getPath; Ember.set = metal.set; Ember.trySet = metal.trySet; -Ember.FEATURES = assign({ isEnabled }, FEATURES); +Ember.FEATURES = Object.assign({ isEnabled }, FEATURES); Ember._Cache = utils.Cache; Ember.on = metal.on; Ember.addListener = metal.addListener;