| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | import Tokenizer, { Callbacks, QuoteType } from "./Tokenizer.js";export interface ParserOptions {    /**     * Indicates whether special tags (`<script>`, `<style>`, and `<title>`) should get special treatment     * and if "empty" tags (eg. `<br>`) can have children.  If `false`, the content of special tags     * will be text only. For feeds and other XML content (documents that don't consist of HTML),     * set this to `true`.     *     * @default false     */    xmlMode?: boolean;    /**     * Decode entities within the document.     *     * @default true     */    decodeEntities?: boolean;    /**     * If set to true, all tags will be lowercased.     *     * @default !xmlMode     */    lowerCaseTags?: boolean;    /**     * If set to `true`, all attribute names will be lowercased. This has noticeable impact on speed.     *     * @default !xmlMode     */    lowerCaseAttributeNames?: boolean;    /**     * If set to true, CDATA sections will be recognized as text even if the xmlMode option is not enabled.     * NOTE: If xmlMode is set to `true` then CDATA sections will always be recognized as text.     *     * @default xmlMode     */    recognizeCDATA?: boolean;    /**     * If set to `true`, self-closing tags will trigger the onclosetag event even if xmlMode is not set to `true`.     * NOTE: If xmlMode is set to `true` then self-closing tags will always be recognized.     *     * @default xmlMode     */    recognizeSelfClosing?: boolean;    /**     * Allows the default tokenizer to be overwritten.     */    Tokenizer?: typeof Tokenizer;}export interface Handler {    onparserinit(parser: Parser): void;    /**     * Resets the handler back to starting state     */    onreset(): void;    /**     * Signals the handler that parsing is done     */    onend(): void;    onerror(error: Error): void;    onclosetag(name: string, isImplied: boolean): void;    onopentagname(name: string): void;    /**     *     * @param name Name of the attribute     * @param value Value of the attribute.     * @param quote Quotes used around the attribute. `null` if the attribute has no quotes around the value, `undefined` if the attribute has no value.     */    onattribute(name: string, value: string, quote?: string | undefined | null): void;    onopentag(name: string, attribs: {        [s: string]: string;    }, isImplied: boolean): void;    ontext(data: string): void;    oncomment(data: string): void;    oncdatastart(): void;    oncdataend(): void;    oncommentend(): void;    onprocessinginstruction(name: string, data: string): void;}export declare class Parser implements Callbacks {    private readonly options;    /** The start index of the last event. */    startIndex: number;    /** The end index of the last event. */    endIndex: number;    /**     * Store the start index of the current open tag,     * so we can update the start index for attributes.     */    private openTagStart;    private tagname;    private attribname;    private attribvalue;    private attribs;    private stack;    private readonly foreignContext;    private readonly cbs;    private readonly lowerCaseTagNames;    private readonly lowerCaseAttributeNames;    private readonly tokenizer;    private readonly buffers;    private bufferOffset;    /** The index of the last written buffer. Used when resuming after a `pause()`. */    private writeIndex;    /** Indicates whether the parser has finished running / `.end` has been called. */    private ended;    constructor(cbs?: Partial<Handler> | null, options?: ParserOptions);    /** @internal */    ontext(start: number, endIndex: number): void;    /** @internal */    ontextentity(cp: number): void;    protected isVoidElement(name: string): boolean;    /** @internal */    onopentagname(start: number, endIndex: number): void;    private emitOpenTag;    private endOpenTag;    /** @internal */    onopentagend(endIndex: number): void;    /** @internal */    onclosetag(start: number, endIndex: number): void;    /** @internal */    onselfclosingtag(endIndex: number): void;    private closeCurrentTag;    /** @internal */    onattribname(start: number, endIndex: number): void;    /** @internal */    onattribdata(start: number, endIndex: number): void;    /** @internal */    onattribentity(cp: number): void;    /** @internal */    onattribend(quote: QuoteType, endIndex: number): void;    private getInstructionName;    /** @internal */    ondeclaration(start: number, endIndex: number): void;    /** @internal */    onprocessinginstruction(start: number, endIndex: number): void;    /** @internal */    oncomment(start: number, endIndex: number, offset: number): void;    /** @internal */    oncdata(start: number, endIndex: number, offset: number): void;    /** @internal */    onend(): void;    /**     * Resets the parser to a blank state, ready to parse a new HTML document     */    reset(): void;    /**     * Resets the parser, then parses a complete document and     * pushes it to the handler.     *     * @param data Document to parse.     */    parseComplete(data: string): void;    private getSlice;    private shiftBuffer;    /**     * Parses a chunk of data and calls the corresponding callbacks.     *     * @param chunk Chunk to parse.     */    write(chunk: string): void;    /**     * Parses the end of the buffer and clears the stack, calls onend.     *     * @param chunk Optional final chunk to parse.     */    end(chunk?: string): void;    /**     * Pauses parsing. The parser won't emit events until `resume` is called.     */    pause(): void;    /**     * Resumes parsing after `pause` was called.     */    resume(): void;    /**     * Alias of `write`, for backwards compatibility.     *     * @param chunk Chunk to parse.     * @deprecated     */    parseChunk(chunk: string): void;    /**     * Alias of `end`, for backwards compatibility.     *     * @param chunk Optional final chunk to parse.     * @deprecated     */    done(chunk?: string): void;}//# sourceMappingURL=Parser.d.ts.map
 |