babel/packages/babel-helpers
Jason Quense 2bded404f3 Improve asyncIterator error (#7745)
* Improve asyncIterator error

When an object is has neither asyncIterator or iterator defined, throw the "not an async iterable" error

* Correct logic

* reduce access

* Update helpers.js
2018-04-17 21:02:53 -05:00
..
2018-04-17 21:02:53 -05:00
2017-03-25 21:46:16 -04:00
2018-04-02 18:19:30 -04:00

@babel/helpers

Collection of helper functions used by Babel transforms.

Install

npm install --save-dev @babel/helpers

Usage

Direct:

import * as helpers from '@babel/helpers';
import * as t from '@babel/types';

const typeofHelper = helpers.get('typeof');

t.isExpressionStatement(typeofHelper);
// true

Inside a plugin:

export default {
  visitor: {
    UnaryExpression(path) {
      // The .addHelper function adds, if needed, the helper to the file
      // and returns an expression which references the helper
      const typeofHelper = this.addHelper("typeof");
      t.isExpression(typeofHelper); // true
  }
};

Defining Helpers

Note

: This package is only meant to be used by the packages inluded in this repository. There is currently no way for third-party plugins to define an helper.

Helpers are defined in the src/helpers.js file, and they must be valid modules which follow these guidelines:

  • They must have a default export, which is their entry-point.
  • They can import other helpers, exclusively by using default imports.
  • They can't have named exports.
helpers.customHelper = defineHelper(`
  import dep from "dependency";
  const foo = 2;
  export default function getFooTimesDepPlusX(x) {
    return foo * dep() + x;
  }
`);