transition-manager
Version:
Transition Manager. Framework independent transition manager to transition elements using states and actions.
81 lines (71 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
/**
* Deffer the promise
* @return {object} { resolve : function, reject : function }
*/
exports.Deferred = Deferred;
/**
* create a facad for es6-promise all
* ovrridden facad to display error logs for development
* due to es6-promise error suppression issue
* @param {array} promises
* @return {function}
*/
exports.all = all;
var _es6Promise = require('es6-promise');
/**
* Promise facad object
* creates a facad for application promises,
* detatches feom the library being used to serve promises to the app
* @type {Object}
*/
var PromiseFacade = {};
function Deferred() {
var result = {};
result.promise = new _es6Promise.Promise(function (resolve, reject) {
result.resolve = resolve;
result.reject = reject;
});
return result;
}
function all() {
var _arguments = arguments;
var externalError = undefined,
error = function error(e) {
console.error(' --- PROMISE CAUGHT ERROR --- ', _arguments[0].stack, e);
if (externalError) {
externalError('es6-promise all error ', _arguments[0].stack, e);
}
};
return (function () {
var all = _es6Promise.Promise.all(_arguments[0]);
return {
then: function then() {
externalError = arguments[1];
all.then(arguments[0])['catch'](error);
}
};
})(arguments);
}
/**
* return object getters
*
* - all - checks to see if all promises has completed before continuing
* - Promise - returns a Promise
* - Deferred - returns an un resolved promise and an object with the resolve and reject functions
* @return {function} [description]
*/
Object.defineProperty(PromiseFacade, 'all', { get: function get() {
return all;
} });
Object.defineProperty(PromiseFacade, 'Promise', { get: function get() {
return _es6Promise.Promise;
} });
Object.defineProperty(PromiseFacade, 'Deferred', { get: function get() {
return Deferred;
} });
/* export defaults */
exports['default'] = PromiseFacade;