Nested Parenthetical Madness
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    acorn-umdpublic

    acorn-umd

    Parse acorn ast for AMD, CommonJS, and ES6 definitions.

    Travis build status Test Coverage Code Climate Dependency Status devDependency Status

    The Nodes created align as closely as possible with the nodes generated for acorns ES6 import nodes. Example below

    var acorn = require('acorn');
    var umd = require('acorn-umd');
     
    var code = `
        import {a, b, c as d} from 'library';
        import foo from 'foo-library';
        
        let _ = require('lodash');
    `;
     
    var ast = acorn.parse(code, {ecmaVersion: 6});
    var imports = umd(ast, {
        es6: true, amd: false, cjs: true
    });
     
    console.log(imports);
    [
      { type: 'CJSImport',
        reference: 
         { type: 'VariableDeclaration',
           start: 87,
           end: 113,
           declarations: [Object],
           kind: 'let' },
        specifiers: [ [Object] ],
        start: 87,
        end: 113,
        source: 
         { type: 'Literal',
           reference: [Object],
           value: 'lodash',
           raw: '\'lodash\'',
           start: 103,
           end: 111 }
      },
      { type: 'ImportDeclaration',
        start: 5,
        end: 42,
        specifiers: [ [Object], [Object], [Object] ],
        source: 
         { type: 'Literal',
           start: 32,
           end: 41,
           value: 'library',
           raw: '\'library\'' }
      },
      { type: 'ImportDeclaration',
        start: 47,
        end: 77,
        specifiers: [ [Object] ],
        source: 
         { type: 'Literal',
           start: 63,
           end: 76,
           value: 'foo-library',
           raw: '\'foo-library\'' }
      }
    ]

    AMD Imports

    let code = `
      foo();
      define(['foo', 'unused-import'], function($) {
          return $();
      });
    `;
     
    let ast = acorn.parse(code, {ecmaVersion: 6});
    let parsed = umd(ast, {
      es6: false, amd: true, cjs: false
    });
     
    console.log(parsed);
     
    [
     {
      type: 'AMDImport',
      reference: { DEFINE_NODE },
      start: 12,
      end: 81,
     
      specifiers: [ { type: 'Identifier', start: 54, end: 55, name: '$' } ],
      sources: 
       [ { type: 'Literal',
           reference: [Object],
           value: 'foo',
           raw: '\'foo\'',
           start: 20,
           end: 25 },
         { type: 'Literal',
           reference: [Object],
           value: 'unused-import',
           raw: '\'unused-import\'',
           start: 27,
           end: 42 } ],
     
      // Grouped [source, variable] name array
      imports: [ [ {SOURCE_NODE}, {VARIABLE_NODE} ], [ {SOURCE_NODE}, undefined ] 
     }
    ]

    Get the scope of a node

    import {sample} from 'lodash'
    
    let parsed = umd(ast, {
      es6: false, amd: true, cjs: false
    });
    
    let node = sample(parsed);
    
    let scope = node.scope; // scope is null if global otherwise a function node
    

    install

    npm i acorn-umd

    Downloadsweekly downloads

    141

    version

    0.4.0

    license

    MIT

    homepage

    github.com

    repository

    githubgithub

    last publish

    collaborators

    • avatar