diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:10:59 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:41:44 +0800 |
| commit | fc87c009806dcc98867f6b58efe29b042aa01dee (patch) | |
| tree | 8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/svgo/lib/xast.js | |
| parent | 3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff) | |
node: updatemain
Diffstat (limited to 'node_modules/svgo/lib/xast.js')
| -rw-r--r-- | node_modules/svgo/lib/xast.js | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/node_modules/svgo/lib/xast.js b/node_modules/svgo/lib/xast.js deleted file mode 100644 index 9dca9646..00000000 --- a/node_modules/svgo/lib/xast.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -/** - * @typedef {import('./types').XastNode} XastNode - * @typedef {import('./types').XastChild} XastChild - * @typedef {import('./types').XastParent} XastParent - * @typedef {import('./types').Visitor} Visitor - */ - -const { selectAll, selectOne, is } = require('css-select'); -const xastAdaptor = require('./svgo/css-select-adapter.js'); - -const cssSelectOptions = { - xmlMode: true, - adapter: xastAdaptor, -}; - -/** - * @type {(node: XastNode, selector: string) => XastChild[]} - */ -const querySelectorAll = (node, selector) => { - return selectAll(selector, node, cssSelectOptions); -}; -exports.querySelectorAll = querySelectorAll; - -/** - * @type {(node: XastNode, selector: string) => ?XastChild} - */ -const querySelector = (node, selector) => { - return selectOne(selector, node, cssSelectOptions); -}; -exports.querySelector = querySelector; - -/** - * @type {(node: XastChild, selector: string) => boolean} - */ -const matches = (node, selector) => { - return is(node, selector, cssSelectOptions); -}; -exports.matches = matches; - -const visitSkip = Symbol(); -exports.visitSkip = visitSkip; - -/** - * @type {(node: XastNode, visitor: Visitor, parentNode?: any) => void} - */ -const visit = (node, visitor, parentNode) => { - const callbacks = visitor[node.type]; - if (callbacks && callbacks.enter) { - // @ts-ignore hard to infer - const symbol = callbacks.enter(node, parentNode); - if (symbol === visitSkip) { - return; - } - } - // visit root children - if (node.type === 'root') { - // copy children array to not loose cursor when children is spliced - for (const child of node.children) { - visit(child, visitor, node); - } - } - // visit element children if still attached to parent - if (node.type === 'element') { - if (parentNode.children.includes(node)) { - for (const child of node.children) { - visit(child, visitor, node); - } - } - } - if (callbacks && callbacks.exit) { - // @ts-ignore hard to infer - callbacks.exit(node, parentNode); - } -}; -exports.visit = visit; - -/** - * @param {XastChild} node - * @param {XastParent} parentNode - */ -const detachNodeFromParent = (node, parentNode) => { - // avoid splice to not break for loops - parentNode.children = parentNode.children.filter((child) => child !== node); -}; -exports.detachNodeFromParent = detachNodeFromParent; |
