// APImodule.exports=state;/** * Creates initial state object * for iteration over list * * @param {array|object} list - list to iterate over * @param {function|null} sortMethod - function to use for keys sort, * or `null` to keep them as is * @returns {object} - initial state object */functionstate(list,sortMethod){varisNamedList=!Array.isArray(list),initState={index:0,keyedList:isNamedList||sortMethod?Object.keys(list):null,jobs:{},results:isNamedList?{}:[],size:isNamedList?Object.keys(list).length:list.length};if(sortMethod){// sort array keys based on it's values// sort object's keys just on own meritinitState.keyedList.sort(isNamedList?sortMethod:function(a,b){returnsortMethod(list[a],list[b]);});}returninitState;}