diff --git a/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package1/lib/bar/bar1.js b/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package1/lib/bar/bar1.js index c48fccce8a..5523178f15 100644 --- a/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package1/lib/bar/bar1.js +++ b/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package1/lib/bar/bar1.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test1 = function Test1() { _classCallCheck(this, Test1); diff --git a/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package2/lib/bar/bar2.js b/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package2/lib/bar/bar2.js index f77e96ef60..36c1959194 100644 --- a/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package2/lib/bar/bar2.js +++ b/packages/babel-cli/test/fixtures/babel/dir --out-dir --relative/out-files/package2/lib/bar/bar2.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test2 = function Test2() { _classCallCheck(this, Test2); diff --git a/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps inline/out-files/lib/bar/bar.js b/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps inline/out-files/lib/bar/bar.js index 2ab66ccfef..8216b06eeb 100644 --- a/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps inline/out-files/lib/bar/bar.js +++ b/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps inline/out-files/lib/bar/bar.js @@ -1,8 +1,10 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test = function Test() { _classCallCheck(this, Test); }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXIvYmFyLmpzIl0sIm5hbWVzIjpbIlRlc3QiXSwibWFwcGluZ3MiOiI7Ozs7SUFBTUEsSSIsImZpbGUiOiJiYXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBUZXN0IHtcblxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXIvYmFyLmpzIl0sIm5hbWVzIjpbIlRlc3QiXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFNQSxJIiwiZmlsZSI6ImJhci5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFRlc3Qge1xuXG59Il19 diff --git a/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js b/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js index 85d52f9265..cdcfc910a3 100644 --- a/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js +++ b/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test = function Test() { _classCallCheck(this, Test); diff --git a/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js.map b/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js.map index 19ecc2250e..a970cba944 100644 --- a/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js.map +++ b/packages/babel-cli/test/fixtures/babel/dir --out-dir --source-maps/out-files/lib/bar/bar.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/bar/bar.js"],"names":["Test"],"mappings":";;;;IAAMA,I","file":"bar.js","sourcesContent":["class Test {\n\n}"]} +{"version":3,"sources":["../../src/bar/bar.js"],"names":["Test"],"mappings":";;;;;;IAAMA,I","file":"bar.js","sourcesContent":["class Test {\n\n}"]} diff --git a/packages/babel-cli/test/fixtures/babel/dir --out-dir/out-files/lib/bar/bar.js b/packages/babel-cli/test/fixtures/babel/dir --out-dir/out-files/lib/bar/bar.js index 7c09ea8b39..0381c2a965 100644 --- a/packages/babel-cli/test/fixtures/babel/dir --out-dir/out-files/lib/bar/bar.js +++ b/packages/babel-cli/test/fixtures/babel/dir --out-dir/out-files/lib/bar/bar.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test = function Test() { _classCallCheck(this, Test); diff --git a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js index 4a96b75189..c69f9d60a4 100644 --- a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js +++ b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test = function Test() { _classCallCheck(this, Test); @@ -11,4 +13,4 @@ arr.map(function (x) { return x * MULTIPLIER; }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyIsInNjcmlwdDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztJQUFNLEk7Ozs7O0FDQU4sSUFBSSxHQUFKLENBQVE7QUFBQSxTQUFLLElBQUksVUFBVDtBQUFBLENBQVIiLCJmaWxlIjoic2NyaXB0My5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFRlc3Qge1xuXG59IiwiYXJyLm1hcCh4ID0+IHggKiBNVUxUSVBMSUVSKTsiXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyIsInNjcmlwdDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQU0sSTs7Ozs7QUNBTixJQUFJLEdBQUosQ0FBUTtBQUFBLFNBQUssSUFBSSxVQUFUO0FBQUEsQ0FBUiIsImZpbGUiOiJzY3JpcHQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgVGVzdCB7XG5cbn0iLCJhcnIubWFwKHggPT4geCAqIE1VTFRJUExJRVIpOyJdfQ== diff --git a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js index ff02fa3da5..feeecc23f7 100644 --- a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js +++ b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test = function Test() { _classCallCheck(this, Test); diff --git a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map index cd5df70d02..1ae75e26cc 100644 --- a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map +++ b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map @@ -1 +1 @@ -{"version":3,"sources":["script.js","script2.js"],"names":[],"mappings":";;;;IAAM,I;;;;;ACAN,IAAI,GAAJ,CAAQ;AAAA,SAAK,IAAI,UAAT;AAAA,CAAR","file":"script3.js","sourcesContent":["class Test {\n\n}","arr.map(x => x * MULTIPLIER);"]} +{"version":3,"sources":["script.js","script2.js"],"names":[],"mappings":";;;;;;IAAM,I;;;;;ACAN,IAAI,GAAJ,CAAQ;AAAA,SAAK,IAAI,UAAT;AAAA,CAAR","file":"script3.js","sourcesContent":["class Test {\n\n}","arr.map(x => x * MULTIPLIER);"]} diff --git a/packages/babel-cli/test/fixtures/babel/filenames --out-file/out-files/script3.js b/packages/babel-cli/test/fixtures/babel/filenames --out-file/out-files/script3.js index 9674f714a3..66a135963a 100644 --- a/packages/babel-cli/test/fixtures/babel/filenames --out-file/out-files/script3.js +++ b/packages/babel-cli/test/fixtures/babel/filenames --out-file/out-files/script3.js @@ -1,6 +1,8 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Test = function Test() { _classCallCheck(this, Test); diff --git a/packages/babel-core/test/fixtures/transformation/misc/regression-2892/expected.js b/packages/babel-core/test/fixtures/transformation/misc/regression-2892/expected.js index 0324d6ce0a..f835214203 100644 --- a/packages/babel-core/test/fixtures/transformation/misc/regression-2892/expected.js +++ b/packages/babel-core/test/fixtures/transformation/misc/regression-2892/expected.js @@ -49,9 +49,11 @@ var foo = function () { }; }(); +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + function _asyncToGenerator(fn) { return function () { var _this = this, _arguments = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(_this, _arguments); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _next(value) { step("next", value); } function _throw(err) { step("throw", err); } _next(); }); }; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/6154/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/6154/expected.js index d5eee7869c..897a437356 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/6154/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/6154/expected.js @@ -2,11 +2,13 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return _get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T7537/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T7537/expected.js index 408af2ccbc..ae764cf723 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T7537/expected.js +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T7537/expected.js @@ -6,7 +6,9 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var B = function B() { _classCallCheck(this, B); diff --git a/packages/babel-plugin-transform-es2015-instanceof/src/index.js b/packages/babel-plugin-transform-es2015-instanceof/src/index.js index f91c5eb4e0..e2ac29e304 100644 --- a/packages/babel-plugin-transform-es2015-instanceof/src/index.js +++ b/packages/babel-plugin-transform-es2015-instanceof/src/index.js @@ -4,12 +4,20 @@ export default function({ types: t }) { BinaryExpression(path) { const { node } = path; if (node.operator === "instanceof") { - path.replaceWith( - t.callExpression(this.addHelper("instanceof"), [ - node.left, - node.right, - ]), - ); + const helper = this.addHelper("instanceof"); + const isUnderHelper = path.findParent(path => { + return ( + (path.isVariableDeclarator() && path.node.id === helper) || + (path.isFunctionDeclaration() && + path.node.id.name === helper.name) + ); + }); + + if (isUnderHelper) { + return; + } else { + path.replaceWith(t.callExpression(helper, [node.left, node.right])); + } } }, }, diff --git a/packages/babel-plugin-transform-es2015-parameters/test/fixtures/regression/6057-expanded/expected.js b/packages/babel-plugin-transform-es2015-parameters/test/fixtures/regression/6057-expanded/expected.js index 449084ade2..14a2f0611a 100644 --- a/packages/babel-plugin-transform-es2015-parameters/test/fixtures/regression/6057-expanded/expected.js +++ b/packages/babel-plugin-transform-es2015-parameters/test/fixtures/regression/6057-expanded/expected.js @@ -9,9 +9,11 @@ var _args = _interopRequireDefault(require("utils/url/args")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } } + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } diff --git a/packages/babel-preset-es2015/package.json b/packages/babel-preset-es2015/package.json index c89c403d2e..1cbc9ab6ff 100644 --- a/packages/babel-preset-es2015/package.json +++ b/packages/babel-preset-es2015/package.json @@ -18,6 +18,7 @@ "babel-plugin-transform-es2015-duplicate-keys": "7.0.0-beta.0", "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", "babel-plugin-transform-es2015-function-name": "7.0.0-beta.0", + "babel-plugin-transform-es2015-instanceof": "7.0.0-beta.0", "babel-plugin-transform-es2015-literals": "7.0.0-beta.0", "babel-plugin-transform-es2015-modules-amd": "7.0.0-beta.0", "babel-plugin-transform-es2015-modules-commonjs": "7.0.0-beta.0", diff --git a/packages/babel-preset-es2015/src/index.js b/packages/babel-preset-es2015/src/index.js index 55a1ccf141..2d50c24d2c 100644 --- a/packages/babel-preset-es2015/src/index.js +++ b/packages/babel-preset-es2015/src/index.js @@ -21,6 +21,7 @@ import transformES2015ModulesCommonJS from "babel-plugin-transform-es2015-module import transformES2015ModulesSystemJS from "babel-plugin-transform-es2015-modules-systemjs"; import transformES2015ModulesAMD from "babel-plugin-transform-es2015-modules-amd"; import transformES2015ModulesUMD from "babel-plugin-transform-es2015-modules-umd"; +import transformES2015Instanceof from "babel-plugin-transform-es2015-instanceof"; import transformRegenerator from "babel-plugin-transform-regenerator"; export default function(context, opts = {}) { @@ -72,6 +73,7 @@ export default function(context, opts = {}) { [transformES2015Destructuring, optsLoose], transformES2015BlockScoping, transformES2015TypeofSymbol, + transformES2015Instanceof, modules === "commonjs" && [transformES2015ModulesCommonJS, optsLoose], modules === "systemjs" && [transformES2015ModulesSystemJS, optsLoose], modules === "amd" && [transformES2015ModulesAMD, optsLoose], diff --git a/packages/babel-preset-es2015/test/fixtures/preset-options/6025/options.json b/packages/babel-preset-es2015/test/fixtures/preset-options/6025/options.json index 70fe60f1ee..aa29b36487 100644 --- a/packages/babel-preset-es2015/test/fixtures/preset-options/6025/options.json +++ b/packages/babel-preset-es2015/test/fixtures/preset-options/6025/options.json @@ -10,6 +10,7 @@ "transform-es2015-duplicate-keys", "transform-es2015-for-of", "transform-es2015-function-name", + "transform-es2015-instanceof", "transform-es2015-literals", "transform-es2015-object-super", "transform-es2015-parameters",