Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
unist-util-map
Advanced tools
The unist-util-map package is a utility for transforming unist syntax trees by applying a function to each node, creating a new tree with the same structure but with transformed nodes.
Transforming Nodes
This feature allows you to apply a transformation function to each node in a unist tree. In the example, each text node's value is transformed to uppercase.
const map = require('unist-util-map');
const tree = {
type: 'root',
children: [
{ type: 'text', value: 'Hello' },
{ type: 'text', value: 'World' }
]
};
const newTree = map(tree, node => {
if (node.type === 'text') {
return { ...node, value: node.value.toUpperCase() };
}
return node;
});
console.log(newTree);
unist-util-visit is a utility for walking through unist syntax trees and performing operations on nodes. Unlike unist-util-map, which creates a new tree with transformed nodes, unist-util-visit is typically used for side effects or gathering information from nodes.
unist-util-filter is used to create a new tree by filtering nodes based on a predicate function. While unist-util-map transforms nodes, unist-util-filter removes nodes that do not match the predicate.
unist-util-modify-children allows for modifying the children of a node in a unist tree. It is more focused on direct modifications rather than creating a new tree structure like unist-util-map.
unist utility to create a new tree by mapping all nodes with a given function.
This is a small utility that helps you make new trees.
You can use this utility to create a new tree by mapping all nodes with a given
function.
Creating new trees like this can lead to performance problems, as it creates
new objects for every node.
When dealing with potentially large trees, and relatively few changes, use
unist-util-visit
(or
unist-util-visit-parents
) instead.
To remove certain nodes, you can also walk the tree with unist-util-visit
, or
use unist-util-filter
(clones the tree instead of
mutating) or unist-util-remove
(mutates).
To create trees, use unist-builder
.
This package is ESM only. In Node.js (version 12.20+, 14.14+, 16.0+, 18.0+), install with npm:
npm install unist-util-map
In Deno with esm.sh
:
import {map} from "https://esm.sh/unist-util-map@3"
In browsers with esm.sh
:
<script type="module">
import {map} from "https://esm.sh/unist-util-map@3?bundle"
</script>
import {u} from 'unist-builder'
import {map} from 'unist-util-map'
const tree = u('tree', [
u('leaf', 'leaf 1'),
u('node', [u('leaf', 'leaf 2')]),
u('void'),
u('leaf', 'leaf 3')
])
const next = map(tree, (node) => {
return node.type === 'leaf'
? Object.assign({}, node, {value: 'CHANGED'})
: node
})
console.dir(next, {depth: null})
Yields:
{
type: 'tree',
children: [
{type: 'leaf', value: 'CHANGED'},
{type: 'node', children: [{type: 'leaf', value: 'CHANGED'}]},
{type: 'void'},
{type: 'leaf', value: 'CHANGED'}
]
}
👉 Note:
next
is a changed clone andtree
is not mutated.
This package exports the identifier map
.
There is no default export.
map(tree, mapFunction)
Create a new tree (Node
) by mapping all nodes with the given function
(MapFunction
).
New mapped tree (Node
).
function mapFunction(node, index, parent)
Function called with a node (Node
), its index (number?
), and its
parent (Node?
) to produce a new node.
Node to be used in the new tree (Node
).
The children on the returned node are not used.
if the original node has children, those are mapped instead.
This package is fully typed with TypeScript.
It exports a type MapFunction<Tree extends Node = Node>
to properly type MapFunction
s.
Projects maintained by the unified collective are compatible with all maintained versions of Node.js. As of now, that is Node.js 12.20+, 14.14+, 16.0+, and 18.0+. Our projects sometimes work with older versions, but this is not guaranteed.
unist-util-filter
— create a new tree with all nodes that pass the given functionunist-util-flatmap
— create a new tree by expanding a node into manyunist-util-remove
— remove nodes from treesunist-util-select
— select nodes with CSS-like selectorsunist-util-visit
— walk treesunist-builder
— create treesSee 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.
FAQs
unist utility to create a new tree by mapping all nodes
The npm package unist-util-map receives a total of 81,210 weekly downloads. As such, unist-util-map popularity was classified as popular.
We found that unist-util-map demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.