| | |
| | | Object.defineProperty(exports, "__esModule", { |
| | | value: true |
| | | }); |
| | | exports.buildFieldsInitNodes = buildFieldsInitNodes; |
| | | exports.buildPrivateNamesMap = buildPrivateNamesMap; |
| | | exports.buildPrivateNamesNodes = buildPrivateNamesNodes; |
| | | exports.transformPrivateNamesUsage = transformPrivateNamesUsage; |
| | | exports.buildFieldsInitNodes = buildFieldsInitNodes; |
| | | |
| | | var _core = require("@babel/core"); |
| | | |
| | | var _helperReplaceSupers = require("@babel/helper-replace-supers"); |
| | | |
| | | var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor"); |
| | | |
| | | var _helperMemberExpressionToFunctions = require("@babel/helper-member-expression-to-functions"); |
| | | |
| | |
| | | |
| | | }); |
| | | |
| | | const nestedVisitor = _core.traverse.visitors.merge([Object.assign({}, visitor), _helperReplaceSupers.environmentVisitor]); |
| | | const nestedVisitor = _core.traverse.visitors.merge([Object.assign({}, visitor), _helperEnvironmentVisitor.default]); |
| | | |
| | | return privateNameVisitor; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | }, _helperReplaceSupers.environmentVisitor]); |
| | | }, _helperEnvironmentVisitor.default]); |
| | | |
| | | const innerReferencesVisitor = { |
| | | ReferencedIdentifier(path, state) { |
| | |
| | | |
| | | getObjectRef() { |
| | | state.needsClassRef = true; |
| | | return isStaticBlock || path.node.static ? ref : _core.types.memberExpression(ref, _core.types.identifier("prototype")); |
| | | return _core.types.isStaticBlock != null && _core.types.isStaticBlock(path.node) || path.node.static ? ref : _core.types.memberExpression(ref, _core.types.identifier("prototype")); |
| | | } |
| | | |
| | | }); |
| | |
| | | } |
| | | |
| | | return state.needsClassRef; |
| | | } |
| | | |
| | | function isNameOrLength({ |
| | | key, |
| | | computed |
| | | }) { |
| | | if (key.type === "Identifier") { |
| | | return !computed && (key.name === "name" || key.name === "length"); |
| | | } |
| | | |
| | | if (key.type === "StringLiteral") { |
| | | return key.value === "name" || key.value === "length"; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, state, setPublicClassFields, privateFieldsAsProperties, constantSuper, innerBindingRef) { |
| | |
| | | |
| | | for (const prop of props) { |
| | | prop.isClassProperty() && ts.assertFieldTransformed(prop); |
| | | const isStatic = prop.node.static; |
| | | const isStatic = !(_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node)) && prop.node.static; |
| | | const isInstance = !isStatic; |
| | | const isPrivate = prop.isPrivate(); |
| | | const isPublic = !isPrivate; |
| | |
| | | |
| | | switch (true) { |
| | | case isStaticBlock: |
| | | staticNodes.push(_core.template.statement.ast`(() => ${_core.types.blockStatement(prop.node.body)})()`); |
| | | break; |
| | | { |
| | | const blockBody = prop.node.body; |
| | | |
| | | if (blockBody.length === 1 && _core.types.isExpressionStatement(blockBody[0])) { |
| | | staticNodes.push(blockBody[0]); |
| | | } else { |
| | | staticNodes.push(_core.template.statement.ast`(() => { ${blockBody} })()`); |
| | | } |
| | | |
| | | break; |
| | | } |
| | | |
| | | case isStatic && isPrivate && isField && privateFieldsAsProperties: |
| | | needsClassRef = true; |
| | |
| | | break; |
| | | |
| | | case isStatic && isPublic && isField && setPublicClassFields: |
| | | needsClassRef = true; |
| | | staticNodes.push(buildPublicFieldInitLoose(_core.types.cloneNode(ref), prop)); |
| | | break; |
| | | if (!isNameOrLength(prop.node)) { |
| | | needsClassRef = true; |
| | | staticNodes.push(buildPublicFieldInitLoose(_core.types.cloneNode(ref), prop)); |
| | | break; |
| | | } |
| | | |
| | | case isStatic && isPublic && isField && !setPublicClassFields: |
| | | needsClassRef = true; |