UNPKG

@maniascript/mslint

Version:
63 lines (62 loc) 1.78 kB
import { SourceLocationRange } from '@maniascript/parser'; import { type GlobalConfig, type LinterConfig } from './config.js'; import { Severity } from './rule.js'; declare enum Emitter { Parser = "Parser", Linter = "Linter" } interface LinterMessage { emitter: Emitter; ruleId: string | null; severity: Severity; message: string; source: SourceLocationRange; } interface Stats { fileOpeningDuration: bigint; msApiGenerationDuration: bigint; parsingDuration: bigint; lintingDuration: bigint; } declare enum DisableDirectiveType { CurrentLine = 0, NextLine = 1, Block = 2 } interface DisabledRuleComment { line: number; rangeStart: number; rangeEnd: number; ruleIds: string[]; description: string; directiveType: DisableDirectiveType; directiveSource: SourceLocationRange; isUsed: boolean; usedRuleIds: string[]; } interface LinterTextReport { success: boolean; messages: LinterMessage[]; disabledRuleComments: DisabledRuleComment[]; stats: Stats; } interface LinterFileReport { success: boolean; path: string; messages: LinterMessage[]; stats: Stats; } interface LinterReport { success: boolean; files: LinterFileReport[]; stats: Stats; } declare class Linter { config: GlobalConfig; msApiCache: Map<string, Set<string>>; constructor(config?: GlobalConfig | string); lintCode(code: string, linterConfig: LinterConfig): Promise<LinterTextReport>; lintFile(filePath: string, fileContent?: string): Promise<LinterFileReport>; lint(patterns: string | string[]): Promise<LinterReport>; } export { Linter, type LinterMessage, type LinterTextReport, type LinterFileReport, type LinterReport, Emitter, DisableDirectiveType };