kjelsrud.dev/node_modules/unist-util-remove-position/lib/index.js

49 lines
1,010 B
JavaScript
Raw Normal View History

2023-07-19 21:31:30 +02:00
/**
* @typedef {import('unist').Node} Node
*/
/**
* @typedef Options
* Configuration.
* @property {boolean | null | undefined} [force=false]
* Whether to use `delete` to remove `position` fields.
*
* The default is to set them to `undefined`.
*/
import {visit} from 'unist-util-visit'
/**
* Remove the `position` field from a tree.
*
* @template {Node} Tree
* Node type.
* @param {Tree} tree
* Tree to clean.
* @param {Options | boolean | null | undefined} [options]
* Configuration.
* @returns {Tree}
* The given, modified, `tree`.
*/
// To do: next major: return `void`.
// To do: remove `force` shortcut, replace with options.
export function removePosition(tree, options) {
const force =
typeof options === 'boolean' ? options : options ? options.force : false
visit(tree, remove)
return tree
/**
* @param {Node} node
*/
function remove(node) {
if (force) {
delete node.position
} else {
node.position = undefined
}
}
}