From aa773172311dcada759dfbaac485f4bc6e00bc21 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Oct 2023 15:31:11 +0800 Subject: added babel --- .../transform-async-arrows-in-class/index.js | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js (limited to 'node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class') diff --git a/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js b/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js new file mode 100644 index 00000000..b0594777 --- /dev/null +++ b/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js @@ -0,0 +1,35 @@ +/** + * 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, +}; + +export default ({ types: t }) => ({ + name: "transform-async-arrows-in-class", + visitor: { + ArrowFunctionExpression(path) { + if (path.node.async && path.findParent(t.isClassMethod)) { + path.arrowFunctionToExpression(OPTS); + } + }, + }, +}); -- cgit v1.2.3