1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.unique = unique;
|
7 | exports.flatMap = flatMap;
|
8 | exports.objectSortedEntries = objectSortedEntries;
|
9 | exports.objectSortedEntriesDeep = objectSortedEntriesDeep;
|
10 | exports.setDifference = setDifference;
|
11 |
|
12 | function unique(array) {
|
13 | return [...new Set(array)];
|
14 | }
|
15 |
|
16 | function flatMap(array, projectFn) {
|
17 | let out = [];
|
18 |
|
19 | for (let arr of array.map(projectFn)) {
|
20 | out.push(...arr);
|
21 | }
|
22 |
|
23 | return out;
|
24 | }
|
25 |
|
26 | function objectSortedEntries(obj) {
|
27 | return Object.entries(obj).sort(([keyA], [keyB]) => keyA.localeCompare(keyB));
|
28 | }
|
29 |
|
30 | function objectSortedEntriesDeep(object) {
|
31 | let sortedEntries = objectSortedEntries(object);
|
32 |
|
33 | for (let i = 0; i < sortedEntries.length; i++) {
|
34 | sortedEntries[i][1] = sortEntry(sortedEntries[i][1]);
|
35 | }
|
36 |
|
37 | return sortedEntries;
|
38 | }
|
39 |
|
40 | function sortEntry(entry) {
|
41 | if (Array.isArray(entry)) {
|
42 | return entry.map(sortEntry);
|
43 | }
|
44 |
|
45 | if (typeof entry === 'object' && entry != null) {
|
46 | return objectSortedEntriesDeep(entry);
|
47 | }
|
48 |
|
49 | return entry;
|
50 | }
|
51 |
|
52 | function setDifference(a, b) {
|
53 | let difference = new Set();
|
54 |
|
55 | for (let e of a) {
|
56 | if (!b.has(e)) {
|
57 | difference.add(e);
|
58 | }
|
59 | }
|
60 |
|
61 | return difference;
|
62 | } |
\ | No newline at end of file |