Socket
Socket
Sign inDemoInstall

estree-walker

Package Overview
Dependencies
0
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.8.1 to 0.9.0

4

CHANGELOG.md
# changelog
## 0.9.0
* Add `this.remove()` method
## 0.8.1

@@ -4,0 +8,0 @@

@@ -12,5 +12,7 @@ (function (global, factory) {

let should_skip = false;
let should_remove = false;
let replacement = null;
const context = {
skip: () => should_skip = true,
remove: () => should_remove = true,
replace: (node) => replacement = node

@@ -31,2 +33,12 @@ };

function remove(parent, prop, index) {
if (parent) {
if (index !== null) {
parent[prop].splice(index, 1);
} else {
delete parent[prop];
}
}
}
function visit(

@@ -43,4 +55,6 @@ node,

const _should_skip = should_skip;
const _should_remove = should_remove;
const _replacement = replacement;
should_skip = false;
should_remove = false;
replacement = null;

@@ -55,8 +69,15 @@

if (should_remove) {
remove(parent, prop, index);
}
const skipped = should_skip;
const removed = should_remove;
should_skip = _should_skip;
should_remove = _should_remove;
replacement = _replacement;
if (skipped) return node;
if (removed) return null;
}

@@ -73,4 +94,9 @@

if (Array.isArray(value)) {
for (let j = 0; j < value.length; j += 1) {
value[j] && value[j].type && visit(value[j], node, enter, leave, key, j);
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
if (value[j] && value[j].type) {
if (!visit(value[j], node, enter, leave, key, k)) {
// removed
j--;
}
}
}

@@ -86,3 +112,5 @@ }

const _replacement = replacement;
const _should_remove = should_remove;
replacement = null;
should_remove = false;

@@ -96,3 +124,12 @@ leave.call(context, node, parent, prop, index);

if (should_remove) {
remove(parent, prop, index);
}
const removed = should_remove;
replacement = _replacement;
should_remove = _should_remove;
if (removed) return null;
}

@@ -99,0 +136,0 @@ }

2

package.json
{
"name": "estree-walker",
"description": "Traverse an ESTree-compliant AST",
"version": "0.8.1",
"version": "0.9.0",
"author": "Rich Harris",

@@ -6,0 +6,0 @@ "license": "MIT",

@@ -35,2 +35,3 @@ # estree-walker

Call `this.remove()` in either `enter` or `leave` to remove the current node.

@@ -37,0 +38,0 @@ ## Why not use estraverse?

@@ -6,5 +6,7 @@ function walk(ast, { enter, leave }) {

let should_skip = false;
let should_remove = false;
let replacement = null;
const context = {
skip: () => should_skip = true,
remove: () => should_remove = true,
replace: (node) => replacement = node

@@ -25,2 +27,12 @@ };

function remove(parent, prop, index) {
if (parent) {
if (index !== null) {
parent[prop].splice(index, 1);
} else {
delete parent[prop];
}
}
}
function visit(

@@ -37,4 +49,6 @@ node,

const _should_skip = should_skip;
const _should_remove = should_remove;
const _replacement = replacement;
should_skip = false;
should_remove = false;
replacement = null;

@@ -49,8 +63,15 @@

if (should_remove) {
remove(parent, prop, index);
}
const skipped = should_skip;
const removed = should_remove;
should_skip = _should_skip;
should_remove = _should_remove;
replacement = _replacement;
if (skipped) return node;
if (removed) return null;
}

@@ -67,4 +88,9 @@

if (Array.isArray(value)) {
for (let j = 0; j < value.length; j += 1) {
value[j] && value[j].type && visit(value[j], node, enter, leave, key, j);
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
if (value[j] && value[j].type) {
if (!visit(value[j], node, enter, leave, key, k)) {
// removed
j--;
}
}
}

@@ -80,3 +106,5 @@ }

const _replacement = replacement;
const _should_remove = should_remove;
replacement = null;
should_remove = false;

@@ -90,3 +118,12 @@ leave.call(context, node, parent, prop, index);

if (should_remove) {
remove(parent, prop, index);
}
const removed = should_remove;
replacement = _replacement;
should_remove = _should_remove;
if (removed) return null;
}

@@ -93,0 +130,0 @@ }

@@ -5,2 +5,3 @@ import { Node } from "estree";

skip: () => void;
remove: () => void;
replace: (node: Node) => void;

