node-source-walk

7.0.1 • Public • Published

node-source-walk

CI npm version npm downloads

Synchronously execute a callback on every node of a file's AST and stop walking whenever you see fit.

npm install node-source-walk

Usage

const Walker = require('node-source-walk');

const walker = new Walker();

// Assume src is the string contents of myfile.js
// or the AST of an outside parse of myfile.js
walker.walk(src, node => {
  if (node.type === whateverImLookingFor) {
    // No need to keep traversing since we found what we wanted
    walker.stopWalking();
  }
});

By default, Walker will use @babel/parser (supporting ES6, JSX, Flow, and all other available @babel/parser plugins) and the sourceType: module, but you can change any of the defaults as follows:

const walker = new Walker({
  sourceType: 'script',
  // If you don't like experimental plugins
  plugins: [
    'jsx',
    'flow'
  ]
});
  • The supplied options are passed through to the parser, so you can configure it according to @babel/parser's documentation.

Swap out the parser

If you want to supply your own parser, you can do:

const walker = new Walker({
  parser: mySweetParser
});
  • The custom parser must have a .parse method that takes in a string and returns an object/AST.
  • All of the other options supplied to the Walker constructor will be passed along as parser options to your chosen parser.

API

walk(src, callback)

  • Recursively walks the given src from top to bottom
  • src: the contents of a file or its (already parsed) AST
  • callback: a function that is called for every visited node
    • The argument passed to callback will be the currently visited node.

moonwalk(node, callback)

  • Recursively walks up an AST starting from the given node. This is a traversal that's in the opposite direction of walk and traverse
  • node: a valid AST node
  • callback: a function that is called for every node (specifically via visiting the parent(s) of every node recursively)
    • The argument passed to callback will be the currently visited node.

stopWalking()

  • Halts further walking of the AST until another manual call of walk or moonwalk
  • This is super-beneficial when dealing with large source files (or ASTs)

traverse(node, callback)

  • Allows you to traverse an AST node and execute a callback on it
  • Callback should expect the first argument to be an AST node, similar to walk's callback

parse(src)

  • Uses the options supplied to Walker to parse the given source code string and return its AST using the configured parser (or @babel/parser by default).

License

MIT

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
7.0.1710,914latest

Version History

VersionDownloads (Last 7 Days)Published
7.0.1710,914
7.0.0312,416
6.0.2641,445
6.0.113,793
6.0.0357
5.0.2232,314
5.0.15,961
5.0.047,862
4.3.0462,926
4.2.2108
4.2.10
4.2.066,351
4.1.0136
4.0.04
3.3.06,459
3.2.150
3.2.05,410
3.1.00
3.0.31
3.0.20
3.0.11
3.0.0109
2.1.04
2.0.02
1.4.2345
1.4.11
1.4.02
1.3.03
1.2.00
1.1.22
1.1.10
1.1.02
1.0.00

Package Sidebar

Install

npm i node-source-walk

Weekly Downloads

2,506,978

Version

7.0.1

License

MIT

Unpacked Size

9.28 kB

Total Files

4

Last publish

Collaborators

  • pahen
  • mrjoelkemp
  • xhmikosr