@maniascript/mslint
Version:
ManiaScript linter
63 lines (62 loc) • 1.78 kB
TypeScript
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 };