diff options
author | Kat Marchán <kzm@sykosomatic.org> | 2017-04-29 01:11:18 +0300 |
---|---|---|
committer | Rebecca Turner <me@re-becca.org> | 2017-05-26 02:13:33 +0300 |
commit | c8b66854adef8d91c4ad2b058db6f1ca48031b58 (patch) | |
tree | 5e34a1bc728c551d5fa1cbf6bd50d53a04c634f3 /node_modules/promise-inflight | |
parent | cbaf1c914036bc8ac1f9ea965ccba4fd690c8c45 (diff) |
pacote@2.7.4
Diffstat (limited to 'node_modules/promise-inflight')
-rw-r--r-- | node_modules/promise-inflight/LICENSE | 14 | ||||
-rw-r--r-- | node_modules/promise-inflight/README.md | 34 | ||||
-rw-r--r-- | node_modules/promise-inflight/inflight.js | 36 | ||||
-rw-r--r-- | node_modules/promise-inflight/package.json | 59 |
4 files changed, 143 insertions, 0 deletions
diff --git a/node_modules/promise-inflight/LICENSE b/node_modules/promise-inflight/LICENSE new file mode 100644 index 000000000..83e7c4c62 --- /dev/null +++ b/node_modules/promise-inflight/LICENSE @@ -0,0 +1,14 @@ +Copyright (c) 2017, Rebecca Turner <me@re-becca.org> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + diff --git a/node_modules/promise-inflight/README.md b/node_modules/promise-inflight/README.md new file mode 100644 index 000000000..f0ae3a444 --- /dev/null +++ b/node_modules/promise-inflight/README.md @@ -0,0 +1,34 @@ +# promise-inflight + +One promise for multiple requests in flight to avoid async duplication + +## USAGE + +```javascript +const inflight = require('promise-inflight') + +// some request that does some stuff +function req(key) { + // key is any random string. like a url or filename or whatever. + return inflight(key, () => { + // this is where you'd fetch the url or whatever + return Promise.delay(100) + }) +} + +// only assigns a single setTimeout +// when it dings, all thens get called with the same result. (There's only +// one underlying promise.) +req('foo').then(…) +req('foo').then(…) +req('foo').then(…) +req('foo').then(…) +``` + +## SEE ALSO + +* [inflight](https://npmjs.com/package/inflight) - For the callback based function on which this is based. + +## STILL NEEDS + +Tests! diff --git a/node_modules/promise-inflight/inflight.js b/node_modules/promise-inflight/inflight.js new file mode 100644 index 000000000..ce054d34b --- /dev/null +++ b/node_modules/promise-inflight/inflight.js @@ -0,0 +1,36 @@ +'use strict' +module.exports = inflight + +let Bluebird +try { + Bluebird = require('bluebird') +} catch (_) { + Bluebird = Promise +} + +const active = {} +inflight.active = active +function inflight (unique, doFly) { + return Bluebird.all([unique, doFly]).then(function (args) { + const unique = args[0] + const doFly = args[1] + if (Array.isArray(unique)) { + return Bluebird.all(unique).then(function (uniqueArr) { + return _inflight(uniqueArr.join(''), doFly) + }) + } else { + return _inflight(unique, doFly) + } + }) + + function _inflight (unique, doFly) { + if (!active[unique]) { + active[unique] = (new Bluebird(function (resolve) { + return resolve(doFly()) + })) + active[unique].then(cleanup, cleanup) + function cleanup() { delete active[unique] } + } + return active[unique] + } +} diff --git a/node_modules/promise-inflight/package.json b/node_modules/promise-inflight/package.json new file mode 100644 index 000000000..b3251d4a9 --- /dev/null +++ b/node_modules/promise-inflight/package.json @@ -0,0 +1,59 @@ +{ + "_from": "promise-inflight@~1.0.1", + "_id": "promise-inflight@1.0.1", + "_integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "_location": "/promise-inflight", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "promise-inflight@~1.0.1", + "name": "promise-inflight", + "escapedName": "promise-inflight", + "rawSpec": "~1.0.1", + "saveSpec": null, + "fetchSpec": "~1.0.1" + }, + "_requiredBy": [ + "/", + "/cacache", + "/pacote" + ], + "_resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "_shasum": "98472870bf228132fcbdd868129bad12c3c029e3", + "_shrinkwrap": null, + "_spec": "promise-inflight@~1.0.1", + "_where": "/Users/zkat/Documents/code/npm", + "author": { + "name": "Rebecca Turner", + "email": "me@re-becca.org", + "url": "http://re-becca.org/" + }, + "bin": null, + "bugs": { + "url": "https://github.com/iarna/promise-inflight/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "One promise for multiple requests in flight to avoid async duplication", + "devDependencies": {}, + "files": [ + "inflight.js" + ], + "homepage": "https://github.com/iarna/promise-inflight#readme", + "keywords": [], + "license": "ISC", + "main": "inflight.js", + "name": "promise-inflight", + "optionalDependencies": {}, + "peerDependencies": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/iarna/promise-inflight.git" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "version": "1.0.1" +} |