1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4  value: true
5});
6exports.reverseSortString = void 0;
7exports.sortObjWithOrder = sortObjWithOrder;
8exports.sortObject = sortObject;
9exports.sortWithOrder = sortWithOrder;
10
11function sortObject(obj, compareFn) {
12  return Object.keys(obj).sort(compareFn).reduce((acc, key) => ({ ...acc,
13    [key]: obj[key]
14  }), {});
15}
16
17function sortObjWithOrder(obj, order) {
18  const sorted = sortWithOrder(Object.keys(obj), order);
19  return sorted.reduce((acc, key) => ({ ...acc,
20    [key]: obj[key]
21  }), {});
22}
23
24function sortWithOrder(obj, order) {
25  const groupOrder = [...new Set(order.concat(obj))];
26  const sorted = [];
27
28  while (groupOrder.length) {
29    const key = groupOrder.shift();
30    const index = obj.indexOf(key);
31
32    if (index > -1) {
33      const [item] = obj.splice(index, 1);
34      sorted.push(item);
35    }
36  }
37
38  return sorted;
39}
40
41const reverseSortString = (a, b) => {
42  if (a < b) return 1;
43  if (a > b) return -1;
44  return 0;
45};
46
47exports.reverseSortString = reverseSortString;
48//# sourceMappingURL=sortObject.js.map