| | |
| | | |
| | | var _helperReplaceSupers = require("@babel/helper-replace-supers"); |
| | | |
| | | var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor"); |
| | | |
| | | var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression"); |
| | | |
| | | var _core = require("@babel/core"); |
| | |
| | | superThises: [], |
| | | pushedConstructor: false, |
| | | pushedInherits: false, |
| | | pushedCreateClass: false, |
| | | protoAlias: null, |
| | | isLoose: false, |
| | | dynamicKeys: new Map(), |
| | |
| | | Object.assign(classState, newState); |
| | | }; |
| | | |
| | | const findThisesVisitor = _core.traverse.visitors.merge([_helperReplaceSupers.environmentVisitor, { |
| | | const findThisesVisitor = _core.traverse.visitors.merge([_helperEnvironmentVisitor.default, { |
| | | ThisExpression(path) { |
| | | classState.superThises.push(path); |
| | | } |
| | | |
| | | }]); |
| | | |
| | | function createClassHelper(args) { |
| | | return _core.types.callExpression(classState.file.addHelper("createClass"), args); |
| | | } |
| | | |
| | | function maybeCreateConstructor() { |
| | | let hasConstructor = false; |
| | |
| | | }); |
| | | replaceSupers.replace(); |
| | | const superReturns = []; |
| | | path.traverse(_core.traverse.visitors.merge([_helperReplaceSupers.environmentVisitor, { |
| | | path.traverse(_core.traverse.visitors.merge([_helperEnvironmentVisitor.default, { |
| | | ReturnStatement(path) { |
| | | if (!path.getFunctionParent().isArrowFunctionExpression()) { |
| | | superReturns.push(path); |
| | |
| | | } |
| | | |
| | | args = args.slice(0, lastNonNullIndex + 1); |
| | | body.push(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper("createClass"), args))); |
| | | body.push(_core.types.expressionStatement(createClassHelper(args))); |
| | | classState.pushedCreateClass = true; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | const bareSupers = new Set(); |
| | | path.traverse(_core.traverse.visitors.merge([_helperReplaceSupers.environmentVisitor, { |
| | | path.traverse(_core.traverse.visitors.merge([_helperEnvironmentVisitor.default, { |
| | | Super(path) { |
| | | const { |
| | | node, |
| | |
| | | } |
| | | |
| | | if (constructorOnly) { |
| | | return _core.types.toExpression(body[0]); |
| | | const expr = _core.types.toExpression(body[0]); |
| | | |
| | | return classState.isLoose ? expr : createClassHelper([expr]); |
| | | } |
| | | |
| | | body.push(_core.types.returnStatement(_core.types.cloneNode(classState.classRef))); |
| | | let returnArg = _core.types.cloneNode(classState.classRef); |
| | | |
| | | if (!classState.pushedCreateClass && !classState.isLoose) { |
| | | returnArg = createClassHelper([returnArg]); |
| | | } |
| | | |
| | | body.push(_core.types.returnStatement(returnArg)); |
| | | |
| | | const container = _core.types.arrowFunctionExpression(closureParams, _core.types.blockStatement(body, directives)); |
| | | |