Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
hast-util-is-element
Advanced tools
The hast-util-is-element package is a utility for working with HAST (Hypertext Abstract Syntax Tree) nodes. It provides functions to check if a node is an element and optionally matches a given tag name. This is particularly useful when manipulating or inspecting HTML represented within JavaScript.
Check if a node is an element
This feature allows you to verify if a given node is an element node within a HAST structure. It's useful for filtering or processing nodes in a tree.
const isElement = require('hast-util-is-element');
const node = {type: 'element', tagName: 'div'};
console.log(isElement(node)); // Outputs: true
Check if a node is a specific element
This feature extends the basic check to allow for specification of the tag name. It's useful for finding or working with specific types of elements in a document.
const isElement = require('hast-util-is-element');
const node = {type: 'element', tagName: 'span'};
console.log(isElement(node, 'span')); // Outputs: true
This package offers a more generalized approach for checking node types in unist trees, which is a part of the broader unified ecosystem. Unlike hast-util-is-element, unist-util-is can be used with different syntax trees beyond HTML, offering greater flexibility.
Similar in utility scope within the HAST ecosystem, this package checks for the presence of properties in elements. While hast-util-is-element focuses on the type and tag name of nodes, hast-util-has-property deals with the properties of those nodes, providing a complementary functionality.
hast utility to check if a node is a (certain) element.
This package is a small utility that checks that a node is a certain element.
Use this small utility if you find yourself repeating code for checking what elements nodes are.
A similar package, unist-util-is
, works on any unist node.
For more advanced tests, hast-util-select
can be used
to match against CSS selectors.
This package is ESM only. In Node.js (version 16+), install with npm:
npm install hast-util-is-element
In Deno with esm.sh
:
import {isElement} from 'https://esm.sh/hast-util-is-element@3'
In browsers with esm.sh
:
<script type="module">
import {isElement} from 'https://esm.sh/hast-util-is-element@3?bundle'
</script>
import {isElement} from 'hast-util-is-element'
isElement({type: 'text', value: 'foo'}) // => false
isElement({type: 'element', tagName: 'a', properties: {}, children: []}) // => true
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, 'a') // => true
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, 'b') // => false
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, ['a', 'area']) // => true
This package exports the identifiers
convertElement
and
isElement
.
There is no default export.
isElement(element[, test[, index, parent[, context]]])
Check if element
is an Element
and whether it passes the given test.
element
(unknown
, optional)
— thing to check, typically Node
test
(Test
, optional)
— check for a specific elementindex
(number
, optional)
— position of element
in its parentparent
(Parent
, optional)
— parent of element
context
(unknown
, optional)
— context object (this
) to call test
withWhether element
is an Element
and passes a test (boolean
).
When an incorrect test
, index
, or parent
is given.
There is no error thrown when element
is not a node or not an element.
convertElement(test)
Generate a check from a test.
Useful if you’re going to test many nodes, for example when creating a utility where something else passes a compatible test.
The created function is a bit faster because it expects valid input only:
a element
, index
, and parent
.
test
(Test
, optional)
— a test for a specific elementA check (Check
).
Check
Check that an arbitrary value is an element (TypeScript type).
this
(unknown
, optional)
— context object (this
) to call test
withelement
(unknown
)
— anything (typically an element)index
(number
, optional)
— position of element
in its parentparent
(Parent
, optional)
— parent of element
Whether this is an element and passes a test (boolean
).
Test
Check for an arbitrary element (TypeScript type).
string
, checks that the element has that tag namefunction
, see TestFunction
Array
, checks if one of the subtests passtype Test =
| Array<TestFunction | string>
| TestFunction
| string
| null
| undefined
TestFunction
Check if an element passes a test (TypeScript type).
element
(Element
)
— an elementindex
(number
or undefined
)
— position of element
in its parentparent
(Parent
or undefined
)
— parent of element
Whether this element passes the test (boolean
, optional).
This package is fully typed with TypeScript.
It exports the additional types Check
,
Test
, and
TestFunction
.
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-is-element@^3
,
compatible with Node.js 16.
hast-util-is-element
does not change the syntax tree so there are no openings
for cross-site scripting (XSS) attacks.
hast-util-has-property
— check if a node has a propertyhast-util-is-body-ok-link
— check if a node is “Body OK” link elementhast-util-is-conditional-comment
— check if a node is a conditional commenthast-util-is-css-link
— check if a node is a CSS link elementhast-util-is-css-style
— check if a node is a CSS style elementhast-util-embedded
— check if a node is an embedded elementhast-util-heading
— check if a node is a heading elementhast-util-interactive
— check if a node is interactivehast-util-is-javascript
— check if a node is a JavaScript script elementhast-util-labelable
— check whether a node is labelablehast-util-phrasing
— check if a node is phrasing contenthast-util-script-supporting
— check if a node is a script-supporting elementhast-util-sectioning
— check if a node is a sectioning elementhast-util-transparent
— check if a node is a transparent elementhast-util-whitespace
— check if a node is inter-element whitespaceSee 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
hast utility to check if a node is a (certain) element
The npm package hast-util-is-element receives a total of 2,669,193 weekly downloads. As such, hast-util-is-element popularity was classified as popular.
We found that hast-util-is-element 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.