diff options
Diffstat (limited to 'node_modules/when/keys.js')
-rw-r--r-- | node_modules/when/keys.js | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/node_modules/when/keys.js b/node_modules/when/keys.js deleted file mode 100644 index 2a62c5d81..000000000 --- a/node_modules/when/keys.js +++ /dev/null @@ -1,114 +0,0 @@ -/** @license MIT License (c) copyright 2011-2013 original author or authors */ - -/** - * Licensed under the MIT License at: - * http://www.opensource.org/licenses/mit-license.php - * - * @author Brian Cavalier - * @author John Hann - */ -(function(define) { 'use strict'; -define(function(require) { - - var when = require('./when'); - var Promise = when.Promise; - var toPromise = when.resolve; - - return { - all: when.lift(all), - map: map, - settle: settle - }; - - /** - * Resolve all the key-value pairs in the supplied object or promise - * for an object. - * @param {Promise|object} object or promise for object whose key-value pairs - * will be resolved - * @returns {Promise} promise for an object with the fully resolved key-value pairs - */ - function all(object) { - var p = Promise._defer(); - var resolver = Promise._handler(p); - - var results = {}; - var keys = Object.keys(object); - var pending = keys.length; - - for(var i=0, k; i<keys.length; ++i) { - k = keys[i]; - Promise._handler(object[k]).fold(settleKey, k, results, resolver); - } - - if(pending === 0) { - resolver.resolve(results); - } - - return p; - - function settleKey(k, x, resolver) { - /*jshint validthis:true*/ - this[k] = x; - if(--pending === 0) { - resolver.resolve(results); - } - } - } - - /** - * Map values in the supplied object's keys - * @param {Promise|object} object or promise for object whose key-value pairs - * will be reduced - * @param {function(value:*, key:String):*} f mapping function which may - * return either a promise or a value - * @returns {Promise} promise for an object with the mapped and fully - * resolved key-value pairs - */ - function map(object, f) { - return toPromise(object).then(function(object) { - return all(Object.keys(object).reduce(function(o, k) { - o[k] = toPromise(object[k]).fold(mapWithKey, k); - return o; - }, {})); - }); - - function mapWithKey(k, x) { - return f(x, k); - } - } - - /** - * Resolve all key-value pairs in the supplied object and return a promise - * that will always fulfill with the outcome states of all input promises. - * @param {object} object whose key-value pairs will be settled - * @returns {Promise} promise for an object with the mapped and fully - * settled key-value pairs - */ - function settle(object) { - var keys = Object.keys(object); - var results = {}; - - if(keys.length === 0) { - return toPromise(results); - } - - var p = Promise._defer(); - var resolver = Promise._handler(p); - var promises = keys.map(function(k) { return object[k]; }); - - when.settle(promises).then(function(states) { - populateResults(keys, states, results, resolver); - }); - - return p; - } - - function populateResults(keys, states, results, resolver) { - for(var i=0; i<keys.length; i++) { - results[keys[i]] = states[i]; - } - resolver.resolve(results); - } - -}); -})(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); }); |