aboutsummaryrefslogtreecommitdiff
path: root/node_modules/release-zalgo/README.md
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-03-27 21:01:33 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-03-27 21:01:33 +0100
commitcc97a4dd2a967e1c2273bd5f4c5f49a5bf2e2585 (patch)
tree92c5d88706a6ffc654d1b133618d357890e7096b /node_modules/release-zalgo/README.md
parent3771b4d6b67b34c130f3a9a1a15f42deefdb2eda (diff)
remove node_modules
Diffstat (limited to 'node_modules/release-zalgo/README.md')
-rw-r--r--node_modules/release-zalgo/README.md194
1 files changed, 0 insertions, 194 deletions
diff --git a/node_modules/release-zalgo/README.md b/node_modules/release-zalgo/README.md
deleted file mode 100644
index 9f84fe3ab..000000000
--- a/node_modules/release-zalgo/README.md
+++ /dev/null
@@ -1,194 +0,0 @@
-# release-zalgo
-
-Helps you write code with promise-like chains that can run both synchronously
-and asynchronously.
-
-## Installation
-
-```console
-$ npm install --save release-zalgo
-```
-
-## Usage
-
-If you use this module, you'll release **Ẕ̶̨̫̹̌͊͌͑͊̕͢͟a̡̜̦̝͓͇͗̉̆̂͋̏͗̍ͅl̡̛̝͍̅͆̎̊̇̕͜͢ģ̧̧͍͓̜̲͖̹̂͋̆̃̑͗̋͌̊̏ͅǫ̷̧͓̣͚̞̣̋̂̑̊̂̀̿̀̚͟͠ͅ**. You mustn't do that.
-
-Before you proceed, please read this great post by [Isaac
-Schlueter](http://izs.me/) on [Designing APIs for
-Asynchrony](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony).
-
-The first rule of using this package is to keep your external API consistent.
-
-The second rule is to accept the burden of controlling Ẕ̶̨̫̹̌͊͌͑͊̕͢͟a̡̜̦̝͓͇͗̉̆̂͋̏͗̍ͅl̡̛̝͍̅͆̎̊̇̕͜͢ģ̧̧͍͓̜̲͖̹̂͋̆̃̑͗̋͌̊̏ͅǫ̷̧͓̣͚̞̣̋̂̑̊̂̀̿̀̚͟͠ͅ by ensuring he does not escape your API boundary.
-
-With that out of the way… this package lets you write code that can run both
-synchronously and asynchronously. This is useful if you have fairly complex
-logic for which you don't want to write multiple implementations. See
-[`package-hash`](https://github.com/novemberborn/package-hash) for instance.
-
-This is best shown by example. Let's say you have a `hashFile()` function:
-
-```js
-const crypto = require('crypto')
-const fs = require('fs')
-
-function hashFile (file) {
- return new Promise((resolve, reject) => {
- fs.readFile(file, (err, buffer) => err ? reject(err) : resolve(buffer))
- })
- .then(buffer => {
- const hash = crypto.createHash('sha1')
- hash.update(buffer)
- return hash.digest('hex')
- })
-}
-```
-
-A synchronous version could be implemented like this:
-
-```js
-function hashFileSync (file) {
- const buffer = fs.readFileSync(file)
- const hash = crypto.createHash('sha1')
- hash.update(buffer)
- return hash.digest('hex')
-}
-```
-
-Here's the version that uses `release-zalgo`:
-
-```js
-const crypto = require('crypto')
-const fs = require('fs')
-
-const releaseZalgo = require('release-zalgo')
-
-const readFile = {
- async (file) {
- return new Promise((resolve, reject) => {
- fs.readFile(file, (err, buffer) => err ? reject(err) : resolve(buffer))
- })
- },
-
- sync (file) {
- return fs.readFileSync(file)
- }
-}
-
-function run (zalgo, file) {
- return zalgo.run(readFile, file)
- .then(buffer => {
- const hash = crypto.createHash('sha1')
- hash.update(buffer)
- return hash.digest('hex')
- })
-}
-
-function hashFile (file) {
- return run(releaseZalgo.async(), file)
-}
-
-function hashFileSync (file) {
- const result = run(releaseZalgo.sync(), file)
- return releaseZalgo.unwrapSync(result)
-}
-```
-
-Note how close the `run()` implementation is to the original `hashFile()`.
-
-Just don't do this:
-
-```js
-function badExample (zalgo, file) {
- let buffer
- zalgo.run(readFile, file)
- .then(result => { buffer = result })
-
- const hash = crypto.createHash('sha1')
- hash.update(buffer)
- return hash.digest('hex')
-}
-```
-
-This won't work asynchronously. Just pretend you're working with promises and
-you'll be OK.
-
-## API
-
-First require the package:
-
-```js
-const releaseZalgo = require('release-zalgo')
-```
-
-### `releaseZalgo.sync()`
-
-Returns a `zalgo` object that runs code synchronously:
-
-```js
-const zalgo = releaseZalgo.sync()
-```
-
-### `releaseZalgo.async()`
-
-Returns a `zalgo` object that runs code asynchronously:
-
-```js
-const zalgo = releaseZalgo.async()
-```
-
-### `releaseZalgo.unwrapSync(thenable)`
-
-Synchronously unwraps a [thenable], which is returned when running
-synchronously. Returns the [thenable]s fulfilment value, or throws its
-rejection reason. Throws if the [thenable] is asynchronous.
-
-### `zalgo.run(executors, ...args)`
-
-When running synchronously, `executors.sync()` is called. When running
-asynchronously `executors.async()` is used. The executer is invoked immediately
-and passed the remaining arguments.
-
-For asynchronous execution a `Promise` is returned. It is fulfilled with
-`executors.async()`'s return value, or rejected if `executors.async()` throws.
-
-For synchronous execution a *[thenable]* is returned. It has the same methods as
-`Promise` except that callbacks are invoked immediately. The [thenable] is
-fulfilled with `executors.sync()`'s return value, or rejected if
-`executors.sync()` throws.
-
-### `zalgo.all(arr)`
-
-When running synchronously, returns a new [thenable] which is fulfilled with
-an array, after unwrapping all items in `arr`.
-
-When running asynchronously, delegates to `Promise.all(arr)`.
-
-### `zalgo.returns(value)`
-
-When running synchronously, returns a new [thenable] which is fulfilled with
-`value`.
-
-When running asynchronously, delegates to `Promise.resolve(value)`.
-
-### `zalgo.throws(reason)`
-
-When running synchronously, returns a new [thenable] which is rejected with
-`reason`.
-
-When running asynchronously, delegates to `Promise.reject(reason)`.
-
-### Thenables
-
-Thenables are returned when running sychronously. They're much like `Promise`s,
-in that they have `then()` and `catch()` methods. You can pass callbacks and
-they'll be invoked with the fulfilment value or rejection reason. Callbacks
-can return other thenables or throw exceptions.
-
-Note that `then()` and `catch()` must be called on the thenable, e.g.
-`thenable.then()`, not `(thenable.then)()`.
-
-Thenables should not be exposed outside of your API. Use
-`releaseZalgo.unwrapSync()` to unwrap them.
-
-[thenable]: #thenables