1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const _ = require("lodash");
|
4 | function castArray(input) {
|
5 | if (input === undefined)
|
6 | return [];
|
7 | return Array.isArray(input) ? input : [input];
|
8 | }
|
9 | exports.castArray = castArray;
|
10 | function uniqBy(arr, fn) {
|
11 | return arr.filter((a, i) => {
|
12 | let aVal = fn(a);
|
13 | return !arr.find((b, j) => j > i && fn(b) === aVal);
|
14 | });
|
15 | }
|
16 | exports.uniqBy = uniqBy;
|
17 | function compact(a) {
|
18 | return a.filter((a) => !!a);
|
19 | }
|
20 | exports.compact = compact;
|
21 | function sortBy(arr, fn) {
|
22 | function compare(a, b) {
|
23 | a = a === undefined ? 0 : a;
|
24 | b = b === undefined ? 0 : b;
|
25 | if (Array.isArray(a) && Array.isArray(b)) {
|
26 | if (a.length === 0 && b.length === 0)
|
27 | return 0;
|
28 | let diff = compare(a[0], b[0]);
|
29 | if (diff !== 0)
|
30 | return diff;
|
31 | return compare(a.slice(1), b.slice(1));
|
32 | }
|
33 | if (a < b)
|
34 | return -1;
|
35 | if (a > b)
|
36 | return 1;
|
37 | return 0;
|
38 | }
|
39 | return arr.sort((a, b) => compare(fn(a), fn(b)));
|
40 | }
|
41 | exports.sortBy = sortBy;
|
42 | exports.template = (context) => (t) => _.template(t || '')(context);
|