Socket
Socket
Sign inDemoInstall

promise-toolbox

Package Overview
Dependencies
Maintainers
2
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

promise-toolbox - npm Package Compare versions

Comparing version 0.3.1 to 0.3.2

9

dist/index.js

@@ -6,6 +6,5 @@ 'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.TimeoutError=exports.finally=exports.fromCallback=exports.forOwn=exports.forIterable=exports.forIn=exports.forEach=exports.forArray=exports.makeAsyncIterator=exports.defer=exports.cancellable=exports.nodeify=exports.isPromise=undefined;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj;};exports.all=all;exports.asCallback=asCallback;exports.catchPlus=catchPlus;exports.delay=delay;exports.join=join;exports.lastly=lastly;exports.promisify=promisify;exports.promisifyAll=promisifyAll;exports.reflect=reflect;exports.settle=settle;exports.some=some;exports.timeout=timeout;exports.unpromisify=unpromisify;var _makeError=require('make-error');function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} // ===================================================================

var isPromise=exports.isPromise=function isPromise(value){return value!=null&&typeof value.then==='function';}; // -------------------------------------------------------------------
var _makeAsyncIterator=function _makeAsyncIterator(iterator){return function(promises,cb){var mainPromise=Promise.resolve();iterator(promises,function(promise,key){if(isPromise(promise)){ // Avoid unhandled rejections.
promise.then(null,_noop);mainPromise=mainPromise.then(function(){return promise;}).then(function(value){return cb(value,key);});}else {mainPromise=mainPromise.then(function(){return cb(promise,key);});}});return mainPromise;};};var _forEachAsync=_makeAsyncIterator(_forEach);var _wrap=function _wrap(value){return isPromise(value)?value:Promise.resolve(value);};var _wrapCall=function _wrapCall(fn,args,thisArg){try{return _wrap(fn.apply(thisArg,args));}catch(error){return Promise.reject(error);}}; // ===================================================================
var _all=function _all(promises,mapFn){ // mapFn may be undefined but it's okay :)
var results=_map(promises,mapFn);return _forEachAsync(mapFn?results:promises,function(value,key){results[key]=value;}).then(function(){return results;});}; // Returns a promise which resolves when all the promises in a
var _makeAsyncIterator=function _makeAsyncIterator(iterator){return function(promises,cb){var mainPromise=Promise.resolve();iterator(promises,function(promise,key){mainPromise=isPromise(promise)?mainPromise.then(function(){return promise.then(function(value){return cb(value,key);});}):mainPromise.then(function(value){return cb(value,key);});});return mainPromise;};};var _wrap=function _wrap(value){return isPromise(value)?value:Promise.resolve(value);};var _wrapCall=function _wrapCall(fn,args,thisArg){try{return _wrap(fn.apply(thisArg,args));}catch(error){return Promise.reject(error);}}; // ===================================================================
var _all=function _all(promises,mapFn){return new Promise(function(resolve,reject){ // mapFn may be undefined but it's okay :)
var result=_map(promises,mapFn);var count=1;var onFulfillment0=function onFulfillment0(){if(--count===0){var tmp=result;result=null;resolve(tmp);}};var onFulfillment=function onFulfillment(value,key){if(!result){return;}result[key]=value;onFulfillment0();};var onRejection=function onRejection(reason){if(!result){return;}result=null;reject(reason);};_forEach(mapFn?result:promises,function(promise,key){++count;if(isPromise(promise)){promise.then(function(value){return onFulfillment(value,key);},onRejection);}else {onFulfillment(promise,key);}});onFulfillment0();});}; // Returns a promise which resolves when all the promises in a
// collection have resolved or rejects with the reason of the first

@@ -82,3 +81,3 @@ // promise that rejects.

function settle(){return all.call(this,function(x){return reflect.call(x);});} // -------------------------------------------------------------------
var _some=function _some(promises,count){return new Promise(function(resolve,reject){var values=[];var errors=[];var onFulfillment=function onFulfillment(value){if(!values){return;}values.push(value);if(--count){resolve(values);values=errors=null;}};var acceptableErrors=-count;var onRejection=function onRejection(reason){if(!values){return;}errors.push(reason);if(--acceptableErrors){reject(errors);values=errors=null;}};_forEach(promises,function(promise){++acceptableErrors;_wrap(promise).then(onFulfillment,onRejection);});});}; // Usage: promises::some(count)
var _some=function _some(promises,count){return new Promise(function(resolve,reject){var values=[];var errors=[];var onFulfillment=function onFulfillment(value){if(!values){return;}values.push(value);if(--count===0){resolve(values);values=errors=null;}};var acceptableErrors=-count;var onRejection=function onRejection(reason){if(!values){return;}errors.push(reason);if(--acceptableErrors===0){reject(errors);values=errors=null;}};_forEach(promises,function(promise){++acceptableErrors;_wrap(promise).then(onFulfillment,onRejection);});});}; // Usage: promises::some(count)
function some(count){return _wrap(this).then(function(promises){return _some(promises,count);});} // -------------------------------------------------------------------

