| 1 | "use strict";
|
|---|
| 2 |
|
|---|
| 3 | Object.defineProperty(exports, "__esModule", {
|
|---|
| 4 | value: true
|
|---|
| 5 | });
|
|---|
| 6 | exports.AssignmentExpression = AssignmentExpression;
|
|---|
| 7 | exports.BinaryExpression = BinaryExpression;
|
|---|
| 8 | exports.ClassExpression = ClassExpression;
|
|---|
| 9 | exports.ArrowFunctionExpression = exports.ConditionalExpression = ConditionalExpression;
|
|---|
| 10 | exports.DoExpression = DoExpression;
|
|---|
| 11 | exports.FunctionExpression = FunctionExpression;
|
|---|
| 12 | exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
|
|---|
| 13 | exports.Identifier = Identifier;
|
|---|
| 14 | exports.LogicalExpression = LogicalExpression;
|
|---|
| 15 | exports.NullableTypeAnnotation = NullableTypeAnnotation;
|
|---|
| 16 | exports.ObjectExpression = ObjectExpression;
|
|---|
| 17 | exports.OptionalIndexedAccessType = OptionalIndexedAccessType;
|
|---|
| 18 | exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression;
|
|---|
| 19 | exports.SequenceExpression = SequenceExpression;
|
|---|
| 20 | exports.TSSatisfiesExpression = exports.TSAsExpression = TSAsExpression;
|
|---|
| 21 | exports.TSConditionalType = TSConditionalType;
|
|---|
| 22 | exports.TSConstructorType = exports.TSFunctionType = TSFunctionType;
|
|---|
| 23 | exports.TSInferType = TSInferType;
|
|---|
| 24 | exports.TSInstantiationExpression = TSInstantiationExpression;
|
|---|
| 25 | exports.TSIntersectionType = TSIntersectionType;
|
|---|
| 26 | exports.SpreadElement = exports.UnaryExpression = exports.TSTypeAssertion = UnaryLike;
|
|---|
| 27 | exports.TSTypeOperator = TSTypeOperator;
|
|---|
| 28 | exports.TSUnionType = TSUnionType;
|
|---|
| 29 | exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
|
|---|
| 30 | exports.UpdateExpression = UpdateExpression;
|
|---|
| 31 | exports.AwaitExpression = exports.YieldExpression = YieldExpression;
|
|---|
| 32 | var _t = require("@babel/types");
|
|---|
| 33 | var _index = require("./index.js");
|
|---|
| 34 | const {
|
|---|
| 35 | isMemberExpression,
|
|---|
| 36 | isOptionalMemberExpression,
|
|---|
| 37 | isYieldExpression,
|
|---|
| 38 | isStatement
|
|---|
| 39 | } = _t;
|
|---|
| 40 | const PRECEDENCE = new Map([["||", 0], ["??", 1], ["&&", 2], ["|", 3], ["^", 4], ["&", 5], ["==", 6], ["===", 6], ["!=", 6], ["!==", 6], ["<", 7], [">", 7], ["<=", 7], [">=", 7], ["in", 7], ["instanceof", 7], [">>", 8], ["<<", 8], [">>>", 8], ["+", 9], ["-", 9], ["*", 10], ["/", 10], ["%", 10], ["**", 11]]);
|
|---|
| 41 | function isTSTypeExpression(nodeId) {
|
|---|
| 42 | return nodeId === 156 || nodeId === 201 || nodeId === 209;
|
|---|
| 43 | }
|
|---|
| 44 | const isClassExtendsClause = (node, parent, parentId) => {
|
|---|
| 45 | return (parentId === 21 || parentId === 22) && parent.superClass === node;
|
|---|
| 46 | };
|
|---|
| 47 | const hasPostfixPart = (node, parent, parentId) => {
|
|---|
| 48 | switch (parentId) {
|
|---|
| 49 | case 108:
|
|---|
| 50 | case 132:
|
|---|
| 51 | return parent.object === node;
|
|---|
| 52 | case 17:
|
|---|
| 53 | case 130:
|
|---|
| 54 | case 112:
|
|---|
| 55 | return parent.callee === node;
|
|---|
| 56 | case 222:
|
|---|
| 57 | return parent.tag === node;
|
|---|
| 58 | case 191:
|
|---|
| 59 | return true;
|
|---|
| 60 | }
|
|---|
| 61 | return false;
|
|---|
| 62 | };
|
|---|
| 63 | function NullableTypeAnnotation(node, parent, parentId) {
|
|---|
| 64 | return parentId === 4;
|
|---|
| 65 | }
|
|---|
| 66 | function FunctionTypeAnnotation(node, parent, parentId, tokenContext) {
|
|---|
| 67 | return (parentId === 239 || parentId === 90 || parentId === 4 || (tokenContext & _index.TokenContext.arrowFlowReturnType) > 0
|
|---|
| 68 | );
|
|---|
| 69 | }
|
|---|
| 70 | function UpdateExpression(node, parent, parentId) {
|
|---|
| 71 | return hasPostfixPart(node, parent, parentId) || isClassExtendsClause(node, parent, parentId);
|
|---|
| 72 | }
|
|---|
| 73 | function needsParenBeforeExpressionBrace(tokenContext) {
|
|---|
| 74 | return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.arrowBody)) > 0;
|
|---|
| 75 | }
|
|---|
| 76 | function ObjectExpression(node, parent, parentId, tokenContext) {
|
|---|
| 77 | return needsParenBeforeExpressionBrace(tokenContext);
|
|---|
| 78 | }
|
|---|
| 79 | function DoExpression(node, parent, parentId, tokenContext) {
|
|---|
| 80 | return (tokenContext & _index.TokenContext.expressionStatement) > 0 && !node.async;
|
|---|
| 81 | }
|
|---|
| 82 | function BinaryLike(node, parent, parentId, nodeType) {
|
|---|
| 83 | if (isClassExtendsClause(node, parent, parentId)) {
|
|---|
| 84 | return true;
|
|---|
| 85 | }
|
|---|
| 86 | if (hasPostfixPart(node, parent, parentId) || parentId === 238 || parentId === 145 || parentId === 8) {
|
|---|
| 87 | return true;
|
|---|
| 88 | }
|
|---|
| 89 | let parentPos;
|
|---|
| 90 | switch (parentId) {
|
|---|
| 91 | case 10:
|
|---|
| 92 | case 107:
|
|---|
| 93 | parentPos = PRECEDENCE.get(parent.operator);
|
|---|
| 94 | break;
|
|---|
| 95 | case 156:
|
|---|
| 96 | case 201:
|
|---|
| 97 | parentPos = 7;
|
|---|
| 98 | }
|
|---|
| 99 | if (parentPos !== undefined) {
|
|---|
| 100 | const nodePos = nodeType === 2 ? 7 : PRECEDENCE.get(node.operator);
|
|---|
| 101 | if (parentPos > nodePos) return true;
|
|---|
| 102 | if (parentPos === nodePos && parentId === 10 && (nodePos === 11 ? parent.left === node : parent.right === node)) {
|
|---|
| 103 | return true;
|
|---|
| 104 | }
|
|---|
| 105 | if (nodeType === 1 && parentId === 107 && (nodePos === 1 && parentPos !== 1 || parentPos === 1 && nodePos !== 1)) {
|
|---|
| 106 | return true;
|
|---|
| 107 | }
|
|---|
| 108 | }
|
|---|
| 109 | return false;
|
|---|
| 110 | }
|
|---|
| 111 | function UnionTypeAnnotation(node, parent, parentId) {
|
|---|
| 112 | switch (parentId) {
|
|---|
| 113 | case 4:
|
|---|
| 114 | case 115:
|
|---|
| 115 | case 90:
|
|---|
| 116 | case 239:
|
|---|
| 117 | return true;
|
|---|
| 118 | }
|
|---|
| 119 | return false;
|
|---|
| 120 | }
|
|---|
| 121 | function OptionalIndexedAccessType(node, parent, parentId) {
|
|---|
| 122 | return parentId === 84 && parent.objectType === node;
|
|---|
| 123 | }
|
|---|
| 124 | function TSAsExpression(node, parent, parentId) {
|
|---|
| 125 | if ((parentId === 6 || parentId === 7) && parent.left === node) {
|
|---|
| 126 | return true;
|
|---|
| 127 | }
|
|---|
| 128 | if (parentId === 10 && (parent.operator === "|" || parent.operator === "&") && node === parent.left) {
|
|---|
| 129 | return true;
|
|---|
| 130 | }
|
|---|
| 131 | return BinaryLike(node, parent, parentId, 2);
|
|---|
| 132 | }
|
|---|
| 133 | function TSConditionalType(node, parent, parentId) {
|
|---|
| 134 | switch (parentId) {
|
|---|
| 135 | case 155:
|
|---|
| 136 | case 195:
|
|---|
| 137 | case 211:
|
|---|
| 138 | case 212:
|
|---|
| 139 | return true;
|
|---|
| 140 | case 175:
|
|---|
| 141 | return parent.objectType === node;
|
|---|
| 142 | case 181:
|
|---|
| 143 | case 219:
|
|---|
| 144 | return parent.types[0] === node;
|
|---|
| 145 | case 161:
|
|---|
| 146 | return parent.checkType === node || parent.extendsType === node;
|
|---|
| 147 | }
|
|---|
| 148 | return false;
|
|---|
| 149 | }
|
|---|
| 150 | function TSUnionType(node, parent, parentId) {
|
|---|
| 151 | switch (parentId) {
|
|---|
| 152 | case 181:
|
|---|
| 153 | case 211:
|
|---|
| 154 | case 155:
|
|---|
| 155 | case 195:
|
|---|
| 156 | return true;
|
|---|
| 157 | case 175:
|
|---|
| 158 | return parent.objectType === node;
|
|---|
| 159 | }
|
|---|
| 160 | return false;
|
|---|
| 161 | }
|
|---|
| 162 | function TSIntersectionType(node, parent, parentId) {
|
|---|
| 163 | return parentId === 211 || TSTypeOperator(node, parent, parentId);
|
|---|
| 164 | }
|
|---|
| 165 | function TSInferType(node, parent, parentId) {
|
|---|
| 166 | if (TSTypeOperator(node, parent, parentId)) {
|
|---|
| 167 | return true;
|
|---|
| 168 | }
|
|---|
| 169 | if ((parentId === 181 || parentId === 219) && node.typeParameter.constraint && parent.types[0] === node) {
|
|---|
| 170 | return true;
|
|---|
| 171 | }
|
|---|
| 172 | return false;
|
|---|
| 173 | }
|
|---|
| 174 | function TSTypeOperator(node, parent, parentId) {
|
|---|
| 175 | switch (parentId) {
|
|---|
| 176 | case 155:
|
|---|
| 177 | case 195:
|
|---|
| 178 | return true;
|
|---|
| 179 | case 175:
|
|---|
| 180 | if (parent.objectType === node) {
|
|---|
| 181 | return true;
|
|---|
| 182 | }
|
|---|
| 183 | }
|
|---|
| 184 | return false;
|
|---|
| 185 | }
|
|---|
| 186 | function TSInstantiationExpression(node, parent, parentId) {
|
|---|
| 187 | switch (parentId) {
|
|---|
| 188 | case 17:
|
|---|
| 189 | case 130:
|
|---|
| 190 | case 112:
|
|---|
| 191 | case 177:
|
|---|
| 192 | return (parent.typeParameters
|
|---|
| 193 | ) != null;
|
|---|
| 194 | }
|
|---|
| 195 | return false;
|
|---|
| 196 | }
|
|---|
| 197 | function TSFunctionType(node, parent, parentId) {
|
|---|
| 198 | if (TSUnionType(node, parent, parentId)) return true;
|
|---|
| 199 | return parentId === 219 || parentId === 161 && (parent.checkType === node || parent.extendsType === node);
|
|---|
| 200 | }
|
|---|
| 201 | function BinaryExpression(node, parent, parentId, tokenContext) {
|
|---|
| 202 | if (BinaryLike(node, parent, parentId, 0)) return true;
|
|---|
| 203 | return (tokenContext & _index.TokenContext.forInOrInitHeadAccumulate) > 0 && node.operator === "in";
|
|---|
| 204 | }
|
|---|
| 205 | function LogicalExpression(node, parent, parentId) {
|
|---|
| 206 | return BinaryLike(node, parent, parentId, 1);
|
|---|
| 207 | }
|
|---|
| 208 | function SequenceExpression(node, parent, parentId) {
|
|---|
| 209 | if (parentId === 144 || parentId === 133 || parentId === 108 && parent.property === node || parentId === 132 && parent.property === node || parentId === 224) {
|
|---|
| 210 | return false;
|
|---|
| 211 | }
|
|---|
| 212 | if (parentId === 21) {
|
|---|
| 213 | return true;
|
|---|
| 214 | }
|
|---|
| 215 | if (parentId === 68) {
|
|---|
| 216 | return parent.right === node;
|
|---|
| 217 | }
|
|---|
| 218 | if (parentId === 60) {
|
|---|
| 219 | return true;
|
|---|
| 220 | }
|
|---|
| 221 | return !isStatement(parent);
|
|---|
| 222 | }
|
|---|
| 223 | function YieldExpression(node, parent, parentId) {
|
|---|
| 224 | return parentId === 10 || parentId === 107 || parentId === 238 || parentId === 145 || hasPostfixPart(node, parent, parentId) || parentId === 8 && isYieldExpression(node) || parentId === 28 && node === parent.test || isClassExtendsClause(node, parent, parentId) || isTSTypeExpression(parentId);
|
|---|
| 225 | }
|
|---|
| 226 | function ClassExpression(node, parent, parentId, tokenContext) {
|
|---|
| 227 | return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)) > 0;
|
|---|
| 228 | }
|
|---|
| 229 | function UnaryLike(node, parent, parentId) {
|
|---|
| 230 | return hasPostfixPart(node, parent, parentId) || parentId === 10 && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent, parentId);
|
|---|
| 231 | }
|
|---|
| 232 | function FunctionExpression(node, parent, parentId, tokenContext) {
|
|---|
| 233 | return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)) > 0;
|
|---|
| 234 | }
|
|---|
| 235 | function ConditionalExpression(node, parent, parentId) {
|
|---|
| 236 | switch (parentId) {
|
|---|
| 237 | case 238:
|
|---|
| 238 | case 145:
|
|---|
| 239 | case 10:
|
|---|
| 240 | case 107:
|
|---|
| 241 | case 8:
|
|---|
| 242 | return true;
|
|---|
| 243 | case 28:
|
|---|
| 244 | if (parent.test === node) {
|
|---|
| 245 | return true;
|
|---|
| 246 | }
|
|---|
| 247 | }
|
|---|
| 248 | if (isTSTypeExpression(parentId)) {
|
|---|
| 249 | return true;
|
|---|
| 250 | }
|
|---|
| 251 | return UnaryLike(node, parent, parentId);
|
|---|
| 252 | }
|
|---|
| 253 | function OptionalMemberExpression(node, parent, parentId) {
|
|---|
| 254 | switch (parentId) {
|
|---|
| 255 | case 17:
|
|---|
| 256 | return parent.callee === node;
|
|---|
| 257 | case 108:
|
|---|
| 258 | return parent.object === node;
|
|---|
| 259 | }
|
|---|
| 260 | return false;
|
|---|
| 261 | }
|
|---|
| 262 | function AssignmentExpression(node, parent, parentId, tokenContext) {
|
|---|
| 263 | if (needsParenBeforeExpressionBrace(tokenContext) && node.left.type === "ObjectPattern") {
|
|---|
| 264 | return true;
|
|---|
| 265 | }
|
|---|
| 266 | return ConditionalExpression(node, parent, parentId);
|
|---|
| 267 | }
|
|---|
| 268 | function Identifier(node, parent, parentId, tokenContext, getRawIdentifier) {
|
|---|
| 269 | var _node$extra;
|
|---|
| 270 | if (getRawIdentifier && getRawIdentifier(node) !== node.name) {
|
|---|
| 271 | return false;
|
|---|
| 272 | }
|
|---|
| 273 | if (parentId === 6 && (_node$extra = node.extra) != null && _node$extra.parenthesized && parent.left === node) {
|
|---|
| 274 | const rightType = parent.right.type;
|
|---|
| 275 | if ((rightType === "FunctionExpression" || rightType === "ClassExpression") && parent.right.id == null) {
|
|---|
| 276 | return true;
|
|---|
| 277 | }
|
|---|
| 278 | }
|
|---|
| 279 | if (tokenContext & _index.TokenContext.forOfHead || (parentId === 108 || parentId === 132) && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) {
|
|---|
| 280 | if (node.name === "let") {
|
|---|
| 281 | const isFollowedByBracket = isMemberExpression(parent, {
|
|---|
| 282 | object: node,
|
|---|
| 283 | computed: true
|
|---|
| 284 | }) || isOptionalMemberExpression(parent, {
|
|---|
| 285 | object: node,
|
|---|
| 286 | computed: true,
|
|---|
| 287 | optional: false
|
|---|
| 288 | });
|
|---|
| 289 | if (isFollowedByBracket && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) {
|
|---|
| 290 | return true;
|
|---|
| 291 | }
|
|---|
| 292 | return (tokenContext & _index.TokenContext.forOfHead) > 0;
|
|---|
| 293 | }
|
|---|
| 294 | }
|
|---|
| 295 | return parentId === 68 && parent.left === node && node.name === "async" && !parent.await;
|
|---|
| 296 | }
|
|---|
| 297 |
|
|---|
| 298 | //# sourceMappingURL=parentheses.js.map
|
|---|