Skip to content

Commit

Permalink
Merge pull request #11462 from stefanpenner/define-property-cleanup
Browse files Browse the repository at this point in the history
[CLEANUP Beta] remove Object.defineProperty polyfil
  • Loading branch information
stefanpenner committed Jun 15, 2015
2 parents 8115fbc + edcf8b6 commit 89510c7
Show file tree
Hide file tree
Showing 22 changed files with 260 additions and 742 deletions.
28 changes: 12 additions & 16 deletions packages/ember-metal/lib/deprecate_property.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
*/

import Ember from "ember-metal/core";
import { hasPropertyAccessors } from "ember-metal/platform/define_property";
import { defineProperty } from "ember-metal/properties";
import { get } from "ember-metal/property_get";
import { set } from "ember-metal/property_set";

Expand All @@ -27,18 +25,16 @@ export function deprecateProperty(object, deprecatedKey, newKey) {
Ember.deprecate(`Usage of \`${deprecatedKey}\` is deprecated, use \`${newKey}\` instead.`);
}

if (hasPropertyAccessors) {
defineProperty(object, deprecatedKey, {
configurable: true,
enumerable: false,
set(value) {
deprecate();
set(this, newKey, value);
},
get() {
deprecate();
return get(this, newKey);
}
});
}
Object.defineProperty(object, deprecatedKey, {
configurable: true,
enumerable: false,
set(value) {
deprecate();
set(this, newKey, value);
},
get() {
deprecate();
return get(this, newKey);
}
});
}
4 changes: 1 addition & 3 deletions packages/ember-metal/lib/keys.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { canDefineNonEnumerableProperties } from 'ember-metal/platform/define_property';

/**
Returns all of the keys defined on an object or hash. This is useful
when inspecting objects for debugging. On browsers that support it, this
Expand All @@ -13,7 +11,7 @@ import { canDefineNonEnumerableProperties } from 'ember-metal/platform/define_pr
*/
var keys = Object.keys;

if (!keys || !canDefineNonEnumerableProperties) {
if (!keys) {
// modified from
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
keys = (function() {
Expand Down
7 changes: 2 additions & 5 deletions packages/ember-metal/lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ import {
} from "ember-metal/utils";
import EmberError from "ember-metal/error";
import Cache from "ember-metal/cache";
import {
hasPropertyAccessors
} from 'ember-metal/platform/define_property';
import create from 'ember-metal/platform/create';
import Logger from "ember-metal/logger";

Expand Down Expand Up @@ -231,8 +228,8 @@ Ember.GUID_KEY = GUID_KEY;
Ember.create = create;
Ember.keys = keys;
Ember.platform = {
defineProperty: defineProperty,
hasPropertyAccessors: hasPropertyAccessors
defineProperty: true,
hasPropertyAccessors: true
};

Ember.Error = EmberError;
Expand Down
3 changes: 1 addition & 2 deletions packages/ember-metal/lib/platform/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
//
"REMOVE_USE_STRICT: true";

import defineProperties from 'ember-metal/platform/define_properties';

/**
@class platform
Expand Down Expand Up @@ -91,7 +90,7 @@ if (!(Object.create && !Object.create(null).hasOwnProperty)) {
}

if (properties !== undefined) {
defineProperties(object, properties);
Object.defineProperties(object, properties);
}

return object;
Expand Down
20 changes: 0 additions & 20 deletions packages/ember-metal/lib/platform/define_properties.js

This file was deleted.

140 changes: 0 additions & 140 deletions packages/ember-metal/lib/platform/define_property.js

This file was deleted.

15 changes: 5 additions & 10 deletions packages/ember-metal/lib/properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@
import Ember from "ember-metal/core";
import isEnabled from "ember-metal/features";
import { meta as metaFor } from "ember-metal/utils";
import {
defineProperty as objectDefineProperty,
hasPropertyAccessors
} from 'ember-metal/platform/define_property';
import { overrideChains } from "ember-metal/property_events";
// ..........................................................
// DESCRIPTOR
Expand Down Expand Up @@ -105,10 +101,9 @@ export function defineProperty(obj, keyName, desc, data, meta) {

if (desc instanceof Descriptor) {
value = desc;

if (isEnabled('mandatory-setter')) {
if (watching && hasPropertyAccessors) {
objectDefineProperty(obj, keyName, {
if (watching) {
Object.defineProperty(obj, keyName, {
configurable: true,
enumerable: true,
writable: true,
Expand All @@ -126,9 +121,9 @@ export function defineProperty(obj, keyName, desc, data, meta) {
value = data;

if (isEnabled('mandatory-setter')) {
if (watching && hasPropertyAccessors) {
if (watching) {
meta.values[keyName] = data;
objectDefineProperty(obj, keyName, {
Object.defineProperty(obj, keyName, {
configurable: true,
enumerable: true,
set: MANDATORY_SETTER_FUNCTION(keyName),
Expand All @@ -144,7 +139,7 @@ export function defineProperty(obj, keyName, desc, data, meta) {
value = desc;

// compatibility with ES5
objectDefineProperty(obj, keyName, desc);
Object.oefineProperty(obj, keyName, desc);
}
}

Expand Down
3 changes: 1 addition & 2 deletions packages/ember-metal/lib/property_get.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import {
isPath,
hasThis as pathHasThis
} from "ember-metal/path_cache";
import { hasPropertyAccessors } from "ember-metal/platform/define_property";
import { symbol } from "ember-metal/utils";
import isNone from 'ember-metal/is_none';

Expand Down Expand Up @@ -87,7 +86,7 @@ export function get(obj, keyName) {
return desc.get(obj, keyName);
} else {
if (isEnabled('mandatory-setter')) {
if (hasPropertyAccessors && meta && meta.watching[keyName] > 0) {
if (meta && meta.watching[keyName] > 0) {
ret = meta.values[keyName];
} else {
ret = obj[keyName];
Expand Down
23 changes: 7 additions & 16 deletions packages/ember-metal/lib/property_set.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {
isPath,
isGlobalPath
} from "ember-metal/path_cache";
import { hasPropertyAccessors } from "ember-metal/platform/define_property";

import { symbol } from "ember-metal/utils";
export let INTERCEPT_SET = symbol("INTERCEPT_SET");
Expand Down Expand Up @@ -87,11 +86,7 @@ export function set(obj, keyName, value, tolerant) {
} else if (meta && meta.watching[keyName] > 0) {
if (meta.proto !== obj) {
if (isEnabled('mandatory-setter')) {
if (hasPropertyAccessors) {
currentValue = meta.values[keyName];
} else {
currentValue = obj[keyName];
}
currentValue = meta.values[keyName];
} else {
currentValue = obj[keyName];
}
Expand All @@ -100,17 +95,13 @@ export function set(obj, keyName, value, tolerant) {
if (value !== currentValue) {
propertyWillChange(obj, keyName);
if (isEnabled('mandatory-setter')) {
if (hasPropertyAccessors) {
if (
(currentValue === undefined && !(keyName in obj)) ||
!Object.prototype.propertyIsEnumerable.call(obj, keyName)
) {
defineProperty(obj, keyName, null, value); // setup mandatory setter
} else {
meta.values[keyName] = value;
}
if (
(currentValue === undefined && !(keyName in obj)) ||
!Object.prototype.propertyIsEnumerable.call(obj, keyName)
) {
defineProperty(obj, keyName, null, value); // setup mandatory setter
} else {
obj[keyName] = value;
meta.values[keyName] = value;
}
} else {
obj[keyName] = value;
Expand Down
Loading

0 comments on commit 89510c7

Please sign in to comment.