// API1module.exports = state;23/**4* Creates initial state object5* for iteration over list6*7* @param {array|object} list - list to iterate over8* @param {function|null} sortMethod - function to use for keys sort,9* or `null` to keep them as is10* @returns {object} - initial state object11*/12function state(list, sortMethod)13{14var isNamedList = !Array.isArray(list)15, initState =16{17index : 0,18keyedList: isNamedList || sortMethod ? Object.keys(list) : null,19jobs : {},20results : isNamedList ? {} : [],21size : isNamedList ? Object.keys(list).length : list.length22}23;2425if (sortMethod)26{27// sort array keys based on it's values28// sort object's keys just on own merit29initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)30{31return sortMethod(list[a], list[b]);32});33}3435return initState;36}373839