Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
reshape-plugin-util
Advanced tools
A little set of utilities for reshape plugins
Note: This project is in early development, and versioning is a little different. Read this for more details.
npm i reshape-plugin-util --save
Note: This project is compatible with node v6+ only
This is just a small utility that contains a couple a useful functions when developing reshape plugins.
modifyNodes(tree, match, transform)
Given a reshape AST, a function that will return any node that matches given criteria, and a function that receives matched nodes and returns one or more modified nodes, returns a modified AST.
Example: Using modifyNodes
to modify a node's content
const util = require('reshape-plugin-util')
module.exports = function yellPlugin (tree) {
return util.modifyNodes(tree, (node) => node.name === 'p', (node) => {
node.content = node.content.map((n) => n.content.toUpperCase())
return node
})
}
Input:
<p>hello world!</p>
Output:
<p>HELLO WORLD!</p>
Example: Using modifyNodes
to remove a node
const util = require('reshape-plugin-util')
module.exports = function removeNodePlugin (tree) {
return util.modifyNodes(tree, (node) => node.name === 'remove', (node) => {
return null
})
}
Input:
<p>before</p>
<remove>hello world!</remove>
<p>after</p>
Output:
<p>before</p>
<p>after</p>
Example: Using modifyNodes
to add extra nodes
const util = require('reshape-plugin-util')
module.exports = function echoPlugin (tree) {
return util.modifyNodes(tree, (node) => node.name === 'echo', (node) => {
if (!node.attrs) node.attrs = {}
if (!node.attrs.class) node.attrs.class = []
node.attrs.class.push('echo')
node.name = 'div'
return [node, node]
})
}
Input:
<p>before</p>
<echo>echo</echo>
<p>after</p>
Output:
<p>before</p>
<div class='echo'>echo</div>
<div class='echo'>echo</div>
<p>after</p>
You can also return a promise from either function and it will work fine.
validateNode(node)
Given a single reshape AST node, checks it for formatting errors. Example:
const util = require('reshape-plugin-util')
util.validateNode({
type: 'text',
content: ['foo', 'bar'],
location: { line: 1, col: 1 }
})
// => Error: text node content must be a string
// From: plugin-util
// Node: {
// type: 'text',
// content: ['foo', 'bar'],
// location: { line: 1, col: 1 }
// }
validateTree(tree)
Recursively validates each node in a given reshape AST tree.
const util = require('reshape-plugin-util')
util.validateNode({
type: 'tag',
name: 'div'
content: [
{
content: 'foo',
location: { line: 1, col: 4 }
}
],
location: { line: 1, col: 1 }
})
// => Error: node missing "type" attribute
// From: plugin-util
// Node: {
// content: 'foo',
// location: { line: 1, col: 4}
// }
FAQs
utilities for reshape plugins
We found that reshape-plugin-util demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.