import type { JSONSchema4 } from "json-schema"; import type { Rule } from "eslint"; import type { AST } from "yaml-eslint-parser"; export interface RuleListener { YAMLDocument?: (node: AST.YAMLDocument) => void; "YAMLDocument:exit"?: (node: AST.YAMLDocument) => void; YAMLDirective?: (node: AST.YAMLDirective) => void; "YAMLDirective:exit"?: (node: AST.YAMLDirective) => void; YAMLAnchor?: (node: AST.YAMLAnchor) => void; "YAMLAnchor:exit"?: (node: AST.YAMLAnchor) => void; YAMLTag?: (node: AST.YAMLTag) => void; "YAMLTag:exit"?: (node: AST.YAMLTag) => void; YAMLMapping?: (node: AST.YAMLMapping) => void; "YAMLMapping:exit"?: (node: AST.YAMLMapping) => void; YAMLPair?: (node: AST.YAMLPair) => void; "YAMLPair:exit"?: (node: AST.YAMLPair) => void; YAMLSequence?: (node: AST.YAMLSequence) => void; "YAMLSequence:exit"?: (node: AST.YAMLSequence) => void; YAMLScalar?: (node: AST.YAMLScalar) => void; "YAMLScalar:exit"?: (node: AST.YAMLScalar) => void; YAMLAlias?: (node: AST.YAMLAlias) => void; "YAMLAlias:exit"?: (node: AST.YAMLAlias) => void; YAMLWithMeta?: (node: AST.YAMLWithMeta) => void; "YAMLWithMeta:exit"?: (node: AST.YAMLWithMeta) => void; Program?: (node: AST.YAMLProgram) => void; "Program:exit"?: (node: AST.YAMLProgram) => void; [key: string]: ((node: never) => void) | undefined; } export interface RuleModule { meta: RuleMetaData; create(context: Rule.RuleContext): RuleListener; } export interface RuleMetaData { docs: { description: string; categories: ("recommended" | "standard")[] | null; url: string; ruleId: string; ruleName: string; replacedBy?: []; default?: "error" | "warn"; extensionRule: string | false; layout: boolean; }; messages: { [messageId: string]: string; }; fixable?: "code" | "whitespace"; hasSuggestions?: boolean; schema: JSONSchema4 | JSONSchema4[]; deprecated?: boolean; type: "problem" | "suggestion" | "layout"; } export interface PartialRuleModule { meta: PartialRuleMetaData; create(context: RuleContext, params: { customBlock: boolean; }): RuleListener; } export interface PartialRuleMetaData { docs: { description: string; categories: ("recommended" | "standard")[] | null; replacedBy?: []; default?: "error" | "warn"; extensionRule: string | false; layout: boolean; }; messages: { [messageId: string]: string; }; fixable?: "code" | "whitespace"; hasSuggestions?: boolean; schema: JSONSchema4 | JSONSchema4[]; deprecated?: boolean; type: "problem" | "suggestion" | "layout"; } export declare type YMLSettings = { indent?: number; }; export interface RuleContext { id: string; options: any[]; settings: { yml?: YMLSettings; [name: string]: any; }; parserPath: string; parserServices: { isYAML?: true; parseError?: any; }; getAncestors(): AST.YAMLNode[]; getFilename(): string; getSourceCode(): SourceCode; report(descriptor: ReportDescriptor): void; } export declare namespace SourceCode { function splitLines(text: string): string[]; } export declare type YAMLToken = AST.Token | AST.Comment; export declare type YAMLNodeOrToken = AST.YAMLNode | YAMLToken; export interface SourceCode { text: string; ast: AST.YAMLProgram; lines: string[]; hasBOM: boolean; parserServices: { isYAML?: true; }; visitorKeys: { [nodeType: string]: string[]; }; getText(node?: YAMLNodeOrToken, beforeCount?: number, afterCount?: number): string; getLines(): string[]; getAllComments(): AST.Comment[]; getComments(node: YAMLNodeOrToken): { leading: AST.Comment[]; trailing: AST.Comment[]; }; getNodeByRangeIndex(index: number): AST.YAMLNode | null; isSpaceBetweenTokens(first: YAMLToken, second: YAMLToken): boolean; getLocFromIndex(index: number): AST.Position; getIndexFromLoc(loc: AST.Position): number; getTokenByRangeStart(offset: number, options?: { includeComments?: boolean; }): YAMLToken | null; getFirstToken(node: AST.YAMLNode): AST.Token; getFirstToken(node: AST.YAMLNode, options?: CursorWithSkipOptions): YAMLToken | null; getFirstTokens(node: AST.YAMLNode, options?: CursorWithCountOptions): YAMLToken[]; getLastToken(node: AST.YAMLNode): AST.Token; getLastToken(node: AST.YAMLNode, options?: CursorWithSkipOptions): YAMLToken | null; getLastTokens(node: AST.YAMLNode, options?: CursorWithCountOptions): YAMLToken[]; getTokenBefore(node: YAMLNodeOrToken): AST.Token | null; getTokenBefore(node: YAMLNodeOrToken, options?: CursorWithSkipOptions): YAMLToken | null; getTokensBefore(node: YAMLNodeOrToken, options?: CursorWithCountOptions): YAMLToken[]; getTokenAfter(node: YAMLNodeOrToken): AST.Token | null; getTokenAfter(node: YAMLNodeOrToken, options?: CursorWithSkipOptions): YAMLToken | null; getTokensAfter(node: YAMLNodeOrToken, options?: CursorWithCountOptions): YAMLToken[]; getFirstTokenBetween(left: YAMLNodeOrToken, right: YAMLNodeOrToken, options?: CursorWithSkipOptions): YAMLToken | null; getFirstTokensBetween(left: YAMLNodeOrToken, right: YAMLNodeOrToken, options?: CursorWithCountOptions): YAMLToken[]; getLastTokenBetween(left: YAMLNodeOrToken, right: YAMLNodeOrToken, options?: CursorWithSkipOptions): YAMLToken | null; getLastTokensBetween(left: YAMLNodeOrToken, right: YAMLNodeOrToken, options?: CursorWithCountOptions): YAMLToken[]; getTokensBetween(left: YAMLNodeOrToken, right: YAMLNodeOrToken, padding?: number | FilterPredicate | CursorWithCountOptions): YAMLToken[]; getTokens(node: AST.YAMLNode, beforeCount?: number, afterCount?: number): YAMLToken[]; getTokens(node: AST.YAMLNode, options: FilterPredicate | CursorWithCountOptions): YAMLToken[]; commentsExistBetween(left: YAMLNodeOrToken, right: YAMLNodeOrToken): boolean; getCommentsBefore(nodeOrToken: YAMLNodeOrToken): AST.Comment[]; getCommentsAfter(nodeOrToken: YAMLNodeOrToken): AST.Comment[]; getCommentsInside(node: AST.YAMLNode): AST.Comment[]; } declare type FilterPredicate = (tokenOrComment: YAMLToken) => boolean; declare type CursorWithSkipOptions = number | FilterPredicate | { includeComments?: boolean; filter?: FilterPredicate; skip?: number; }; declare type CursorWithCountOptions = number | FilterPredicate | { includeComments?: boolean; filter?: FilterPredicate; count?: number; }; interface ReportDescriptorOptionsBase { data?: { [key: string]: string; }; fix?: null | ((fixer: RuleFixer) => null | Fix | IterableIterator | Fix[]); } declare type SuggestionDescriptorMessage = { desc: string; } | { messageId: string; }; declare type SuggestionReportDescriptor = SuggestionDescriptorMessage & ReportDescriptorOptionsBase; interface ReportDescriptorOptions extends ReportDescriptorOptionsBase { suggest?: SuggestionReportDescriptor[] | null; } declare type ReportDescriptor = ReportDescriptorMessage & ReportDescriptorLocation & ReportDescriptorOptions; declare type ReportDescriptorMessage = { message: string; } | { messageId: string; }; declare type ReportDescriptorLocation = { node: YAMLNodeOrToken; } | { loc: SourceLocation | { line: number; column: number; }; }; export interface RuleFixer { insertTextAfter(nodeOrToken: YAMLNodeOrToken, text: string): Fix; insertTextAfterRange(range: AST.Range, text: string): Fix; insertTextBefore(nodeOrToken: YAMLNodeOrToken, text: string): Fix; insertTextBeforeRange(range: AST.Range, text: string): Fix; remove(nodeOrToken: YAMLNodeOrToken): Fix; removeRange(range: AST.Range): Fix; replaceText(nodeOrToken: YAMLNodeOrToken, text: string): Fix; replaceTextRange(range: AST.Range, text: string): Fix; } export interface Fix { range: AST.Range; text: string; } interface SourceLocation { start: AST.Position; end: AST.Position; } export {};