# babel-plugin-promise

> [![Travis](https://img.shields.io/travis/rust-lang/rust.svg?style=flat-square)](https://travis-ci.org/vaheqelyan/babel-plugin-promise)

Latest version **1.0.3** (published 2017-08-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install babel-plugin-promise
pnpm add babel-plugin-promise
yarn add babel-plugin-promise
bun add babel-plugin-promise
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2017-08-28 |
| First published | 2017-08-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | vaheqelyan |
| Maintainers | vaheqelyan |
| Keywords | babel, plugin, promise |

## Links

- npm: https://www.npmjs.com/package/babel-plugin-promise
- Repository: https://github.com/vaheqelyan/babel-plugin-promise
- Homepage: https://github.com/vaheqelyan/babel-plugin-promise#readme
- Issues: https://github.com/vaheqelyan/babel-plugin-promise/issues
- npm.io page: https://npm.io/package/babel-plugin-promise

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 1.0.3 (latest) — 2017-08-28
- 1.0.2 — 2017-08-27
- 1.0.1 — 2017-08-27
- 1.0.0 — 2017-08-27

## README

# babel-plugin-promise 

[![Travis](https://img.shields.io/travis/rust-lang/rust.svg?style=flat-square)](https://travis-ci.org/vaheqelyan/babel-plugin-promise)

Turn any callback into promise

[Basic promisify using leading comments](#basic)

[Without error handling.](#without-error-handling)

[Using your own arguments](#using-your-own-arguments)

[ES7 Async/Await](#es7-asyncawait)

[ES7 Async/Await + Arrow functions](#es7-async-and-await-arrow-functions)

via NPM 
```code
npm install babel-plugin-promise --save-dev
```

via YARN
```code
yarn add babel-plugin-promise --dev
```

## Basic

**before**

```javascript
var fs = require("fs");
//@promisify<err,data> promiseName
__ = fs.readFile("../package.json", "utf8");

```

**after**

```javascript
var fs = require("fs");
//@promisify<err,data> promiseName

function promiseName() {
  return new Promise((resolve, reject) => {
    fs.readFile("../package.json", "utf8", (err, data) => {
      if (err) reject(err);
      resolve(data);
    });
  });
}

promiseName().then(res => {
  console.log(res);
});


```


## Without error handling. 

If the callback does not return us the error message, insert ```null``` instead of ```error```

**before**

```javascript
var fs = require("fs");
//@promisify<null,data> promiseName
__ = fs.readFile("../package.json", "utf8");
```

**after**


```javascript
var fs = require("fs");
//@promisify<null,data> promiseName

function promiseName() {
  return new Promise(resolve => {
    fs.readFile("../package.json", "utf8", data => {
      resolve(data);
    });
  });
}
```

You can see that it does not handle reject


## Using your own arguments

For custom arguments


**before**

```javascript
//@promisify<err,data> findUser
__ = User.findOne(arg1);
```

**after**
```javascript
//@promisify<err,data> findUser
function findUser(arg1) {
  return new Promise((resolve, reject) => {
    User.findOne(arg1, (err, data) => {
      if (err) reject(err);
      resolve(data);
    });
  });
}
```


## ES7 Async/Await

This time you should use trailing comments

**before**

```javascript
var fs = require("fs");

async function someFunction(){
  await fs.readFile('./package.json','utf8') //@promisify<err,data>
}
```

**after**

```javascript
var fs = require("fs");

async function someFunction() {
  await new Promise((resolve, reject) => {
    fs.readFile('./package.json', 'utf8', (err, data) => {
      if (err) reject(err);
      resolve(data);
    });
  }); //@promisify<err,data>
}
```

### ES7 Async/Await + Arrow functions

Also, you can make promises with an arrow function expression

**before**

```javascript
var fs = require("fs");

const some = async () => await fs.readFile("./package.json", "uft8"); //@promisify<err,data>

```

**after**

```javascript
var fs = require("fs");

const some = async () => await new Promise((resolve, reject) => {
  fs.readFile("./package.json", "uft8", (err, data) => {
    if (err) reject(err);
    resolve(data);
  });
}); //@promisify<err,data>
```

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