Skip to content

Commit

Permalink
Merge pull request #3475 from sly7-7/fix-deprecated-ember-keys
Browse files Browse the repository at this point in the history
[BUGFIX release] Remove deprecation warning for dev, keep IE 8 compat
  • Loading branch information
bmac committed Jul 2, 2015
2 parents ff4ab5b + 86e6907 commit 595ae16
Show file tree
Hide file tree
Showing 24 changed files with 163 additions and 70 deletions.
8 changes: 6 additions & 2 deletions packages/ember-data/lib/adapters/errors.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
const EmberError = Ember.Error;
const create = Ember.create;

const forEach = Ember.ArrayPolyfills.forEach;
const SOURCE_POINTER_REGEXP = /data\/(attributes|relationships)\/(.*)/;

import {
keysFunc,
create
} from 'ember-data/system/object-polyfills';

/**
@class AdapterError
@namespace DS
Expand Down Expand Up @@ -118,7 +122,7 @@ export function errorsHashToArray(errors) {
let out = [];

if (Ember.isPresent(errors)) {
forEach.call(Ember.keys(errors), function(key) {
forEach.call(keysFunc(errors), function(key) {
let messages = Ember.makeArray(errors[key]);
for (let i = 0; i < messages.length; i++) {
out.push({
Expand Down
11 changes: 8 additions & 3 deletions packages/ember-data/lib/adapters/rest-adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ var get = Ember.get;
var set = Ember.set;
var forEach = Ember.ArrayPolyfills.forEach;

import {
create,
keysFunc
} from 'ember-data/system/object-polyfills';

import BuildURLMixin from "ember-data/adapters/build-url-mixin";

/**
Expand Down Expand Up @@ -231,7 +236,7 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
@return {Object}
*/
sortQueryParams: function(obj) {
var keys = Ember.keys(obj);
var keys = keysFunc(obj);
var len = keys.length;
if (len < 2) {
return obj;
Expand Down Expand Up @@ -940,7 +945,7 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
var headers = get(this, 'headers');
if (headers !== undefined) {
hash.beforeSend = function (xhr) {
forEach.call(Ember.keys(headers), function(key) {
forEach.call(keysFunc(headers), function(key) {
xhr.setRequestHeader(key, headers[key]);
});
};
Expand Down Expand Up @@ -989,7 +994,7 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
});

function parseResponseHeaders(headerStr) {
var headers = Ember.create(null);
var headers = create(null);
if (!headerStr) { return headers; }

var headerPairs = headerStr.split('\u000d\u000a');
Expand Down
7 changes: 6 additions & 1 deletion packages/ember-data/lib/serializers/rest-serializer.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@ import {singularize} from "ember-inflector/lib/system/string";
import coerceId from "ember-data/system/coerce-id";
import { pushPayload } from "ember-data/system/store/serializer-response";

import {
keysFunc
} from 'ember-data/system/object-polyfills';

var forEach = Ember.ArrayPolyfills.forEach;
var map = Ember.ArrayPolyfills.map;
var camelize = Ember.String.camelize;
var get = Ember.get;


/**
Normally, applications will use the `RESTSerializer` by implementing
the `normalize` method and individual normalizations under
Expand Down Expand Up @@ -254,7 +259,7 @@ var RESTSerializer = JSONSerializer.extend({
documentHash.meta = meta;
}

var keys = Ember.keys(payload);
var keys = keysFunc(payload);

for (let i = 0, length = keys.length; i < length; i++) {
let prop = keys[i];
Expand Down
6 changes: 5 additions & 1 deletion packages/ember-data/lib/system/clone-null.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import {
create
} from 'ember-data/system/object-polyfills';

export default function cloneNull(source) {
var clone = Ember.create(null);
var clone = create(null);
for (var key in source) {
clone[key] = source[key];
}
Expand Down
7 changes: 5 additions & 2 deletions packages/ember-data/lib/system/merge.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import {
keysFunc
} from 'ember-data/system/object-polyfills';

function merge(original, updates) {
if (!updates || typeof updates !== 'object') {
return original;
}

var props = Ember.keys(updates);
var props = keysFunc(updates);
var prop;
var length = props.length;

Expand Down
45 changes: 25 additions & 20 deletions packages/ember-data/lib/system/model/internal-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,19 @@ import RootState from "ember-data/system/model/states";
import Relationships from "ember-data/system/relationships/state/create";
import Snapshot from "ember-data/system/snapshot";

import {
create,
keysFunc
} from 'ember-data/system/object-polyfills';

var Promise = Ember.RSVP.Promise;
var get = Ember.get;
var set = Ember.set;
var forEach = Ember.ArrayPolyfills.forEach;
var map = Ember.ArrayPolyfills.map;

var _extractPivotNameCache = Ember.create(null);
var _splitOnDotCache = Ember.create(null);
var _extractPivotNameCache = create(null);
var _splitOnDotCache = create(null);

function splitOnDot(name) {
return _splitOnDotCache[name] || (
Expand Down Expand Up @@ -51,13 +56,13 @@ var InternalModel = function InternalModel(type, id, store, container, data) {
this.id = id;
this.store = store;
this.container = container;
this._data = data || Ember.create(null);
this._data = data || create(null);
this.modelName = type.modelName;
this.dataHasInitialized = false;
//Look into making this lazy
this._deferredTriggers = [];
this._attributes = Ember.create(null);
this._inFlightAttributes = Ember.create(null);
this._attributes = create(null);
this._inFlightAttributes = create(null);
this._relationships = new Relationships(this);
this.currentState = RootState.empty;
this.isReloading = false;
Expand Down Expand Up @@ -90,7 +95,7 @@ var InternalModel = function InternalModel(type, id, store, container, data) {
would have a implicit post relationship in order to be do things like remove ourselves from the post
when we are deleted
*/
this._implicitRelationships = Ember.create(null);
this._implicitRelationships = create(null);
};

InternalModel.prototype = {
Expand Down Expand Up @@ -266,7 +271,7 @@ InternalModel.prototype = {

flushChangedAttributes: function() {
this._inFlightAttributes = this._attributes;
this._attributes = Ember.create(null);
this._attributes = create(null);
},

/**
Expand Down Expand Up @@ -327,12 +332,12 @@ InternalModel.prototype = {
},

rollbackAttributes: function() {
var dirtyKeys = Ember.keys(this._attributes);
var dirtyKeys = keysFunc(this._attributes);

this._attributes = Ember.create(null);
this._attributes = create(null);

if (get(this, 'isError')) {
this._inFlightAttributes = Ember.create(null);
this._inFlightAttributes = create(null);
this.didCleanError();
}

Expand All @@ -350,7 +355,7 @@ InternalModel.prototype = {
}

if (this.isValid()) {
this._inFlightAttributes = Ember.create(null);
this._inFlightAttributes = create(null);
}

this.send('rolledBack');
Expand Down Expand Up @@ -458,7 +463,7 @@ InternalModel.prototype = {
}
}, this);
var model = this;
forEach.call(Ember.keys(this._implicitRelationships), function(key) {
forEach.call(keysFunc(this._implicitRelationships), function(key) {
model._implicitRelationships[key].clear();
model._implicitRelationships[key].destroy();
});
Expand All @@ -469,7 +474,7 @@ InternalModel.prototype = {
this._relationships.get(name).disconnect();
}, this);
var model = this;
forEach.call(Ember.keys(this._implicitRelationships), function(key) {
forEach.call(keysFunc(this._implicitRelationships), function(key) {
model._implicitRelationships[key].disconnect();
});
},
Expand All @@ -479,7 +484,7 @@ InternalModel.prototype = {
this._relationships.get(name).reconnect();
}, this);
var model = this;
forEach.call(Ember.keys(this._implicitRelationships), function(key) {
forEach.call(keysFunc(this._implicitRelationships), function(key) {
model._implicitRelationships[key].reconnect();
});
},
Expand All @@ -503,7 +508,7 @@ InternalModel.prototype = {
_preloadData: function(preload) {
var record = this;
//TODO(Igor) consider the polymorphic case
forEach.call(Ember.keys(preload), function(key) {
forEach.call(keysFunc(preload), function(key) {
var preloadValue = get(preload, key);
var relationshipMeta = record.type.metaForProperty(key);
if (relationshipMeta.isRelationship) {
Expand Down Expand Up @@ -611,7 +616,7 @@ InternalModel.prototype = {
merge(this._data, data);
}

this._inFlightAttributes = Ember.create(null);
this._inFlightAttributes = create(null);

this.send('didCommit');
this.updateRecordArraysLater();
Expand Down Expand Up @@ -676,13 +681,13 @@ InternalModel.prototype = {
},

_saveWasRejected: function() {
var keys = Ember.keys(this._inFlightAttributes);
var keys = keysFunc(this._inFlightAttributes);
for (var i=0; i < keys.length; i++) {
if (this._attributes[keys[i]] === undefined) {
this._attributes[keys[i]] = this._inFlightAttributes[keys[i]];
}
}
this._inFlightAttributes = Ember.create(null);
this._inFlightAttributes = create(null);
},

/**
Expand Down Expand Up @@ -732,10 +737,10 @@ InternalModel.prototype = {

if (updates) {
var original, i, value, key;
var keys = Ember.keys(updates);
var keys = keysFunc(updates);
var length = keys.length;

original = merge(Ember.create(null), this._data);
original = merge(create(null), this._data);
original = merge(original, this._inFlightAttributes);

for (i = 0; i < length; i++) {
Expand Down
11 changes: 8 additions & 3 deletions packages/ember-data/lib/system/model/model.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { PromiseObject } from "ember-data/system/promise-proxies";
import Errors from "ember-data/system/model/errors";

import {
create,
keysFunc
} from 'ember-data/system/object-polyfills';

/**
@module ember-data
*/
Expand Down Expand Up @@ -633,9 +638,9 @@ var Model = Ember.Object.extend(Ember.Evented, {
changedAttributes: function() {
var oldData = get(this._internalModel, '_data');
var newData = get(this._internalModel, '_attributes');
var diffData = Ember.create(null);
var diffData = create(null);

var newDataKeys = Ember.keys(newData);
var newDataKeys = keysFunc(newData);

for (let i = 0, length = newDataKeys.length; i < length; i++) {
let key = newDataKeys[i];
Expand Down Expand Up @@ -815,7 +820,7 @@ var Model = Ember.Object.extend(Ember.Evented, {
// rely on the data property.
willMergeMixin: function(props) {
var constructor = this.constructor;
Ember.assert('`' + intersection(Ember.keys(props), RESERVED_MODEL_PROPS)[0] + '` is a reserved property name on DS.Model objects. Please choose a different property name for ' + constructor.toString(), !intersection(Ember.keys(props), RESERVED_MODEL_PROPS)[0]);
Ember.assert('`' + intersection(keysFunc(props), RESERVED_MODEL_PROPS)[0] + '` is a reserved property name on DS.Model objects. Please choose a different property name for ' + constructor.toString(), !intersection(keysFunc(props), RESERVED_MODEL_PROPS)[0]);
},

attr: function() {
Expand Down
13 changes: 9 additions & 4 deletions packages/ember-data/lib/system/model/states.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
import {
create,
keysFunc
} from 'ember-data/system/object-polyfills';

/**
@module ember-data
*/
Expand Down Expand Up @@ -246,7 +251,7 @@ var DirtyState = {
loadingData: Ember.K,

propertyWasReset: function(internalModel, name) {
var length = Ember.keys(internalModel._attributes).length;
var length = keysFunc(internalModel._attributes).length;
var stillDirty = length > 0;

if (!stillDirty) { internalModel.send('rolledBack'); }
Expand Down Expand Up @@ -354,7 +359,7 @@ var DirtyState = {
},

exit: function(internalModel) {
internalModel._inFlightAttributes = Ember.create(null);
internalModel._inFlightAttributes = create(null);
}
}
};
Expand Down Expand Up @@ -546,7 +551,7 @@ var RootState = {
saved: {
setup: function(internalModel) {
var attrs = internalModel._attributes;
var isDirty = Ember.keys(attrs).length > 0;
var isDirty = keysFunc(attrs).length > 0;

if (isDirty) {
internalModel.adapterDidDirty();
Expand Down Expand Up @@ -740,7 +745,7 @@ var RootState = {
function wireState(object, parent, name) {
/*jshint proto:true*/
// TODO: Use Object.create and copy instead
object = mixin(parent ? Ember.create(parent) : {}, object);
object = mixin(parent ? create(parent) : {}, object);
object.parentState = parent;
object.stateName = name;

Expand Down
7 changes: 7 additions & 0 deletions packages/ember-data/lib/system/object-polyfills.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var keysFunc = Object.keys || Ember.keys;
var create = Object.create || Ember.create;

export {
create,
keysFunc
};
6 changes: 5 additions & 1 deletion packages/ember-data/lib/system/ordered-set.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import {
create
} from 'ember-data/system/object-polyfills';

var EmberOrderedSet = Ember.OrderedSet;
var guidFor = Ember.guidFor;

Expand All @@ -10,7 +14,7 @@ OrderedSet.create = function() {
return new Constructor();
};

OrderedSet.prototype = Ember.create(EmberOrderedSet.prototype);
OrderedSet.prototype = create(EmberOrderedSet.prototype);
OrderedSet.prototype.constructor = OrderedSet;
OrderedSet.prototype._super$constructor = EmberOrderedSet;

Expand Down
6 changes: 5 additions & 1 deletion packages/ember-data/lib/system/relationships/ext.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ import {
MapWithDefault
} from "ember-data/system/map";

import {
create
} from 'ember-data/system/object-polyfills';

var get = Ember.get;
var filter = Ember.ArrayPolyfills.filter;

Expand Down Expand Up @@ -186,7 +190,7 @@ Model.reopenClass({
},

inverseMap: Ember.computed(function() {
return Ember.create(null);
return create(null);
}),

/**
Expand Down
Loading

0 comments on commit 595ae16

Please sign in to comment.