# API

this is bindd to an instance of PluginPass

# useDangerousUDFHelpers

Load the helpers into the internal store and define addUDFHelper and listUDFHelper in the PluginPass instance and File instance with the core extension.

# definition

function useDangerousUDFHelpers(pass: babel.PluginPass, { helpers }: UDFUsePluginOptions): void

# types

type UDFHelper = {
  ast: () => t.Program;
};

type UDFUsePluginOptions = {
  helpers: { [key: string]: UDFHelper };
};

# example

import { useDangerousUDFHelpers } from 'babel-udf-helpers';
import helpers from './helpers';

export default function({types: t}){
  pre(){
    useDangerousUDFHelpers(this, { helpers });
  }
}

# addUDFHelper(name)

Add a helper function to the beginning of the program body of the code you are trying to traverse. The return type is t.Identifier.

# definition

addUDFHelper(name: string): t.Identifier | Array<t.Identifier>

# example

visitor: {
  Program(path){
    // e.g.) identifier is { type: 'Identifier', name: '_programHelper' }
    // e.g.) identifier is [{ type: 'Identifier', name: '_programHelper' }, { type: 'Identifier', name: '_programHelper2' }]
    const identifier = this.addUDFHelper("programHelper")
  }
}

Remark

If the result comes back in an array, it means that a helper with the same name is defined between plugins. We recommend changing the name of the helper if possible.

# listUDFHelper

Returns a list of helpers you have defined. The return type is UDFHelperList.

# definition

listUDFHelper(): UDFHelperList

# types

type UDFHelperList = {
  available: string[];
  unavailable: string[];
};

# example

Below is an example when a helper called objectWithoutProperties defined in @babel/helpers is defined as UDF.

objectWithoutProperties cannot be used as UDFHelpers, so it returns as unavailable.

visitor: {
  Program(path){
    /**
     * e.g.) result is
     * 
     * {
     *   "available": [
     *     "parentHelper",
     *     "child1",
     *     "child2",
     *     "grandchild",
     *   ],
     *   "unavailable": [
     *     "objectWithoutPropertiesLoose",
     *     "objectWithoutProperties",
     *   ],
     * }
     * 
     * 
     */
    const result = this.listUDFHelper()
  }
}

# clearAllUDFHelpers

Initialize the store that holds helpers read by useDangerousUDFHelpers.

After doing this, the UDF helpers will not be recognized and you will not be able to use addUDFHelper or listUDFHelper.

If you run useDangerousUDFHelpers(this, { helpers }) again, you will be able to use it again.

# definition

funciton clearAllUDFHelpers(): void

See Usage#Tips

# helper(tpl)

Provides methods to define UDF helpers.

# definition

helper(tpl: TemplateStringsArray): UDFHelper

# types

type UDFHelper = {
  ast: () => t.Program;
};

See Define UDF Helpers

Last Updated: 7/23/2021, 4:51:36 AM