You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.7 KiB
85 lines
2.7 KiB
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 {}; |
|
//# sourceMappingURL=token.d.ts.map
|