884 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			884 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
export interface Node {
 | 
						|
  start: number
 | 
						|
  end: number
 | 
						|
  type: string
 | 
						|
  range?: [number, number]
 | 
						|
  loc?: SourceLocation | null
 | 
						|
}
 | 
						|
 | 
						|
export interface SourceLocation {
 | 
						|
  source?: string | null
 | 
						|
  start: Position
 | 
						|
  end: Position
 | 
						|
}
 | 
						|
 | 
						|
export interface Position {
 | 
						|
  /** 1-based */
 | 
						|
  line: number
 | 
						|
  /** 0-based */
 | 
						|
  column: number
 | 
						|
}
 | 
						|
 | 
						|
export interface Identifier extends Node {
 | 
						|
  type: "Identifier"
 | 
						|
  name: string
 | 
						|
}
 | 
						|
 | 
						|
export interface Literal extends Node {
 | 
						|
  type: "Literal"
 | 
						|
  value?: string | boolean | null | number | RegExp | bigint
 | 
						|
  raw?: string
 | 
						|
  regex?: {
 | 
						|
    pattern: string
 | 
						|
    flags: string
 | 
						|
  }
 | 
						|
  bigint?: string
 | 
						|
}
 | 
						|
 | 
						|
export interface Program extends Node {
 | 
						|
  type: "Program"
 | 
						|
  body: Array<Statement | ModuleDeclaration>
 | 
						|
  sourceType: "script" | "module"
 | 
						|
}
 | 
						|
 | 
						|
