# @typhonjs/babel-parser

> Provides a front end for Javascript / Typescript AST generation by Babel parser with TyphonJS plugin support.

Latest version **0.2.0** (published 2018-12-19) · MPL-2.0 license · 0 weekly downloads

## Install

```sh
npm install @typhonjs/babel-parser
pnpm add @typhonjs/babel-parser
yarn add @typhonjs/babel-parser
bun add @typhonjs/babel-parser
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2018-12-19 |
| First published | 2018-12-19 |
| Weekly downloads | 0 |
| License | MPL-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 36.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Michael Leahy |
| Maintainers | typhonrt |
| Keywords | typhonjs, babel, parser, AST |

## Links

- npm: https://www.npmjs.com/package/@typhonjs/babel-parser
- Repository: https://github.com/typhonjs-node-ast/babel-parser
- Issues: https://github.com/typhonjs-node-ast/babel-parser/issues
- npm.io page: https://npm.io/package/@typhonjs/babel-parser

## Dependencies (2)

- [@babel/parser](https://npm.io/package/@babel/parser.md) ^7.0.0
- [babel-runtime](https://npm.io/package/babel-runtime.md) ^6.0.0

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 0.2.0 (latest) — 2018-12-19
- 0.1.0 — 2018-12-19
- 0.0.1 — 2018-12-19

## README

![@typhonjs/babel-parser](https://i.imgur.com/hN409kK.png)

[![NPM](https://img.shields.io/npm/v/@typhonjs/babel-parser.svg?label=npm)](https://www.npmjs.com/package/@typhonjs/babel-parser)
[![Code Style](https://img.shields.io/badge/code%20style-allman-yellowgreen.svg?style=flat)](https://en.wikipedia.org/wiki/Indent_style#Allman_style)
[![License](https://img.shields.io/badge/license-MPLv2-yellowgreen.svg?style=flat)](https://github.com/typhonjs-node-ast/babel-parser/blob/master/LICENSE)
[![Gitter](https://img.shields.io/gitter/room/typhonjs/TyphonJS.svg)](https://gitter.im/typhonjs/TyphonJS)

[![Build Status](https://travis-ci.org/typhonjs-node-ast/babel-parser.svg?branch=master)](https://travis-ci.org/typhonjs-node-ast/babel-parser)
[![Coverage](https://img.shields.io/codecov/c/github/typhonjs-node-ast/babel-parser.svg)](https://codecov.io/github/typhonjs-node-ast/babel-parser)
[![Dependency Status](https://david-dm.org/typhonjs-node-ast/babel-parser/status.svg)](https://david-dm.org/typhonjs-node-ast/babel-parser)

Provides a front end for Javascript / Typescript AST generation by Babel parser with TyphonJS plugin support. By default all Babel parser plugins are enabled except for `flow` and there is a handy override mechanism to change relevant defaults without having to provide a full set of options to the parser. 

This NPM module can be installed as a dependency in `package.json` as follows:
```js
"dependencies": {
  "@typhonjs/babel-parser": "^0.2.0"
}
```

Please see [Babel Parser Docs](https://babeljs.io/docs/en/babel-parser) for specific plugin information. By default `babel-parser` enables all plugins except for `flow` as it is incompatible with the `typescript` plugin. Also by default the `decorators` plugins is enabled and not compatible with `decorators-legacy`. 

The default Babel parser options is as follows:
```
const s_DEFAULT_BABELPARSER_OPTIONS =
{
   plugins: ['asyncGenerators', 'bigInt', 'classProperties', 'classPrivateProperties', 'classPrivateMethods',
    ['decorators', { decoratorsBeforeExport: false }], 'doExpressions', 'dynamicImport',
     'exportDefaultFrom', 'exportNamespaceFrom',  'functionBind', 'functionSent', 'importMeta',
      'jsx', 'logicalAssignment', 'nullishCoalescingOperator', 'numericSeparator', 'objectRestSpread',
       'optionalCatchBinding', 'optionalChaining', ['pipelineOperator', { proposal: 'minimal' }], 'throwExpressions',
        'typescript']
};
```

There is a way to provide additional override directives to `babel-parser` which modifies the default babel parser options above. This only activates when no manual parser options are provided. A third parameter can be passed into `parse` which will modify the default parameters above. For example Flow is supported by passing in `{ flow: true }` as the override object. This allows flow to be enabled and typescript to be disabled without providing the full babel parser options manually. A few other optional overrides are available:

```
{
   decoratorsBeforeExport: <boolean>,   // Sets the associated configuration value
   decoratorsLegacy: true,              // Removes the proposal decorators plugin for `decorators-legacy`
   flow: true,                          // Enables flow / disables typescript plugins
   pipelineOperatorProposal: <string>   // Sets the proposal field of pipelineOperator plugin
}
```


An ES6 example follows:
```js
import BabelParser from '@typhonjs/babel-parser';

// Basic usage to parse text / source code with default options.
const ast = BabelParser.parse(`<some JS or Typescript source code>`);

// Providing custom options
const parserOptions = { plugins: [<any parser options desired to be enabled>] };
const ast = BabelParser.parse(`<some JS or Typescript source code>`, parserOptions);

// Basic usage with default options, but with an override to disable Typescript and enable Flow plugins
const ast = BabelParser.parse(`<some JS w/ Flow typing>`, void 0, { flow: true });
```

`@typhonjs/babel-parser` may be loaded as a TyphonJS plugin with [typhonjs-plugin-manager](https://www.npmjs.com/package/typhonjs-plugin-manager) and if an eventbus is associated the following event categories are registered:

`typhonjs:babel:parser:parse` - invokes `BabelParser.parse`

---
_Source: https://npm.io/package/@typhonjs/babel-parser · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
