Introduce objectWithoutPropertiesLoose helper (#8261)

This commit is contained in:
Mateusz Burzyński 2018-07-06 21:03:44 +02:00 committed by Henry Zhu
parent cea562c009
commit c0c13ae30f
11 changed files with 81 additions and 13 deletions

View File

@ -584,8 +584,8 @@ helpers.objectDestructuringEmpty = () => template.program.ast`
} }
`; `;
helpers.objectWithoutProperties = () => template.program.ast` helpers.objectWithoutPropertiesLoose = () => template.program.ast`
export default function _objectWithoutProperties(source, excluded) { export default function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {}; if (source == null) return {};
var target = {}; var target = {};
@ -598,6 +598,19 @@ helpers.objectWithoutProperties = () => template.program.ast`
target[key] = source[key]; target[key] = source[key];
} }
return target;
}
`;
helpers.objectWithoutProperties = () => template.program.ast`
import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose";
export default function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) { if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source); var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) { for (i = 0; i < sourceSymbolKeys.length; i++) {

View File

@ -128,10 +128,10 @@ export default declare((api, opts) => {
return [ return [
impureComputedPropertyDeclarators, impureComputedPropertyDeclarators,
restElement.argument, restElement.argument,
t.callExpression(file.addHelper("objectWithoutProperties"), [ t.callExpression(
t.cloneNode(objRef), file.addHelper(`objectWithoutProperties${loose ? "Loose" : ""}`),
keyExpression, [t.cloneNode(objRef), keyExpression],
]), ),
]; ];
} }

View File

@ -1,3 +1,5 @@
z = { x, ...y }; z = { x, ...y };
z = { x, w: { ...y } }; z = { x, w: { ...y } };
const { q, ...rest } = z;

View File

@ -1,3 +1,5 @@
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
z = _extends({ z = _extends({
@ -7,3 +9,8 @@ z = {
x, x,
w: _extends({}, y) w: _extends({}, y)
}; };
const {
q
} = z,
rest = _objectWithoutPropertiesLoose(z, ["q"]);

View File

@ -188,10 +188,10 @@ export default declare((api, options) => {
} else { } else {
keys = t.arrayExpression(keys); keys = t.arrayExpression(keys);
value = t.callExpression(this.addHelper("objectWithoutProperties"), [ value = t.callExpression(
t.cloneNode(objRef), this.addHelper(`objectWithoutProperties${loose ? "Loose" : ""}`),
keys, [t.cloneNode(objRef), keys],
]); );
} }
this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value)); this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));

View File

@ -0,0 +1,7 @@
var z = {};
var { ...x } = z;
var { x, ...y } = z;
var { [x]: x, ...y } = z;
(function({ x, ...y }) { });
({ x, y, ...z } = o);

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-destructuring", { "loose": true }],
"proposal-object-rest-spread"
]
}

View File

@ -0,0 +1,27 @@
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var z = {};
var _z = z,
x = _extends({}, _z);
var _z2 = z,
x = _z2.x,
y = _objectWithoutPropertiesLoose(_z2, ["x"]);
var _z3 = z,
x = _z3[x],
y = _objectWithoutPropertiesLoose(_z3, [x]);
(function (_ref) {
let x = _ref.x,
y = _objectWithoutPropertiesLoose(_ref, ["x"]);
});
var _o = o;
x = _o.x;
y = _o.y;
z = _objectWithoutPropertiesLoose(_o, ["x", "y"]);
_o;

View File

@ -2,7 +2,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } function _awaitAsyncGenerator(value) { return new _AwaitValue(value); }

View File

@ -26,7 +26,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } function _awaitAsyncGenerator(value) { return new _AwaitValue(value); }

View File

@ -2,7 +2,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } function _awaitAsyncGenerator(value) { return new _AwaitValue(value); }