{"versions":{"2.3.2":{"name":"eslint-template-visitor","version":"2.3.2","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"@babel/core":"^7.12.16","@babel/eslint-parser":"^7.12.16","eslint-visitor-keys":"^2.0.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && PARSER=espree nyc ava --verbose && PARSER=@babel/eslint-parser nyc ava --verbose"},"gitHead":"dfe46d502d960bd27c4b4b404fb71c89896c29d4","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.3.2","_nodeVersion":"15.8.0","_npmVersion":"6.14.11","dist":{"shasum":"b52f96ff311e773a345d79053ccc78275bbc463d","size":10277,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz","integrity":"sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA=="},"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.3.2_1613621302545_0.2590202546909188"},"_hasShrinkwrap":false,"publish_time":1613621302651,"_cnpm_publish_time":1613621302651,"_cnpmcore_publish_time":"2021-12-16T10:04:08.530Z","contributors":[]},"2.3.1":{"name":"eslint-template-visitor","version":"2.3.1","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"@babel/core":"^7.12.16","@babel/eslint-parser":"^7.12.16","eslint-visitor-keys":"^2.0.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && PARSER=espree nyc ava --verbose && PARSER=@babel/eslint-parser nyc ava --verbose"},"gitHead":"c0527d6330b6217e6242dbb4c44cade79c3fe0d8","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.3.1","_nodeVersion":"15.8.0","_npmVersion":"6.14.11","dist":{"shasum":"58a35eca7687a8b48a37b99932a29253ba6c3d25","size":10244,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.3.1.tgz","integrity":"sha512-K/76IDGPVbnb6bLkycR5MbVMJ3ERrZIYyLB2/+2JfqGrrIrjiQvSVLtmgTQYj1YJ/ibYG3eFyrwXHwu0f0q6Jg=="},"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.3.1_1613569785127_0.7747185425807015"},"_hasShrinkwrap":false,"publish_time":1613569785267,"_cnpm_publish_time":1613569785267,"_cnpmcore_publish_time":"2021-12-16T10:04:08.745Z","contributors":[]},"2.3.0":{"name":"eslint-template-visitor","version":"2.3.0","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"@babel/eslint-parser":"^7.12.16","eslint-visitor-keys":"^2.0.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && PARSER=espree nyc ava --verbose && PARSER=@babel/eslint-parser nyc ava --verbose"},"gitHead":"778bafe58409a251d13d88668cd227d7feec4f8e","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.3.0","_nodeVersion":"15.8.0","_npmVersion":"6.14.11","dist":{"shasum":"6340d98e5e19b5b4446cdc5e0413737aae773548","size":10236,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.3.0.tgz","integrity":"sha512-TDR6OCUMrWQUDfxgjQzyuiK3/X5rCDmxA54MZ0BBa924CAj9uxBJ8/y1ai+/0OH3AhDjpbV4KwHjb1sRKs0+CQ=="},"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.3.0_1613526959861_0.5026037792873201"},"_hasShrinkwrap":false,"publish_time":1613526959983,"deprecated":"this package has been deprecated","_cnpm_publish_time":1613526959983,"_cnpmcore_publish_time":"2021-12-16T10:04:08.978Z","contributors":[]},"2.2.2":{"name":"eslint-template-visitor","version":"2.2.2","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"babel-eslint":"^10.1.0","eslint-visitor-keys":"^2.0.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && PARSER=espree nyc ava --verbose && PARSER=babel-eslint nyc ava --verbose"},"gitHead":"98d8228160c2e1141b8809ef403f10125ee0d6e5","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.2.2","_nodeVersion":"15.4.0","_npmVersion":"6.14.8","dist":{"shasum":"46cd2b06eca5c1d97369aadd96e131df88fdd59c","size":10247,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.2.2.tgz","integrity":"sha512-SkcLjzKw3JjKTWHacRDeLBa2gxb600zbCKTkXj/V97QnZ9yxkknoPL8vc8PFueqbFXP7mYNTQzjCjcMpTRdRaA=="},"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.2.2_1608659948414_0.25265757994911353"},"_hasShrinkwrap":false,"publish_time":1608659948555,"_cnpm_publish_time":1608659948555,"_cnpmcore_publish_time":"2021-12-16T10:04:09.174Z","contributors":[]},"2.2.1":{"name":"eslint-template-visitor","version":"2.2.1","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"babel-eslint":"^10.1.0","eslint-visitor-keys":"^1.3.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && PARSER=espree nyc ava --verbose && PARSER=babel-eslint nyc ava --verbose"},"gitHead":"7f96ae607e05950a6c5063542467b669b3b74530","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.2.1","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"shasum":"2dccb1ab28fa7429e56ba6dd0144def2d89bc2d6","size":10245,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.2.1.tgz","integrity":"sha512-q3SxoBXz0XjPGkUpwGVAwIwIPIxzCAJX1uwfVc8tW3v7u/zS7WXNH3I2Mu2MDz2NgSITAyKLRaQFPHu/iyKxDQ=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.2.1_1593801043664_0.5186180621571017"},"_hasShrinkwrap":false,"publish_time":1593801043766,"_cnpm_publish_time":1593801043766,"_cnpmcore_publish_time":"2021-12-16T10:04:09.365Z","contributors":[]},"2.2.0":{"name":"eslint-template-visitor","version":"2.2.0","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"babel-eslint":"^10.1.0","eslint-visitor-keys":"^1.3.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && PARSER=espree nyc ava --verbose && PARSER=babel-eslint nyc ava --verbose"},"gitHead":"2c432bc6493624826fcd4aa57f3711b695f1826f","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.2.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"shasum":"f5718bdebf61455bbb37326c1204a8d7ccf4eb8c","size":10174,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.2.0.tgz","integrity":"sha512-6X476P0FLUg91l3wvyUU9ZI/KI2JM7BOKpbf4gZjLWW6K4slwcOQxHCWyIQ1bux5oDtOKDdhGQQVWWQGcxcdhA=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.2.0_1593792974385_0.13479895114301343"},"_hasShrinkwrap":false,"publish_time":1593792974509,"_cnpm_publish_time":1593792974509,"_cnpmcore_publish_time":"2021-12-16T10:04:09.579Z","contributors":[]},"2.1.1":{"name":"eslint-template-visitor","version":"2.1.1","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"eslint-visitor-keys":"^1.3.0","espree":"^7.1.0","esquery":"^1.3.1","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && nyc ava --verbose"},"gitHead":"aa0f37f0f306fd70c5221fe630e1211154d250b5","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.1.1","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"shasum":"4fa46af0860bd73a686ea993dc3c492027816f67","size":9398,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.1.1.tgz","integrity":"sha512-pJjukE5ofC+Q9x4QGwOBR1nz8ce1tZtsaZqgLY+riu84Lsv5gjvCDC5rjS/nLi8V5E5WwBlmVqAjcVtoCe0vFw=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.1.1_1593782493452_0.1640750103489823"},"_hasShrinkwrap":false,"publish_time":1593782493665,"_cnpm_publish_time":1593782493665,"_cnpmcore_publish_time":"2021-12-16T10:04:09.820Z","contributors":[]},"2.1.0":{"name":"eslint-template-visitor","version":"2.1.0","main":"index.js","license":"GPL-3.0-or-later OR MIT","repository":{"type":"git","url":"git+https://github.com/futpib/eslint-template-visitor.git"},"peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.9.0","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.1.0","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.2","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.32.0"},"dependencies":{"eslint-visitor-keys":"^1.3.0","espree":"^7.1.0","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && nyc ava --verbose"},"gitHead":"59d212d55f959ff556c51c96ecca79e64ff8635f","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","bugs":{"url":"https://github.com/futpib/eslint-template-visitor/issues"},"homepage":"https://github.com/futpib/eslint-template-visitor#readme","_id":"eslint-template-visitor@2.1.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"shasum":"2c510a2be4b995ba5be66015d090401c771a04ef","size":8777,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.1.0.tgz","integrity":"sha512-/TPNO5c+FObiUqoZOH4kAPkPYQqaO3sEjCj1EE5xmbXlzhpUFbPAwB5iVwviJh/iv/Msf8vY/gRfgQDw2KYHtg=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.1.0_1593778097823_0.7808170676179498"},"_hasShrinkwrap":false,"publish_time":1593778097978,"_cnpm_publish_time":1593778097978,"_cnpmcore_publish_time":"2021-12-16T10:04:10.026Z","contributors":[]},"2.0.0":{"name":"eslint-template-visitor","version":"2.0.0","main":"index.js","license":"GPL-3.0-or-later OR MIT","peerDependencies":{"eslint":">=7.0.0"},"devDependencies":{"ava":"^3.8.2","coveralls":"^3.1.0","eslint":"^7.0.0","eslint-ava-rule-tester":"^4.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^15.0.1","ramda":"^0.27.0","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^7.0.0","shift-fuzzer":"^1.0.2","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^9.0.2","xo":"^0.30.0"},"dependencies":{"eslint-visitor-keys":"^1.1.0","espree":"^7.0.0","multimap":"^1.1.0"},"xo":{"extends":["eslint-config-xo-overrides"],"rules":{"unicorn/no-fn-reference-in-iterator":"off"}},"scripts":{"test":"xo && nyc ava --verbose"},"gitHead":"298ac89a642e2b380951377cc1330d9180fede90","description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","_id":"eslint-template-visitor@2.0.0","_nodeVersion":"14.1.0","_npmVersion":"6.14.4","dist":{"shasum":"7cb6471ed29a53ab28a1dcbfca38355251c2be06","size":8021,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-2.0.0.tgz","integrity":"sha512-WijrLXWk/TiiG9FBTeEeb2pj/nD8H4eKIYx1DhTv/c7QoFmelE5P+3gzKUcXWZz88AI2+Wjse9DTV8lXrhcUsw=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_2.0.0_1589512420967_0.04561305899837431"},"_hasShrinkwrap":false,"publish_time":1589512421106,"_cnpm_publish_time":1589512421106,"_cnpmcore_publish_time":"2021-12-16T10:04:10.240Z","contributors":[]},"1.1.0":{"name":"eslint-template-visitor","version":"1.1.0","main":"index.js","license":"GPL-3.0-or-later OR MIT","peerDependencies":{"eslint":"^6.4.0"},"devDependencies":{"ava":"^2.4.0","coveralls":"^3.0.6","eslint":"^6.4.0","eslint-ava-rule-tester":"^3.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^14.1.1","ramda":"^0.26.1","reserved-words":"^0.1.2","seedrandom":"^3.0.5","shift-codegen":"^6.0.0","shift-fuzzer":"^1.0.2","shift-parser":"^7.0.0","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^7.5.0","xo":"^0.24.0"},"dependencies":{"eslint-visitor-keys":"^1.1.0","espree":"^6.1.1","multimap":"^1.0.2"},"xo":{"extends":["eslint-config-xo-overrides"]},"scripts":{"test":"xo && nyc ava --verbose"},"description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","_id":"eslint-template-visitor@1.1.0","dist":{"shasum":"f090d124d1a52e05552149fc50468ed59608b166","size":8313,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-1.1.0.tgz","integrity":"sha512-Lmy6QVlmFiIGl5fPi+8ACnov3sare+0Ouf7deJAGGhmUfeWJ5fVarELUxZRpsZ9sHejiJUq8626d0dn9uvcZTw=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_1.1.0_1569453536692_0.2912266518731512"},"_hasShrinkwrap":false,"publish_time":1569453536817,"_cnpm_publish_time":1569453536817,"_cnpmcore_publish_time":"2021-12-16T10:04:10.415Z","contributors":[]},"1.0.0":{"name":"eslint-template-visitor","version":"1.0.0","main":"index.js","license":"GPL-3.0-or-later OR MIT","peerDependencies":{"eslint":"^5.13.0"},"devDependencies":{"ava":"^2.4.0","coveralls":"^3.0.6","eslint":"^6.4.0","eslint-ava-rule-tester":"^3.0.0","eslint-config-xo-overrides":"^1.4.0","esrecurse":"^4.2.1","nyc":"^14.1.1","ramda":"^0.26.1","reserved-words":"^0.1.2","seedrandom":"^3.0.3","shift-codegen":"^6.0.0","shift-fuzzer":"^1.0.2","shift-parser":"^7.0.0","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^7.4.2","xo":"^0.24.0"},"dependencies":{"eslint-visitor-keys":"^1.1.0","espree":"^6.1.1","multimap":"^1.0.2"},"xo":{"extends":["eslint-config-xo-overrides"]},"scripts":{"test":"xo && nyc ava --verbose"},"description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","_id":"eslint-template-visitor@1.0.0","dist":{"shasum":"f67daedda2916df890189df2e8532f711769950a","size":8386,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-1.0.0.tgz","integrity":"sha512-hYf2FFoe0eNGQZbUMtYgRXPFPR9nnMm9qV+H1njO094fFks6QILzJKpAXbjwSJZ+XJw8X5gt/9WS2z35ou7/kQ=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_1.0.0_1568656617031_0.4446780724671491"},"_hasShrinkwrap":false,"publish_time":1568656617221,"_cnpm_publish_time":1568656617221,"_cnpmcore_publish_time":"2021-12-16T10:04:10.625Z","contributors":[]},"0.0.0-alpha.3":{"name":"eslint-template-visitor","version":"0.0.0-alpha.3","main":"index.js","license":"GPL-3.0-or-later OR MIT","peerDependencies":{"eslint":"^5.13.0"},"devDependencies":{"ava":"^1.4.1","coveralls":"^3.0.3","eslint":"^5.13.0","eslint-config-xo-overrides":"^1.3.0","esrecurse":"^4.2.1","nyc":"^14.0.0","ramda":"^0.26.1","reserved-words":"^0.1.2","seedrandom":"^3.0.1","shift-codegen":"^6.0.0","shift-fuzzer":"^1.0.2","shift-parser":"^6.0.1","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^7.2.3","xo":"^0.24.0"},"dependencies":{"eslint-visitor-keys":"^1.0.0","espree":"^5.0.1","multimap":"^1.0.2"},"xo":{"extends":["eslint-config-xo-overrides"]},"scripts":{"test":"xo && nyc ava --verbose"},"description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](","_id":"eslint-template-visitor@0.0.0-alpha.3","dist":{"shasum":"ad232ea8bcc278f2ee49e0bf178ad6ac5e705e57","size":5879,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-0.0.0-alpha.3.tgz","integrity":"sha512-xIFX6u3Ug4zYw3jNzrdbSbsplhBnYqcdgRWztj3vlDFhwbFArU9UjuuESseYGVZ8KIm8NcBOdiBOJDKPRWYN/A=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_0.0.0-alpha.3_1556309099078_0.0887852406283256"},"_hasShrinkwrap":false,"publish_time":1556309099287,"_cnpm_publish_time":1556309099287,"_cnpmcore_publish_time":"2021-12-16T10:04:10.870Z","contributors":[]},"0.0.0-alpha.2":{"name":"eslint-template-visitor","version":"0.0.0-alpha.2","main":"index.js","license":"GPL-3.0-or-later OR MIT","peerDependencies":{"eslint":"^5.13.0"},"devDependencies":{"ava":"^1.4.1","coveralls":"^3.0.3","eslint":"^5.13.0","eslint-config-xo-overrides":"^1.3.0","esrecurse":"^4.2.1","nyc":"^14.0.0","ramda":"^0.26.1","reserved-words":"^0.1.2","seedrandom":"^3.0.1","shift-codegen":"^6.0.0","shift-fuzzer":"^1.0.2","shift-parser":"^6.0.1","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^7.2.3","xo":"^0.24.0"},"dependencies":{"eslint-visitor-keys":"^1.0.0","espree":"^5.0.1","multimap":"^1.0.2"},"xo":{"extends":["eslint-config-xo-overrides"]},"scripts":{"test":"xo && nyc ava --verbose"},"description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor)","_id":"eslint-template-visitor@0.0.0-alpha.2","dist":{"shasum":"b35fb8ffa72d8d11b6e09e8c356005c60c95bc60","size":5821,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-0.0.0-alpha.2.tgz","integrity":"sha512-PFE2HXV6lqaDunfZbHsVZB9vLaQtCtdkJ5YDddr0od2nks0fvclFddUm9S7IvYuAtOzyLNGrx4YDtoGQ5k86PA=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_0.0.0-alpha.2_1556060223797_0.7312605442006599"},"_hasShrinkwrap":false,"publish_time":1556060223922,"_cnpm_publish_time":1556060223922,"_cnpmcore_publish_time":"2021-12-16T10:04:11.129Z","contributors":[]},"0.0.0-alpha.1":{"name":"eslint-template-visitor","version":"0.0.0-alpha.1","main":"index.js","license":"GPL-3.0-or-later OR MIT","peerDependencies":{"eslint":"^5.13.0"},"devDependencies":{"ava":"^1.4.1","coveralls":"^3.0.3","eslint":"^5.13.0","eslint-config-xo-overrides":"^1.3.0","esrecurse":"^4.2.1","nyc":"^14.0.0","ramda":"^0.26.1","reserved-words":"^0.1.2","seedrandom":"^3.0.1","shift-codegen":"^6.0.0","shift-fuzzer":"^1.0.2","shift-parser":"^6.0.1","shift-reducer":"^6.0.0","shift-scope":"^4.0.0","sinon":"^7.2.3","xo":"^0.24.0"},"dependencies":{"eslint-visitor-keys":"^1.0.0","espree":"^5.0.1","multimap":"^1.0.2"},"xo":{"extends":["eslint-config-xo-overrides"]},"scripts":{"test":"xo && nyc ava --verbose"},"description":"[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor)","_id":"eslint-template-visitor@0.0.0-alpha.1","dist":{"shasum":"44bd6826f6a1a67d18688ba42a49d0bfd88bd717","size":5782,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/eslint-template-visitor/-/eslint-template-visitor-0.0.0-alpha.1.tgz","integrity":"sha512-TwzxZQycVJgzLOoZ+vuOhzSjAHACpCTporono6od1AWnFYBFSGANuOHXJLaY/P8fZa7/6hp2ucDAimfyHkhUwQ=="},"maintainers":[{"name":"anonymous","email":"futpib@gmail.com"}],"_npmUser":{"name":"anonymous","email":"futpib@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-template-visitor_0.0.0-alpha.1_1556060006991_0.43555271169422904"},"_hasShrinkwrap":false,"publish_time":1556060007101,"_cnpm_publish_time":1556060007101,"_cnpmcore_publish_time":"2021-12-16T10:04:11.404Z","contributors":[]}},"dist-tags":{"latest":"2.3.2"},"name":"eslint-template-visitor","time":{"created":"2022-01-27T15:07:27.775Z","modified":"2023-12-30T17:04:19.297Z","2.3.2":"2021-02-18T04:08:22.651Z","2.3.1":"2021-02-17T13:49:45.267Z","2.3.0":"2021-02-17T01:55:59.983Z","2.2.2":"2020-12-22T17:59:08.555Z","2.2.1":"2020-07-03T18:30:43.766Z","2.2.0":"2020-07-03T16:16:14.509Z","2.1.1":"2020-07-03T13:21:33.665Z","2.1.0":"2020-07-03T12:08:17.978Z","2.0.0":"2020-05-15T03:13:41.106Z","1.1.0":"2019-09-25T23:18:56.817Z","1.0.0":"2019-09-16T17:56:57.221Z","0.0.0-alpha.3":"2019-04-26T20:04:59.287Z","0.0.0-alpha.2":"2019-04-23T22:57:03.922Z","0.0.0-alpha.1":"2019-04-23T22:53:27.101Z"},"readme":"# ESLint Template Visitor\n[![Build Status](https://travis-ci.org/futpib/eslint-template-visitor.svg?branch=master)](https://travis-ci.org/futpib/eslint-template-visitor) [![Coverage Status](https://coveralls.io/repos/github/futpib/eslint-template-visitor/badge.svg?branch=master)](https://coveralls.io/github/futpib/eslint-template-visitor?branch=master)\n\nSimplify eslint rules by visiting templates\n\n## Install\n\n```\nnpm install eslint-template-visitor\n\n# or\n\nyarn add eslint-template-visitor\n```\n\n## Showcase\n\n```diff\n+const eslintTemplateVisitor = require('eslint-template-visitor');\n+\n+const templates = eslintTemplateVisitor();\n+\n+const objectVariable = templates.variable();\n+const argumentsVariable = templates.spreadVariable();\n+\n+const substrCallTemplate = templates.template`${objectVariable}.substr(${argumentsVariable})`;\n\n const create = context => {\n \tconst sourceCode = context.getSourceCode();\n\n-\treturn {\n-\t\tCallExpression(node) {\n-\t\t\tif (node.callee.type !== 'MemberExpression'\n-\t\t\t\t|| node.callee.property.type !== 'Identifier'\n-\t\t\t\t|| node.callee.property.name !== 'substr'\n-\t\t\t) {\n-\t\t\t\treturn;\n-\t\t\t}\n-\n-\t\t\tconst objectNode = node.callee.object;\n+\treturn templates.visitor({\n+\t\t[substrCallTemplate](node) {\n+\t\t\tconst objectNode = substrCallTemplate.context.getMatch(objectVariable);\n+\t\t\tconst argumentNodes = substrCallTemplate.context.getMatch(argumentsVariable);\n\n \t\t\tconst problem = {\n \t\t\t\tnode,\n \t\t\t\tmessage: 'Prefer `String#slice()` over `String#substr()`.',\n \t\t\t};\n\n-\t\t\tconst canFix = node.arguments.length === 0;\n+\t\t\tconst canFix = argumentNodes.length === 0;\n\n \t\t\tif (canFix) {\n \t\t\t\tproblem.fix = fixer => fixer.replaceText(node, sourceCode.getText(objectNode) + '.slice()');\n \t\t\t}\n\n \t\t\tcontext.report(problem);\n \t\t},\n-\t};\n+\t});\n };\n```\n\nSee [examples](https://github.com/futpib/eslint-template-visitor/tree/master/examples) for more.\n\n## API\n\n### `eslintTemplateVisitor(options?)`\n\nCraete a template visitor.\n\nExample:\n\n```js\nconst eslintTemplateVisitor = require('eslint-template-visitor');\n\nconst templates = eslintTemplateVisitor();\n```\n\n#### `options`\n\nType: `object`\n\n##### `parserOptions`\n\nOptions for the template parser. Passed down to [`@babel/eslint-parser`](https://github.com/babel/@babel/eslint-parser#additional-parser-configuration).\n\nExample:\n\n```js\nconst templates = eslintTemplateVisitor({\n\tparserOptions: {\n\t\tecmaVersion: 2018,\n\t},\n});\n```\n\n### `templates.variable()`\n\nCreate a variable to be used in a template. Such a variable can match exactly one AST node.\n\n### `templates.spreadVariable()`\n\nCreate a spread variable. Spread variable can match an array of AST nodes.\n\nThis is useful for matching a number of arguments in a call or a number of statements in a block.\n\n### `templates.variableDeclarationVariable()`\n\nCreate a variable declaration variable. Variable declaration variable can match any type of variable declaration node.\n\nThis is useful for matching any variable declaration, be it `const`, `let` or `var`.\n\nUse it in place of a variable declaration keyword:\n\n```js\nconst variableDeclarationVariable = templates.variableDeclarationVariable();\n\nconst template = templates.template`() => {\n\t${variableDeclarationVariable} x = y;\n}`;\n```\n\n### `templates.template` tag\n\nCreates a template possibly containing variables.\n\nExample:\n\n```js\nconst objectVariable = templates.variable();\nconst argumentsVariable = templates.spreadVariable();\n\nconst substrCallTemplate = templates.template`${objectVariable}.substr(${argumentsVariable})`;\n\nconst create = () => templates.visitor({\n\t[substrCallTemplate](node) {\n\t\t// `node` here is the matching `.substr` call (i.e. `CallExpression`)\n\t}\n});\n```\n\n### `templates.visitor({ /* visitors */ })`\n\nUsed to merge template visitors with [common ESLint visitors](https://eslint.org/docs/developer-guide/selectors#listening-for-selectors-in-rules).\n\nExample:\n\n```js\nconst create = () => templates.visitor({\n\t[substrCallTemplate](node) {\n\t\t// Template visitor\n\t},\n\n\tFunctionDeclaration(node) {\n\t\t// Simple node type visitor\n\t},\n\n\t'IfStatement > BlockStatement'(node) {\n\t\t// ESLint selector visitor\n\t},\n});\n```\n\n### `template.context`\n\nA template match context. This property is defined only within a visitor call (in other words, only when working on a matching node).\n\nExample:\n\n```js\nconst create = () => templates.visitor({\n\t[substrCallTemplate](node) {\n\t\t// `substrCallTemplate.context` can be used here\n\t},\n\n\tFunctionDeclaration(node) {\n\t\t// `substrCallTemplate.context` is not defined here, and it does not make sense to use it here,\n\t\t// since we `substrCallTemplate` did not match an AST node.\n\t},\n});\n```\n\n#### `template.context.getMatch(variable)`\n\nUsed to get a match for a variable.\n\nExample:\n\n```js\nconst objectVariable = templates.variable();\nconst argumentsVariable = templates.spreadVariable();\n\nconst substrCallTemplate = templates.template`${objectVariable}.substr(${argumentsVariable})`;\n\nconst create = () => templates.visitor({\n\t[substrCallTemplate](node) {\n\t\tconst objectNode = substrCallTemplate.context.getMatch(objectVariable);\n\n\t\t// For example, let's check if `objectNode` is an `Identifier`: `objectNode.type === 'Identifier'`\n\n\t\tconst argumentNodes = substrCallTemplate.context.getMatch(argumentsVariable);\n\n\t\t// `Array.isArray(argumentNodes) === true`\n\t},\n});\n```\n\n### `template.narrow(selector, targetMatchIndex = 0)`\n\nNarrow the template to a part of the AST matching the selector.\n\nSometimes you can not define a wanted template at the top level due to JS syntax limitations.\nFor example, you can't have `await` or `yield` at the top level of a script.\n\nUse a wrapper function in the template and then `narrow` it to a wanted AST node:\n\n```js\nconst template = templates.template`\n\tasync () => { await 1; }\n`.narrow('BlockStatement > :has(AwaitExpression)');\n```\n\nThe `template` above is equivalent to this:\n\n```js\nconst template = templates.template`await 1`;\n```\n\nExcept the latter can not be defined directly due to [`espree` limitations](https://github.com/eslint/espree/issues/409).","users":{}}