Skip to content

Commit 560751f

Browse files
authored
Merge pull request #19649 from nlfurniss/deprecate-ember-assign
2 parents 015bd42 + ca106b1 commit 560751f

6 files changed

Lines changed: 27 additions & 40 deletions

File tree

packages/@ember/-internals/routing/lib/system/router.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Controller from '@ember/controller';
99
import { assert, deprecate, info } from '@ember/debug';
1010
import { APP_CTRL_ROUTER_PROPS, ROUTER_EVENTS } from '@ember/deprecated-features';
1111
import EmberError from '@ember/error';
12-
import { assign } from '@ember/polyfills';
1312
import { cancel, once, run, scheduleOnce } from '@ember/runloop';
1413
import { DEBUG } from '@glimmer/env';
1514
import EmberLocation, { EmberLocation as IEmberLocation } from '../location/api';
@@ -1018,7 +1017,7 @@ class EmberRouter extends EmberObject.extend(Evented) implements Evented {
10181017

10191018
this._processActiveTransitionQueryParams(targetRouteName, models, queryParams, _queryParams);
10201019

1021-
assign(queryParams, _queryParams);
1020+
Object.assign(queryParams, _queryParams);
10221021
this._prepareQueryParams(
10231022
targetRouteName,
10241023
models,
@@ -1059,7 +1058,7 @@ class EmberRouter extends EmberObject.extend(Evented) implements Evented {
10591058
// from the active transition.
10601059
this._fullyScopeQueryParams(targetRouteName, models, _queryParams);
10611060
this._fullyScopeQueryParams(targetRouteName, models, unchangedQPs);
1062-
assign(queryParams, unchangedQPs);
1061+
Object.assign(queryParams, unchangedQPs);
10631062
}
10641063

10651064
/**
@@ -1156,7 +1155,7 @@ class EmberRouter extends EmberObject.extend(Evented) implements Evented {
11561155
qps.push(qp);
11571156
}
11581157

1159-
assign(map, qpMeta.map);
1158+
Object.assign(map, qpMeta.map);
11601159
}
11611160

11621161
let finalQPMeta = { qps, map };

packages/@ember/deprecated-features/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ export const JQUERY_INTEGRATION = !!'3.9.0';
88
export const APP_CTRL_ROUTER_PROPS = !!'3.10.0-beta.1';
99
export const MOUSE_ENTER_LEAVE_MOVE_EVENTS = !!'3.13.0-beta.1';
1010
export const PARTIALS = !!'3.15.0-beta.1';
11+
export const ASSIGN = !!'4.0.0-beta.1';

packages/@ember/polyfills/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Export `assignPolyfill` for testing
2-
export { default as assign, assign as assignPolyfill } from './lib/assign';
1+
export { assign } from './lib/assign';
32

43
export const hasPropertyAccessors = true;
Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import { deprecate } from '@ember/debug';
2+
13
/**
24
@module @ember/polyfills
35
*/
46

57
export function assign<T, U>(target: T, source: U): T & U;
68
export function assign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
79
export function assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
8-
export function assign(target: object, ...sources: any[]): any;
10+
export function assign(target: object, ...sources: object[]): object;
911
/**
1012
Copy properties from a source object to a target object. Source arguments remain unchanged.
1113
@@ -27,27 +29,20 @@ export function assign(target: object, ...sources: any[]): any;
2729
@public
2830
@static
2931
*/
30-
export function assign(target: object) {
31-
for (let i = 1; i < arguments.length; i++) {
32-
let arg = arguments[i];
33-
if (!arg) {
34-
continue;
32+
export function assign(target: object): object {
33+
deprecate(
34+
'Use of `assign` has been deprecated. Please use `Object.assign` or the spread operator instead.',
35+
false,
36+
{
37+
id: 'ember-polyfills.deprecate-assign',
38+
until: '5.0.0',
39+
url: 'https://deprecations.emberjs.com/v4.x/#toc_ember-polyfills-deprecate-assign',
40+
for: 'ember-source',
41+
since: {
42+
enabled: '4.0.0',
43+
},
3544
}
45+
);
3646

37-
let updates = Object.keys(arg);
38-
39-
for (let i = 0; i < updates.length; i++) {
40-
let prop = updates[i];
41-
target[prop] = arg[prop];
42-
}
43-
}
44-
45-
return target;
47+
return Object.assign(target, ...arguments);
4648
}
47-
48-
// Note: We use the bracket notation so
49-
// that the babel plugin does not
50-
// transform it.
51-
// https://www.npmjs.com/package/babel-plugin-transform-object-assign
52-
const { assign: _assign } = Object;
53-
export default (_assign || assign) as typeof assign;

packages/@ember/polyfills/tests/assign_test.js

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { assignPolyfill, assign } from '..';
1+
import { assign as assignPolyfill } from '..';
22
import { moduleFor, AbstractTestCase as TestCase } from 'internal-test-helpers';
33

44
class AssignTests extends TestCase {
@@ -49,16 +49,9 @@ moduleFor(
4949
'Ember.assign (polyfill)',
5050
class extends AssignTests {
5151
assign() {
52-
return assignPolyfill(...arguments);
53-
}
54-
}
55-
);
56-
57-
moduleFor(
58-
'Ember.assign (maybe not-polyfill ;) )',
59-
class extends AssignTests {
60-
assign() {
61-
return assign(...arguments);
52+
return expectDeprecation(() => {
53+
assignPolyfill(...arguments);
54+
}, 'Use of `assign` has been deprecated. Please use `Object.assign` or the spread operator instead.');
6255
}
6356
}
6457
);

packages/ember/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ Ember.get = metal.get;
223223
Ember._getPath = metal._getPath;
224224
Ember.set = metal.set;
225225
Ember.trySet = metal.trySet;
226-
Ember.FEATURES = assign({ isEnabled }, FEATURES);
226+
Ember.FEATURES = Object.assign({ isEnabled }, FEATURES);
227227
Ember._Cache = utils.Cache;
228228
Ember.on = metal.on;
229229
Ember.addListener = metal.addListener;

0 commit comments

Comments
 (0)