@@ -27,5 +28,7 @@ };

let should_skip = false;
let should_remove = false;
let replacement: Node = null;
const context: WalkerContext = {
skip: () => should_skip = true,
remove: () => should_remove = true,
replace: (node: Node) => replacement = node

@@ -46,2 +49,12 @@ };

function remove(parent: any, prop: string, index: number) {
if (parent) {
if (index !== null) {
parent[prop].splice(index, 1);
} else {
delete parent[prop];
}
}
}
function visit(

@@ -58,4 +71,6 @@ node: Node,

const _should_skip = should_skip;
const _should_remove = should_remove;
const _replacement = replacement;
should_skip = false;
should_remove = false;
replacement = null;

@@ -70,8 +85,15 @@

if (should_remove) {
remove(parent, prop, index);
}
const skipped = should_skip;
const removed = should_remove;
should_skip = _should_skip;
should_remove = _should_remove;
replacement = _replacement;
if (skipped) return node;
if (removed) return null;
}

@@ -88,4 +110,9 @@

if (Array.isArray(value)) {
for (let j = 0; j < value.length; j += 1) {
value[j] && value[j].type && visit(value[j], node, enter, leave, key, j);
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
if (value[j] && value[j].type) {
if (!visit(value[j], node, enter, leave, key, k)) {
// removed
j--;
}
}
}

@@ -101,3 +128,5 @@ }

const _replacement = replacement;
const _should_remove = should_remove;
replacement = null;
should_remove = false;

@@ -111,3 +140,12 @@ leave.call(context, node, parent, prop, index);

if (should_remove) {
remove(parent, prop, index);
}
const removed = should_remove;
replacement = _replacement;
should_remove = _should_remove;
if (removed) return null;
}

@@ -114,0 +152,0 @@ }

import { Node } from "estree";
declare type WalkerContext = {
skip: () => void;
remove: () => void;
replace: (node: Node) => void;

@@ -11,4 +12,4 @@ };

};
export declare function walk(ast: Node, { enter, leave }: Walker): Node;
export declare function walk(ast: Node, { enter, leave }: Walker): import("estree").Identifier | import("estree").SimpleLiteral | import("estree").RegExpLiteral | import("estree").Program | import("estree").FunctionDeclaration | import("estree").FunctionExpression | import("estree").ArrowFunctionExpression | import("estree").SwitchCase | import("estree").CatchClause | import("estree").VariableDeclarator | import("estree").ExpressionStatement | import("estree").BlockStatement | import("estree").EmptyStatement | import("estree").DebuggerStatement | import("estree").WithStatement | import("estree").ReturnStatement | import("estree").LabeledStatement | import("estree").BreakStatement | import("estree").ContinueStatement | import("estree").IfStatement | import("estree").SwitchStatement | import("estree").ThrowStatement | import("estree").TryStatement | import("estree").WhileStatement | import("estree").DoWhileStatement | import("estree").ForStatement | import("estree").ForInStatement | import("estree").ForOfStatement | import("estree").VariableDeclaration | import("estree").ClassDeclaration | import("estree").ThisExpression | import("estree").ArrayExpression | import("estree").ObjectExpression | import("estree").YieldExpression | import("estree").UnaryExpression | import("estree").UpdateExpression | import("estree").BinaryExpression | import("estree").AssignmentExpression | import("estree").LogicalExpression | import("estree").MemberExpression | import("estree").ConditionalExpression | import("estree").SimpleCallExpression | import("estree").NewExpression | import("estree").SequenceExpression | import("estree").TemplateLiteral | import("estree").TaggedTemplateExpression | import("estree").ClassExpression | import("estree").MetaProperty | import("estree").AwaitExpression | import("estree").Property | import("estree").Super | import("estree").TemplateElement | import("estree").SpreadElement | import("estree").ObjectPattern | import("estree").ArrayPattern | import("estree").RestElement | import("estree").AssignmentPattern | import("estree").ClassBody | import("estree").MethodDefinition | import("estree").ImportDeclaration | import("estree").ExportNamedDeclaration | import("estree").ExportDefaultDeclaration | import("estree").ExportAllDeclaration | import("estree").ImportSpecifier | import("estree").ImportDefaultSpecifier | import("estree").ImportNamespaceSpecifier | import("estree").ExportSpecifier;
export declare const childKeys: Record<string, string[]>;
export {};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc