import { Rule } from "eslint"; //#region node_modules/.pnpm/@types+estree@1.0.6/node_modules/@types/estree/index.d.ts // This definition file follows a somewhat unusual format. ESTree allows // runtime type checks based on the `type` parameter. In order to explain this // to typescript we want to use discriminated union types: // https://github.com/Microsoft/TypeScript/pull/9163 // // For ESTree this is a bit tricky because the high level interfaces like // Node or Function are pulling double duty. We want to pass common fields down // to the interfaces that extend them (like Identifier or // ArrowFunctionExpression), but you can't extend a type union or enforce // common fields on them. So we've split the high level interfaces into two // types, a base type which passes down inherited fields, and a type union of // all types which extend the base type. Only the type union is exported, and // the union is how other types refer to the collection of inheriting types. // // This makes the definitions file here somewhat more difficult to maintain, // but it has the notable advantage of making ESTree much easier to use as // an end user. interface BaseNodeWithoutComments { // Every leaf interface that extends BaseNode must specify a type property. // The type property should be a string literal. For example, Identifier // has: `type: "Identifier"` type: string; loc?: SourceLocation | null | undefined; range?: [number, number] | undefined; } interface BaseNode extends BaseNodeWithoutComments { leadingComments?: Comment[] | undefined; trailingComments?: Comment[] | undefined; } interface Comment extends BaseNodeWithoutComments { type: "Line" | "Block"; value: string; } interface SourceLocation { source?: string | null | undefined; start: Position; end: Position; } interface Position { /** >= 1 */ line: number; /** >= 0 */ column: number; } interface BaseFunction extends BaseNode { params: Pattern[]; generator?: boolean | undefined; async?: boolean | undefined; // The body is either BlockStatement or Expression because arrow functions // can have a body that's either. FunctionDeclarations and // FunctionExpressions have only BlockStatement bodies. body: BlockStatement | Expression; } type Statement = ExpressionStatement | BlockStatement | StaticBlock | EmptyStatement | DebuggerStatement | WithStatement | ReturnStatement | LabeledStatement | BreakStatement | ContinueStatement | IfStatement | SwitchStatement | ThrowStatement | TryStatement | WhileStatement | DoWhileStatement | ForStatement | ForInStatement | ForOfStatement | Declaration; interface BaseStatement extends BaseNode {} interface EmptyStatement extends BaseStatement { type: "EmptyStatement"; } interface BlockStatement extends BaseStatement { type: "BlockStatement"; body: Statement[]; innerComments?: Comment[] | undefined; } interface StaticBlock extends Omit { type: "StaticBlock"; } interface ExpressionStatement extends BaseStatement { type: "ExpressionStatement"; expression: Expression; } interface IfStatement extends BaseStatement { type: "IfStatement"; test: Expression; consequent: Statement; alternate?: Statement | null | undefined; } interface LabeledStatement extends BaseStatement { type: "LabeledStatement"; label: Identifier; body: Statement; } interface BreakStatement extends BaseStatement { type: "BreakStatement"; label?: Identifier | null | undefined; } interface ContinueStatement extends BaseStatement { type: "ContinueStatement"; label?: Identifier | null | undefined; } interface WithStatement extends BaseStatement { type: "WithStatement"; object: Expression; body: Statement; } interface SwitchStatement extends BaseStatement { type: "SwitchStatement"; discriminant: Expression; cases: SwitchCase[]; } interface ReturnStatement extends BaseStatement { type: "ReturnStatement"; argument?: Expression | null | undefined; } interface ThrowStatement extends BaseStatement { type: "ThrowStatement"; argument: Expression; } interface TryStatement extends BaseStatement { type: "TryStatement"; block: BlockStatement; handler?: CatchClause | null | undefined; finalizer?: BlockStatement | null | undefined; } interface WhileStatement extends BaseStatement { type: "WhileStatement"; test: Expression; body: Statement; } interface DoWhileStatement extends BaseStatement { type: "DoWhileStatement"; body: Statement; test: Expression; } interface ForStatement extends BaseStatement { type: "ForStatement"; init?: VariableDeclaration | Expression | null | undefined; test?: Expression | null | undefined; update?: Expression | null | undefined; body: Statement; } interface BaseForXStatement extends BaseStatement { left: VariableDeclaration | Pattern; right: Expression; body: Statement; } interface ForInStatement extends BaseForXStatement { type: "ForInStatement"; } interface DebuggerStatement extends BaseStatement { type: "DebuggerStatement"; } type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration; interface BaseDeclaration extends BaseStatement {} interface MaybeNamedFunctionDeclaration extends BaseFunction, BaseDeclaration { type: "FunctionDeclaration"; /** It is null when a function declaration is a part of the `export default function` statement */ id: Identifier | null; body: BlockStatement; } interface FunctionDeclaration extends MaybeNamedFunctionDeclaration { id: Identifier; } interface VariableDeclaration extends BaseDeclaration { type: "VariableDeclaration"; declarations: VariableDeclarator[]; kind: "var" | "let" | "const"; } interface VariableDeclarator extends BaseNode { type: "VariableDeclarator"; id: Pattern; init?: Expression | null | undefined; } interface ExpressionMap { ArrayExpression: ArrayExpression; ArrowFunctionExpression: ArrowFunctionExpression; AssignmentExpression: AssignmentExpression; AwaitExpression: AwaitExpression; BinaryExpression: BinaryExpression; CallExpression: CallExpression; ChainExpression: ChainExpression; ClassExpression: ClassExpression; ConditionalExpression: ConditionalExpression; FunctionExpression: FunctionExpression; Identifier: Identifier; ImportExpression: ImportExpression; Literal: Literal; LogicalExpression: LogicalExpression; MemberExpression: MemberExpression; MetaProperty: MetaProperty; NewExpression: NewExpression; ObjectExpression: ObjectExpression; SequenceExpression: SequenceExpression; TaggedTemplateExpression: TaggedTemplateExpression; TemplateLiteral: TemplateLiteral; ThisExpression: ThisExpression; UnaryExpression: UnaryExpression; UpdateExpression: UpdateExpression; YieldExpression: YieldExpression; } type Expression = ExpressionMap[keyof ExpressionMap]; interface BaseExpression extends BaseNode {} type ChainElement = SimpleCallExpression | MemberExpression; interface ChainExpression extends BaseExpression { type: "ChainExpression"; expression: ChainElement; } interface ThisExpression extends BaseExpression { type: "ThisExpression"; } interface ArrayExpression extends BaseExpression { type: "ArrayExpression"; elements: Array; } interface ObjectExpression extends BaseExpression { type: "ObjectExpression"; properties: Array; } interface PrivateIdentifier extends BaseNode { type: "PrivateIdentifier"; name: string; } interface Property extends BaseNode { type: "Property"; key: Expression | PrivateIdentifier; value: Expression | Pattern; // Could be an AssignmentProperty kind: "init" | "get" | "set"; method: boolean; shorthand: boolean; computed: boolean; } interface PropertyDefinition extends BaseNode { type: "PropertyDefinition"; key: Expression | PrivateIdentifier; value?: Expression | null | undefined; computed: boolean; static: boolean; } interface FunctionExpression extends BaseFunction, BaseExpression { id?: Identifier | null | undefined; type: "FunctionExpression"; body: BlockStatement; } interface SequenceExpression extends BaseExpression { type: "SequenceExpression"; expressions: Expression[]; } interface UnaryExpression extends BaseExpression { type: "UnaryExpression"; operator: UnaryOperator; prefix: true; argument: Expression; } interface BinaryExpression extends BaseExpression { type: "BinaryExpression"; operator: BinaryOperator; left: Expression | PrivateIdentifier; right: Expression; } interface AssignmentExpression extends BaseExpression { type: "AssignmentExpression"; operator: AssignmentOperator; left: Pattern | MemberExpression; right: Expression; } interface UpdateExpression extends BaseExpression { type: "UpdateExpression"; operator: UpdateOperator; argument: Expression; prefix: boolean; } interface LogicalExpression extends BaseExpression { type: "LogicalExpression"; operator: LogicalOperator; left: Expression; right: Expression; } interface ConditionalExpression extends BaseExpression { type: "ConditionalExpression"; test: Expression; alternate: Expression; consequent: Expression; } interface BaseCallExpression extends BaseExpression { callee: Expression | Super; arguments: Array; } type CallExpression = SimpleCallExpression | NewExpression; interface SimpleCallExpression extends BaseCallExpression { type: "CallExpression"; optional: boolean; } interface NewExpression extends BaseCallExpression { type: "NewExpression"; } interface MemberExpression extends BaseExpression, BasePattern { type: "MemberExpression"; object: Expression | Super; property: Expression | PrivateIdentifier; computed: boolean; optional: boolean; } type Pattern = Identifier | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | MemberExpression; interface BasePattern extends BaseNode {} interface SwitchCase extends BaseNode { type: "SwitchCase"; test?: Expression | null | undefined; consequent: Statement[]; } interface CatchClause extends BaseNode { type: "CatchClause"; param: Pattern | null; body: BlockStatement; } interface Identifier extends BaseNode, BaseExpression, BasePattern { type: "Identifier"; name: string; } type Literal = SimpleLiteral | RegExpLiteral | BigIntLiteral; interface SimpleLiteral extends BaseNode, BaseExpression { type: "Literal"; value: string | boolean | number | null; raw?: string | undefined; } interface RegExpLiteral extends BaseNode, BaseExpression { type: "Literal"; value?: RegExp | null | undefined; regex: { pattern: string; flags: string; }; raw?: string | undefined; } interface BigIntLiteral extends BaseNode, BaseExpression { type: "Literal"; value?: bigint | null | undefined; bigint: string; raw?: string | undefined; } type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete"; type BinaryOperator = "==" | "!=" | "===" | "!==" | "<" | "<=" | ">" | ">=" | "<<" | ">>" | ">>>" | "+" | "-" | "*" | "/" | "%" | "**" | "|" | "^" | "&" | "in" | "instanceof"; type LogicalOperator = "||" | "&&" | "??"; type AssignmentOperator = "=" | "+=" | "-=" | "*=" | "/=" | "%=" | "**=" | "<<=" | ">>=" | ">>>=" | "|=" | "^=" | "&=" | "||=" | "&&=" | "??="; type UpdateOperator = "++" | "--"; interface ForOfStatement extends BaseForXStatement { type: "ForOfStatement"; await: boolean; } interface Super extends BaseNode { type: "Super"; } interface SpreadElement extends BaseNode { type: "SpreadElement"; argument: Expression; } interface ArrowFunctionExpression extends BaseExpression, BaseFunction { type: "ArrowFunctionExpression"; expression: boolean; body: BlockStatement | Expression; } interface YieldExpression extends BaseExpression { type: "YieldExpression"; argument?: Expression | null | undefined; delegate: boolean; } interface TemplateLiteral extends BaseExpression { type: "TemplateLiteral"; quasis: TemplateElement[]; expressions: Expression[]; } interface TaggedTemplateExpression extends BaseExpression { type: "TaggedTemplateExpression"; tag: Expression; quasi: TemplateLiteral; } interface TemplateElement extends BaseNode { type: "TemplateElement"; tail: boolean; value: { /** It is null when the template literal is tagged and the text has an invalid escape (e.g. - tag`\unicode and \u{55}`) */cooked?: string | null | undefined; raw: string; }; } interface AssignmentProperty extends Property { value: Pattern; kind: "init"; method: boolean; // false } interface ObjectPattern extends BasePattern { type: "ObjectPattern"; properties: Array; } interface ArrayPattern extends BasePattern { type: "ArrayPattern"; elements: Array; } interface RestElement extends BasePattern { type: "RestElement"; argument: Pattern; } interface AssignmentPattern extends BasePattern { type: "AssignmentPattern"; left: Pattern; right: Expression; } interface BaseClass extends BaseNode { superClass?: Expression | null | undefined; body: ClassBody; } interface ClassBody extends BaseNode { type: "ClassBody"; body: Array; } interface MethodDefinition extends BaseNode { type: "MethodDefinition"; key: Expression | PrivateIdentifier; value: FunctionExpression; kind: "constructor" | "method" | "get" | "set"; computed: boolean; static: boolean; } interface MaybeNamedClassDeclaration extends BaseClass, BaseDeclaration { type: "ClassDeclaration"; /** It is null when a class declaration is a part of the `export default class` statement */ id: Identifier | null; } interface ClassDeclaration extends MaybeNamedClassDeclaration { id: Identifier; } interface ClassExpression extends BaseClass, BaseExpression { type: "ClassExpression"; id?: Identifier | null | undefined; } interface MetaProperty extends BaseExpression { type: "MetaProperty"; meta: Identifier; property: Identifier; } interface ImportExpression extends BaseExpression { type: "ImportExpression"; source: Expression; } interface AwaitExpression extends BaseExpression { type: "AwaitExpression"; argument: Expression; } //#endregion //#region src/addObjectProperty.d.ts /** * Given an ObjectProperty, and a rule fixer, this function yields the addition * of a new property to the given ObjectExpression, along with any necessary commas. * The new property is at the end of the object. * @param context ESLint Rule Context * @param fixer Rule fixer * @param objectExpression The object expression to which the property will be added * @param propertyKey The key for the new property * @param propertyValue The value for the new property * @yields fixer addition for the new property into the object expression, as well as any necessary commas */ declare function addObjectProperty(context: Rule.RuleContext, fixer: Rule.RuleFixer, objectExpression: ObjectExpression, propertyKey: string, propertyValue: unknown): Generator; //#endregion //#region src/fixAddObjectProperty.d.ts /** * Given an ObjectExpression and the key and value of a property, * this function returns a fixer function that you can provide to a report * descriptor that will add the new property to it. * @param context ESLint Rule Context * @param objectExpression The object expression to which the property will be added * @param propertyKey The key for the new property * @param propertyValue The value for the new property * @returns a fixer function that you can provide to a report descriptor that * adds a new property to an object expression, along with any commas that * are needed. */ declare const fixAddObjectProperty: (context: Rule.RuleContext, objectExpression: ObjectExpression, propertyKey: string, propertyValue: unknown) => ((fixer: Rule.RuleFixer) => Generator); //#endregion //#region src/removeArrayElement.d.ts type ArrayElement = Expression | SpreadElement; type ArrayElementsOrParent = ArrayExpression | ArrayExpression["elements"]; /** * Given an ArrayExpression or the list of elements an ArrayExpression has, * the index or node within that array that you want to remove, and a rule fixer, * this function yields removals for the node itself, as well as any trailing * commas that are no longer necessary. * @param context ESLint Rule Context * @param fixer Rule fixer * @param elementOrIndex The child expression, spread element, or a numeric * index of the child * @param parentOrElements The array expression node, or its `.elements` array * @yields fixer removals for the node itself, as well as any trailing commas * that are no longer necessary. */ declare function removeArrayElement(context: Rule.RuleContext, fixer: Rule.RuleFixer, elementOrIndex: ArrayElement | number, parentOrElements: ArrayElementsOrParent): Generator; //#endregion //#region src/fixRemoveArrayElement.d.ts /** * Given an ArrayExpression or the list of elements an ArrayExpression has, and * the index or node within that array that you want to remove, this function * returns a fixer function that you can provide to a report descriptor that * will remove that node along with any trailing comma. * @param context ESLint Rule Context * @param elementOrIndex The child expression, spread element, or a numeric * index of the child * @param parentOrElements The array expression node, or its `.elements` array * @returns a fixer function that you can provide to a report descriptor, that * removes an element from an array expression, along with any commas that are * no longer necessary. */ declare const fixRemoveArrayElement: (context: Rule.RuleContext, elementOrIndex: ArrayElement | number, parentOrElements: ArrayElementsOrParent) => ((fixer: Rule.RuleFixer) => Generator); //#endregion //#region src/removeObjectProperty.d.ts type ObjectProperty = Property | SpreadElement; /** * Given an ObjectProperty, and a rule fixer, this function yields removals for * the node itself, as well as any trailing commas that are no longer necessary. * @param context ESLint Rule Context * @param fixer Rule fixer * @param property The property node * @yields fixer removals for the node itself, as well as any trailing commas * that are no longer necessary. */ declare function removeObjectProperty(context: Rule.RuleContext, fixer: Rule.RuleFixer, property: ObjectProperty): Generator; //#endregion //#region src/fixRemoveObjectProperty.d.ts /** * Given an ObjectProperty, this function returns a fixer function that you can * provide to a report descriptor that will remove that node along with any * trailing comma. * @param context ESLint Rule Context * @param property The property node * @returns a fixer function that you can provide to a report descriptor, that * removes a property from an object expression, along with any commas that * are no longer necessary. */ declare const fixRemoveObjectProperty: (context: Rule.RuleContext, property: ObjectProperty) => ((fixer: Rule.RuleFixer) => Generator); //#endregion export { type ArrayElement, type ArrayElementsOrParent, type ObjectProperty, addObjectProperty, fixAddObjectProperty, fixRemoveArrayElement, fixRemoveObjectProperty, removeArrayElement, removeObjectProperty };