
Security News
GitHub Actions Checkout Now Blocks Risky pull_request_target Checkouts
GitHub Actions checkout now blocks risky pull_request_target checkouts by default to help prevent pwn request supply chain attacks.
optimuslime-traverse
Advanced tools
traverse and transform objects by visiting every node on a recursive walk
Traverse and transform objects by visiting every node on a recursive walk.
negative.js
var traverse = require('traverse');
var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
traverse(obj).forEach(function (x) {
if (x < 0) this.update(x + 128);
});
console.dir(obj);
Output:
[ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ]
leaves.js
var traverse = require('traverse');
var obj = {
a : [1,2,3],
b : 4,
c : [5,6],
d : { e : [7,8], f : 9 },
};
var leaves = traverse(obj).reduce(function (acc, x) {
if (this.isLeaf) acc.push(x);
return acc;
}, []);
console.dir(leaves);
Output:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
scrub.js:
var traverse = require('traverse');
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
obj.c.push(obj);
var scrubbed = traverse(obj).map(function (x) {
if (this.circular) this.remove()
});
console.dir(scrubbed);
output:
{ a: 1, b: 2, c: [ 3, 4 ] }
Each method that takes an fn uses the context documented below in the context
section.
Execute fn for each node in the object and return a new object with the
results of the walk. To update nodes in the result use this.update(value).
Execute fn for each node in the object but unlike .map(), when
this.update() is called it updates the object in-place.
For each node in the object, perform a
left-fold
with the return value of fn(acc, node).
If acc isn't specified, acc is set to the root object for the first step
and the root element is skipped.
Return an Array of every possible non-cyclic path in the object.
Paths are Arrays of string keys.
Return an Array of every node in the object.
Create a deep clone of the object.
Get the element at the array path.
Set the element at the array path to value.
Return whether the element at the array path exists.
Each method that takes a callback has a context (its this object) with these
attributes:
The present node on the recursive walk
An array of string keys from the root to the present node
The context of the node's parent.
This is undefined for the root node.
The name of the key of the present node in its parent.
This is undefined for the root node.
Whether the present node is the root node
Whether or not the present node is a leaf node (has no children)
Depth of the node within the traversal
If the node equals one of its parents, the circular attribute is set to the
context of that parent and the traversal progresses no deeper.
Set a new value for the present node.
All the elements in value will be recursively traversed unless stopHere is
true.
Remove the current element from the output. If the node is in an Array it will be spliced off. Otherwise it will be deleted from its parent.
Delete the current element from its parent in the output. Calls delete even on
Arrays.
Call this function before any of the children are traversed.
You can assign into this.keys here to traverse in a custom order.
Call this function after any of the children are traversed.
Call this function before each of the children are traversed.
Call this function after each of the children are traversed.
Using npm do:
$ npm install traverse
MIT
FAQs
traverse and transform objects by visiting every node on a recursive walk
The npm package optimuslime-traverse receives a total of 7 weekly downloads. As such, optimuslime-traverse popularity was classified as not popular.
We found that optimuslime-traverse 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.

Security News
GitHub Actions checkout now blocks risky pull_request_target checkouts by default to help prevent pwn request supply chain attacks.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.