diff options
author | Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> | 2022-09-18 21:29:52 +0800 |
---|---|---|
committer | Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> | 2022-09-18 21:29:52 +0800 |
commit | 420779f515ca2df3cde7b8f6f383f9ead8e127a6 (patch) | |
tree | a19be2bdb5474a30d3087396b5775548deca97e0 /babel-plugin-async-to-promises/README.md | |
parent | 7cece8c872a744fc23be029510bd0a9dfd168c25 (diff) | |
download | SoopyV2-420779f515ca2df3cde7b8f6f383f9ead8e127a6.tar.gz SoopyV2-420779f515ca2df3cde7b8f6f383f9ead8e127a6.tar.bz2 SoopyV2-420779f515ca2df3cde7b8f6f383f9ead8e127a6.zip |
+ swap promises to use arrow function for correct 'this' context
Diffstat (limited to 'babel-plugin-async-to-promises/README.md')
-rw-r--r-- | babel-plugin-async-to-promises/README.md | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/babel-plugin-async-to-promises/README.md b/babel-plugin-async-to-promises/README.md new file mode 100644 index 0000000..63dab45 --- /dev/null +++ b/babel-plugin-async-to-promises/README.md @@ -0,0 +1,133 @@ +Kneden (babel-plugin-async-to-promises) +======================================= + +[![Build Status](https://travis-ci.org/marten-de-vries/kneden.svg?branch=master)](https://travis-ci.org/marten-de-vries/kneden) +[![Dependency Status](https://david-dm.org/marten-de-vries/kneden.svg)](https://david-dm.org/marten-de-vries/kneden) +[![devDependency Status](https://david-dm.org/marten-de-vries/kneden/dev-status.svg)](https://david-dm.org/marten-de-vries/kneden#info=devDependencies) + +> Transpile ES7 async/await to vanilla ES6 Promise chains + +**WARNING: Kneden +[is usable](https://github.com/pouchdb/pouchdb-plugin-helper/pull/9), but it's +also [not complete yet](https://github.com/marten-de-vries/kneden/issues/13).** + +Do you want an ES7 async/await transpiling [Babel](https://babeljs.io/) plugin, +that: + +- produces readable code - even when generator functions are not available? +- doesn't come with a runtime your users have to download? + +Then look no further! **Kneden (babel-plugin-async-to-promises)** can help you. + +## Example + +**In** + +```js +async function test() { + await db.destroy(); +} +``` + +**Out** + +```js +function test() { + return Promise.resolve().then(function () { + return db.destroy(); + }).then(function () {}); +} +``` + +(The last .then() might seem superfluous at first, but the first function +doesn't actually resolve to anything so it's necessary to make a valid +translation.) + +**Kneden** tries to translate ES7 async/await to promises in a manner similar to +how a human would do so. Loops are converted to recursive functions, and your +code is modified in such a way that a return won't just drop you in the next +part of the promise chain, but actually does what you expect it to do. + +For more examples, see the +[test/fixtures directory](https://github.com/marten-de-vries/kneden/tree/master/test/fixtures) +for both the input and output **Kneden** takes/produces. + +## Installation + +```sh +$ npm install babel-plugin-async-to-promises +``` + +## Usage + +Note: Kneden only supports transpiling ES5 with the addition of async/await. If +you're using other ES6 features (like arrow functions, let/const, classes, +etc.), make sure you transpile them down to valid ES5 code first using the +[babel es2015 preset](https://www.npmjs.com/package/babel-preset-es2015). See +[#19](https://github.com/marten-de-vries/kneden/issues/19) for more information. + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["async-to-promises"] +} +``` + +### Via CLI + +```sh +$ babel --plugins async-to-promises script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["async-to-promises"] +}); +``` + +You can also use the plug-in in [Browserify](http://browserify.org/) using +[babelify](https://github.com/babel/babelify), in [Rollup](http://rollupjs.org/) +by using it in conjunction with +[rollup-plugin-babel](https://github.com/rollup/rollup-plugin-babel), and in +[Webpack](https://webpack.github.io/) using +[babel-loader](https://github.com/babel/babel-loader). + +Unsupported +----------- + +- Return statements aren't properly supported in switch and try/catch/finally + statements yet ([#13](https://github.com/marten-de-vries/kneden/issues/13)) +- No ``eval()``; but that's true for other Babel plugins/presets as well. + +Contributing +------------ + +There are a couple of ways to contribute, for example by: + +- Reporting test results with your code base +- Fixing bugs, for a nice starting task see the ones labeled '[good first bug](https://github.com/marten-de-vries/kneden/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+bug%22)'. + +Contributions are very welcome! Just open an issue or PR. + +What's up with the name? +------------------------ + +It's Dutch for 'to knead'/'to mold' - the program molds ES7 async/await +constructs into promises. It seemed applicable. [Pronounciation](https://upload.wikimedia.org/wikipedia/commons/0/0e/Nl-kneden.ogg). + +The npm package name is a more descriptive one as explained in +[issue #22](https://github.com/marten-de-vries/kneden/issues/22). + +License +------- + +ISC + +--- + +**Kneden** is a project by [Marten de Vries](https://ma.rtendevri.es/). |