{"_id":"typhonjs-ast-walker","_rev":"296849","name":"typhonjs-ast-walker","description":"Provides a simple Javascript AST traversal utility that traverses all nodes / children regardless of type.","dist-tags":{"latest":"0.2.1"},"maintainers":[{"name":"typhonrt","email":"support@typhonrt.org"}],"time":{"modified":"2021-06-03T18:59:13.000Z","created":"2016-06-04T10:56:56.891Z","0.2.1":"2017-03-10T11:51:22.693Z","0.2.0":"2017-01-28T05:27:01.220Z","0.1.1":"2016-06-04T11:09:49.607Z","0.1.0":"2016-06-04T10:56:56.891Z"},"users":{},"author":{"name":"Mike Leahy"},"repository":{"type":"git","url":"git+https://github.com/typhonjs-node-ast/typhonjs-ast-walker.git"},"versions":{"0.2.1":{"name":"typhonjs-ast-walker","version":"0.2.1","homepage":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/","description":"Provides a simple Javascript AST traversal utility that traverses all nodes / children regardless of type.","license":"MPL-2.0","main":"./dist","author":{"name":"Mike Leahy"},"repository":{"type":"git","url":"git+https://github.com/typhonjs-node-ast/typhonjs-ast-walker.git"},"maintainers":[{"name":"typhonrt","email":"support@typhonrt.org"}],"devDependencies":{"typhonjs-config-eslint":"^0.4.0","typhonjs-npm-build-test":"^0.3.0"},"scripts":{"build":"babel-node ./node_modules/typhonjs-npm-scripts-build-babel/scripts/build.js","esdoc":"esdoc -c .esdocrc","eslint":"eslint .","prepublish":"babel-node ./node_modules/typhonjs-npm-scripts-publish/scripts/prepublish.js","test":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha.js","test-coverage":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha-istanbul.js"},"keywords":["typhonjs","ast","traversal"],"files":["dist","src","AUTHORS.md"],"bugs":{"url":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/issues"},"gitHead":"42f9ea4b7721f3520eb34cd31d6ea3c6ad52fa08","_id":"typhonjs-ast-walker@0.2.1","_shasum":"6beb8db8cc45b5bc438c8c95853f8d385413cb3e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"typhonrt","email":"support@typhonjs.io"},"dist":{"shasum":"6beb8db8cc45b5bc438c8c95853f8d385413cb3e","size":9717,"noattachment":false,"key":"/typhonjs-ast-walker/-/typhonjs-ast-walker-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/typhonjs-ast-walker/download/typhonjs-ast-walker-0.2.1.tgz"},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/typhonjs-ast-walker-0.2.1.tgz_1489146680894_0.6853957225102931"},"directories":{},"publish_time":1489146682693,"_cnpm_publish_time":1489146682693,"_hasShrinkwrap":false},"0.2.0":{"name":"typhonjs-ast-walker","version":"0.2.0","homepage":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/","description":"Provides a simple Javascript AST traversal utility that traverses all nodes / children regardless of type.","license":"MPL-2.0","main":"./dist","author":{"name":"Mike Leahy"},"repository":{"type":"git","url":"git+https://github.com/typhonjs-node-ast/typhonjs-ast-walker.git"},"maintainers":[{"name":"typhonrt","email":"support@typhonrt.org"}],"devDependencies":{"typhonjs-config-eslint":"^0.4.0","typhonjs-npm-build-test":"^0.3.0"},"scripts":{"build":"babel-node ./node_modules/typhonjs-npm-scripts-build-babel/scripts/build.js","esdoc":"esdoc -c .esdocrc","eslint":"eslint .","prepublish":"babel-node ./node_modules/typhonjs-npm-scripts-publish/scripts/prepublish.js","test":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha.js","test-coverage":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha-istanbul.js"},"keywords":["typhonjs","ast","traversal"],"files":["dist","src","AUTHORS.md"],"bugs":{"url":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/issues"},"gitHead":"e270cdabd45e47d04e1e63e4eb8966fededcea56","_id":"typhonjs-ast-walker@0.2.0","_shasum":"efda7d28d68e10509605ea4ea8e75b8af8128104","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"typhonrt","email":"support@typhonrt.org"},"dist":{"shasum":"efda7d28d68e10509605ea4ea8e75b8af8128104","size":9677,"noattachment":false,"key":"/typhonjs-ast-walker/-/typhonjs-ast-walker-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typhonjs-ast-walker/download/typhonjs-ast-walker-0.2.0.tgz"},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/typhonjs-ast-walker-0.2.0.tgz_1485581219478_0.6749348705634475"},"directories":{},"publish_time":1485581221220,"_cnpm_publish_time":1485581221220,"_hasShrinkwrap":false},"0.1.1":{"name":"typhonjs-ast-walker","version":"0.1.1","homepage":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/","description":"Provides a simple Javascript AST traversal utility that traverses all nodes / children regardless of type.","license":"MPL-2.0","main":"./dist","author":{"name":"Mike Leahy"},"repository":{"type":"git","url":"git+https://github.com/typhonjs-node-ast/typhonjs-ast-walker.git"},"maintainers":[{"name":"typhonrt","email":"support@typhonrt.org"}],"devDependencies":{"typhonjs-config-eslint":"^0.4.0","typhonjs-npm-build-test":"^0.3.0"},"scripts":{"build":"babel-node ./node_modules/typhonjs-npm-scripts-build-babel/scripts/build.js","esdoc":"esdoc -c .esdocrc","eslint":"eslint .","prepublish":"babel-node ./node_modules/typhonjs-npm-scripts-publish/scripts/prepublish.js","test":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha.js","test-coverage":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha-istanbul.js"},"keywords":["typhonjs","ast","traversal"],"files":["dist","src","AUTHORS.md"],"bugs":{"url":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/issues"},"gitHead":"f39a377a4d7e7088d7ca139a63f320319d48031e","_id":"typhonjs-ast-walker@0.1.1","_shasum":"814554a6dad29e1cb2cb62bc8a8e86c174c168e3","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.2.0","_npmUser":{"name":"typhonrt","email":"support@typhonrt.org"},"dist":{"shasum":"814554a6dad29e1cb2cb62bc8a8e86c174c168e3","size":9105,"noattachment":false,"key":"/typhonjs-ast-walker/-/typhonjs-ast-walker-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/typhonjs-ast-walker/download/typhonjs-ast-walker-0.1.1.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typhonjs-ast-walker-0.1.1.tgz_1465038589139_0.8977156134787947"},"directories":{},"publish_time":1465038589607,"_cnpm_publish_time":1465038589607,"_hasShrinkwrap":false},"0.1.0":{"name":"typhonjs-ast-walker","version":"0.1.0","homepage":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/","description":"Provides a simple Javascript AST traversal utility that traverses all nodes / children regardless of type.","license":"MPL-2.0","main":"./dist","author":{"name":"Mike Leahy"},"repository":{"type":"git","url":"git+https://github.com/typhonjs-node-ast/typhonjs-ast-walker.git"},"maintainers":[{"name":"typhonrt","email":"support@typhonrt.org"}],"devDependencies":{"typhonjs-config-eslint":"^0.4.0","typhonjs-npm-build-test":"^0.3.0"},"scripts":{"build":"babel-node ./node_modules/typhonjs-npm-scripts-build-babel/scripts/build.js","esdoc":"esdoc -c .esdocrc","eslint":"eslint .","prepublish":"babel-node ./node_modules/typhonjs-npm-scripts-publish/scripts/prepublish.js","test":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha.js","test-coverage":"babel-node ./node_modules/typhonjs-npm-scripts-test-mocha/scripts/mocha-istanbul.js"},"keywords":["typhonjs","ast","traversal"],"files":["dist","src","AUTHORS.md"],"directories":{},"bugs":{"url":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/issues"},"gitHead":"f39a377a4d7e7088d7ca139a63f320319d48031e","_id":"typhonjs-ast-walker@0.1.0","_shasum":"6d10f7713b67a82d0cf8b8bbcf795a9e973cc327","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.2.0","_npmUser":{"name":"typhonrt","email":"support@typhonrt.org"},"dist":{"shasum":"6d10f7713b67a82d0cf8b8bbcf795a9e973cc327","size":9107,"noattachment":false,"key":"/typhonjs-ast-walker/-/typhonjs-ast-walker-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typhonjs-ast-walker/download/typhonjs-ast-walker-0.1.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/typhonjs-ast-walker-0.1.0.tgz_1465037814232_0.4196069515310228"},"publish_time":1465037816891,"_cnpm_publish_time":1465037816891,"_hasShrinkwrap":false}},"readme":"![typhonjs-ast-walker](https://i.imgur.com/V3yiAPo.png)\n\n[![NPM](https://img.shields.io/npm/v/typhonjs-ast-walker.svg?label=npm)](https://www.npmjs.com/package/typhonjs-ast-walker)\n[![Documentation](http://docs.typhonjs.io/typhonjs-node-ast/typhonjs-ast-walker/badge.svg)](http://docs.typhonjs.io/typhonjs-node-ast/typhonjs-ast-walker/)\n[![Code Style](https://img.shields.io/badge/code%20style-allman-yellowgreen.svg?style=flat)](https://en.wikipedia.org/wiki/Indent_style#Allman_style)\n[![License](https://img.shields.io/badge/license-MPLv2-yellowgreen.svg?style=flat)](https://github.com/typhonjs-node-ast/typhonjs-ast-walker/blob/master/LICENSE)\n[![Gitter](https://img.shields.io/gitter/room/typhonjs/TyphonJS.svg)](https://gitter.im/typhonjs/TyphonJS)\n\n[![Build Status](https://travis-ci.org/typhonjs-node-ast/typhonjs-ast-walker.svg?branch=master)](https://travis-ci.org/typhonjs-node-ast/typhonjs-ast-walker)\n[![Coverage](https://img.shields.io/codecov/c/github/typhonjs-node-ast/typhonjs-ast-walker.svg)](https://codecov.io/github/typhonjs-node-ast/typhonjs-ast-walker)\n[![Dependency Status](https://www.versioneye.com/user/projects/5752aa747757a0004a1dddb7/badge.svg?style=flat)](https://www.versioneye.com/user/projects/5752aa747757a0004a1dddb7)\n\nProvides a simple Javascript AST traversal utility that traverses all nodes / children regardless of type.\n\nA single method `traverse` takes an AST object or array of nodes and a callback object which may contain two methods `enterNode` and `exitNode` which are invoked with the current node and the parent node respectively when entering and exiting a given node during traversal.\n\n`enterNode` may return a array of strings which provide a set of children keys to ignore or `null` to skip traversing children keys entirely.\n\nTo install `typhonjs-ast-walker` provide this entry in `package.json`:\n```\n{\n  ...\n  \"dependencies\": {\n    \"typhonjs-ast-walker\": \"^0.2.0\"\n  }\n}\n```  \n\nA simple example follows:\n```\nimport walker from 'typhonjs-ast-walker';\n\nconst ast = .... // An AST tree.\n\nwalker.traverse(ast,\n{\n   enterNode: (node, parent) =>\n   {\n      console.log(`walker - enterNode: ${node.type}`);\n\n      // Optional return statement to ignore specific children keys.\n      // return node.type === 'ClassBody' ? ['body'] : undefined;\n\n      // Optional return statement to ignore specific children keys or skip traversal entirely.\n      // return node.type === 'ClassBody' ? null : undefined;\n   },\n   \n   exitNode: (node, parent) =>\n   {\n      console.log(`walker - exitNode: ${node.type}`);\n   }\n});\n \n```\n\nSupport for [typhonjs-plugin-manager](https://www.npmjs.com/package/typhonjs-plugin-manager) is also available and\nwhen loading `typhonjs-ast-walker` as a plugin it will automatically register event bindings on the plugin eventbus\nwith these event categories:\n\n`ast:walker:traverse` - invokes `traverse` of the default walker.\n\nExample `typhonjs-plugin-manager` usage:\n```\nimport PluginManager    from 'typhonjs-plugin-manager';\nimport eventbus         from 'backbone-esnext-eventbus';\n\nconst pluginManager = new PluginManager({ eventbus });\n\npluginManager.add({ name: typhonjs-ast-walker });\n\n// This will automatically wire up typhonjs-ast-walker to the eventbus. \n\neventbus.trigger('ast:walker:traverse, ast, \n{\n   enterNode: (node, parent) =>\n   {\n      console.log(`walker - enterNode: ${node.type}`);\n   },\n   \n   exitNode: (node, parent) =>\n   {\n      console.log(`walker - exitNode: ${node.type}`);\n   }\n});\n```","_attachments":{},"homepage":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/","bugs":{"url":"https://github.com/typhonjs-node-ast/typhonjs-ast-walker/issues"},"license":"MPL-2.0"}