export interface Function extends Node {
 | 
						|
  id?: Identifier | null
 | 
						|
  params: Array<Pattern>
 | 
						|
  body: BlockStatement | Expression
 | 
						|
  generator: boolean
 | 
						|
  expression: boolean
 | 
						|
  async: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface ExpressionStatement extends Node {
 | 
						|
  type: "ExpressionStatement"
 | 
						|
  expression: Expression | Literal
 | 
						|
  directive?: string
 | 
						|
}
 | 
						|
 | 
						|
export interface BlockStatement extends Node {
 | 
						|
  type: "BlockStatement"
 | 
						|
  body: Array<Statement>
 | 
						|
}
 | 
						|
 | 
						|
export interface EmptyStatement extends Node {
 | 
						|
  type: "EmptyStatement"
 | 
						|
}
 | 
						|
 | 
						|
export interface DebuggerStatement extends Node {
 | 
						|
  type: "DebuggerStatement"
 | 
						|
}
 | 
						|
 | 
						|
export interface WithStatement extends Node {
 | 
						|
  type: "WithStatement"
 | 
						|
  object: Expression
 | 
						|
  body: Statement
 | 
						|
}
 | 
						|
 | 
						|
export interface ReturnStatement extends Node {
 | 
						|
  type: "ReturnStatement"
 | 
						|
  argument?: Expression | null
 | 
						|
}
 | 
						|
 | 
						|
export interface LabeledStatement extends Node {
 | 
						|
  type: "LabeledStatement"
 | 
						|
  label: Identifier
 | 
						|
  body: Statement
 | 
						|
}
 | 
						|
 | 
						|
export interface BreakStatement extends Node {
 | 
						|
  type: "BreakStatement"
 | 
						|
  label?: Identifier | null
 | 
						|
}
 | 
						|
 | 
						|
export interface ContinueStatement extends Node {
 | 
						|
  type: "ContinueStatement"
 | 
						|
  label?: Identifier | null
 | 
						|
}
 | 
						|
 | 
						|
export interface IfStatement extends Node {
 | 
						|
  type: "IfStatement"
 | 
						|
  test: Expression
 | 
						|
  consequent: Statement
 | 
						|
  alternate?: Statement | null
 | 
						|
}
 | 
						|
 | 
						|
export interface SwitchStatement extends Node {
 | 
						|
  type: "SwitchStatement"
 | 
						|
  discriminant: Expression
 | 
						|
  cases: Array<SwitchCase>
 | 
						|
}
 | 
						|
 | 
						|
export interface SwitchCase extends Node {
 | 
						|
  type: "SwitchCase"
 | 
						|
  test?: Expression | null
 | 
						|
  consequent: Array<Statement>
 | 
						|
}
 | 
						|
 | 
						|
export interface ThrowStatement extends Node {
 | 
						|
  type: "ThrowStatement"
 | 
						|
  argument: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface TryStatement extends Node {
 | 
						|
  type: "TryStatement"
 | 
						|
  block: BlockStatement
 | 
						|
  handler?: CatchClause | null
 | 
						|
  finalizer?: BlockStatement | null
 | 
						|
}
 | 
						|
 | 
						|
export interface CatchClause extends Node {
 | 
						|
  type: "CatchClause"
 | 
						|
  param?: Pattern | null
 | 
						|
  body: BlockStatement
 | 
						|
}
 | 
						|
 | 
						|
export interface WhileStatement extends Node {
 | 
						|
  type: "WhileStatement"
 | 
						|
  test: Expression
 | 
						|
  body: Statement
 | 
						|
}
 | 
						|
 | 
						|
export interface DoWhileStatement extends Node {
 | 
						|
  type: "DoWhileStatement"
 | 
						|
  body: Statement
 | 
						|
  test: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface ForStatement extends Node {
 | 
						|
  type: "ForStatement"
 | 
						|
  init?: VariableDeclaration | Expression | null
 | 
						|
  test?: Expression | null
 | 
						|
  update?: Expression | null
 | 
						|
  body: Statement
 | 
						|
}
 | 
						|
 | 
						|
export interface ForInStatement extends Node {
 | 
						|
  type: "ForInStatement"
 | 
						|
  left: VariableDeclaration | Pattern
 | 
						|
  right: Expression
 | 
						|
  body: Statement
 | 
						|
}
 | 
						|
 | 
						|
export interface FunctionDeclaration extends Function {
 | 
						|
  type: "FunctionDeclaration"
 | 
						|
  id: Identifier
 | 
						|
  body: BlockStatement
 | 
						|
}
 | 
						|
 | 
						|
export interface VariableDeclaration extends Node {
 | 
						|
  type: "VariableDeclaration"
 | 
						|
  declarations: Array<VariableDeclarator>
 | 
						|
  kind: "var" | "let" | "const" | "using" | "await using"
 | 
						|
}
 | 
						|
 | 
						|
export interface VariableDeclarator extends Node {
 | 
						|
  type: "VariableDeclarator"
 | 
						|
  id: Pattern
 | 
						|
  init?: Expression | null
 | 
						|
}
 | 
						|
 | 
						|
export interface ThisExpression extends Node {
 | 
						|
  type: "ThisExpression"
 | 
						|
}
 | 
						|
 | 
						|
export interface ArrayExpression extends Node {
 | 
						|
  type: "ArrayExpression"
 | 
						|
  elements: Array<Expression | SpreadElement | null>
 | 
						|
}
 | 
						|
 | 
						|
export interface ObjectExpression extends Node {
 | 
						|
  type: "ObjectExpression"
 | 
						|
  properties: Array<Property | SpreadElement>
 | 
						|
}
 | 
						|
 | 
						|
export interface Property extends Node {
 | 
						|
  type: "Property"
 | 
						|
  key: Expression
 | 
						|
  value: Expression
 | 
						|
  kind: "init" | "get" | "set"
 | 
						|
  method: boolean
 | 
						|
  shorthand: boolean
 | 
						|
  computed: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface FunctionExpression extends Function {
 | 
						|
  type: "FunctionExpression"
 | 
						|
  body: BlockStatement
 | 
						|
}
 | 
						|
 | 
						|
export interface UnaryExpression extends Node {
 | 
						|
  type: "UnaryExpression"
 | 
						|
  operator: UnaryOperator
 | 
						|
  prefix: boolean
 | 
						|
  argument: Expression
 | 
						|
}
 | 
						|
 | 
						|
export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete"
 | 
						|
 | 
						|
export interface UpdateExpression extends Node {
 | 
						|
  type: "UpdateExpression"
 | 
						|
  operator: UpdateOperator
 | 
						|
  argument: Expression
 | 
						|
  prefix: boolean
 | 
						|
}
 | 
						|
 | 
						|
export type UpdateOperator = "++" | "--"
 | 
						|
 | 
						|
export interface BinaryExpression extends Node {
 | 
						|
  type: "BinaryExpression"
 | 
						|
  operator: BinaryOperator
 | 
						|
  left: Expression | PrivateIdentifier
 | 
						|
  right: Expression
 | 
						|
}
 | 
						|
 | 
						|
export type BinaryOperator = "==" | "!=" | "===" | "!==" | "<" | "<=" | ">" | ">=" | "<<" | ">>" | ">>>" | "+" | "-" | "*" | "/" | "%" | "|" | "^" | "&" | "in" | "instanceof" | "**"
 | 
						|
 | 
						|
export interface AssignmentExpression extends Node {
 | 
						|
  type: "AssignmentExpression"
 | 
						|
  operator: AssignmentOperator
 | 
						|
  left: Pattern
 | 
						|
  right: Expression
 | 
						|
}
 | 
						|
 | 
						|
export type AssignmentOperator = "=" | "+=" | "-=" | "*=" | "/=" | "%=" | "<<=" | ">>=" | ">>>=" | "|=" | "^=" | "&=" | "**=" | "||=" | "&&=" | "??="
 | 
						|
 | 
						|
export interface LogicalExpression extends Node {
 | 
						|
  type: "LogicalExpression"
 | 
						|
  operator: LogicalOperator
 | 
						|
  left: Expression
 | 
						|
  right: Expression
 | 
						|
}
 | 
						|
 | 
						|
export type LogicalOperator = "||" | "&&" | "??"
 | 
						|
 | 
						|
export interface MemberExpression extends Node {
 | 
						|
  type: "MemberExpression"
 | 
						|
  object: Expression | Super
 | 
						|
  property: Expression | PrivateIdentifier
 | 
						|
  computed: boolean
 | 
						|
  optional: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface ConditionalExpression extends Node {
 | 
						|
  type: "ConditionalExpression"
 | 
						|
  test: Expression
 | 
						|
  alternate: Expression
 | 
						|
  consequent: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface CallExpression extends Node {
 | 
						|
  type: "CallExpression"
 | 
						|
  callee: Expression | Super
 | 
						|
  arguments: Array<Expression | SpreadElement>
 | 
						|
  optional: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface NewExpression extends Node {
 | 
						|
  type: "NewExpression"
 | 
						|
  callee: Expression
 | 
						|
  arguments: Array<Expression | SpreadElement>
 | 
						|
}
 | 
						|
 | 
						|
export interface SequenceExpression extends Node {
 | 
						|
  type: "SequenceExpression"
 | 
						|
  expressions: Array<Expression>
 | 
						|
}
 | 
						|
 | 
						|
export interface ForOfStatement extends Node {
 | 
						|
  type: "ForOfStatement"
 | 
						|
  left: VariableDeclaration | Pattern
 | 
						|
  right: Expression
 | 
						|
  body: Statement
 | 
						|
  await: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface Super extends Node {
 | 
						|
  type: "Super"
 | 
						|
}
 | 
						|
 | 
						|
export interface SpreadElement extends Node {
 | 
						|
  type: "SpreadElement"
 | 
						|
  argument: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface ArrowFunctionExpression extends Function {
 | 
						|
  type: "ArrowFunctionExpression"
 | 
						|
}
 | 
						|
 | 
						|
export interface YieldExpression extends Node {
 | 
						|
  type: "YieldExpression"
 | 
						|
  argument?: Expression | null
 | 
						|
  delegate: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface TemplateLiteral extends Node {
 | 
						|
  type: "TemplateLiteral"
 | 
						|
  quasis: Array<TemplateElement>
 | 
						|
  expressions: Array<Expression>
 | 
						|
}
 | 
						|
 | 
						|
export interface TaggedTemplateExpression extends Node {
 | 
						|
  type: "TaggedTemplateExpression"
 | 
						|
  tag: Expression
 | 
						|
  quasi: TemplateLiteral
 | 
						|
}
 | 
						|
 | 
						|
export interface TemplateElement extends Node {
 | 
						|
  type: "TemplateElement"
 | 
						|
  tail: boolean
 | 
						|
  value: {
 | 
						|
    cooked?: string | null
 | 
						|
    raw: string
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export interface AssignmentProperty extends Node {
 | 
						|
  type: "Property"
 | 
						|
  key: Expression
 | 
						|
  value: Pattern
 | 
						|
  kind: "init"
 | 
						|
  method: false
 | 
						|
  shorthand: boolean
 | 
						|
  computed: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface ObjectPattern extends Node {
 | 
						|
  type: "ObjectPattern"
 | 
						|
  properties: Array<AssignmentProperty | RestElement>
 | 
						|
}
 | 
						|
 | 
						|
export interface ArrayPattern extends Node {
 | 
						|
  type: "ArrayPattern"
 | 
						|
  elements: Array<Pattern | null>
 | 
						|
}
 | 
						|
 | 
						|
export interface RestElement extends Node {
 | 
						|
  type: "RestElement"
 | 
						|
  argument: Pattern
 | 
						|
}
 | 
						|
 | 
						|
export interface AssignmentPattern extends Node {
 | 
						|
  type: "AssignmentPattern"
 | 
						|
  left: Pattern
 | 
						|
  right: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface Class extends Node {
 | 
						|
  id?: Identifier | null
 | 
						|
  superClass?: Expression | null
 | 
						|
  body: ClassBody
 | 
						|
}
 | 
						|
 | 
						|
export interface ClassBody extends Node {
 | 
						|
  type: "ClassBody"
 | 
						|
  body: Array<MethodDefinition | PropertyDefinition | StaticBlock>
 | 
						|
}
 | 
						|
 | 
						|
export interface MethodDefinition extends Node {
 | 
						|
  type: "MethodDefinition"
 | 
						|
  key: Expression | PrivateIdentifier
 | 
						|
  value: FunctionExpression
 | 
						|
  kind: "constructor" | "method" | "get" | "set"
 | 
						|
  computed: boolean
 | 
						|
  static: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface ClassDeclaration extends Class {
 | 
						|
  type: "ClassDeclaration"
 | 
						|
  id: Identifier
 | 
						|
}
 | 
						|
 | 
						|
export interface ClassExpression extends Class {
 | 
						|
  type: "ClassExpression"
 | 
						|
}
 | 
						|
 | 
						|
export interface MetaProperty extends Node {
 | 
						|
  type: "MetaProperty"
 | 
						|
  meta: Identifier
 | 
						|
  property: Identifier
 | 
						|
}
 | 
						|
 | 
						|
export interface ImportDeclaration extends Node {
 | 
						|
  type: "ImportDeclaration"
 | 
						|
  specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>
 | 
						|
  source: Literal
 | 
						|
  attributes: Array<ImportAttribute>
 | 
						|
}
 | 
						|
 | 
						|
export interface ImportSpecifier extends Node {
 | 
						|
  type: "ImportSpecifier"
 | 
						|
  imported: Identifier | Literal
 | 
						|
  local: Identifier
 | 
						|
}
 | 
						|
 | 
						|
export interface ImportDefaultSpecifier extends Node {
 | 
						|
  type: "ImportDefaultSpecifier"
 | 
						|
  local: Identifier
 | 
						|
}
 | 
						|
 | 
						|
export interface ImportNamespaceSpecifier extends Node {
 | 
						|
  type: "ImportNamespaceSpecifier"
 | 
						|
  local: Identifier
 | 
						|
}
 | 
						|
 | 
						|
export interface ImportAttribute extends Node {
 | 
						|
  type: "ImportAttribute"
 | 
						|
  key: Identifier | Literal
 | 
						|
  value: Literal
 | 
						|
}
 | 
						|
 | 
						|
export interface ExportNamedDeclaration extends Node {
 | 
						|
  type: "ExportNamedDeclaration"
 | 
						|
  declaration?: Declaration | null
 | 
						|
  specifiers: Array<ExportSpecifier>
 | 
						|
  source?: Literal | null
 | 
						|
  attributes: Array<ImportAttribute>
 | 
						|
}
 | 
						|
 | 
						|
export interface ExportSpecifier extends Node {
 | 
						|
  type: "ExportSpecifier"
 | 
						|
  exported: Identifier | Literal
 | 
						|
  local: Identifier | Literal
 | 
						|
}
 | 
						|
 | 
						|
export interface AnonymousFunctionDeclaration extends Function {
 | 
						|
  type: "FunctionDeclaration"
 | 
						|
  id: null
 | 
						|
  body: BlockStatement
 | 
						|
}
 | 
						|
 | 
						|
export interface AnonymousClassDeclaration extends Class {
 | 
						|
  type: "ClassDeclaration"
 | 
						|
  id: null
 | 
						|
}
 | 
						|
 | 
						|
export interface ExportDefaultDeclaration extends Node {
 | 
						|
  type: "ExportDefaultDeclaration"
 | 
						|
  declaration: AnonymousFunctionDeclaration | FunctionDeclaration | AnonymousClassDeclaration | ClassDeclaration | Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface ExportAllDeclaration extends Node {
 | 
						|
  type: "ExportAllDeclaration"
 | 
						|
  source: Literal
 | 
						|
  exported?: Identifier | Literal | null
 | 
						|
  attributes: Array<ImportAttribute>
 | 
						|
}
 | 
						|
 | 
						|
export interface AwaitExpression extends Node {
 | 
						|
  type: "AwaitExpression"
 | 
						|
  argument: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface ChainExpression extends Node {
 | 
						|
  type: "ChainExpression"
 | 
						|
  expression: MemberExpression | CallExpression
 | 
						|
}
 | 
						|
 | 
						|
export interface ImportExpression extends Node {
 | 
						|
  type: "ImportExpression"
 | 
						|
  source: Expression
 | 
						|
  options: Expression | null
 | 
						|
}
 | 
						|
 | 
						|
export interface ParenthesizedExpression extends Node {
 | 
						|
  type: "ParenthesizedExpression"
 | 
						|
  expression: Expression
 | 
						|
}
 | 
						|
 | 
						|
export interface PropertyDefinition extends Node {
 | 
						|
  type: "PropertyDefinition"
 | 
						|
  key: Expression | PrivateIdentifier
 | 
						|
  value?: Expression | null
 | 
						|
  computed: boolean
 | 
						|
  static: boolean
 | 
						|
}
 | 
						|
 | 
						|
export interface PrivateIdentifier extends Node {
 | 
						|
  type: "PrivateIdentifier"
 | 
						|
  name: string
 | 
						|
}
 | 
						|
 | 
						|
export interface StaticBlock extends Node {
 | 
						|
  type: "StaticBlock"
 | 
						|
  body: Array<Statement>
 | 
						|
}
 | 
						|
 | 
						|
export type Statement = 
 | 
						|
| ExpressionStatement
 | 
						|
| BlockStatement
 | 
						|
| EmptyStatement
 | 
						|
| DebuggerStatement
 | 
						|
| WithStatement
 | 
						|
| ReturnStatement
 | 
						|
| LabeledStatement
 | 
						|
| BreakStatement
 | 
						|
| ContinueStatement
 | 
						|
| IfStatement
 | 
						|
| SwitchStatement
 | 
						|
| ThrowStatement
 | 
						|
| TryStatement
 | 
						|
| WhileStatement
 | 
						|
| DoWhileStatement
 | 
						|
| ForStatement
 | 
						|
| ForInStatement
 | 
						|
| ForOfStatement
 | 
						|
| Declaration
 | 
						|
 | 
						|
export type Declaration = 
 | 
						|
| FunctionDeclaration
 | 
						|
| VariableDeclaration
 | 
						|
| ClassDeclaration
 | 
						|
 | 
						|
export type Expression = 
 | 
						|
| Identifier
 | 
						|
| Literal
 | 
						|
| ThisExpression
 | 
						|
| ArrayExpression
 | 
						|
| ObjectExpression
 | 
						|
| FunctionExpression
 | 
						|
| UnaryExpression
 | 
						|
| UpdateExpression
 | 
						|
| BinaryExpression
 | 
						|
| AssignmentExpression
 | 
						|
| LogicalExpression
 | 
						|
| MemberExpression
 | 
						|
| ConditionalExpression
 | 
						|
| CallExpression
 | 
						|
| NewExpression
 | 
						|
| SequenceExpression
 | 
						|
| ArrowFunctionExpression
 | 
						|
| YieldExpression
 | 
						|
| TemplateLiteral
 | 
						|
| TaggedTemplateExpression
 | 
						|
| ClassExpression
 | 
						|
| MetaProperty
 | 
						|
| AwaitExpression
 | 
						|
| ChainExpression
 | 
						|
| ImportExpression
 | 
						|
| ParenthesizedExpression
 | 
						|
 | 
						|
export type Pattern = 
 | 
						|
| Identifier
 | 
						|
| MemberExpression
 | 
						|
| ObjectPattern
 | 
						|
| ArrayPattern
 | 
						|
| RestElement
 | 
						|
| AssignmentPattern
 | 
						|
 | 
						|
export type ModuleDeclaration = 
 | 
						|
| ImportDeclaration
 | 
						|
| ExportNamedDeclaration
 | 
						|
| ExportDefaultDeclaration
 | 
						|
| ExportAllDeclaration
 | 
						|
 | 
						|
/**
 | 
						|
  * This interface is only used for defining {@link AnyNode}.
 | 
						|
  * It exists so that it can be extended by plugins:
 | 
						|
  *
 | 
						|
  * @example
 | 
						|
  * ```typescript
 | 
						|
  * declare module 'acorn' {
 | 
						|
  *   interface NodeTypes {
 | 
						|
  *     pluginName: FirstNode | SecondNode | ThirdNode | ... | LastNode
 | 
						|
  *   }
 | 
						|
  * }
 | 
						|
  * ```
 | 
						|
  */
 | 
						|
interface NodeTypes {
 | 
						|
  core: Statement | Expression | Declaration | ModuleDeclaration | Literal | Program | SwitchCase | CatchClause | Property | Super | SpreadElement | TemplateElement | AssignmentProperty | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | ClassBody | MethodDefinition | MetaProperty | ImportAttribute | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier | AnonymousFunctionDeclaration | AnonymousClassDeclaration | PropertyDefinition | PrivateIdentifier | StaticBlock | VariableDeclarator
 | 
						|
}
 | 
						|
 | 
						|
export type AnyNode = NodeTypes[keyof NodeTypes]
 | 
						|
 | 
						|
export function parse(input: string, options: Options): Program
 | 
						|
 | 
						|
export function parseExpressionAt(input: string, pos: number, options: Options): Expression
 | 
						|
 | 
						|
export function tokenizer(input: string, options: Options): {
 | 
						|
  getToken(): Token
 | 
						|
  [Symbol.iterator](): Iterator<Token>
 | 
						|
}
 | 
						|
 | 
						|
export type ecmaVersion = 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | "latest"
 | 
						|
 | 
						|
export interface Options {
 | 
						|
  /**
 | 
						|
   * `ecmaVersion` indicates the ECMAScript version to parse. Can be a
 | 
						|
   * number, either in year (`2022`) or plain version number (`6`) form,
 | 
						|
   * or `"latest"` (the latest the library supports). This influences
 | 
						|
   * support for strict mode, the set of reserved words, and support for
 | 
						|
   * new syntax features.
 | 
						|
   */
 | 
						|
  ecmaVersion: ecmaVersion
 | 
						|
 | 
						|
  /**
 | 
						|
   * `sourceType` indicates the mode the code should be parsed in.
 | 
						|
   * Can be either `"script"` or `"module"`. This influences global
 | 
						|
   * strict mode and parsing of `import` and `export` declarations.
 | 
						|
   */
 | 
						|
  sourceType?: "script" | "module"
 | 
						|
 | 
						|
  /**
 | 
						|
   * a callback that will be called when a semicolon is automatically inserted.
 | 
						|
   * @param lastTokEnd the position of the comma as an offset
 | 
						|
   * @param lastTokEndLoc location if {@link locations} is enabled
 | 
						|
   */
 | 
						|
  onInsertedSemicolon?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
 | 
						|
 | 
						|
  /**
 | 
						|
   * similar to `onInsertedSemicolon`, but for trailing commas
 | 
						|
   * @param lastTokEnd the position of the comma as an offset
 | 
						|
   * @param lastTokEndLoc location if `locations` is enabled
 | 
						|
   */
 | 
						|
  onTrailingComma?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
 | 
						|
 | 
						|
  /**
 | 
						|
   * By default, reserved words are only enforced if ecmaVersion >= 5.
 | 
						|
   * Set `allowReserved` to a boolean value to explicitly turn this on
 | 
						|
   * an off. When this option has the value "never", reserved words
 | 
						|
   * and keywords can also not be used as property names.
 | 
						|
   */
 | 
						|
  allowReserved?: boolean | "never"
 | 
						|
 | 
						|
  /** 
 | 
						|
   * When enabled, a return at the top level is not considered an error.
 | 
						|
   */
 | 
						|
  allowReturnOutsideFunction?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * When enabled, import/export statements are not constrained to
 | 
						|
   * appearing at the top of the program, and an import.meta expression
 | 
						|
   * in a script isn't considered an error.
 | 
						|
   */
 | 
						|
  allowImportExportEverywhere?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * By default, `await` identifiers are allowed to appear at the top-level scope only if {@link ecmaVersion} >= 2022.
 | 
						|
   * When enabled, await identifiers are allowed to appear at the top-level scope,
 | 
						|
   * but they are still not allowed in non-async functions.
 | 
						|
   */
 | 
						|
  allowAwaitOutsideFunction?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * When enabled, super identifiers are not constrained to
 | 
						|
   * appearing in methods and do not raise an error when they appear elsewhere.
 | 
						|
   */
 | 
						|
  allowSuperOutsideMethod?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * When enabled, hashbang directive in the beginning of file is
 | 
						|
   * allowed and treated as a line comment. Enabled by default when
 | 
						|
   * {@link ecmaVersion} >= 2023.
 | 
						|
   */
 | 
						|
  allowHashBang?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * By default, the parser will verify that private properties are
 | 
						|
   * only used in places where they are valid and have been declared.
 | 
						|
   * Set this to false to turn such checks off.
 | 
						|
   */
 | 
						|
  checkPrivateFields?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * When `locations` is on, `loc` properties holding objects with
 | 
						|
   * `start` and `end` properties as {@link Position} objects will be attached to the
 | 
						|
   * nodes.
 | 
						|
   */
 | 
						|
  locations?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * a callback that will cause Acorn to call that export function with object in the same
 | 
						|
   * format as tokens returned from `tokenizer().getToken()`. Note
 | 
						|
   * that you are not allowed to call the parser from the
 | 
						|
   * callback—that will corrupt its internal state.
 | 
						|
   */
 | 
						|
  onToken?: ((token: Token) => void) | Token[]
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * This takes a export function or an array.
 | 
						|
   * 
 | 
						|
   * When a export function is passed, Acorn will call that export function with `(block, text, start,
 | 
						|
   * end)` parameters whenever a comment is skipped. `block` is a
 | 
						|
   * boolean indicating whether this is a block (`/* *\/`) comment,
 | 
						|
   * `text` is the content of the comment, and `start` and `end` are
 | 
						|
   * character offsets that denote the start and end of the comment.
 | 
						|
   * When the {@link locations} option is on, two more parameters are
 | 
						|
   * passed, the full locations of {@link Position} export type of the start and
 | 
						|
   * end of the comments.
 | 
						|
   * 
 | 
						|
   * When a array is passed, each found comment of {@link Comment} export type is pushed to the array.
 | 
						|
   * 
 | 
						|
   * Note that you are not allowed to call the
 | 
						|
   * parser from the callback—that will corrupt its internal state.
 | 
						|
   */
 | 
						|
  onComment?: ((
 | 
						|
    isBlock: boolean, text: string, start: number, end: number, startLoc?: Position,
 | 
						|
    endLoc?: Position
 | 
						|
  ) => void) | Comment[]
 | 
						|
 | 
						|
  /**
 | 
						|
   * Nodes have their start and end characters offsets recorded in
 | 
						|
   * `start` and `end` properties (directly on the node, rather than
 | 
						|
   * the `loc` object, which holds line/column data. To also add a
 | 
						|
   * [semi-standardized][range] `range` property holding a `[start,
 | 
						|
   * end]` array with the same numbers, set the `ranges` option to
 | 
						|
   * `true`.
 | 
						|
   */
 | 
						|
  ranges?: boolean
 | 
						|
 | 
						|
  /**
 | 
						|
   * It is possible to parse multiple files into a single AST by
 | 
						|
   * passing the tree produced by parsing the first file as
 | 
						|
   * `program` option in subsequent parses. This will add the
 | 
						|
   * toplevel forms of the parsed file to the `Program` (top) node
 | 
						|
   * of an existing parse tree.
 | 
						|
   */
 | 
						|
  program?: Node
 | 
						|
 | 
						|
  /**
 | 
						|
   * When {@link locations} is on, you can pass this to record the source
 | 
						|
   * file in every node's `loc` object.
 | 
						|
   */
 | 
						|
  sourceFile?: string
 | 
						|
 | 
						|
  /**
 | 
						|
   * This value, if given, is stored in every node, whether {@link locations} is on or off.
 | 
						|
   */
 | 
						|
  directSourceFile?: string
 | 
						|
 | 
						|
  /**
 | 
						|
   * When enabled, parenthesized expressions are represented by
 | 
						|
   * (non-standard) ParenthesizedExpression nodes
 | 
						|
   */
 | 
						|
  preserveParens?: boolean
 | 
						|
}
 | 
						|
  
 | 
						|
export class Parser {
 | 
						|
  options: Options
 | 
						|
  input: string
 | 
						|
  
 | 
						|
  protected constructor(options: Options, input: string, startPos?: number)
 | 
						|
  parse(): Program
 | 
						|
  
 | 
						|
  static parse(input: string, options: Options): Program
 | 
						|
  static parseExpressionAt(input: string, pos: number, options: Options): Expression
 | 
						|
  static tokenizer(input: string, options: Options): {
 | 
						|
    getToken(): Token
 | 
						|
    [Symbol.iterator](): Iterator<Token>
 | 
						|
  }
 | 
						|
  static extend(...plugins: ((BaseParser: typeof Parser) => typeof Parser)[]): typeof Parser
 | 
						|
}
 | 
						|
 | 
						|
export const defaultOptions: Options
 | 
						|
 | 
						|
export function getLineInfo(input: string, offset: number): Position
 | 
						|
 | 
						|
export class TokenType {
 | 
						|
  label: string
 | 
						|
  keyword: string | undefined
 | 
						|
}
 | 
						|
 | 
						|
export const tokTypes: {
 | 
						|
  num: TokenType
 | 
						|
  regexp: TokenType
 | 
						|
  string: TokenType
 | 
						|
  name: TokenType
 | 
						|
  privateId: TokenType
 | 
						|
  eof: TokenType
 | 
						|
 | 
						|
  bracketL: TokenType
 | 
						|
  bracketR: TokenType
 | 
						|
  braceL: TokenType
 | 
						|
  braceR: TokenType
 | 
						|
  parenL: TokenType
 | 
						|
  parenR: TokenType
 | 
						|
  comma: TokenType
 | 
						|
  semi: TokenType
 | 
						|
  colon: TokenType
 | 
						|
  dot: TokenType
 | 
						|
  question: TokenType
 | 
						|
  questionDot: TokenType
 | 
						|
  arrow: TokenType
 | 
						|
  template: TokenType
 | 
						|
  invalidTemplate: TokenType
 | 
						|
  ellipsis: TokenType
 | 
						|
  backQuote: TokenType
 | 
						|
  dollarBraceL: TokenType
 | 
						|
 | 
						|
  eq: TokenType
 | 
						|
  assign: TokenType
 | 
						|
  incDec: TokenType
 | 
						|
  prefix: TokenType
 | 
						|
  logicalOR: TokenType
 | 
						|
  logicalAND: TokenType
 | 
						|
  bitwiseOR: TokenType
 | 
						|
  bitwiseXOR: TokenType
 | 
						|
  bitwiseAND: TokenType
 | 
						|
  equality: TokenType
 | 
						|
  relational: TokenType
 | 
						|
  bitShift: TokenType
 | 
						|
  plusMin: TokenType
 | 
						|
  modulo: TokenType
 | 
						|
  star: TokenType
 | 
						|
  slash: TokenType
 | 
						|
  starstar: TokenType
 | 
						|
  coalesce: TokenType
 | 
						|
 | 
						|
  _break: TokenType
 | 
						|
  _case: TokenType
 | 
						|
  _catch: TokenType
 | 
						|
  _continue: TokenType
 | 
						|
  _debugger: TokenType
 | 
						|
  _default: TokenType
 | 
						|
  _do: TokenType
 | 
						|
  _else: TokenType
 | 
						|
  _finally: TokenType
 | 
						|
  _for: TokenType
 | 
						|
  _function: TokenType
 | 
						|
  _if: TokenType
 | 
						|
  _return: TokenType
 | 
						|
  _switch: TokenType
 | 
						|
  _throw: TokenType
 | 
						|
  _try: TokenType
 | 
						|
  _var: TokenType
 | 
						|
  _const: TokenType
 | 
						|
  _while: TokenType
 | 
						|
  _with: TokenType
 | 
						|
  _new: TokenType
 | 
						|
  _this: TokenType
 | 
						|
  _super: TokenType
 | 
						|
  _class: TokenType
 | 
						|
  _extends: TokenType
 | 
						|
  _export: TokenType
 | 
						|
  _import: TokenType
 | 
						|
  _null: TokenType
 | 
						|
  _true: TokenType
 | 
						|
  _false: TokenType
 | 
						|
  _in: TokenType
 | 
						|
  _instanceof: TokenType
 | 
						|
  _typeof: TokenType
 | 
						|
  _void: TokenType
 | 
						|
  _delete: TokenType
 | 
						|
}
 | 
						|
 | 
						|
export interface Comment {
 | 
						|
  type: "Line" | "Block"
 | 
						|
  value: string
 | 
						|
  start: number
 | 
						|
  end: number
 | 
						|
  loc?: SourceLocation
 | 
						|
  range?: [number, number]
 | 
						|
}
 | 
						|
 | 
						|
export class Token {
 | 
						|
  type: TokenType
 | 
						|
  start: number
 | 
						|
  end: number
 | 
						|
  loc?: SourceLocation
 | 
						|
  range?: [number, number]
 | 
						|
}
 | 
						|
 | 
						|
export const version: string
 |