123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- import { ElementType } from "domelementtype";
- interface SourceCodeLocation {
- /** 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;
- }
- interface TagSourceCodeLocation extends SourceCodeLocation {
- startTag?: SourceCodeLocation;
- endTag?: SourceCodeLocation;
- }
- export declare type ParentNode = Document | Element | CDATA;
- export declare type ChildNode = Text | Comment | ProcessingInstruction | Element | CDATA | Document;
- export declare type AnyNode = ParentNode | ChildNode;
- /**
- * This object will be used as the prototype for Nodes when creating a
- * DOM-Level-1-compliant structure.
- */
- export declare abstract class Node {
- /** The type of the node. */
- abstract readonly type: ElementType;
- /** Parent of the node */
- parent: ParentNode | null;
- /** Previous sibling */
- prev: ChildNode | null;
- /** Next sibling */
- next: ChildNode | null;
- /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
- startIndex: number | null;
- /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
- endIndex: number | null;
- /**
- * `parse5` source code location info.
- *
- * Available if parsing with parse5 and location info is enabled.
- */
- sourceCodeLocation?: SourceCodeLocation | null;
- /**
- * [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible
- * node {@link type}.
- */
- abstract readonly nodeType: number;
- /**
- * Same as {@link parent}.
- * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
- */
- get parentNode(): ParentNode | null;
- set parentNode(parent: ParentNode | null);
- /**
- * Same as {@link prev}.
- * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
- */
- get previousSibling(): ChildNode | null;
- set previousSibling(prev: ChildNode | null);
- /**
- * Same as {@link next}.
- * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
- */
- get nextSibling(): ChildNode | null;
- set nextSibling(next: ChildNode | null);
- /**
- * Clone this node, and optionally its children.
- *
- * @param recursive Clone child nodes as well.
- * @returns A clone of the node.
- */
- cloneNode<T extends Node>(this: T, recursive?: boolean): T;
- }
- /**
- * A node that contains some data.
- */
- export declare abstract class DataNode extends Node {
- data: string;
- /**
- * @param data The content of the data node
- */
- constructor(data: string);
- /**
- * Same as {@link data}.
- * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
- */
- get nodeValue(): string;
- set nodeValue(data: string);
- }
- /**
- * Text within the document.
- */
- export declare class Text extends DataNode {
- type: ElementType.Text;
- get nodeType(): 3;
- }
- /**
- * Comments within the document.
- */
- export declare class Comment extends DataNode {
- type: ElementType.Comment;
- get nodeType(): 8;
- }
- /**
- * Processing instructions, including doc types.
- */
- export declare class ProcessingInstruction extends DataNode {
- name: string;
- type: ElementType.Directive;
- constructor(name: string, data: string);
- get nodeType(): 1;
- /** If this is a doctype, the document type name (parse5 only). */
- "x-name"?: string;
- /** If this is a doctype, the document type public identifier (parse5 only). */
- "x-publicId"?: string;
- /** If this is a doctype, the document type system identifier (parse5 only). */
- "x-systemId"?: string;
- }
- /**
- * A `Node` that can have children.
- */
- export declare abstract class NodeWithChildren extends Node {
- children: ChildNode[];
- /**
- * @param children Children of the node. Only certain node types can have children.
- */
- constructor(children: ChildNode[]);
- /** First child of the node. */
- get firstChild(): ChildNode | null;
- /** Last child of the node. */
- get lastChild(): ChildNode | null;
- /**
- * Same as {@link children}.
- * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
- */
- get childNodes(): ChildNode[];
- set childNodes(children: ChildNode[]);
- }
- export declare class CDATA extends NodeWithChildren {
- type: ElementType.CDATA;
- get nodeType(): 4;
- }
- /**
- * The root node of the document.
- */
- export declare class Document extends NodeWithChildren {
- type: ElementType.Root;
- get nodeType(): 9;
- /** [Document mode](https://dom.spec.whatwg.org/#concept-document-limited-quirks) (parse5 only). */
- "x-mode"?: "no-quirks" | "quirks" | "limited-quirks";
- }
- /**
- * The description of an individual attribute.
- */
- interface Attribute {
- name: string;
- value: string;
- namespace?: string;
- prefix?: string;
- }
- /**
- * An element within the DOM.
- */
- export declare class Element extends NodeWithChildren {
- name: string;
- attribs: {
- [name: string]: string;
- };
- type: ElementType.Tag | ElementType.Script | ElementType.Style;
- /**
- * @param name Name of the tag, eg. `div`, `span`.
- * @param attribs Object mapping attribute names to attribute values.
- * @param children Children of the node.
- */
- constructor(name: string, attribs: {
- [name: string]: string;
- }, children?: ChildNode[], type?: ElementType.Tag | ElementType.Script | ElementType.Style);
- get nodeType(): 1;
- /**
- * `parse5` source code location info, with start & end tags.
- *
- * Available if parsing with parse5 and location info is enabled.
- */
- sourceCodeLocation?: TagSourceCodeLocation | null;
- /**
- * Same as {@link name}.
- * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
- */
- get tagName(): string;
- set tagName(name: string);
- get attributes(): Attribute[];
- /** Element namespace (parse5 only). */
- namespace?: string;
- /** Element attribute namespaces (parse5 only). */
- "x-attribsNamespace"?: Record<string, string>;
- /** Element attribute namespace-related prefixes (parse5 only). */
- "x-attribsPrefix"?: Record<string, string>;
- }
- /**
- * @param node Node to check.
- * @returns `true` if the node is a `Element`, `false` otherwise.
- */
- export declare function isTag(node: Node): node is Element;
- /**
- * @param node Node to check.
- * @returns `true` if the node has the type `CDATA`, `false` otherwise.
- */
- export declare function isCDATA(node: Node): node is CDATA;
- /**
- * @param node Node to check.
- * @returns `true` if the node has the type `Text`, `false` otherwise.
- */
- export declare function isText(node: Node): node is Text;
- /**
- * @param node Node to check.
- * @returns `true` if the node has the type `Comment`, `false` otherwise.
- */
- export declare function isComment(node: Node): node is Comment;
- /**
- * @param node Node to check.
- * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
- */
- export declare function isDirective(node: Node): node is ProcessingInstruction;
- /**
- * @param node Node to check.
- * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
- */
- export declare function isDocument(node: Node): node is Document;
- /**
- * @param node Node to check.
- * @returns `true` if the node has children, `false` otherwise.
- */
- export declare function hasChildren(node: Node): node is ParentNode;
- /**
- * Clone a node, and optionally its children.
- *
- * @param recursive Clone child nodes as well.
- * @returns A clone of the node.
- */
- export declare function cloneNode<T extends Node>(node: T, recursive?: boolean): T;
- export {};
- //# sourceMappingURL=node.d.ts.map
|