Spaces:
Sleeping
Sleeping
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| var _parseError = require("../parse-error"); | |
| const { | |
| defineProperty | |
| } = Object; | |
| const toUnenumerable = (object, key) => defineProperty(object, key, { | |
| enumerable: false, | |
| value: object[key] | |
| }); | |
| function toESTreeLocation(node) { | |
| node.loc.start && toUnenumerable(node.loc.start, "index"); | |
| node.loc.end && toUnenumerable(node.loc.end, "index"); | |
| return node; | |
| } | |
| var _default = superClass => class ESTreeParserMixin extends superClass { | |
| parse() { | |
| const file = toESTreeLocation(super.parse()); | |
| if (this.options.tokens) { | |
| file.tokens = file.tokens.map(toESTreeLocation); | |
| } | |
| return file; | |
| } | |
| parseRegExpLiteral({ | |
| pattern, | |
| flags | |
| }) { | |
| let regex = null; | |
| try { | |
| regex = new RegExp(pattern, flags); | |
| } catch (e) {} | |
| const node = this.estreeParseLiteral(regex); | |
| node.regex = { | |
| pattern, | |
| flags | |
| }; | |
| return node; | |
| } | |
| parseBigIntLiteral(value) { | |
| let bigInt; | |
| try { | |
| bigInt = BigInt(value); | |
| } catch (_unused) { | |
| bigInt = null; | |
| } | |
| const node = this.estreeParseLiteral(bigInt); | |
| node.bigint = String(node.value || value); | |
| return node; | |
| } | |
| parseDecimalLiteral(value) { | |
| const decimal = null; | |
| const node = this.estreeParseLiteral(decimal); | |
| node.decimal = String(node.value || value); | |
| return node; | |
| } | |
| estreeParseLiteral(value) { | |
| return this.parseLiteral(value, "Literal"); | |
| } | |
| parseStringLiteral(value) { | |
| return this.estreeParseLiteral(value); | |
| } | |
| parseNumericLiteral(value) { | |
| return this.estreeParseLiteral(value); | |
| } | |
| parseNullLiteral() { | |
| return this.estreeParseLiteral(null); | |
| } | |
| parseBooleanLiteral(value) { | |
| return this.estreeParseLiteral(value); | |
| } | |
| directiveToStmt(directive) { | |
| const expression = directive.value; | |
| delete directive.value; | |
| expression.type = "Literal"; | |
| expression.raw = expression.extra.raw; | |
| expression.value = expression.extra.expressionValue; | |
| const stmt = directive; | |
| stmt.type = "ExpressionStatement"; | |
| stmt.expression = expression; | |
| stmt.directive = expression.extra.rawValue; | |
| delete expression.extra; | |
| return stmt; | |
| } | |
| initFunction(node, isAsync) { | |
| super.initFunction(node, isAsync); | |
| node.expression = false; | |
| } | |
| checkDeclaration(node) { | |
| if (node != null && this.isObjectProperty(node)) { | |
| this.checkDeclaration(node.value); | |
| } else { | |
| super.checkDeclaration(node); | |
| } | |
| } | |
| getObjectOrClassMethodParams(method) { | |
| return method.value.params; | |
| } | |
| isValidDirective(stmt) { | |
| var _stmt$expression$extr; | |
| return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); | |
| } | |
| parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { | |
| super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); | |
| const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); | |
| node.body = directiveStatements.concat(node.body); | |
| delete node.directives; | |
| } | |
| pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { | |
| this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); | |
| if (method.typeParameters) { | |
| method.value.typeParameters = method.typeParameters; | |
| delete method.typeParameters; | |
| } | |
| classBody.body.push(method); | |
| } | |
| parsePrivateName() { | |
| const node = super.parsePrivateName(); | |
| { | |
| if (!this.getPluginOption("estree", "classFeatures")) { | |
| return node; | |
| } | |
| } | |
| return this.convertPrivateNameToPrivateIdentifier(node); | |
| } | |
| convertPrivateNameToPrivateIdentifier(node) { | |
| const name = super.getPrivateNameSV(node); | |
| node = node; | |
| delete node.id; | |
| node.name = name; | |
| node.type = "PrivateIdentifier"; | |
| return node; | |
| } | |
| isPrivateName(node) { | |
| { | |
| if (!this.getPluginOption("estree", "classFeatures")) { | |
| return super.isPrivateName(node); | |
| } | |
| } | |
| return node.type === "PrivateIdentifier"; | |
| } | |
| getPrivateNameSV(node) { | |
| { | |
| if (!this.getPluginOption("estree", "classFeatures")) { | |
| return super.getPrivateNameSV(node); | |
| } | |
| } | |
| return node.name; | |
| } | |
| parseLiteral(value, type) { | |
| const node = super.parseLiteral(value, type); | |
| node.raw = node.extra.raw; | |
| delete node.extra; | |
| return node; | |
| } | |
| parseFunctionBody(node, allowExpression, isMethod = false) { | |
| super.parseFunctionBody(node, allowExpression, isMethod); | |
| node.expression = node.body.type !== "BlockStatement"; | |
| } | |
| parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { | |
| let funcNode = this.startNode(); | |
| funcNode.kind = node.kind; | |
| funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); | |
| funcNode.type = "FunctionExpression"; | |
| delete funcNode.kind; | |
| node.value = funcNode; | |
| if (type === "ClassPrivateMethod") { | |
| node.computed = false; | |
| } | |
| return this.finishNode(node, "MethodDefinition"); | |
| } | |
| parseClassProperty(...args) { | |
| const propertyNode = super.parseClassProperty(...args); | |
| { | |
| if (!this.getPluginOption("estree", "classFeatures")) { | |
| return propertyNode; | |
| } | |
| } | |
| propertyNode.type = "PropertyDefinition"; | |
| return propertyNode; | |
| } | |
| parseClassPrivateProperty(...args) { | |
| const propertyNode = super.parseClassPrivateProperty(...args); | |
| { | |
| if (!this.getPluginOption("estree", "classFeatures")) { | |
| return propertyNode; | |
| } | |
| } | |
| propertyNode.type = "PropertyDefinition"; | |
| propertyNode.computed = false; | |
| return propertyNode; | |
| } | |
| parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { | |
| const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor); | |
| if (node) { | |
| node.type = "Property"; | |
| if (node.kind === "method") { | |
| node.kind = "init"; | |
| } | |
| node.shorthand = false; | |
| } | |
| return node; | |
| } | |
| parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { | |
| const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); | |
| if (node) { | |
| node.kind = "init"; | |
| node.type = "Property"; | |
| } | |
| return node; | |
| } | |
| isValidLVal(type, isUnparenthesizedInAssign, binding) { | |
| return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); | |
| } | |
| isAssignable(node, isBinding) { | |
| if (node != null && this.isObjectProperty(node)) { | |
| return this.isAssignable(node.value, isBinding); | |
| } | |
| return super.isAssignable(node, isBinding); | |
| } | |
| toAssignable(node, isLHS = false) { | |
| if (node != null && this.isObjectProperty(node)) { | |
| const { | |
| key, | |
| value | |
| } = node; | |
| if (this.isPrivateName(key)) { | |
| this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); | |
| } | |
| this.toAssignable(value, isLHS); | |
| } else { | |
| super.toAssignable(node, isLHS); | |
| } | |
| } | |
| toAssignableObjectExpressionProp(prop, isLast, isLHS) { | |
| if (prop.kind === "get" || prop.kind === "set") { | |
| this.raise(_parseError.Errors.PatternHasAccessor, { | |
| at: prop.key | |
| }); | |
| } else if (prop.method) { | |
| this.raise(_parseError.Errors.PatternHasMethod, { | |
| at: prop.key | |
| }); | |
| } else { | |
| super.toAssignableObjectExpressionProp(prop, isLast, isLHS); | |
| } | |
| } | |
| finishCallExpression(unfinished, optional) { | |
| const node = super.finishCallExpression(unfinished, optional); | |
| if (node.callee.type === "Import") { | |
| node.type = "ImportExpression"; | |
| node.source = node.arguments[0]; | |
| if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { | |
| var _node$arguments$; | |
| node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null; | |
| } | |
| delete node.arguments; | |
| delete node.callee; | |
| } | |
| return node; | |
| } | |
| toReferencedArguments(node) { | |
| if (node.type === "ImportExpression") { | |
| return; | |
| } | |
| super.toReferencedArguments(node); | |
| } | |
| parseExport(unfinished, decorators) { | |
| const exportStartLoc = this.state.lastTokStartLoc; | |
| const node = super.parseExport(unfinished, decorators); | |
| switch (node.type) { | |
| case "ExportAllDeclaration": | |
| node.exported = null; | |
| break; | |
| case "ExportNamedDeclaration": | |
| if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { | |
| node.type = "ExportAllDeclaration"; | |
| node.exported = node.specifiers[0].exported; | |
| delete node.specifiers; | |
| } | |
| case "ExportDefaultDeclaration": | |
| { | |
| var _declaration$decorato; | |
| const { | |
| declaration | |
| } = node; | |
| if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { | |
| this.resetStartLocation(node, exportStartLoc); | |
| } | |
| } | |
| break; | |
| } | |
| return node; | |
| } | |
| parseSubscript(base, startLoc, noCalls, state) { | |
| const node = super.parseSubscript(base, startLoc, noCalls, state); | |
| if (state.optionalChainMember) { | |
| if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") { | |
| node.type = node.type.substring(8); | |
| } | |
| if (state.stop) { | |
| const chain = this.startNodeAtNode(node); | |
| chain.expression = node; | |
| return this.finishNode(chain, "ChainExpression"); | |
| } | |
| } else if (node.type === "MemberExpression" || node.type === "CallExpression") { | |
| node.optional = false; | |
| } | |
| return node; | |
| } | |
| hasPropertyAsPrivateName(node) { | |
| if (node.type === "ChainExpression") { | |
| node = node.expression; | |
| } | |
| return super.hasPropertyAsPrivateName(node); | |
| } | |
| isObjectProperty(node) { | |
| return node.type === "Property" && node.kind === "init" && !node.method; | |
| } | |
| isObjectMethod(node) { | |
| return node.method || node.kind === "get" || node.kind === "set"; | |
| } | |
| finishNodeAt(node, type, endLoc) { | |
| return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); | |
| } | |
| resetStartLocation(node, startLoc) { | |
| super.resetStartLocation(node, startLoc); | |
| toESTreeLocation(node); | |
| } | |
| resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { | |
| super.resetEndLocation(node, endLoc); | |
| toESTreeLocation(node); | |
| } | |
| }; | |
| exports.default = _default; | |
| //# sourceMappingURL=estree.js.map | |