extra-dom

Utilities for DOM.

Usage no npm install needed!

<script type="module">
  import extraDom from 'https://cdn.skypack.dev/extra-dom';
</script>

README

extra-dom

Utilities for DOM.

Install

npm install --save extra-dom
# or
yarn add extra-dom

API

flatMap

function flatMap(node: Node, fn: (node: Node) => Node[]): Node[]

Traverse the node tree and do flatMap.

  • []: remove current node
  • [node]: replace current node
  • [node1, node2, ...nodeN]: replace current node with more nodes

map

function map(node: Node, fn: (node: Node) => Node): Node

Traverse the node tree and do map.

filter

function filter(node: Node, predicate: (node: Node) => unknown): Node | undefined

Traverse the node tree and do filter.

unwrap

function unwrap(node: Node, predicate: (node: Node) => unknown): Node[]

Traverse the node tree and do unwrap.

find

function find(node: Node, predicate: (node: Node) => unknown): Node | undefined

Traverse the node tree and do find.

parse

function parse(html: string): Node[]

stringify

function stringify(nodes: Node[]): string

normalize

function normalize(html: string): string

It is the shortcut for stringify(parse(html)).

removeAllChildren

function removeAllChildren(node: Node): void

removeAttributes

function removeAttributes(node: Node, predicate: (name: string) => unknown): void

getBySelector

function getBySelector<T extends Element>(
  this: void | Element | Document
, selectors: string
): T

Return the first matched element.

If cannot find any elements, it throws.

getAllBySelector

function getAllBySelector<T extends Element>(
  this: void | Element | Document
, selectors: string
): T[]

Return matched elements.

If cannot find any elements, it throws.

traverseAncestorNodes

function traverseAncestorNodes(node: Node): Iterable<Node & ParentNode>

traverseDescendantNodes

function traverseDescendantNodes(node: Node): Iterable<ChildNode>

findInAncestorNodes

function findInAncestorNodes(
  node: Node
, predicate: (node: Node & ParentNode) => unknown
): (Node & ParentNode) | undefined

findInDescendantNodes

function find(node: Node, predicate: (node: ChildNode) => unknown): ChildNode | undefined

findInPrecedingSiblingNodes

function findInPrecedingSiblingNodes(
  node: Node
, predicate: (node: Node) => unknown
): Node | undefined

This function uses Node.previousSibling to traverse the preceding sibling nodes.

findInFollowingSiblingNodes

function findInFollowingSiblingNodes(
  node: Node
, predicate: (node: Node) => unknown
): Node | undefined

This function uses Node.nextSibling to traverse the following sibling nodes.

parentNode

function parentNode(node: Node, distance: number = 1): (Node & ParentNode) | undefined

nextSibling

function nextSibling(node: Node, distance: number = 1): ChildNode | undefined

previousSibling

function previousSibling(node: Node, distance: number = 1): ChildNode | undefined

nextElementSibling

function nextElementSibling(node: Node, distance: number = 1): Element | undefined

previousElementSibling

function previousElementSibling(node: Node, distance: number = 1): Element | undefined

isDocument

function isDocument(val: any): val is Document

isntDocument

function isntDocument<T>(val: T): val is Exclude<T, Document>

isElement

function isElement(val: any): val is Element

isntElement

function isntElement<T>(val: T): val is Exclude<T, Element>

isTextNode

function isTextNode(val: any): val is Text

isntTextNode

function isntTextNode<T>(val: any): node is Exclude<T, Text>

isNode

function isNode(val: any): val is Node

isntNode

function isntNode<T>(val: T): val is Exclude<T, Node>

isParentNode

function isParentNode(val: any): val is Node & ParentNode

isntParentNode

function isntParentNode<T>(val: any): val is Exclude<T, Node & ParentNode>

isBefore

function isBefore(subject: Node, object: Node): boolean

isAfter

function isAfter(subject: Node, object: Node): boolean

NodeType

enum NodeType {
  ELEMENT_NODE
, ATTRIBUTE_NODE
, TEXT_NODE
, CDATA_SECTION_NODE
, ENTITY_REFERENCE_NODE
, ENTITY_NODE
, PROCESSING_INSTRUCTION_NODE
, COMMENT_NODE
, DOCUMENT_NODE
, DOCUMENT_TYPE_NODE
, DOCUMENT_FRAGMENT_NODE
, NOTATION_NODE
}

XPathResultType

enum XPathResultType {
  ANY_TYPE
, NUMBER_TYPE
, STRING_TYPE
, BOOLEAN_TYPE
, UNORDERED_NODE_ITERATOR_TYPE
, ORDERED_NODE_ITERATOR_TYPE
, UNORDERED_NODE_SNAPSHOT_TYPE
, ORDERED_NODE_SNAPSHOT_TYPE
, ANY_UNORDERED_NODE_TYPE
, FIRST_ORDERED_NODE_TYPE
}