Socket
Socket
Sign inDemoInstall

@babel/helper-member-expression-to-functions

Package Overview
Dependencies
4
Maintainers
5
Versions
75
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @babel/helper-member-expression-to-functions

Helper function to replace certain member expressions with function calls


Version published
Weekly downloads
27M
decreased by-0.25%
Maintainers
5
Install size
2.04 MB
Created
Weekly downloads
 

Package description

What is @babel/helper-member-expression-to-functions?

The @babel/helper-member-expression-to-functions package is a Babel helper that transforms member expressions to functions. It is used internally by Babel plugins to handle transformations of member expressions in a consistent way, especially when dealing with computed properties and ensuring that the base object is only evaluated once.

What are @babel/helper-member-expression-to-functions's main functionalities?

Transforming member expressions into function calls

This feature allows Babel plugins to transform member expressions like `object.property` or `object['property']` into function calls that can handle the logic for computed properties and ensure the base object is evaluated once. This is particularly useful when compiling ES6 code to ES5.

memberExpressionToFunctions(path, visitor, state)

Other packages similar to @babel/helper-member-expression-to-functions

Readme

Source

@babel/helper-member-expression-to-functions

Helper function to replace certain member expressions with function calls

Usage

Designed for internal Babel use.

Traverses the path using the supplied visitor and an augmented state.

const visitor = {
  MemberExpression(memberPath, state) {

    if (someCondition(memberPath)) {

      // The handle method is supplied by memberExpressionToFunctions.
      // It should be called whenever a MemberExpression should be
      // converted into the proper function calls.
      state.handle(memberPath);

    }

  },
};

// The helper requires three special methods on state: `get`, `set`, and
// `call`.
// Optionally, a special `memoize` method may be defined, which gets
// called if the member is in a self-referential update expression.
// Everything else will be passed through as normal.
const state = {
  get(memberPath) {
    // Return some AST that will get the member
    return t.callExpression(
      this.file.addHelper('superGet'),
      [t.thisExpression(), memberPath.node.property]
    );
  },

  set(memberPath, value) {
    // Return some AST that will set the member
    return t.callExpression(
      this.file.addHelper('superSet'),
      [t.thisExpression(), memberPath.node.property, value]
    );
  },

  call(memberPath, args) {
    // Return some AST that will call the member with the proper context
    // and args
    return t.callExpression(
      t.memberExpression(this.get(memberPath), t.identifier("apply")),
      [t.thisExpression(), t.arrayExpression(args)]
    );
  },

  memoize(memberPath) {
    const { node } = memberPath;
    if (node.computed) {
      MEMOIZED.set(node, ...);
    }
  },

  // The handle method is provided by memberExpressionToFunctions.
  // handle(memberPath) { ... }

  // Other state stuff is left untouched.
  someState: new Set(),
};

// Replace all the special MemberExpressions in rootPath, as determined
// by our visitor, using the state methods.
memberExpressionToFunctions(rootPath, visitor, state);

FAQs

Last updated on 23 Apr 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc