| 'use strict'; |
|
|
| Object.defineProperty(exports, '__esModule', { value: true }); |
|
|
| var helperPluginUtils = require('@babel/helper-plugin-utils'); |
| var core = require('@babel/core'); |
|
|
| function needsWrapping(node) { |
| if (core.types.isLiteral(node) && !core.types.isTemplateLiteral(node)) { |
| return false; |
| } |
| if (core.types.isCallExpression(node) || core.types.isOptionalCallExpression(node) || core.types.isNewExpression(node)) { |
| return needsWrapping(node.callee) || node.arguments.some(needsWrapping); |
| } |
| if (core.types.isTemplateLiteral(node)) { |
| return node.expressions.some(needsWrapping); |
| } |
| if (core.types.isTaggedTemplateExpression(node)) { |
| return needsWrapping(node.tag) || needsWrapping(node.quasi); |
| } |
| if (core.types.isArrayExpression(node)) { |
| return node.elements.some(needsWrapping); |
| } |
| if (core.types.isObjectExpression(node)) { |
| return node.properties.some(prop => { |
| if (core.types.isObjectProperty(prop)) { |
| return needsWrapping(prop.value) || prop.computed && needsWrapping(prop.key); |
| } |
| if (core.types.isObjectMethod(prop)) { |
| return false; |
| } |
| return false; |
| }); |
| } |
| if (core.types.isMemberExpression(node) || core.types.isOptionalMemberExpression(node)) { |
| return needsWrapping(node.object) || node.computed && needsWrapping(node.property); |
| } |
| if (core.types.isFunctionExpression(node) || core.types.isArrowFunctionExpression(node) || core.types.isClassExpression(node)) { |
| return false; |
| } |
| if (core.types.isThisExpression(node)) { |
| return false; |
| } |
| if (core.types.isSequenceExpression(node)) { |
| return node.expressions.some(needsWrapping); |
| } |
| return true; |
| } |
| function wrapInitializer(path) { |
| const { |
| value |
| } = path.node; |
| if (value && needsWrapping(value)) { |
| path.node.value = core.types.callExpression(core.types.arrowFunctionExpression([], value), []); |
| } |
| } |
| var index = helperPluginUtils.declare(api => { |
| api.assertVersion("^7.16.0"); |
| return { |
| name: "plugin-bugfix-safari-class-field-initializer-scope", |
| visitor: { |
| ClassProperty(path) { |
| wrapInitializer(path); |
| }, |
| ClassPrivateProperty(path) { |
| wrapInitializer(path); |
| } |
| } |
| }; |
| }); |
|
|
| exports.default = index; |
| |
|
|