@@ -85,0 +84,0 @@ var TimeoutError=exports.TimeoutError=function(_BaseError){_inherits(TimeoutError,_BaseError);function TimeoutError(){_classCallCheck(this,TimeoutError);return _possibleConstructorReturn(this,Object.getPrototypeOf(TimeoutError).call(this,'operation timed out'));}return TimeoutError;}(_makeError.BaseError); // Usage: promise::timeout(ms)

'use strict';var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally {try{if(!_n&&_i["return"])_i["return"]();}finally {if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i);}else {throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}(); /* eslint-env mocha */var _must=require('must');var _must2=_interopRequireDefault(_must);var _makeError=require('make-error');var _makeError2=_interopRequireDefault(_makeError);var _sinon=require('sinon');var _sinon2=_interopRequireDefault(_sinon);var _=require('./');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} // ===================================================================
describe('catchPlus',function(){var ident=function ident(value){return value;};it('catches errors matching a predicate',function(){var _context;var predicate=function predicate(reason){return reason==='foo';};return Promise.all([(0,_must2.default)((_context=Promise.reject('foo'),_.catchPlus).call(_context,predicate,ident)).to.resolve.to.equal('foo'),(0,_must2.default)((_context=Promise.reject('bar'),_.catchPlus).call(_context,predicate,ident)).to.reject.to.equal('bar')]);});it('catches errors matching a class',function(){var _context2;var CustomError1=(0,_makeError2.default)('CustomError1');var CustomError2=(0,_makeError2.default)('CustomError2');var error=new CustomError1();return Promise.all([ // The class itself.
(0,_must2.default)((_context2=Promise.reject(error),_.catchPlus).call(_context2,CustomError1,ident)).to.resolve.to.equal(error), // A parent.
(0,_must2.default)((_context2=Promise.reject(error),_.catchPlus).call(_context2,Error,ident)).to.resolve.to.equal(error), // Another class.
(0,_must2.default)((_context2=Promise.reject(error),_.catchPlus).call(_context2,CustomError2,ident)).to.reject.to.equal(error)]);});it('catches errors matching an object pattern',function(){var _context3;var predicate={foo:0};return Promise.all([(0,_must2.default)((_context3=Promise.reject({foo:0}),_.catchPlus).call(_context3,predicate,ident)).to.resolve.to.be.an.object(),(0,_must2.default)((_context3=Promise.reject({foo:1}),_.catchPlus).call(_context3,predicate,ident)).to.reject.to.be.an.object(),(0,_must2.default)((_context3=Promise.reject({bar:0}),_.catchPlus).call(_context3,predicate,ident)).to.reject.to.be.an.object()]);});it('does not catch programmer errors',function(){var _context4;return Promise.all([(0,_must2.default)((_context4=Promise.reject(new TypeError('')),_.catchPlus).call(_context4,ident)).to.reject.to.error(TypeError),(0,_must2.default)((_context4=Promise.reject(new SyntaxError('')),_.catchPlus).call(_context4,ident)).to.reject.to.error(SyntaxError), // Unless matches by a predicate.
(0,_must2.default)((_context4=Promise.reject(new TypeError('')),_.catchPlus).call(_context4,TypeError,ident)).to.resolve.to.error(TypeError)]);});}); // -------------------------------------------------------------------
describe('all()',function(){it('with array',function(){var _context;return (0,_must2.default)((_context=[Promise.resolve('foo'),'bar'],_.all).call(_context)).to.resolve.to.eql(['foo','bar']);});it('with object',function(){var _context2;return (0,_must2.default)((_context2={foo:Promise.resolve('foo'),bar:'bar'},_.all).call(_context2)).to.resolve.to.eql({foo:'foo',bar:'bar'});});it('resolve with empty collection',function(){var _context3;return (0,_must2.default)((_context3=[],_.all).call(_context3)).to.resolve.to.eql([]);});it('rejects first rejection',function(){var _context4;return (0,_must2.default)((_context4=['foo',Promise.reject('bar')],_.all).call(_context4)).to.reject.to.equal('bar');});it('rejects first rejection (even with pending promises)',function(){var _context5;return (0,_must2.default)((_context5=[new Promise(function(){}),Promise.reject('bar')],_.all).call(_context5)).to.reject.to.equal('bar');});}); // -------------------------------------------------------------------
describe('catchPlus',function(){var ident=function ident(value){return value;};it('catches errors matching a predicate',function(){var _context6;var predicate=function predicate(reason){return reason==='foo';};return Promise.all([(0,_must2.default)((_context6=Promise.reject('foo'),_.catchPlus).call(_context6,predicate,ident)).to.resolve.to.equal('foo'),(0,_must2.default)((_context6=Promise.reject('bar'),_.catchPlus).call(_context6,predicate,ident)).to.reject.to.equal('bar')]);});it('catches errors matching a class',function(){var _context7;var CustomError1=(0,_makeError2.default)('CustomError1');var CustomError2=(0,_makeError2.default)('CustomError2');var error=new CustomError1();return Promise.all([ // The class itself.
(0,_must2.default)((_context7=Promise.reject(error),_.catchPlus).call(_context7,CustomError1,ident)).to.resolve.to.equal(error), // A parent.
(0,_must2.default)((_context7=Promise.reject(error),_.catchPlus).call(_context7,Error,ident)).to.resolve.to.equal(error), // Another class.
(0,_must2.default)((_context7=Promise.reject(error),_.catchPlus).call(_context7,CustomError2,ident)).to.reject.to.equal(error)]);});it('catches errors matching an object pattern',function(){var _context8;var predicate={foo:0};return Promise.all([(0,_must2.default)((_context8=Promise.reject({foo:0}),_.catchPlus).call(_context8,predicate,ident)).to.resolve.to.be.an.object(),(0,_must2.default)((_context8=Promise.reject({foo:1}),_.catchPlus).call(_context8,predicate,ident)).to.reject.to.be.an.object(),(0,_must2.default)((_context8=Promise.reject({bar:0}),_.catchPlus).call(_context8,predicate,ident)).to.reject.to.be.an.object()]);});it('does not catch programmer errors',function(){var _context9;return Promise.all([(0,_must2.default)((_context9=Promise.reject(new TypeError('')),_.catchPlus).call(_context9,ident)).to.reject.to.error(TypeError),(0,_must2.default)((_context9=Promise.reject(new SyntaxError('')),_.catchPlus).call(_context9,ident)).to.reject.to.error(SyntaxError), // Unless matches by a predicate.
(0,_must2.default)((_context9=Promise.reject(new TypeError('')),_.catchPlus).call(_context9,TypeError,ident)).to.resolve.to.error(TypeError)]);});}); // -------------------------------------------------------------------
describe('fromCallback()',function(){it('creates a promise which resolves with value passed to the callback',function(){return (0,_must2.default)((0,_.fromCallback)(function(cb){cb(null,'foo');})).to.resolve.to.equal('foo');});it('creates a promise which rejects with reason passed to the callback',function(){return (0,_must2.default)((0,_.fromCallback)(function(cb){cb('bar');})).to.reject.to.equal('bar');});}); // -------------------------------------------------------------------
describe('join()',function(){it('calls the callback once promises are resolved',function(){return (0,_.join)(Promise.resolve('foo'),Promise.resolve('bar'),function(foo,bar){(0,_must2.default)(foo).to.equal('foo');(0,_must2.default)(bar).to.equal('bar');});});it('can takes inputs in an array',function(){return (0,_.join)([Promise.resolve('foo'),Promise.resolve('bar')],function(foo,bar){(0,_must2.default)(foo).to.equal('foo');(0,_must2.default)(bar).to.equal('bar');});});it('rejects if one promise rejects',function(){return (0,_must2.default)((0,_.join)(Promise.resolve('foo'),Promise.reject('bar'),function(foo,bar){(0,_must2.default)(foo).to.equal('foo');(0,_must2.default)(bar).to.equal('bar');})).to.reject.to.equal('bar');});}); // -------------------------------------------------------------------
describe('lastly()',function(){it('calls a callback on resolution',function(){var _context5;var value={};var spy=_sinon2.default.spy();return (0,_must2.default)((_context5=Promise.resolve(value),_.lastly).call(_context5,spy)).to.resolve.to.equal(value).then(function(){(0,_must2.default)(spy.callCount).to.equal(1);});});it('calls a callback on rejection',function(){var _context6;var reason={};var spy=_sinon2.default.spy();return (0,_must2.default)((_context6=Promise.reject(reason),_.lastly).call(_context6,spy)).to.reject.to.equal(reason).then(function(){(0,_must2.default)(spy.callCount).to.equal(1);});});}); // -------------------------------------------------------------------
describe('lastly()',function(){it('calls a callback on resolution',function(){var _context10;var value={};var spy=_sinon2.default.spy();return (0,_must2.default)((_context10=Promise.resolve(value),_.lastly).call(_context10,spy)).to.resolve.to.equal(value).then(function(){(0,_must2.default)(spy.callCount).to.equal(1);});});it('calls a callback on rejection',function(){var _context11;var reason={};var spy=_sinon2.default.spy();return (0,_must2.default)((_context11=Promise.reject(reason),_.lastly).call(_context11,spy)).to.reject.to.equal(reason).then(function(){(0,_must2.default)(spy.callCount).to.equal(1);});});}); // -------------------------------------------------------------------
describe('promisifyAll()',function(){it('returns a new object',function(){var o={};var r=_.promisifyAll.call(o);(0,_must2.default)(r).to.be.an.object();(0,_must2.default)(r).to.not.equal(o);});it('creates promisified version of all functions bound to the original object',function(){var o={foo:function foo(cb){cb(null,this);}};var r=_.promisifyAll.call(o);return (0,_must2.default)(r.foo()).to.resolve.to.equal(o);});it('ignores functions ending with Sync or Async',function(){var o={fooAsync:function fooAsync(){},fooSync:function fooSync(){}};var r=_.promisifyAll.call(o);(0,_must2.default)(r).to.not.have.property('foo');(0,_must2.default)(r).to.not.have.property('fooASync');(0,_must2.default)(r).to.not.have.property('fooSync');});}); // -------------------------------------------------------------------
describe('settle()',function(){it('works with arrays',function(){var _context7;return (_context7=[Promise.resolve(42),Math.PI,Promise.reject('fatality')],_.settle).call(_context7).then(function(_ref){var _ref2=_slicedToArray(_ref,3);var status1=_ref2[0];var status2=_ref2[1];var status3=_ref2[2];(0,_must2.default)(status1.isFulfilled()).to.equal(true);(0,_must2.default)(status2.isFulfilled()).to.equal(true);(0,_must2.default)(status3.isFulfilled()).to.equal(false); // Alias.
(0,_must2.default)(status1.isResolved()).to.equal(true);(0,_must2.default)(status2.isResolved()).to.equal(true);(0,_must2.default)(status3.isResolved()).to.equal(false);(0,_must2.default)(status1.isRejected()).to.equal(false);(0,_must2.default)(status2.isRejected()).to.equal(false);(0,_must2.default)(status3.isRejected()).to.equal(true);(0,_must2.default)(status1.value()).to.equal(42);(0,_must2.default)(status2.value()).to.equal(Math.PI);(0,_must2.default)(status3.value.bind(status3)).to.throw();(0,_must2.default)(status1.reason.bind(status1)).to.throw();(0,_must2.default)(status2.reason.bind(status2)).to.throw();(0,_must2.default)(status3.reason()).to.equal('fatality');});});it('works with objects',function(){var _context8;return (_context8={a:Promise.resolve(42),b:Math.PI,c:Promise.reject('fatality')},_.settle).call(_context8).then(function(_ref3){var status1=_ref3.a;var status2=_ref3.b;var status3=_ref3.c;(0,_must2.default)(status1.isFulfilled()).to.equal(true);(0,_must2.default)(status2.isFulfilled()).to.equal(true);(0,_must2.default)(status3.isFulfilled()).to.equal(false); // Alias.
describe('settle()',function(){it('works with arrays',function(){var _context12;return (_context12=[Promise.resolve(42),Math.PI,Promise.reject('fatality')],_.settle).call(_context12).then(function(_ref){var _ref2=_slicedToArray(_ref,3);var status1=_ref2[0];var status2=_ref2[1];var status3=_ref2[2];(0,_must2.default)(status1.isFulfilled()).to.equal(true);(0,_must2.default)(status2.isFulfilled()).to.equal(true);(0,_must2.default)(status3.isFulfilled()).to.equal(false); // Alias.
(0,_must2.default)(status1.isResolved()).to.equal(true);(0,_must2.default)(status2.isResolved()).to.equal(true);(0,_must2.default)(status3.isResolved()).to.equal(false);(0,_must2.default)(status1.isRejected()).to.equal(false);(0,_must2.default)(status2.isRejected()).to.equal(false);(0,_must2.default)(status3.isRejected()).to.equal(true);(0,_must2.default)(status1.value()).to.equal(42);(0,_must2.default)(status2.value()).to.equal(Math.PI);(0,_must2.default)(status3.value.bind(status3)).to.throw();(0,_must2.default)(status1.reason.bind(status1)).to.throw();(0,_must2.default)(status2.reason.bind(status2)).to.throw();(0,_must2.default)(status3.reason()).to.equal('fatality');});});it('works with objects',function(){var _context13;return (_context13={a:Promise.resolve(42),b:Math.PI,c:Promise.reject('fatality')},_.settle).call(_context13).then(function(_ref3){var status1=_ref3.a;var status2=_ref3.b;var status3=_ref3.c;(0,_must2.default)(status1.isFulfilled()).to.equal(true);(0,_must2.default)(status2.isFulfilled()).to.equal(true);(0,_must2.default)(status3.isFulfilled()).to.equal(false); // Alias.
(0,_must2.default)(status1.isResolved()).to.equal(true);(0,_must2.default)(status2.isResolved()).to.equal(true);(0,_must2.default)(status3.isResolved()).to.equal(false);(0,_must2.default)(status1.isRejected()).to.equal(false);(0,_must2.default)(status2.isRejected()).to.equal(false);(0,_must2.default)(status3.isRejected()).to.equal(true);(0,_must2.default)(status1.value()).to.equal(42);(0,_must2.default)(status2.value()).to.equal(Math.PI);(0,_must2.default)(status3.value.bind(status3)).to.throw();(0,_must2.default)(status1.reason.bind(status1)).to.throw();(0,_must2.default)(status2.reason.bind(status2)).to.throw();(0,_must2.default)(status3.reason()).to.equal('fatality');});});}); // -------------------------------------------------------------------
describe('timeout()',function(){it('rejects a promise if not settled after a delay',function(){var _context9;return (0,_must2.default)((_context9=new Promise(function(){}),_.timeout).call(_context9,10)).to.reject.to.error(_.TimeoutError);});it('forwards the settlement if settled before a delay',function(){var _context10;return Promise.all([(0,_must2.default)((_context10=Promise.resolve('value'),_.timeout).call(_context10,10)).to.resolve.to.equal('value'),(0,_must2.default)((_context10=Promise.reject('reason'),_.timeout).call(_context10,10)).to.reject.to.equal('reason')]);});}); // -------------------------------------------------------------------
describe('timeout()',function(){it('rejects a promise if not settled after a delay',function(){var _context14;return (0,_must2.default)((_context14=new Promise(function(){}),_.timeout).call(_context14,10)).to.reject.to.error(_.TimeoutError);});it('forwards the settlement if settled before a delay',function(){var _context15;return Promise.all([(0,_must2.default)((_context15=Promise.resolve('value'),_.timeout).call(_context15,10)).to.resolve.to.equal('value'),(0,_must2.default)((_context15=Promise.reject('reason'),_.timeout).call(_context15,10)).to.reject.to.equal('reason')]);});}); // -------------------------------------------------------------------
describe('unpromisify()',function(){it('forwards the result',function(done){var fn=_.unpromisify.call(function(){return Promise.resolve('foo');});fn(function(error,result){(0,_must2.default)(error).to.not.exist();(0,_must2.default)(result).to.equal('foo');done();});});it('forwards the error',function(done){var fn=_.unpromisify.call(function(){return Promise.reject('foo');});fn(function(error){(0,_must2.default)(error).to.equal('foo');done();});});});
//# sourceMappingURL=index.spec.js.map
{
"name": "promise-toolbox",
"version": "0.3.1",
"version": "0.3.2",
"license": "ISC",

@@ -38,3 +38,3 @@ "description": "Essential utils for promises",

"babel-cli": "^6.3.17",
"babel-eslint": "^5.0.0",
"babel-eslint": "^6.0.0",
"babel-plugin-transform-runtime": "^6.3.13",

@@ -45,8 +45,8 @@ "babel-preset-es2015": "^6.3.13",

"dependency-check": "^2.5.1",
"julien-f-source-map-support": "0.0.0",
"mocha": "^2.3.4",
"must": "^0.13.1",
"native-promise-only": "^0.8.1",
"nyc": "^5.3.0",
"nyc": "^6.1.1",
"sinon": "^1.17.2",
"source-map-support": "^0.4.0",
"standard": "^6.0.7",

@@ -53,0 +53,0 @@ "trace": "^2.0.1"

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc