From 8fe1e5629e28099ed6fb9156de72a51fe1ef3ed2 Mon Sep 17 00:00:00 2001 From: Jamie Kyle Date: Thu, 15 Dec 2022 10:37:06 -0800 Subject: [PATCH] Skip traversal of `null` nodes Fixes #2 --- index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 88a4895..bc595b5 100644 --- a/index.js +++ b/index.js @@ -20,20 +20,24 @@ function traverse(context, node, visitor) { let result = visitor(currentPath) if (result === STOP) break if (result === SKIP) continue + + let currentNode = currentPath.node + if (currentNode == null) continue - let visitorKeys = allVisitorKeys[currentPath.node.type] + let visitorKeys = allVisitorKeys[currentNode.type] if (!visitorKeys) continue for (let visitorKey of visitorKeys) { - let child = currentPath.node[visitorKey] + let child = currentNode[visitorKey] if (!child) { continue } else if (Array.isArray(child)) { for (let item of child) { + if (item == null) continue queue.push({ node: item, - parent: currentPath.node, + parent: currentNode, parentKey: visitorKey, parentPath: currentPath, }) @@ -41,7 +45,7 @@ function traverse(context, node, visitor) { } else { queue.push({ node: child, - parent: currentPath.node, + parent: currentNode, parentKey: visitorKey, parentPath: currentPath, })