{"_id":"eslint-traverse","_rev":"14-24edfde7f6cbad76285fd0b733282f21","name":"eslint-traverse","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"eslint-traverse","version":"1.0.0","keywords":["eslint","es","ecmascript","lint","linter","traverse","visitor","visit","walk","ast","abstract","syntax","tree","babel","babylon","plugin"],"author":{"name":"Jamie Kyle","email":"jamie.kyle@discordapp.com"},"license":"MIT","_id":"eslint-traverse@1.0.0","maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"homepage":"https://github.com/discord/eslint-traverse#readme","bugs":{"url":"https://github.com/discord/eslint-traverse/issues"},"dist":{"shasum":"108d360a171a6e6334e1af0cee905a93bd0dcc53","tarball":"https://registry.npmjs.org/eslint-traverse/-/eslint-traverse-1.0.0.tgz","fileCount":4,"integrity":"sha512-bSp37rQs93LF8rZ409EI369DGCI4tELbFVmFNxI6QbuveS7VRxYVyUhwDafKN/enMyUh88HQQ7ZoGUHtPuGdcw==","signatures":[{"sig":"MEQCIC2pWnbmFfR3I8cmNfQvYz0dAWyKRCwTdn/E73RQGkxnAiAxNaVwVJ//688PFaTtimeVyg5ND8exCzItikwPtvZoeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeh9IZCRA9TVsSAnZWagAAJkMP/jWrA7cfiqCgNVr3XgfQ\nzhEehiMTzWowDtvhWuThgRy+NHOQ3Qb8NiClEF4FnJJ7mpcPMwZ0SjvfbGqB\ngFkkahWPT0P70YxxW6CtYSehoBC7jRzF0se2wu1X45mQACOk5nXsATn0o8eL\naLoYOMzPkncqFryln98EvabP2tgOluusoVgCiZ7IRP85fMSHH1OReR+nPqr1\niQMZEfECbN0zGo8kByyIUEK1UWcfzQQNIdcHUH+gTz54BTPAuk4ZrTZ6Xqhu\nFIgU2VPZdtZ38ZyzRQ3KvvrP/6rujRq1oQp3IwwH3uzyHB4WsCYJwCEZWW+q\nTmAppNpgwix3qX8MTJd/IaJKz0Pb3KJGZBwDpzwEYbamp9kyT6xWaENlSRNr\nQ2Apg7zjdGnqVqal1ZVRkUXsF9ZEQDQ1bM488t0bcc8JhOgI++ts9paf2XGU\nVcLqCSUYq5HZ3z/ikbQI2TuZTaA9EO+QUrVCuuP1DeXo3WNr2mqEUbr+o0+k\nb2S7OBnnTvgo6ui3esVbyAnEOI3Sx6SBBoLy+ZUJ8k5WGy+8UOhnt/HCbZQM\nvuNfWF56kxUGLr2ccwobf7VckhmwA/h/eR9p3CYQOq45O8V0CHV8lNTDd6ZD\nagn8P8gVoMQfDC/AtwQem2XJp9FqRYteRBjz3UwRsaM7OoruDv8NRFqOaMPN\n50VQ\r\n=UZJ0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"cc195e2e113e1d66fe4cbab3684cc7c7ebb955a9","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"repository":{"url":"git+https://github.com/discord/eslint-traverse.git","type":"git"},"_npmVersion":"6.13.2","description":"Create a sub-traversal of an AST node in your ESLint plugin","directories":{},"_nodeVersion":"13.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-traverse_1.0.0_1585959448920_0.5795917274651639","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"eslint-traverse","version":"1.0.1","keywords":["eslint","es","ecmascript","lint","linter","traverse","visitor","visit","walk","ast","abstract","syntax","tree","babel","babylon","plugin"],"author":{"name":"Jamie Kyle","email":"jamie.kyle@discordapp.com"},"license":"MIT","_id":"eslint-traverse@1.0.1","maintainers":[{"name":"samschlegel","email":"npm@lutin.us"},{"name":"birarda","email":"npm@birarda.com"},{"name":"faulty","email":"jonegeland@gmail.com"},{"name":"discord_kevin","email":"kevin.hanaford@discordapp.com"},{"name":"discord_npmjs","email":"npmjs@discordapp.com"},{"name":"justinbeckwith","email":"justin.beckwith@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"homepage":"https://github.com/discord/eslint-traverse#readme","bugs":{"url":"https://github.com/discord/eslint-traverse/issues"},"dist":{"shasum":"4286db18fb0d6dd8b3bec43e655290992c700d07","tarball":"https://registry.npmjs.org/eslint-traverse/-/eslint-traverse-1.0.1.tgz","fileCount":4,"integrity":"sha512-CC0BM1ESML7TF7PQTrnpjD4xxDvQ6Mldfegp5WQR4D5xujhvSAfDgLN+zB65i5lM7sEM3WX0qVtBruiEMOfp2g==","signatures":[{"sig":"MEUCIB00XHj9NOf2VbCZh0Toj7xC06cwBkDhJ9ThJsQU6zEHAiEAjTKk6MC/2qqI+IAgFtdKoJukyeYEO6nvaWHNfHzqw3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4482},"main":"index.js","_from":"file:eslint-traverse-1.0.1.tgz","_npmUser":{"name":"faulty","email":"jonegeland@gmail.com"},"_resolved":"/private/var/folders/vj/rns0j70x24s4wv25rgptrh7h0000gn/T/6492b209d267bdbfcacb8000f0c10293/eslint-traverse-1.0.1.tgz","_integrity":"sha512-CC0BM1ESML7TF7PQTrnpjD4xxDvQ6Mldfegp5WQR4D5xujhvSAfDgLN+zB65i5lM7sEM3WX0qVtBruiEMOfp2g==","repository":{"url":"git+https://github.com/discord/eslint-traverse.git","type":"git"},"_npmVersion":"10.9.2","description":"Create a sub-traversal of an AST node in your ESLint plugin","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-traverse_1.0.1_1763428947530_0.5140080317074085","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"eslint-traverse","version":"1.1.0","keywords":["eslint","es","ecmascript","lint","linter","traverse","visitor","visit","walk","ast","abstract","syntax","tree","babel","babylon","plugin"],"author":{"name":"Jamie Kyle","email":"jamie.kyle@discordapp.com"},"license":"MIT","_id":"eslint-traverse@1.1.0","maintainers":[{"name":"samschlegel","email":"npm@lutin.us"},{"name":"birarda","email":"npm@birarda.com"},{"name":"faulty","email":"jonegeland@gmail.com"},{"name":"discord_kevin","email":"kevin.hanaford@discordapp.com"},{"name":"discord_npmjs","email":"npmjs@discordapp.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"homepage":"https://github.com/discord/eslint-traverse#readme","bugs":{"url":"https://github.com/discord/eslint-traverse/issues"},"dist":{"shasum":"1c020ac8157bbadebbabd56dd3defce29aa83cb4","tarball":"https://registry.npmjs.org/eslint-traverse/-/eslint-traverse-1.1.0.tgz","fileCount":6,"integrity":"sha512-dJBfoa2JjSlaKp/smwe72Dvd5iZm3JXAl/1fVAc8Jabxj33CFmxtcqGBnhUJkrBj94N7oHaFOCgSmeD4PQUk2w==","signatures":[{"sig":"MEUCIBfMseym9WmaFnLSh7bItgLRPBzN/Xpa0QjsbKO+I8gOAiEAq0LIsDwl3QJrhtIr5Uq+2x5FtFfIz2B2Hhtg98zMt0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5316},"main":"index.js","types":"index.d.ts","gitHead":"61e9cb4b108c24af7a797f7cce3a09ee4a79a70b","_npmUser":{"name":"faulty","email":"jonegeland@gmail.com"},"repository":{"url":"git+https://github.com/discord/eslint-traverse.git","type":"git"},"_npmVersion":"10.9.2","description":"Create a sub-traversal of an AST node in your ESLint plugin","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"@types/eslint":"^9.6.1","@types/estree":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-traverse_1.1.0_1779292869003_0.10846182890946765","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"eslint-traverse","version":"1.1.1","description":"Create a sub-traversal of an AST node in your ESLint plugin","main":"index.js","types":"index.d.ts","author":{"name":"Jamie Kyle","email":"jamie.kyle@discordapp.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/discord/eslint-traverse.git"},"bugs":{"url":"https://github.com/discord/eslint-traverse/issues"},"homepage":"https://github.com/discord/eslint-traverse#readme","keywords":["eslint","es","ecmascript","lint","linter","traverse","visitor","visit","walk","ast","abstract","syntax","tree","babel","babylon","plugin"],"peerDependencies":{"@types/eslint":"*","@types/estree":"*"},"peerDependenciesMeta":{"@types/eslint":{"optional":true},"@types/estree":{"optional":true}},"devDependencies":{"@types/eslint":"^9.6.1","@types/estree":"^1.0.9"},"_id":"eslint-traverse@1.1.1","gitHead":"3311c3a781ed2205a5dbce7a919871b61415aeb2","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-cwkOePd/DcWTiRFdsukkQRF50jgaVxne5WrxKPcaLbtIlPGUa12JscudqMEBaYd9ZM6LQhMAie4AuuOkWtonSA==","shasum":"b1acd1b208dc1891716fd670fb4ef65f5f48e577","tarball":"https://registry.npmjs.org/eslint-traverse/-/eslint-traverse-1.1.1.tgz","fileCount":6,"unpackedSize":5680,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDYI7PczVtq2F8y+CoVNeID0k08cwV8dI4n7TFR0qJnvAiBDXfZfe0Uj5rca1SpZnmHlGUlOA9jjxh945TIV9bt1NA=="}]},"_npmUser":{"name":"faulty","email":"jonegeland@gmail.com"},"directories":{},"maintainers":[{"name":"samschlegel","email":"npm@lutin.us"},{"name":"birarda","email":"npm@birarda.com"},{"name":"faulty","email":"jonegeland@gmail.com"},{"name":"discord_kevin","email":"kevin.hanaford@discordapp.com"},{"name":"discord_npmjs","email":"npmjs@discordapp.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-traverse_1.1.1_1779459572632_0.10701897828205276"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-04T00:17:28.919Z","modified":"2026-05-22T14:19:32.971Z","1.0.0":"2020-04-04T00:17:29.022Z","1.0.1":"2025-11-18T01:22:27.745Z","1.1.0":"2026-05-20T16:01:09.159Z","1.1.1":"2026-05-22T14:19:32.800Z"},"bugs":{"url":"https://github.com/discord/eslint-traverse/issues"},"author":{"name":"Jamie Kyle","email":"jamie.kyle@discordapp.com"},"license":"MIT","homepage":"https://github.com/discord/eslint-traverse#readme","keywords":["eslint","es","ecmascript","lint","linter","traverse","visitor","visit","walk","ast","abstract","syntax","tree","babel","babylon","plugin"],"repository":{"type":"git","url":"git+https://github.com/discord/eslint-traverse.git"},"description":"Create a sub-traversal of an AST node in your ESLint plugin","maintainers":[{"name":"samschlegel","email":"npm@lutin.us"},{"name":"birarda","email":"npm@birarda.com"},{"name":"faulty","email":"jonegeland@gmail.com"},{"name":"discord_kevin","email":"kevin.hanaford@discordapp.com"},{"name":"discord_npmjs","email":"npmjs@discordapp.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"readme":"# eslint-traverse\n\n> Create a sub-traversal of an AST node in your ESLint plugin\n\n- Very fast\n- Supports \"Skipping\" & \"Stopping\" (See below)\n- Provides AST ancestor information for every node (Babel-style \"Path\" object)\n\n## Install\n\n```sh\nnpm install --save eslint-traverse\n```\n\n## Example\n\n```js\nimport traverse from \"eslint-traverse\"\n\nexport default function(context) {\n  return {\n    FunctionDeclaration(node) {\n      traverse(context, node, path => {\n        console.log(path)\n        // Path {\n        //   node: Node,\n        //   parent: Node | null,\n        //   parentKey: string | null\n        //   parentPath: Path | null\n        // }\n\n        if (path.node.type === \"FunctionDeclaration\") {\n          return traverse.SKIP\n        }\n      })\n    }\n  }\n}\n```\n\n## Skipping\n\nIf you want to completely ignore a branch of the AST, without visiting any of its\nchildren, you can return `traverse.SKIP` from the visitor.\n\n```js\ntraverse(context, node, path => {\n  if (path.node.type === \"FunctionDeclaration\") {\n    return traverse.SKIP\n  }\n  // ...\n})\n```\n\n## Stopping\n\nIf you want to stop the traversal completely, without visiting any more nodes\nanywhere in the AST, you can return `traversal.STOP` from the visitor.\n\n```js\ntraverse(context, node, path => {\n  if (path.node.type === \"Identifier\" && path.node.name === \"THING_I_WAS_SEARCHING_FOR\") {\n    return traverse.STOP\n  }\n  // ...\n})\n```\n","readmeFilename":"README.md"}