Laptop-Thing/web/node_modules/esrap
2024-11-27 12:35:48 -05:00
..
src Initial commit 2024-11-27 12:35:48 -05:00
types Initial commit 2024-11-27 12:35:48 -05:00
LICENSE Initial commit 2024-11-27 12:35:48 -05:00
package.json Initial commit 2024-11-27 12:35:48 -05:00
README.md Initial commit 2024-11-27 12:35:48 -05:00

esrap

Parse in reverse. AST goes in, code comes out.

Usage

import { print } from 'esrap';

const { code, map } = print({
  type: 'Program',
  body: [
    {
      type: 'ExpressionStatement',
      expression: {
        callee: {
          type: 'Identifier',
          name: 'alert'
        },
        arguments: [
          {
            type: 'Literal',
            value: 'hello world!'
          }
        ]
      }
    }
  ]
});

console.log(code); // alert('hello world!');

If the nodes of the input AST have loc properties (e.g. the AST was generated with acorn with the locations option set), sourcemap mappings will be created.

Options

You can pass information that will be added to the resulting sourcemap (note that the AST is assumed to come from a single file):

const { code, map } = print(ast, {
  sourceMapSource: 'input.js',
  sourceMapContent: fs.readFileSync('input.js', 'utf-8')
});

Why not just use Prettier?

Because it's ginormous.

Developing

This repo uses Bun. Once it's installed, do bun install to install dependencies, and bun test to run the tests.

License

MIT