Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

codeshift-transform-declared-arrow-to-func-dec

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

codeshift-transform-declared-arrow-to-func-dec

jscodeshift transform to convert arrow function expressions, assigned to variables at the point of declaration, into traditional function declarations

  • 1.0.0
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Codeshift Declared Arrow Expression to Function Declaration Transform

CI

jscodeshift transform to convert arrow function expressions, assigned to variable declarations, into traditional function declarations

Before:

const foo = 1;
const bar = 2;

const add = (a: number, b: number) => {
  return a + b;
};

add(foo, bar);

After:

const foo = 1;
const bar = 2;

function add(a: number, b: number) {
  return a + b;
}

add(foo, bar);

This transform applies to any arrow expression that is assigned to a variable (var/let/const) at the point of declaration.

Usage

$ npm i -DE codeshift-transform-declared-arrow-to-func-dec
$ jscodeshift -t node_modules/codeshift-transform-declared-arrow-to-func-dec/dist/index.js some-source-file.js

Examples

Implied/implicit return

Before:

const f = () => 1;

After:

function f() {
  return 1;
}

Async functions

Before:

const get = async () => {
  const res = await fetch('/foo');
  return res.json();
};

After:

async function get() {
  const res = await fetch('/foo');
  return res.json();
}

Exported functions

Before:

export const f = () => Promise.resolve('Yay!');

After:

export function f() {
  return Promise.resolve('Yay!');
}

Complex functions

Before:

const f = () => {
  const a = 1;
  const b = 2;
  const c = 3;
  const sum = (seed: number) => [a, b, c].reduce((total, n) => total + n, seed);

  return sum(0);
};

After:

function f() {
  const a = 1;
  const b = 2;
  const c = 3;

  function sum(seed: number) {
    return [a, b, c].reduce((total, n) => total + n, seed);
  }

  return sum(0);
}

Unsupported functionality

The following examples are not supported by the transform (but might be introduced in the next major version).

Deferred function assignments

type F = (x: number) => number;

let f: F;

f = x => x + 1; // will not be transformed!

Rebinding this

function f(this: string) {
  const g = () => { // Will be transformed into a function declaration...
    console.log(this); // ...but `this` will no longer refer to f's context!
  };

  g.call('Hello!');
}

Keywords

FAQs

Package last updated on 30 Jun 2020

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc