UNPKG

@dioxide-js/silas

Version:

RPC utility for Silas

91 lines (77 loc) 2.37 kB
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