unist-builder
unist utility to create trees with ease.
Contents
What is this?
This package is a hyperscript interface (like createElement
from React and h
from Vue and such) to help with creating unist trees.
When should I use this?
You can use this utility in your project when you generate syntax trees with code. It helps because it replaces most of the repetition otherwise needed in a syntax tree with function calls.
You can instead use hastscript
or xastscript
when creating hast (HTML) or xast (XML) nodes.
Install
This package is ESM only. In Node.js (version 16+), install with npm:
npm install unist-builder
In Deno with esm.sh
:
import {u} from 'https://esm.sh/unist-builder@4'
In browsers with esm.sh
:
<script type="module">
import {u} from 'https://esm.sh/unist-builder@4?bundle'
</script>
Use
import {u} from 'unist-builder'
const tree = u('root', [
u('subtree', {id: 1}),
u('subtree', {id: 2}, [
u('node', [u('leaf', 'leaf 1'), u('leaf', 'leaf 2')]),
u('leaf', {id: 3}, 'leaf 3'),
u('void', {id: 4})
])
])
console.dir(tree, {depth: undefined})
…yields:
{
type: 'root',
children: [
{type: 'subtree', id: 1},
{
type: 'subtree',
id: 2,
children: [
{
type: 'node',
children: [
{type: 'leaf', value: 'leaf 1'},
{type: 'leaf', value: 'leaf 2'}
]
},
{type: 'leaf', id: 3, value: 'leaf 3'},
{type: 'void', id: 4}
]
}
]
}
API
This package exports the identifier u
. There is no default export.
u(type[, props][, children|value])
Build a node.
Signatures
u(type[, props], children)
— create a parent (Parent
)u(type[, props], value)
— create a literal (Literal
)u(type[, props])
— create a void node (neither parent not literal)
Parameters
type
(string
) — node typeprops
(Record<string, unknown>
) — fields assigned to nodechildren
(Array<Node>
) — children of nodevalue
(*
) — value ofnode
(cast to string)
Returns
Built node (Node
).
ChildrenOrValue
List to use as children
or value to use as value
(TypeScript type).
Type
type ChildrenOrValue = Array<Node> | string
Props
Other fields to add to the node (TypeScript type).
Type
export type Props = Record<string, unknown>
Types
This package is fully typed with TypeScript. It exports the additional types ChildrenOrValue
and Props
.
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, unist-builder@^4
, compatible with Node.js 16.
Related
hastscript
— create hast treesxastscript
— create xast trees
Contribute
See contributing.md
in syntax-tree/.github
for ways to get started. See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.
License
MIT © Eugene Sharygin