123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import type { TAG_ID } from './html.js';
- export declare enum TokenType {
- CHARACTER = 0,
- NULL_CHARACTER = 1,
- WHITESPACE_CHARACTER = 2,
- START_TAG = 3,
- END_TAG = 4,
- COMMENT = 5,
- DOCTYPE = 6,
- EOF = 7,
- HIBERNATION = 8
- }
- export interface Location {
- /** One-based line index of the first character. */
- startLine: number;
- /** One-based column index of the first character. */
- startCol: number;
- /** Zero-based first character index. */
- startOffset: number;
- /** One-based line index of the last character. */
- endLine: number;
- /** One-based column index of the last character. Points directly *after* the last character. */
- endCol: number;
- /** Zero-based last character index. Points directly *after* the last character. */
- endOffset: number;
- }
- export interface LocationWithAttributes extends Location {
- /** Start tag attributes' location info. */
- attrs?: Record<string, Location>;
- }
- export interface ElementLocation extends LocationWithAttributes {
- /** Element's start tag location info. */
- startTag?: Location;
- /**
- * Element's end tag location info.
- * This property is undefined, if the element has no closing tag.
- */
- endTag?: Location;
- }
- interface TokenBase {
- readonly type: TokenType;
- location: Location | null;
- }
- export interface DoctypeToken extends TokenBase {
- readonly type: TokenType.DOCTYPE;
- name: string | null;
- forceQuirks: boolean;
- publicId: string | null;
- systemId: string | null;
- }
- export interface Attribute {
- /** The name of the attribute. */
- name: string;
- /** The namespace of the attribute. */
- namespace?: string;
- /** The namespace-related prefix of the attribute. */
- prefix?: string;
- /** The value of the attribute. */
- value: string;
- }
- export interface TagToken extends TokenBase {
- readonly type: TokenType.START_TAG | TokenType.END_TAG;
- tagName: string;
- /** Used to cache the ID of the tag name. */
- tagID: TAG_ID;
- selfClosing: boolean;
- ackSelfClosing: boolean;
- attrs: Attribute[];
- location: LocationWithAttributes | null;
- }
- export declare function getTokenAttr(token: TagToken, attrName: string): string | null;
- export interface CommentToken extends TokenBase {
- readonly type: TokenType.COMMENT;
- data: string;
- }
- export interface EOFToken extends TokenBase {
- readonly type: TokenType.EOF;
- }
- export interface CharacterToken extends TokenBase {
- type: TokenType.CHARACTER | TokenType.NULL_CHARACTER | TokenType.WHITESPACE_CHARACTER;
- chars: string;
- }
- export type Token = DoctypeToken | TagToken | CommentToken | EOFToken | CharacterToken;
- export {};
|