import { HTMLParser, Reporter } from "./"; export interface Rule { id: string; description: string; link?: string; init(parser: HTMLParser, reporter: Reporter, options: unknown): void; } export interface Ruleset { "alt-require"?: boolean; "attr-lowercase"?: boolean | Array; "attr-no-duplication"?: boolean; "attr-no-unnecessary-whitespace"?: boolean; "attr-sorted"?: boolean; "attr-unsafe-chars"?: boolean; "attr-value-double-quotes"?: boolean; "attr-value-not-empty"?: boolean; "attr-value-single-quotes"?: boolean; "attr-whitespace"?: boolean; "doctype-first"?: boolean; "doctype-html5"?: boolean; "empty-tag-not-self-closed"?: boolean; "head-script-disabled"?: boolean; "href-abs-or-rel"?: "abs" | "rel"; "id-class-ad-disabled"?: boolean; "id-class-value"?: "underline" | "dash" | "hump" | { regId: RegExp; message: string }; "id-unique"?: boolean; "inline-script-disabled"?: boolean; "inline-style-disabled"?: boolean; "input-requires-label"?: boolean; "script-disabled"?: boolean; "space-tab-mixed-disabled"?: | boolean | "space" | "space1" | "space2" | "space3" | "space4" | "space5" | "space6" | "space7" | "space8" | "tab"; "spec-char-escape"?: boolean; "src-not-empty"?: boolean; "style-disabled"?: boolean; "tag-pair"?: boolean; "tag-self-close"?: boolean; "tagname-lowercase"?: boolean; "tagname-specialchars"?: boolean; "tags-check"?: { [tagName: string]: Record }; "title-require"?: boolean; // There may be other unknown rules [ruleId: string]: unknown; } export enum ReportType { error = "error", warning = "warning", info = "info", } export interface Hint { type: ReportType; message: string; raw: string; evidence: string; line: number; col: number; rule: Rule; }