Neck Protection Mandate

    ast-monkey-traverse
    TypeScript icon, indicating that this package has built-in type declarations

    4.0.6 • Public • Published

    ast-monkey-traverse

    Utility library to traverse AST

    page on codsen.com page on npm page on github Downloads per month changelog MIT Licence

    Install

    This package is pure ESM. If you're not ready yet, install an older version of this program, 2.1.0 (npm i ast-monkey-traverse@2.1.0).

    npm i ast-monkey-traverse

    Quick Take

    import { strict as assert } from "assert";
    
    import { traverse } from "ast-monkey-traverse";
    
    const paths = [];
    const source = {
      a: {
        foo: {
          bar: [
            {
              foo: "c",
            },
          ],
          d: {
            e: {
              foo: "f",
            },
          },
        },
      },
    };
    
    traverse(source, (key, val, innerObj) => {
      // if currently an object is traversed, you get both "key" and "val"
      // if it's array, only "key" is present, "val" is undefined
      let current = val !== undefined ? val : key;
      if (
        // it's object (not array)
        val !== undefined &&
        // and has the key we need
        key === "foo"
      ) {
        // push the path to array in the outer scope
        paths.push(innerObj.path);
      }
      return current;
    });
    
    // notice object-path notation "a.foo.bar.0.foo" - array segments use dots too:
    assert.deepEqual(paths, ["a.foo", "a.foo.bar.0.foo", "a.foo.d.e.foo"]);

    Documentation

    Please visit codsen.com for a full description of the API.

    Contributing

    To report bugs or request features or assistance, raise an issue on GitHub.

    Licence

    MIT License.

    Copyright © 2010-2022 Roy Revelt and other contributors.

    ok codsen star

    Install

    npm i ast-monkey-traverse

    DownloadsWeekly Downloads

    28,987

    Version

    4.0.6

    License

    MIT

    Unpacked Size

    22.9 kB

    Total Files

    7

    Last publish

    Collaborators

    • royston