aboutsummaryrefslogtreecommitdiff
path: root/node_modules/universalify
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/universalify')
-rw-r--r--node_modules/universalify/LICENSE20
-rw-r--r--node_modules/universalify/README.md76
-rw-r--r--node_modules/universalify/index.js25
-rw-r--r--node_modules/universalify/package.json68
4 files changed, 189 insertions, 0 deletions
diff --git a/node_modules/universalify/LICENSE b/node_modules/universalify/LICENSE
new file mode 100644
index 0000000..514e84e
--- /dev/null
+++ b/node_modules/universalify/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2017, Ryan Zimmerman <[email protected]>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the 'Software'), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/universalify/README.md b/node_modules/universalify/README.md
new file mode 100644
index 0000000..487067b
--- /dev/null
+++ b/node_modules/universalify/README.md
@@ -0,0 +1,76 @@
+# universalify
+
+[![Travis branch](https://img.shields.io/travis/RyanZim/universalify/master.svg)](https://travis-ci.org/RyanZim/universalify)
+![Coveralls github branch](https://img.shields.io/coveralls/github/RyanZim/universalify/master.svg)
+![npm](https://img.shields.io/npm/dm/universalify.svg)
+![npm](https://img.shields.io/npm/l/universalify.svg)
+
+Make a callback- or promise-based function support both promises and callbacks.
+
+Uses the native promise implementation.
+
+## Installation
+
+```bash
+npm install universalify
+```
+
+## API
+
+### `universalify.fromCallback(fn)`
+
+Takes a callback-based function to universalify, and returns the universalified function.
+
+Function must take a callback as the last parameter that will be called with the signature `(error, result)`. `universalify` does not support calling the callback with more than three arguments, and does not ensure that the callback is only called once.
+
+```js
+function callbackFn (n, cb) {
+ setTimeout(() => cb(null, n), 15)
+}
+
+const fn = universalify.fromCallback(callbackFn)
+
+// Works with Promises:
+fn('Hello World!')
+.then(result => console.log(result)) // -> Hello World!
+.catch(error => console.error(error))
+
+// Works with Callbacks:
+fn('Hi!', (error, result) => {
+ if (error) return console.error(error)
+ console.log(result)
+ // -> Hi!
+})
+```
+
+### `universalify.fromPromise(fn)`
+
+Takes a promise-based function to universalify, and returns the universalified function.
+
+Function must return a valid JS promise. `universalify` does not ensure that a valid promise is returned.
+
+```js
+function promiseFn (n) {
+ return new Promise(resolve => {
+ setTimeout(() => resolve(n), 15)
+ })
+}
+
+const fn = universalify.fromPromise(promiseFn)
+
+// Works with Promises:
+fn('Hello World!')
+.then(result => console.log(result)) // -> Hello World!
+.catch(error => console.error(error))
+
+// Works with Callbacks:
+fn('Hi!', (error, result) => {
+ if (error) return console.error(error)
+ console.log(result)
+ // -> Hi!
+})
+```
+
+## License
+
+MIT
diff --git a/node_modules/universalify/index.js b/node_modules/universalify/index.js
new file mode 100644
index 0000000..0c9ba39
--- /dev/null
+++ b/node_modules/universalify/index.js
@@ -0,0 +1,25 @@
+'use strict'
+
+exports.fromCallback = function (fn) {
+ return Object.defineProperty(function () {
+ if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments)
+ else {
+ return new Promise((resolve, reject) => {
+ arguments[arguments.length] = (err, res) => {
+ if (err) return reject(err)
+ resolve(res)
+ }
+ arguments.length++
+ fn.apply(this, arguments)
+ })
+ }
+ }, 'name', { value: fn.name })
+}
+
+exports.fromPromise = function (fn) {
+ return Object.defineProperty(function () {
+ const cb = arguments[arguments.length - 1]
+ if (typeof cb !== 'function') return fn.apply(this, arguments)
+ else fn.apply(this, arguments).then(r => cb(null, r), cb)
+ }, 'name', { value: fn.name })
+}
diff --git a/node_modules/universalify/package.json b/node_modules/universalify/package.json
new file mode 100644
index 0000000..85852e7
--- /dev/null
+++ b/node_modules/universalify/package.json
@@ -0,0 +1,68 @@
+{
+ "_args": [
+ [
+ "/home/dstaesse/git/website"
+ ]
+ ],
+ "_development": true,
+ "_from": "[email protected]",
+ "_id": "[email protected]",
+ "_inBundle": false,
+ "_integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "_location": "/universalify",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "[email protected]",
+ "name": "universalify",
+ "escapedName": "universalify",
+ "rawSpec": "0.1.2",
+ "saveSpec": null,
+ "fetchSpec": "0.1.2"
+ },
+ "_requiredBy": [
+ "/fs-extra"
+ ],
+ "_resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "_spec": "0.1.2",
+ "_where": "/home/dstaesse/git/website",
+ "author": {
+ "name": "Ryan Zimmerman",
+ "email": "[email protected]"
+ },
+ "bugs": {
+ "url": "https://github.com/RyanZim/universalify/issues"
+ },
+ "description": "Make a callback- or promise-based function support both promises and callbacks.",
+ "devDependencies": {
+ "colortape": "^0.1.2",
+ "coveralls": "^3.0.1",
+ "nyc": "^10.2.0",
+ "standard": "^10.0.1",
+ "tape": "^4.6.3"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/RyanZim/universalify#readme",
+ "keywords": [
+ "callback",
+ "native",
+ "promise"
+ ],
+ "license": "MIT",
+ "name": "universalify",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/RyanZim/universalify.git"
+ },
+ "scripts": {
+ "test": "standard && nyc tape test/*.js | colortape"
+ },
+ "version": "0.1.2"
+}