2020-08-25 23:57:08 +00:00
# eslint-visitor-keys
[![npm version ](https://img.shields.io/npm/v/eslint-visitor-keys.svg )](https://www.npmjs.com/package/eslint-visitor-keys)
[![Downloads/month ](https://img.shields.io/npm/dm/eslint-visitor-keys.svg )](http://www.npmtrends.com/eslint-visitor-keys)
[![Build Status ](https://travis-ci.org/eslint/eslint-visitor-keys.svg?branch=master )](https://travis-ci.org/eslint/eslint-visitor-keys)
[![Dependency Status ](https://david-dm.org/eslint/eslint-visitor-keys.svg )](https://david-dm.org/eslint/eslint-visitor-keys)
Constants and utilities about visitor keys to traverse AST.
## 💿 Installation
Use [npm] to install.
```bash
$ npm install eslint-visitor-keys
```
### Requirements
2022-11-10 10:43:16 +00:00
- [Node.js] `^12.22.0` , `^14.17.0` , or `>=16.0.0`
2020-08-25 23:57:08 +00:00
## 📖 Usage
2022-11-10 10:43:16 +00:00
To use in an ESM file:
```js
import * as evk from "eslint-visitor-keys"
```
To use in a CommonJS file:
2020-08-25 23:57:08 +00:00
```js
const evk = require("eslint-visitor-keys")
```
### evk.KEYS
> type: `{ [type: string]: string[] | undefined }`
Visitor keys. This keys are frozen.
This is an object. Keys are the type of [ESTree] nodes. Their values are an array of property names which have child nodes.
For example:
```
console.log(evk.KEYS.AssignmentExpression) // → ["left", "right"]
```
### evk.getKeys(node)
> type: `(node: object) => string[]`
Get the visitor keys of a given AST node.
This is similar to `Object.keys(node)` of ES Standard, but some keys are excluded: `parent` , `leadingComments` , `trailingComments` , and names which start with `_` .
This will be used to traverse unknown nodes.
For example:
2022-11-10 10:43:16 +00:00
```js
2020-08-25 23:57:08 +00:00
const node = {
type: "AssignmentExpression",
left: { type: "Identifier", name: "foo" },
right: { type: "Literal", value: 0 }
}
console.log(evk.getKeys(node)) // → ["type", "left", "right"]
```
### evk.unionWith(additionalKeys)
> type: `(additionalKeys: object) => { [type: string]: string[] | undefined }`
Make the union set with `evk.KEYS` and the given keys.
- The order of keys is, `additionalKeys` is at first, then `evk.KEYS` is concatenated after that.
- It removes duplicated keys as keeping the first one.
For example:
2022-11-10 10:43:16 +00:00
```js
2020-08-25 23:57:08 +00:00
console.log(evk.unionWith({
MethodDefinition: ["decorators"]
})) // → { ..., MethodDefinition: ["decorators", "key", "value"], ... }
```
## 📰 Change log
See [GitHub releases ](https://github.com/eslint/eslint-visitor-keys/releases ).
## 🍻 Contributing
Welcome. See [ESLint contribution guidelines ](https://eslint.org/docs/developer-guide/contributing/ ).
### Development commands
- `npm test` runs tests and measures code coverage.
- `npm run lint` checks source codes with ESLint.
- `npm run coverage` opens the code coverage report of the previous test with your default browser.
- `npm run release` publishes this package to [npm] registory.
[npm]: https://www.npmjs.com/
2022-11-10 10:43:16 +00:00
[Node.js]: https://nodejs.org/
2020-08-25 23:57:08 +00:00
[ESTree]: https://github.com/estree/estree