Use toPropertyKey in the "decorate" helper

This commit also makes the "toPropertyKey" helper call @@toPrimitive
when needed.
This commit is contained in:
Nicolò Ribaudo 2018-09-20 20:03:45 +02:00
parent cd81b079ee
commit 38397ce11f
14 changed files with 47 additions and 36 deletions

View File

@ -1,5 +1,8 @@
{ {
"compact": false, "compact": false,
"presets": ["env"], "presets": ["env"],
"plugins": ["external-helpers", "proposal-object-rest-spread"] "plugins": [
["external-helpers", { "helperVersion": "7.1.5" }],
"proposal-object-rest-spread"
]
} }

View File

@ -935,13 +935,28 @@ helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")`
} }
`; `;
helpers.toPropertyKey = helper("7.0.0-beta.0")` helpers.toPrimitive = helper("7.1.5")`
export default function _toPropertyKey(key) { export default function _toPrimitive(
if (typeof key === "symbol") { input,
return key; hint /*: "default" | "string" | "number" | void */
} else { ) {
return String(key); if (typeof input !== "object" || input === null) return input;
var prim = input[Symbol.toPrimitive];
if (prim !== undefined) {
var res = prim.call(input, hint || "default");
if (typeof res !== "object") return res;
throw new TypeError("@@toPrimitive must return a primitive value.");
} }
return (hint === "string" ? String : Number)(input);
}
`;
helpers.toPropertyKey = helper("7.1.5")`
import toPrimitive from "toPrimitive";
export default function _toPropertyKey(arg) {
var key = toPrimitive(arg, "string");
return typeof key === "symbol" ? key : String(key);
} }
`; `;
@ -1077,10 +1092,12 @@ helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
descriptor.value = value; descriptor.value = value;
return value; return value;
} }
`; `;
helpers.decorate = helper("7.0.2")` helpers.decorate = helper("7.1.5")`
import toArray from "toArray"; import toArray from "toArray";
import toPropertyKey from "toPropertyKey";
// These comments are stripped by @babel/template // These comments are stripped by @babel/template
/*:: /*::
@ -1574,8 +1591,7 @@ helpers.decorate = helper("7.0.2")`
); );
} }
var key = elementObject.key; var key = toPropertyKey(elementObject.key);
if (typeof key !== "string" && typeof key !== "symbol") key = String(key);
var placement = String(elementObject.placement); var placement = String(elementObject.placement);
if ( if (

View File

@ -5,7 +5,7 @@
[ [
"external-helpers", "external-helpers",
{ {
"helperVersion": "7.0.2" "helperVersion": "7.1.5"
} }
] ]
] ]

View File

@ -5,7 +5,7 @@
[ [
"external-helpers", "external-helpers",
{ {
"helperVersion": "7.0.2" "helperVersion": "7.1.5"
} }
] ]
] ]

View File

@ -5,7 +5,7 @@
[ [
"external-helpers", "external-helpers",
{ {
"helperVersion": "7.0.2" "helperVersion": "7.1.5"
} }
] ]
] ]

View File

@ -5,7 +5,7 @@
[ [
"external-helpers", "external-helpers",
{ {
"helperVersion": "7.0.2" "helperVersion": "7.1.5"
} }
] ]
] ]

View File

@ -3,6 +3,6 @@
["proposal-decorators", { "decoratorsBeforeExport": false }], ["proposal-decorators", { "decoratorsBeforeExport": false }],
"proposal-class-properties", "proposal-class-properties",
"syntax-async-generators", "syntax-async-generators",
["external-helpers", { "helperVersion": "7.0.2" }] ["external-helpers", { "helperVersion": "7.1.5" }]
] ]
} }

View File

@ -5,7 +5,7 @@
[ [
"external-helpers", "external-helpers",
{ {
"helperVersion": "7.0.2" "helperVersion": "7.1.5"
} }
], ],
"syntax-async-generators" "syntax-async-generators"

View File

@ -5,7 +5,7 @@
[ [
"external-helpers", "external-helpers",
{ {
"helperVersion": "7.0.2" "helperVersion": "7.1.5"
} }
] ]
] ]

View File

@ -2,6 +2,6 @@
"plugins": [ "plugins": [
"syntax-async-generators", "syntax-async-generators",
"proposal-object-rest-spread", "proposal-object-rest-spread",
"external-helpers" ["external-helpers", { "helperVersion": "7.1.5" }]
] ]
} }

View File

@ -1,6 +1,6 @@
{ {
"plugins": [ "plugins": [
"external-helpers", ["external-helpers", { "helperVersion": "7.1.5" }],
["transform-destructuring", { "useBuiltIns": true }], ["transform-destructuring", { "useBuiltIns": true }],
"transform-spread", "transform-spread",
"transform-parameters", "transform-parameters",

View File

@ -1,6 +1,7 @@
{ {
"plugins": [ "plugins": [
["transform-destructuring", { "loose": true }], ["transform-destructuring", { "loose": true }],
"proposal-object-rest-spread" "proposal-object-rest-spread",
["external-helpers", { "helperVersion": "7.1.5" }]
] ]
} }

View File

@ -1,29 +1,20 @@
function _toPropertyKey(key) { if (typeof key === "symbol") { return key; } else { return String(key); } }
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 = {};
var _z = z, var _z = z,
x = _extends({}, _z); x = babelHelpers.extends({}, _z);
var _z2 = z, var _z2 = z,
x = _z2.x, x = _z2.x,
y = _objectWithoutPropertiesLoose(_z2, ["x"]); y = babelHelpers.objectWithoutPropertiesLoose(_z2, ["x"]);
var _z3 = z, var _z3 = z,
x = _z3[x], x = _z3[x],
y = _objectWithoutPropertiesLoose(_z3, [x].map(_toPropertyKey)); y = babelHelpers.objectWithoutPropertiesLoose(_z3, [x].map(babelHelpers.toPropertyKey));
(function (_ref) { (function (_ref) {
let x = _ref.x, let x = _ref.x,
y = _objectWithoutPropertiesLoose(_ref, ["x"]); y = babelHelpers.objectWithoutPropertiesLoose(_ref, ["x"]);
}); });
var _o = o; var _o = o;
x = _o.x; x = _o.x;
y = _o.y; y = _o.y;
z = _objectWithoutPropertiesLoose(_o, ["x", "y"]); z = babelHelpers.objectWithoutPropertiesLoose(_o, ["x", "y"]);
_o; _o;

View File

@ -1,6 +1,6 @@
{ {
"plugins": [ "plugins": [
"external-helpers", ["external-helpers", { "helperVersion": "7.1.5" }],
"transform-destructuring", "transform-destructuring",
"transform-spread", "transform-spread",
"transform-parameters", "transform-parameters",