UNPKG

eslint-plugin-ferramentas

Version:
76 lines (75 loc) 3.51 kB
import type { JSONSchema4 } from 'json-schema'; import type { AST, Rule, SourceCode } from 'eslint'; import type { ImportDeclaration, Node, SourceLocation } from 'estree'; import { type ReadonlyRecord } from '../utils'; export type BaseRuleOptionInputTemplate<T> = readonly [Readonly<T>]; export declare const createBaseRuleOptionInputMapper: <I, O>(mapper: (input: I) => O) => ([input]: BaseRuleOptionInputTemplate<I>) => O; declare abstract class ExtendedNode<N extends Node = Node> { protected readonly node: N; protected readonly context: Rule.RuleContext; private readonly getFirstComment; protected abstract readonly NodeConstructor: new (node: N, context: Rule.RuleContext) => ExtendedNode<N>; private static getProperty; private static sortPositions; constructor(node: N, context: Rule.RuleContext); protected abstract get siblings(): readonly Node[]; protected get sourceCode(): SourceCode; private getProperty; protected abstract isNode(node: Node): node is N; protected getPreviousSiblingWithSameTypeOrThrow(): ExtendedNode<N>; getLocation(withComments: boolean): SourceLocation; getRange(withComments: boolean): AST.Range; getRangeBetween<OtherNode extends Node>(destination: ExtendedNode<OtherNode>, withComments: boolean): AST.Range; toString(withComments?: boolean): string; } declare class ExtendedImportDeclaration extends ExtendedNode<ImportDeclaration> { protected readonly NodeConstructor: typeof ExtendedImportDeclaration; private readonly getRawPath; private readonly getPathFromWorkingDirectory; protected get siblings(): readonly Node[]; get rawPath(): string; get pathFromWorkingDirectory(): string; protected isNode(node: Node): node is ImportDeclaration; getPreviousSiblingWithSameTypeOrThrow(): ExtendedImportDeclaration; } export type { ExtendedImportDeclaration }; declare class RuleContextWrapper<OptionsInput, Options extends Readonly<{ debug: boolean; }>, ErrorMessages extends string> { private readonly context; readonly ruleName: string; private readonly mapOptions; private readonly getOptions; private readonly createDebugger; constructor(context: Rule.RuleContext, ruleName: string, mapOptions: (input: OptionsInput) => Options); getRelativeFilename(): string; getImportDeclaration(node: ImportDeclaration): ExtendedImportDeclaration; getOption<K extends keyof Options>(name: K): Options[K]; debug(...values: readonly Readonly<{ toString: () => string; }>[]): void; report(descriptor: Rule.ReportDescriptor & Readonly<{ messageId: ErrorMessages; loc: SourceLocation; }>): void; } type Metadata<ErrorMessages extends string> = Rule.RuleMetaData & Readonly<{ schema: JSONSchema4; docs: Readonly<{ description: string; }>; messages: ReadonlyRecord<ErrorMessages, string>; }>; export declare const createRule: <OptionsInput, Options extends Readonly<{ debug: boolean; }>, ErrorMessages extends string>({ name, ...meta }: Rule.RuleMetaData & Readonly<{ schema: JSONSchema4; docs: Readonly<{ description: string; }>; messages: Readonly<Record<ErrorMessages, string>>; }> & Readonly<{ name: string; }>, mapOptions: (input: OptionsInput) => Options, create: (context: RuleContextWrapper<OptionsInput, Options, ErrorMessages>) => Rule.RuleListener) => Readonly<Record<string, Rule.RuleModule & Readonly<{ meta: Metadata<ErrorMessages>; }>>>;