{"_id":"merge-estraverse-visitors","_rev":"1212250","name":"merge-estraverse-visitors","description":"merge multiple estraverse visitors into one","dist-tags":{"latest":"2.0.0"},"maintainers":[{"name":"twada","email":"takuto.wada@gmail.com"}],"time":{"modified":"2021-10-13T05:45:52.000Z","created":"2016-06-28T11:07:53.266Z","2.0.0":"2020-05-18T17:05:15.091Z","1.0.0":"2016-11-11T21:06:56.420Z","0.1.0":"2016-06-28T11:07:53.266Z"},"users":{},"author":{"name":"Takuto Wada","email":"takuto.wada@gmail.com","url":"https://github.com/twada"},"repository":{"type":"git","url":"git://github.com/twada/merge-estraverse-visitors.git"},"versions":{"2.0.0":{"name":"merge-estraverse-visitors","description":"merge multiple estraverse visitors into one","version":"2.0.0","author":{"name":"Takuto Wada","email":"takuto.wada@gmail.com","url":"https://github.com/twada"},"bugs":{"url":"https://github.com/twada/merge-estraverse-visitors/issues"},"dependencies":{"estraverse":"^5.0.0"},"devDependencies":{"acorn":"^7.1.1","espurify":"^2.0.0","mocha":"^7.0.0","semistandard":"^14.2.0","snazzy":"^8.0.0"},"homepage":"https://github.com/twada/merge-estraverse-visitors","keywords":["ast","estraverse","estree"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/twada/merge-estraverse-visitors.git"},"scripts":{"fmt":"semistandard --fix index.js 'test/*.js'","lint":"semistandard --verbose index.js 'test/*.js' | snazzy","test":"npm run lint && npm run test:unit","test:unit":"mocha"},"semistandard":{"globals":["describe","context","beforeEach","it"]},"gitHead":"de82ea541665a6333ed40965ebf58696660a920c","_id":"merge-estraverse-visitors@2.0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"5ca81064a3bfaa6ad1e80de55ec7fb712f3c7c85","size":2652,"noattachment":false,"key":"/merge-estraverse-visitors/-/merge-estraverse-visitors-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/merge-estraverse-visitors/download/merge-estraverse-visitors-2.0.0.tgz"},"maintainers":[{"name":"twada","email":"takuto.wada@gmail.com"}],"_npmUser":{"name":"twada","email":"takuto.wada@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/merge-estraverse-visitors_2.0.0_1589821514922_0.5869055258024185"},"_hasShrinkwrap":false,"publish_time":1589821515091,"_cnpm_publish_time":1589821515091},"1.0.0":{"name":"merge-estraverse-visitors","description":"merge multiple estraverse visitors into one","version":"1.0.0","author":{"name":"Takuto Wada","email":"takuto.wada@gmail.com","url":"https://github.com/twada"},"bugs":{"url":"https://github.com/twada/merge-estraverse-visitors/issues"},"dependencies":{"estraverse":"^4.0.0"},"devDependencies":{"acorn":"^4.0.0","espurify":"^1.6.0","mocha":"^3.0.0"},"files":["CHANGELOG.md","README.md","index.js"],"homepage":"https://github.com/twada/merge-estraverse-visitors","keywords":["ast","estraverse","estree"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/twada/merge-estraverse-visitors.git"},"scripts":{"test":"mocha test"},"gitHead":"044491871002a359ec37f5f928160c0beeef544e","_id":"merge-estraverse-visitors@1.0.0","_shasum":"eb968338b5ded5ceed82cec0307decba2d8ea994","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"twada","email":"takuto.wada@gmail.com"},"maintainers":[{"name":"twada","email":"takuto.wada@gmail.com"}],"dist":{"shasum":"eb968338b5ded5ceed82cec0307decba2d8ea994","size":2235,"noattachment":false,"key":"/merge-estraverse-visitors/-/merge-estraverse-visitors-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/merge-estraverse-visitors/download/merge-estraverse-visitors-1.0.0.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/merge-estraverse-visitors-1.0.0.tgz_1478898416208_0.4624459489714354"},"directories":{},"publish_time":1478898416420,"_cnpm_publish_time":1478898416420,"_hasShrinkwrap":false},"0.1.0":{"name":"merge-estraverse-visitors","description":"merge multiple estraverse visitors into one","version":"0.1.0","author":{"name":"Takuto Wada","email":"takuto.wada@gmail.com","url":"https://github.com/twada"},"bugs":{"url":"https://github.com/twada/merge-estraverse-visitors/issues"},"dependencies":{"estraverse":"^4.0.0"},"devDependencies":{"acorn":"^3.0.0","espurify":"^1.6.0","mocha":"^2.4.5"},"files":["CHANGELOG.md","README.md","index.js"],"homepage":"https://github.com/twada/merge-estraverse-visitors","keywords":["ast","estraverse","estree"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/twada/merge-estraverse-visitors.git"},"scripts":{"test":"mocha test"},"gitHead":"2f59525d7fa5a336c1c199cc2912560aecc34f30","_id":"merge-estraverse-visitors@0.1.0","_shasum":"1a2fc5f7730a19f1d51d1bb01bcfa9391dc56407","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"twada","email":"takuto.wada@gmail.com"},"maintainers":[{"name":"twada","email":"takuto.wada@gmail.com"}],"dist":{"shasum":"1a2fc5f7730a19f1d51d1bb01bcfa9391dc56407","size":1508,"noattachment":false,"key":"/merge-estraverse-visitors/-/merge-estraverse-visitors-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/merge-estraverse-visitors/download/merge-estraverse-visitors-0.1.0.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/merge-estraverse-visitors-0.1.0.tgz_1467112070811_0.340796013828367"},"directories":{},"publish_time":1467112073266,"_cnpm_publish_time":1467112073266,"_hasShrinkwrap":false}},"readme":"merge-estraverse-visitors\n================================\n\nMerge multiple visitors for estraverse into one\n\n[![Build Status][travis-image]][travis-url]\n[![NPM version][npm-image]][npm-url]\n[![Code Style][style-image]][style-url]\n[![License][license-image]][license-url]\n\n\nAPI\n---------------------------------------\n\n`const mergedVisitor = mergeVisitors(arrayOfVisitors)`\n\n\nINSTALL\n---------------------------------------\n\n```\nnpm install merge-estraverse-visitors\n```\n\n\nUSAGE\n---------------------------------------\n\nFor given code,\n\n```js\nfunction tenTimes (cb) {\n  for (var i = 0; i < 10; i += 1) {\n    cb();\n  }\n}\n```\n\nMerge multiple estraverse visitors into one then run against target AST.\n\n```js\nconst visitor1 = {\n  enter: function (currentNode, parentNode) {\n    switch(currentNode.type) {\n    case 'ForStatement':\n      console.log('v1: going to skip ' + currentNode.type);\n      this.skip();\n      break;\n    case 'CallExpression':\n    case 'FunctionDeclaration':\n      console.log('v1: entering ' + currentNode.type);\n      break;\n    }\n    return undefined;\n  },\n  leave: function (currentNode, parentNode) {\n    switch(currentNode.type) {\n    case 'ForStatement':\n    case 'CallExpression':\n    case 'FunctionDeclaration':\n      console.log('v1: leaving ' + currentNode.type);\n      break;\n    }\n  }\n};\n\nconst visitor2 = {\n  enter: function (currentNode, parentNode) {\n    switch(currentNode.type) {\n    case 'ForStatement':\n    case 'CallExpression':\n    case 'FunctionDeclaration':\n      console.log('v2: entering ' + currentNode.type);\n      break;\n    }\n  },\n  leave: function (currentNode, parentNode) {\n    switch(currentNode.type) {\n    case 'ForStatement':\n    case 'CallExpression':\n    case 'FunctionDeclaration':\n      console.log('v2: leaving ' + currentNode.type);\n      break;\n    }\n  }\n};\n\nconst mergeVisitors = require('merge-estraverse-visitors');\nconst estraverse = require('estraverse');\nconst { parse } = require('acorn');\nconst ast = parse(code);\nconst mergedVisitor = mergeVisitors([ visitor1, visitor2 ])\nestraverse.traverse(ast, mergedVisitor);\n```\n\nResults in:\n\n```\nv1: entering FunctionDeclaration\nv2: entering FunctionDeclaration\nv1: going to skip ForStatement\nv2: entering ForStatement\nv2: entering CallExpression\nv2: leaving CallExpression\nv2: leaving ForStatement\nv1: leaving ForStatement\nv2: leaving FunctionDeclaration\nv1: leaving FunctionDeclaration\n```\n\n\nAUTHOR\n---------------------------------------\n* [Takuto Wada](https://github.com/twada)\n\n\nSUPPORT POLICY\n---------------------------------------\n\nSupports Node under maintenance. In other words, we stop supporting old Node versions when [their maintenance ends](https://github.com/nodejs/Release). Any other environments are not supported officially (means that we do not test against them on CI service).\n\n\nLICENSE\n---------------------------------------\nLicensed under the [MIT](http://twada.mit-license.org/2016-2020) license.\n\n\n[travis-url]: https://travis-ci.org/twada/merge-estraverse-visitors\n[travis-image]: https://secure.travis-ci.org/twada/merge-estraverse-visitors.svg?branch=master\n\n[npm-url]: https://npmjs.org/package/merge-estraverse-visitors\n[npm-image]: https://badge.fury.io/js/merge-estraverse-visitors.svg\n\n[license-url]: http://twada.mit-license.org/2016-2020\n[license-image]: https://img.shields.io/badge/license-MIT-brightgreen.svg\n\n[style-url]: https://github.com/Flet/semistandard\n[style-image]: https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg\n","_attachments":{},"homepage":"https://github.com/twada/merge-estraverse-visitors","bugs":{"url":"https://github.com/twada/merge-estraverse-visitors/issues"},"license":"MIT"}