bal-util
Version:
Common utility functions for Node.js used and maintained by Benjamin Lupton
138 lines (122 loc) • 4.18 kB
JavaScript
;
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"); } }; }();
// Generated by CoffeeScript 2.3.1
// Import
var TaskGroup, balUtilFlow, eachr, typeChecker;
var _require = require('taskgroup');
TaskGroup = _require.TaskGroup;
typeChecker = require('typechecker');
eachr = require('eachr');
// =====================================
// Flow
balUtilFlow = {
// Wait a certain amount of milliseconds before firing the function
wait: function wait(delay, fn) {
return setTimeout(fn, delay);
},
// Flow through a series of actions on an object
// next(err)
flow: function flow() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var action, actions, next, object, tasks;
// Extract
if (args.length === 1) {
var _args$ = args[0];
object = _args$.object;
actions = _args$.actions;
action = _args$.action;
args = _args$.args;
tasks = _args$.tasks;
next = _args$.next;
} else if (args.length === 4) {
var _args = args;
var _args2 = _slicedToArray(_args, 4);
object = _args2[0];
action = _args2[1];
args = _args2[2];
next = _args2[3];
} else if (args.length === 3) {
var _args3 = args;
var _args4 = _slicedToArray(_args3, 3);
actions = _args4[0];
args = _args4[1];
next = _args4[2];
}
// Check
if (action != null === false && actions != null === false) {
throw new Error('balUtilFlow.flow called without any action');
}
// Create tasks group and cycle through it
if (actions == null) {
actions = action.split(/[,\s]+/g);
}
if (object == null) {
object = null;
}
tasks || (tasks = new TaskGroup().done(next));
actions.forEach(function (action) {
return tasks.addTask(function (complete) {
var argsClone, fn;
// Prepare callback
argsClone = (args || []).slice();
argsClone.push(complete);
// Fire the action with the next helper
fn = typeChecker.isFunction(action) ? action : object[action];
return fn.apply(object, argsClone);
});
});
// Fire the tasks synchronously
tasks.run();
return this;
},
// Create snore
createSnore: function createSnore(message, opts) {
var snore;
// Prepare
opts || (opts = {});
if (opts.delay == null) {
opts.delay = 5000;
}
// Create snore object
snore = {
snoring: false,
timer: setTimeout(function () {
snore.clear();
snore.snoring = true;
return typeof message === "function" ? message() : void 0;
}, opts.delay),
clear: function clear() {
if (snore.timer) {
clearTimeout(snore.timer);
return snore.timer = false;
}
}
};
// Return
return snore;
},
// Suffix an array
suffixArray: function suffixArray(suffix) {
var arg, i, item, j, len, len1, result;
result = [];
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
for (i = 0, len = args.length; i < len; i++) {
arg = args[i];
if (!typeChecker.isArray(arg)) {
arg = [arg];
}
for (j = 0, len1 = arg.length; j < len1; j++) {
item = arg[j];
result.push(item + suffix);
}
}
return result;
}
};
// =====================================
// Export
module.exports = balUtilFlow;