hast-util-assert

hast utility to assert nodes

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
hast-util-assert
4.0.09 months ago8 years agoMinified + gzip package size for hast-util-assert in KB

Readme

hast-util-assert
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
hast utility to assert trees.

Contents

*   [`assert(tree[, parent])`](#asserttree-parent)
*   [`parent(tree[, parent])`](#parenttree-parent)
*   [`literal(node[, parent])`](#literalnode-parent)
*   [`_void(node[, parent])`](#_voidnode-parent)
*   [`wrap(fn)`](#wrapfn)
*   [`AssertionError`](#assertionerror)

What is this?

This package is a tiny utility that helps you deal with nodes.

When should I use this?

This utility is typically useful when you expect certain nodes in your APIs and want to make sure they’re valid and as expected.
A different utility, unist-util-assertunist-util-assert, does the same but for any unist node.

Install

This package is ESM onlyesm. In Node.js (version 16+), install with npm:
npm install hast-util-assert

In Deno with esm.shesmsh:
import {assert} from 'https://esm.sh/hast-util-assert@4'

In browsers with esm.shesmsh:
<script type="module">
  import {assert} from 'https://esm.sh/hast-util-assert@4?bundle'
</script>

Use

import {assert} from 'hast-util-assert'

assert({type: 'root', children: []})
assert({type: 'element', tagName: 'a', properties: {}, children: []})
// All OK.

assert({children: []})
// AssertionError: node should have a type: `{ children: [] }`

assert({type: 'element', properties: {}, children: []})
// AssertionError: `element` should have a `tagName`: `{ type: 'element', properties: {}, children: [] }`

API

This package exports the identifiers _voidapi-void, assertapi-assert, literalapi-literal, parentapi-parent, and wrapapi-wrap. There is no default export.

assert(tree[, parent])

Assert that tree is a valid hast Nodenode.
If tree is a parent, all children will be asserted too.
Supports unknown hast nodes.
Parameters
  • tree (unknown)
— thing to assert
— optional, valid parent
Returns
Nothing.
Throws
When tree (or its descendants) is not a hast node (AssertionErrorapi-assertion-error).

parent(tree[, parent])

Assert that tree is a valid hast Parentparent-node.
All children will be asserted too.
Supports unknown hast nodes.
Parameters
  • tree (unknown)
— thing to assert
— optional, valid parent
Returns
Nothing.
Throws
When tree is not a parent or its descendants are not nodes (AssertionErrorapi-assertion-error)

literal(node[, parent])

Assert that node is a valid hast Literalliteral-node.
Supports unknown hast nodes.
Parameters
  • node (unknown)
— thing to assert
— optional, valid parent
Returns
Nothing.
Throws
When node is not a hast literal (AssertionErrorapi-assertion-error).

_void(node[, parent])

Re-exported from unist-util-assertunist-util-assert-void.

wrap(fn)

Re-exported from unist-util-assertunist-util-assert-wrap.

AssertionError

Re-exported from unist-util-assertunist-util-assert-assertion-error.

Types

This package is fully typed with TypeScript. It exports the additional type AssertionErrorapi-assertion-error.

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, hast-util-assert@^4, compatible with Node.js 16.

Security

hast-util-assert does not change the syntax tree so there are no openings for cross-site scripting (XSS)xss attacks.

Related

— check [unist](https://github.com/syntax-tree/unist) nodes
— check [mdast](https://github.com/syntax-tree/mdast) nodes
— check [nlcst](https://github.com/syntax-tree/nlcst) nodes

Contribute

See contributing.mdcontributing in syntax-tree/.githubhealth for ways to get started. See support.mdsupport for ways to get help.
This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.

License

MITlicense © Titus Wormerauthor