🌜
🌞
is-reference

is-reference

v3.0.0

Determine whether an AST node is a reference

npm install is-reference

README

is-reference

Utility for determining whether an AST node is a reference.

foo is a reference in these cases:

console.log(foo);
var foo;
function foo() {}
function bar(foo) {}
export { foo as x };

foo is not a reference in these cases:

var obj = { foo: 1 };
console.log(obj.foo);
export { x as foo };

In all cases, foo is an Identifier node, but the two kinds must be treated differently for the purposes of scope analysis etc. (The examples are non-exhaustive.)

Installation

npm install is-reference

Usage

Example using Acorn and estree-walker:

import { parse } from 'acorn';
import { walk } from 'estree-walker';
import is_reference from 'is-reference';

const identifiers = [];
const references = [];

const ast = parse(`var a = b.c;`);

walk(ast, {
    enter(node, parent) {
        if (node.type === 'Identifier') identifiers.push(node);
        if (is_reference(node, parent)) references.push(node);
    }
});

identifiers.forEach(node => console.log(node.name)); // a, b, c
references.forEach(node => console.log(node.name)); // a, b

License

MIT

General

License
MIT
Typescript Types
Built-in
Tree-shakeable
Yes

Popularity

GitHub Stargazers
16
Community Interest
23
Number of Forks
4

Maintenance

Commits
10/219/2201
Last Commit
Jun 14, 2021
Open Issues
1
Closed Issues
0
Open Pull Requests
1
Closed Pull Requests
6

Versions

Versions Released
10/219/2201
Latest Version Released
Jun 14, 2021
Current Tags
latest3.0.0

Contributors

Rich-Harris
Rich-Harris
Commits: 18
lukastaegert
lukastaegert
Commits: 5
MattiasBuelens
MattiasBuelens
Commits: 4
tanhauhau
tanhauhau
Commits: 1