@dioxide-js/silas
Version:
RPC utility for Silas
91 lines (77 loc) • 2.37 kB
JavaScript
import { __module as serialOrdered } from '../../_virtual/serialOrdered.mjs';
import { __require as requireIterate } from './lib/iterate.mjs';
import { __require as requireState } from './lib/state.mjs';
import { __require as requireTerminator } from './lib/terminator.mjs';
var hasRequiredSerialOrdered;
function requireSerialOrdered () {
if (hasRequiredSerialOrdered) return serialOrdered.exports;
hasRequiredSerialOrdered = 1;
var iterate = requireIterate()
, initState = requireState()
, terminator = requireTerminator()
;
// Public API
serialOrdered.exports = serialOrdered$1;
// sorting helpers
serialOrdered.exports.ascending = ascending;
serialOrdered.exports.descending = descending;
/**
* Runs iterator over provided sorted array elements in series
*
* @param {array|object} list - array or object (named list) to iterate over
* @param {function} iterator - iterator to run
* @param {function} sortMethod - custom sort function
* @param {function} callback - invoked when all elements processed
* @returns {function} - jobs terminator
*/
function serialOrdered$1(list, iterator, sortMethod, callback)
{
var state = initState(list, sortMethod);
iterate(list, iterator, state, function iteratorHandler(error, result)
{
if (error)
{
callback(error, result);
return;
}
state.index++;
// are we there yet?
if (state.index < (state['keyedList'] || list).length)
{
iterate(list, iterator, state, iteratorHandler);
return;
}
// done here
callback(null, state.results);
});
return terminator.bind(state, callback);
}
/*
* -- Sort methods
*/
/**
* sort helper to sort array elements in ascending order
*
* @param {mixed} a - an item to compare
* @param {mixed} b - an item to compare
* @returns {number} - comparison result
*/
function ascending(a, b)
{
return a < b ? -1 : a > b ? 1 : 0;
}
/**
* sort helper to sort array elements in descending order
*
* @param {mixed} a - an item to compare
* @param {mixed} b - an item to compare
* @returns {number} - comparison result
*/
function descending(a, b)
{
return -1 * ascending(a, b);
}
return serialOrdered.exports;
}
export { requireSerialOrdered as __require };
//# sourceMappingURL=serialOrdered.mjs.map