Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/asynckit/lib/state.js
1126 views
1
// API
2
module.exports = state;
3
4
/**
5
* Creates initial state object
6
* for iteration over list
7
*
8
* @param {array|object} list - list to iterate over
9
* @param {function|null} sortMethod - function to use for keys sort,
10
* or `null` to keep them as is
11
* @returns {object} - initial state object
12
*/
13
function state(list, sortMethod)
14
{
15
var isNamedList = !Array.isArray(list)
16
, initState =
17
{
18
index : 0,
19
keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
20
jobs : {},
21
results : isNamedList ? {} : [],
22
size : isNamedList ? Object.keys(list).length : list.length
23
}
24
;
25
26
if (sortMethod)
27
{
28
// sort array keys based on it's values
29
// sort object's keys just on own merit
30
initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
31
{
32
return sortMethod(list[a], list[b]);
33
});
34
}
35
36
return initState;
37
}
38
39