diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:31:11 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:31:11 +0800 |
| commit | aa773172311dcada759dfbaac485f4bc6e00bc21 (patch) | |
| tree | ca6d9a5eff3ab8f689f9acb4f0df791d9486813d /node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class | |
| parent | c5a5384e846f242e901e859fe600d695d8990a9a (diff) | |
added babel
Diffstat (limited to 'node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class')
| -rw-r--r-- | node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js b/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js new file mode 100644 index 00000000..69774046 --- /dev/null +++ b/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js @@ -0,0 +1,45 @@ +"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;
\ No newline at end of file |
