UNPKG

start

Version:

Highly composable and modular Nodejs tasks runner for the new functional JS era

47 lines (37 loc) 1.18 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function () { let reporter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : console.log; return function () { for (var _len = arguments.length, tasks = Array(_len), _key = 0; _key < _len; _key++) { tasks[_key] = arguments[_key]; } return tasks.reduce((current, next) => { return current.then(output => { const task = next(output); // nested Start if (task instanceof Promise) { return task; } const name = task.name; let taskPromise = null; reporter(name, 'start'); // catch an errors that are outside of task Promise try { taskPromise = task(reporter.bind(reporter, name, 'info'), reporter); } catch (error) { reporter(name, 'reject', error); } return taskPromise.then(result => { reporter(name, 'resolve'); return result; }).catch(error => { reporter(name, 'reject', error); throw error; }); }); }, Promise.resolve()); }; };