Sha256: a558ef0b890188536befc2594b0f9d72c63e353ec998b8877c99bcec19614b1a
Contents?: true
Size: 1.12 KB
Versions: 43
Compression:
Stored size: 1.12 KB
Contents
"use strict"; exports.__esModule = true; exports.default = void 0; /** * Safari 10.3 had an issue where async arrow function expressions within any class method would throw. * After an initial fix, any references to the instance via `this` within those methods would also throw. * This is fixed by converting arrow functions in class methods into equivalent function expressions. * @see https://bugs.webkit.org/show_bug.cgi?id=166879 * * @example * class X{ a(){ async () => {}; } } // throws * class X{ a(){ async function() {}; } } // works * * @example * class X{ a(){ * async () => this.a; // throws * } } * class X{ a(){ * var _this=this; * async function() { return _this.a }; // works * } } */ const OPTS = { allowInsertArrow: false, specCompliant: false }; var _default = ({ types: t }) => ({ name: "transform-async-arrows-in-class", visitor: { ArrowFunctionExpression(path) { if (path.node.async && path.findParent(t.isClassMethod)) { path.arrowFunctionToExpression(OPTS); } } } }); exports.default = _default; module.exports = exports.default;
Version data entries
43 entries across 42 versions & 8 rubygems