JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8836704
  • Score
    100M100P100Q210436F
  • License MIT

Determine whether an AST node is a reference

Package Exports

  • is-reference

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (is-reference) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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:

const { parse } = require( 'acorn' );
const { walk } = require( 'estree-walker' );
const isReference = require( '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 ( isReference( 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