export interface DOMAPI { createElement: (tagName: any) => HTMLElement; createElementNS: (namespaceURI: string, qualifiedName: string) => Element; createTextNode: (text: string) => Text; createComment: (text: string) => Comment; insertBefore: (parentNode: Node, newNode: Node, referenceNode: Node | null) => void; removeChild: (node: Node, child: Node) => void; appendChild: (node: Node, child: Node) => void; parentNode: (node: Node) => Node; nextSibling: (node: Node) => Node; tagName: (elm: Element) => string; setTextContent: (node: Node, text: string | null) => void; getTextContent: (node: Node) => string | null; isElement: (node: Node) => node is Element; isText: (node: Node) => node is Text; isComment: (node: Node) => node is Comment; } function createElement(tagName: any): HTMLElement { return document.createElement(tagName); } function createElementNS(namespaceURI: string, qualifiedName: string): Element { return document.createElementNS(namespaceURI, qualifiedName); } function createTextNode(text: string): Text { return document.createTextNode(text); } function createComment(text: string): Comment { return document.createComment(text); } function insertBefore(parentNode: Node, newNode: Node, referenceNode: Node | null): void { parentNode.insertBefore(newNode, referenceNode); } function removeChild(node: Node, child: Node): void { node.removeChild(child); } function appendChild(node: Node, child: Node): void { node.appendChild(child); } function parentNode(node: Node): Node | null { return node.parentNode; } function nextSibling(node: Node): Node | null { return node.nextSibling; } function tagName(elm: Element): string { return elm.tagName; } function setTextContent(node: Node, text: string | null): void { node.textContent = text; } function getTextContent(node: Node): string | null { return node.textContent; } function isElement(node: Node): node is Element { return node.nodeType === 1; } function isText(node: Node): node is Text { return node.nodeType === 3; } function isComment(node: Node): node is Comment { return node.nodeType === 8; } export const htmlDomApi = { createElement, createElementNS, createTextNode, createComment, insertBefore, removeChild, appendChild, parentNode, nextSibling, tagName, setTextContent, getTextContent, isElement, isText, isComment, } as DOMAPI; export default htmlDomApi;