@softwareventures/array 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.test.js ADDED
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const ava_1 = tslib_1.__importDefault(require("ava"));
5
+ const index_1 = require("./index");
6
+ (0, ava_1.default)("isArray", t => {
7
+ t.true((0, index_1.isArray)([1, 2, 3]));
8
+ t.false((0, index_1.isArray)({ length: 3 }));
9
+ });
10
+ (0, ava_1.default)("isArrayLike", t => {
11
+ t.true((0, index_1.isArrayLike)([1, 2, 3]));
12
+ t.true((0, index_1.isArrayLike)({ length: 3 }));
13
+ t.false((0, index_1.isArrayLike)({}));
14
+ t.false((0, index_1.isArrayLike)(3));
15
+ });
16
+ (0, ava_1.default)("first", t => {
17
+ t.is((0, index_1.first)([1, 2, 3]), 1);
18
+ t.is((0, index_1.first)([]), null);
19
+ });
20
+ (0, ava_1.default)("tail", t => {
21
+ t.deepEqual((0, index_1.tail)([1, 2, 3, 4]), [2, 3, 4]);
22
+ t.deepEqual((0, index_1.tail)([]), []);
23
+ });
24
+ (0, ava_1.default)("initial", t => {
25
+ t.deepEqual((0, index_1.initial)([1, 2, 3, 4]), [1, 2, 3]);
26
+ t.deepEqual((0, index_1.initial)([]), []);
27
+ });
28
+ (0, ava_1.default)("last", t => {
29
+ t.is((0, index_1.last)([]), null);
30
+ t.is((0, index_1.last)([1, 2, 3]), 3);
31
+ });
32
+ (0, ava_1.default)("only", t => {
33
+ t.is((0, index_1.only)([]), null);
34
+ t.is((0, index_1.only)([4]), 4);
35
+ t.is((0, index_1.only)([3, 4, 5]), null);
36
+ });
37
+ (0, ava_1.default)("empty", t => {
38
+ t.true((0, index_1.empty)([]));
39
+ t.false((0, index_1.empty)([1, 2, 3]));
40
+ });
41
+ (0, ava_1.default)("reverse", t => {
42
+ const a = [1, 2, 4, 3];
43
+ t.deepEqual((0, index_1.reverse)(a), [3, 4, 2, 1]);
44
+ t.deepEqual(a, [1, 2, 4, 3]); // Ensure original array is untouched.
45
+ });
46
+ (0, ava_1.default)("slice", t => {
47
+ t.deepEqual((0, index_1.slice)([1, 2, 3, 4], 1), [2, 3, 4]);
48
+ t.deepEqual((0, index_1.slice)([1, 2, 3, 4, 5], 1, 4), [2, 3, 4]);
49
+ t.deepEqual((0, index_1.slice)([1, 2, 3], 2), [3]);
50
+ t.deepEqual((0, index_1.slice)([1, 2, 3], 0, 2), [1, 2]);
51
+ t.deepEqual((0, index_1.slice)([], 3, 5), []);
52
+ });
53
+ (0, ava_1.default)("takeWhile", t => {
54
+ t.deepEqual((0, index_1.takeWhile)([1, 2, 3, 4, 3, 2, 1], e => e < 4), [1, 2, 3]);
55
+ t.deepEqual((0, index_1.takeWhile)([1, 2, 3], (_, i) => i < 2), [1, 2]);
56
+ });
57
+ (0, ava_1.default)("dropWhile", t => {
58
+ t.deepEqual((0, index_1.dropWhile)([1, 2, 3, 4, 3, 2, 1], e => e < 4), [4, 3, 2, 1]);
59
+ t.deepEqual((0, index_1.dropWhile)([1, 2, 3], (_, i) => i < 2), [3]);
60
+ });
61
+ (0, ava_1.default)("equal", t => {
62
+ t.true((0, index_1.equal)([1, 2, 3], [1, 2, 3]));
63
+ t.false((0, index_1.equal)([1, 2, 3], [1, 2, 3, 4]));
64
+ t.false((0, index_1.equal)([1, 2, 3, 4], [1, 2, 3]));
65
+ t.false((0, index_1.equal)([1, 3, 3], [1, 2, 3]));
66
+ t.true((0, index_1.equal)([
67
+ [1, 2],
68
+ [3, 4]
69
+ ], [
70
+ [1, 2],
71
+ [3, 4]
72
+ ], index_1.equal));
73
+ t.false((0, index_1.equal)([
74
+ [1, 2],
75
+ [3, 4]
76
+ ], [
77
+ [1, 2],
78
+ [3, 4]
79
+ ]));
80
+ });
81
+ (0, ava_1.default)("prefixMatch", t => {
82
+ t.true((0, index_1.prefixMatch)([], []));
83
+ t.true((0, index_1.prefixMatch)([1, 2, 3], []));
84
+ t.true((0, index_1.prefixMatch)([1, 2, 3, 4], [1, 2]));
85
+ t.false((0, index_1.prefixMatch)([1, 3, 4], [1, 2]));
86
+ t.false((0, index_1.prefixMatch)([], [1]));
87
+ });
88
+ (0, ava_1.default)("map", t => {
89
+ t.deepEqual((0, index_1.map)([1, 2, 3], e => e + 1), [2, 3, 4]);
90
+ t.deepEqual((0, index_1.map)([1, 2, 3], (e, i) => (i === 1 ? e * 10 : e)), [1, 20, 3]);
91
+ });
92
+ (0, ava_1.default)("filter", t => {
93
+ t.deepEqual((0, index_1.filter)([1, 2, 3], e => e % 2 === 1), [1, 3]);
94
+ t.deepEqual((0, index_1.filter)([1, 3, 2, 4, 5], (_, i) => i % 2 === 0), [1, 2, 5]);
95
+ });
96
+ (0, ava_1.default)("exclude", t => {
97
+ t.deepEqual((0, index_1.exclude)([1, 2, 3, 4, 3, 2, 1], n => n < 3), [3, 4, 3]);
98
+ });
99
+ (0, ava_1.default)("excludeNull", t => {
100
+ t.deepEqual((0, index_1.excludeNull)(["a", null, "b"]), ["a", "b"]);
101
+ });
102
+ (0, ava_1.default)("excludeFirst", t => {
103
+ t.deepEqual((0, index_1.excludeFirst)([1, 2, 3, 4, 3, 2, 1], n => n > 2), [1, 2, 4, 3, 2, 1]);
104
+ });
105
+ (0, ava_1.default)("remove", t => {
106
+ t.deepEqual((0, index_1.remove)([1, 2, 3, 4, 3, 2, 1], 3), [1, 2, 4, 2, 1]);
107
+ });
108
+ (0, ava_1.default)("removeFirst", t => {
109
+ t.deepEqual((0, index_1.removeFirst)([1, 2, 3, 4, 3, 2, 1], 3), [1, 2, 4, 3, 2, 1]);
110
+ });
111
+ (0, ava_1.default)("fold", t => {
112
+ t.is((0, index_1.fold)([1, 2, 3], (a, e, i) => a + e * i, 0), 8);
113
+ });
114
+ (0, ava_1.default)("fold1", t => {
115
+ t.is((0, index_1.fold1)([1, 2, 3], (a, e, i) => a + e * i), 9);
116
+ });
117
+ (0, ava_1.default)("foldMap", t => {
118
+ t.is((0, index_1.foldMap)(["2", "3", "4"], (a, b) => a + b, parseFloat, 2), 11);
119
+ t.is((0, index_1.foldMap)([true, false, false], (a, b) => a.substr(0, a.length - 1) + b.substr(1), String, "jam"), "jarualsalse");
120
+ t.is((0, index_1.foldMap)(["2"], (a, b) => a + b, parseFloat, 0), 2);
121
+ });
122
+ (0, ava_1.default)("contains", t => {
123
+ t.true((0, index_1.contains)([1, 2, 3], 1));
124
+ t.false((0, index_1.contains)([1, 2, 3], 0));
125
+ });
126
+ (0, ava_1.default)("lastIndexOf", t => {
127
+ t.is((0, index_1.lastIndexOf)([1, 2, 3, 4, 3, 2, 1], 3), 4);
128
+ });
129
+ (0, ava_1.default)("findIndex", t => {
130
+ t.is((0, index_1.findIndex)([1, 2, 3, 4, 3, 2, 1], n => n >= 3), 2);
131
+ });
132
+ (0, ava_1.default)("findLastIndex", t => {
133
+ t.is((0, index_1.findLastIndex)([1, 2, 3, 4, 3, 2, 1], n => n >= 3), 4);
134
+ });
135
+ (0, ava_1.default)("find", t => {
136
+ t.is((0, index_1.find)([1, 2, 3, 4, 3, 2, 1], n => n >= 3), 3);
137
+ });
138
+ (0, ava_1.default)("findLast", t => {
139
+ t.is((0, index_1.findLast)([1, 2, 3, 4, 5, 2, 1], n => n >= 3), 5);
140
+ });
141
+ (0, ava_1.default)("maximum", t => {
142
+ t.is((0, index_1.maximum)([1, 2, 3]), 3);
143
+ t.is((0, index_1.maximum)([1, 2, 3, 4, 3, 2, 1]), 4);
144
+ t.is((0, index_1.maximum)([]), null);
145
+ });
146
+ (0, ava_1.default)("minimum", t => {
147
+ t.is((0, index_1.minimum)([1, 2, 3]), 1);
148
+ t.is((0, index_1.minimum)([2, 3, 4, 1, 2, 3]), 1);
149
+ t.is((0, index_1.minimum)([]), null);
150
+ });
151
+ (0, ava_1.default)("sum", t => {
152
+ t.is((0, index_1.sum)([1, 2, 3]), 6);
153
+ t.is((0, index_1.sum)([]), 0);
154
+ });
155
+ (0, ava_1.default)("product", t => {
156
+ t.is((0, index_1.product)([1, 2, 3]), 6);
157
+ t.is((0, index_1.product)([]), 1);
158
+ });
159
+ (0, ava_1.default)("and", t => {
160
+ t.true((0, index_1.and)([true, true, true]));
161
+ t.false((0, index_1.and)([true, false, true]));
162
+ t.true((0, index_1.and)([]));
163
+ });
164
+ (0, ava_1.default)("or", t => {
165
+ t.true((0, index_1.or)([true, false, true]));
166
+ t.false((0, index_1.or)([false, false, false]));
167
+ t.false((0, index_1.or)([]));
168
+ });
169
+ (0, ava_1.default)("any", t => {
170
+ t.true((0, index_1.any)([1, 2, 3], e => e > 2));
171
+ t.false((0, index_1.any)([1, 2, 3], e => e > 4));
172
+ });
173
+ (0, ava_1.default)("all", t => {
174
+ t.true((0, index_1.all)([1, 2, 3], e => e < 4));
175
+ t.false((0, index_1.all)([1, 2, 3], e => e > 2));
176
+ const mixed1 = [1, 2, "hello", 3, "goodbye"];
177
+ const mixed2 = [1, 2, 3];
178
+ const acceptNumbers = (array) => true;
179
+ const isNumber = (v) => typeof v === "number";
180
+ t.false((0, index_1.all)(mixed1, isNumber));
181
+ t.true((0, index_1.all)(mixed2, isNumber));
182
+ t.false((0, index_1.all)(mixed1, isNumber) ? acceptNumbers(mixed1) : false);
183
+ t.true((0, index_1.all)(mixed2, isNumber) ? acceptNumbers(mixed2) : false);
184
+ });
185
+ (0, ava_1.default)("concat", t => {
186
+ t.deepEqual((0, index_1.concat)([[1, 2], [], [3], [4, 5]]), [1, 2, 3, 4, 5]);
187
+ t.deepEqual((0, index_1.concat)([[], []]), []);
188
+ });
189
+ (0, ava_1.default)("prepend", t => {
190
+ t.deepEqual((0, index_1.prepend)([1, 2, 3])([4, 5, 6]), [1, 2, 3, 4, 5, 6]);
191
+ t.deepEqual((0, index_1.prepend)([])([4, 5, 6]), [4, 5, 6]);
192
+ t.deepEqual((0, index_1.prepend)([1, 2, 3])([]), [1, 2, 3]);
193
+ });
194
+ (0, ava_1.default)("append", t => {
195
+ t.deepEqual((0, index_1.append)([4, 5, 6])([1, 2, 3]), [1, 2, 3, 4, 5, 6]);
196
+ t.deepEqual((0, index_1.append)([])([1, 2, 3]), [1, 2, 3]);
197
+ t.deepEqual((0, index_1.append)([4, 5, 6])([]), [4, 5, 6]);
198
+ });
199
+ (0, ava_1.default)("concatMap", t => {
200
+ t.deepEqual((0, index_1.concatMap)(["1,2,3", "4,5,6"], s => s.split(",")), ["1", "2", "3", "4", "5", "6"]);
201
+ });
202
+ (0, ava_1.default)("scan", t => {
203
+ t.deepEqual((0, index_1.scan)([1, 2, 3], (a, e, i) => a + e * i, 0), [0, 2, 8]);
204
+ t.deepEqual((0, index_1.scan)(["a", "b", "c"], (a, e, i) => `${a} ${i} ${e}`, "_"), ["_ 0 a", "_ 0 a 1 b", "_ 0 a 1 b 2 c"]);
205
+ });
206
+ (0, ava_1.default)("scan1", t => {
207
+ t.deepEqual((0, index_1.scan1)([1, 2, 3], (a, e, i) => a + e * i), [1, 3, 9]);
208
+ });
209
+ (0, ava_1.default)("scanRight", t => {
210
+ t.deepEqual((0, index_1.scanRight)(["a", "b", "c"], (a, e, i) => `${a} ${i} ${e}`, "_"), ["_ 2 c 1 b 0 a", "_ 2 c 1 b", "_ 2 c"]);
211
+ });
212
+ (0, ava_1.default)("scanRight1", t => {
213
+ t.deepEqual((0, index_1.scanRight1)(["a", "b", "c"], (a, e, i) => `${a} ${i} ${e}`), ["c 1 b 0 a", "c 1 b", "c"]);
214
+ });
215
+ (0, ava_1.default)("split", t => {
216
+ t.deepEqual((0, index_1.split)([2, 1, 3, 4, 5, 6], 2), [
217
+ [2, 1],
218
+ [3, 4, 5, 6]
219
+ ]);
220
+ t.deepEqual((0, index_1.split)([2, 1, 3, 4, 5, 6], 0), [[], [2, 1, 3, 4, 5, 6]]);
221
+ t.deepEqual((0, index_1.split)([2, 1, 3, 4, 5, 6], 10), [[2, 1, 3, 4, 5, 6], []]);
222
+ });
223
+ function isSuccess(result) {
224
+ return result.type === "success";
225
+ }
226
+ (0, ava_1.default)("partition", t => {
227
+ t.deepEqual((0, index_1.partition)([2, 1, 3, 4, 5, 6], e => e % 2 === 1), [
228
+ [1, 3, 5],
229
+ [2, 4, 6]
230
+ ]);
231
+ t.deepEqual((0, index_1.partition)(["abc", "def", "ghi"], (_, i) => i % 2 === 0), [["abc", "ghi"], ["def"]]);
232
+ const results = [
233
+ { type: "success", value: "hello" },
234
+ { type: "error" },
235
+ { type: "success", value: "goodbye" }
236
+ ];
237
+ const partitionedResults = (0, index_1.partition)(results, isSuccess);
238
+ t.deepEqual(partitionedResults, [
239
+ [
240
+ { type: "success", value: "hello" },
241
+ { type: "success", value: "goodbye" }
242
+ ],
243
+ [{ type: "error" }]
244
+ ]);
245
+ });
246
+ (0, ava_1.default)("partitionWhile", t => {
247
+ t.deepEqual((0, index_1.partitionWhile)([1, 3, 2, 4, 5, 6], e => e % 2 === 1), [
248
+ [1, 3],
249
+ [2, 4, 5, 6]
250
+ ]);
251
+ t.deepEqual((0, index_1.partitionWhile)(["abc", "def", "ghi"], (_, i) => i % 2 === 0), [["abc"], ["def", "ghi"]]);
252
+ const results = [
253
+ { type: "success", value: "hello" },
254
+ { type: "error" },
255
+ { type: "success", value: "goodbye" }
256
+ ];
257
+ const partitionedResults = (0, index_1.partitionWhile)(results, isSuccess);
258
+ t.deepEqual(partitionedResults, [
259
+ [{ type: "success", value: "hello" }],
260
+ [{ type: "error" }, { type: "success", value: "goodbye" }]
261
+ ]);
262
+ });
263
+ (0, ava_1.default)("zip", t => {
264
+ t.deepEqual((0, index_1.zip)([1, 2, 3], [6, 5, 4, 3, 2, 1]), [
265
+ [1, 6],
266
+ [2, 5],
267
+ [3, 4]
268
+ ]);
269
+ });
270
+ (0, ava_1.default)("keyBy", t => {
271
+ const map = (0, index_1.keyBy)([1, 3, 4, 2, 5, 6], e => (e % 2 === 0 ? "even" : "odd"));
272
+ t.deepEqual(map.get("even"), [4, 2, 6]);
273
+ t.deepEqual(map.get("odd"), [1, 3, 5]);
274
+ t.deepEqual(Array.from(map.keys()), ["odd", "even"]);
275
+ });
276
+ (0, ava_1.default)("keyFirstBy", t => {
277
+ const map = (0, index_1.keyFirstBy)([1, 3, 4, 2, 5, 6], e => (e % 2 === 0 ? "even" : "odd"));
278
+ t.is(map.get("even"), 4);
279
+ t.is(map.get("odd"), 1);
280
+ t.deepEqual(Array.from(map.keys()), ["odd", "even"]);
281
+ });
282
+ (0, ava_1.default)("keyLastBy", t => {
283
+ const map = (0, index_1.keyLastBy)([1, 3, 4, 2, 5, 6], e => (e % 2 === 0 ? "even" : "odd"));
284
+ t.is(map.get("even"), 6);
285
+ t.is(map.get("odd"), 5);
286
+ t.deepEqual(Array.from(map.keys()), ["odd", "even"]);
287
+ });
288
+ (0, ava_1.default)("mapKeyBy", t => {
289
+ const map = (0, index_1.mapKeyBy)([1, 3, 4, 2, 5, 6], e => [e % 2 === 0 ? "even" : "odd", String(e)]);
290
+ t.deepEqual(map.get("even"), ["4", "2", "6"]);
291
+ t.deepEqual(map.get("odd"), ["1", "3", "5"]);
292
+ t.deepEqual(Array.from(map.keys()), ["odd", "even"]);
293
+ });
294
+ (0, ava_1.default)("mapKeyFirstBy", t => {
295
+ const map = (0, index_1.mapKeyFirstBy)([1, 3, 4, 2, 5, 6], e => [e % 2 === 0 ? "even" : "odd", String(e)]);
296
+ t.is(map.get("even"), "4");
297
+ t.is(map.get("odd"), "1");
298
+ t.deepEqual(Array.from(map.keys()), ["odd", "even"]);
299
+ });
300
+ (0, ava_1.default)("mapKeyLastBy", t => {
301
+ const map = (0, index_1.mapKeyLastBy)([1, 3, 4, 2, 5, 6], e => [e % 2 === 0 ? "even" : "odd", String(e)]);
302
+ t.deepEqual(Array.from(map.entries()), [
303
+ ["odd", "5"],
304
+ ["even", "6"]
305
+ ]);
306
+ });
307
+ (0, ava_1.default)("groupByIdentity", t => {
308
+ t.deepEqual((0, index_1.groupByIdentity)(["abc", "adef", "bghi"], a => a.substr(0, 1)), [["abc", "adef"], ["bghi"]]);
309
+ });
310
+ (0, ava_1.default)("sort", t => {
311
+ t.deepEqual((0, index_1.sort)([2, 4, 3, 1]), [1, 2, 3, 4]);
312
+ t.deepEqual((0, index_1.sort)(["hello", "goodbye"]), ["goodbye", "hello"]);
313
+ t.deepEqual((0, index_1.sort)([-2, 4, -3, 1], (a, b) => Math.abs(a) - Math.abs(b)), [1, -2, -3, 4]);
314
+ });
315
+ (0, ava_1.default)("sortBy", t => {
316
+ t.deepEqual((0, index_1.sortBy)([
317
+ { x: "a", y: 2 },
318
+ { x: "b", y: 4 },
319
+ { x: "c", y: 3 },
320
+ { x: "d", y: 1 }
321
+ ], ({ y }) => y), [
322
+ { x: "d", y: 1 },
323
+ { x: "a", y: 2 },
324
+ { x: "c", y: 3 },
325
+ { x: "b", y: 4 }
326
+ ]);
327
+ t.deepEqual((0, index_1.sortBy)([-2, 4, -3, 1], e => Math.abs(e)), [1, -2, -3, 4]);
328
+ });
329
+ (0, ava_1.default)("forEach", t => {
330
+ const a = ["a", "b", "c"];
331
+ let s = "";
332
+ const b = (0, index_1.forEach)(a, c => (s += c));
333
+ t.is(b, a);
334
+ t.is(s, "abc");
335
+ });
336
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["index.test.ts"],"names":[],"mappings":"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","sourcesContent":["import test from \"ava\";\nimport {\n all,\n and,\n any,\n append,\n concat,\n concatMap,\n contains,\n dropWhile,\n empty,\n equal,\n exclude,\n excludeFirst,\n excludeNull,\n filter,\n find,\n findIndex,\n findLast,\n findLastIndex,\n first,\n fold,\n fold1,\n foldMap,\n forEach,\n groupByIdentity,\n initial,\n isArray,\n isArrayLike,\n keyBy,\n keyFirstBy,\n keyLastBy,\n last,\n lastIndexOf,\n map,\n mapKeyBy,\n mapKeyFirstBy,\n mapKeyLastBy,\n maximum,\n minimum,\n only,\n or,\n partition,\n partitionWhile,\n prefixMatch,\n prepend,\n product,\n remove,\n removeFirst,\n reverse,\n scan,\n scan1,\n scanRight,\n scanRight1,\n slice,\n sort,\n sortBy,\n split,\n sum,\n tail,\n takeWhile,\n zip\n} from \"./index\";\n\ntest(\"isArray\", t => {\n t.true(isArray([1, 2, 3]));\n t.false(isArray({length: 3}));\n});\n\ntest(\"isArrayLike\", t => {\n t.true(isArrayLike([1, 2, 3]));\n t.true(isArrayLike({length: 3}));\n t.false(isArrayLike({}));\n t.false(isArrayLike(3));\n});\n\ntest(\"first\", t => {\n t.is(first([1, 2, 3]), 1);\n t.is(first([]), null);\n});\n\ntest(\"tail\", t => {\n t.deepEqual(tail([1, 2, 3, 4]), [2, 3, 4]);\n t.deepEqual(tail([]), []);\n});\n\ntest(\"initial\", t => {\n t.deepEqual(initial([1, 2, 3, 4]), [1, 2, 3]);\n t.deepEqual(initial([]), []);\n});\n\ntest(\"last\", t => {\n t.is(last([]), null);\n t.is(last([1, 2, 3]), 3);\n});\n\ntest(\"only\", t => {\n t.is(only([]), null);\n t.is(only([4]), 4);\n t.is(only([3, 4, 5]), null);\n});\n\ntest(\"empty\", t => {\n t.true(empty([]));\n t.false(empty([1, 2, 3]));\n});\n\ntest(\"reverse\", t => {\n const a = [1, 2, 4, 3];\n t.deepEqual(reverse(a), [3, 4, 2, 1]);\n t.deepEqual(a, [1, 2, 4, 3]); // Ensure original array is untouched.\n});\n\ntest(\"slice\", t => {\n t.deepEqual(slice([1, 2, 3, 4], 1), [2, 3, 4]);\n t.deepEqual(slice([1, 2, 3, 4, 5], 1, 4), [2, 3, 4]);\n t.deepEqual(slice([1, 2, 3], 2), [3]);\n t.deepEqual(slice([1, 2, 3], 0, 2), [1, 2]);\n t.deepEqual(slice([], 3, 5), []);\n});\n\ntest(\"takeWhile\", t => {\n t.deepEqual(\n takeWhile([1, 2, 3, 4, 3, 2, 1], e => e < 4),\n [1, 2, 3]\n );\n t.deepEqual(\n takeWhile([1, 2, 3], (_, i) => i < 2),\n [1, 2]\n );\n});\n\ntest(\"dropWhile\", t => {\n t.deepEqual(\n dropWhile([1, 2, 3, 4, 3, 2, 1], e => e < 4),\n [4, 3, 2, 1]\n );\n t.deepEqual(\n dropWhile([1, 2, 3], (_, i) => i < 2),\n [3]\n );\n});\n\ntest(\"equal\", t => {\n t.true(equal([1, 2, 3], [1, 2, 3]));\n t.false(equal([1, 2, 3], [1, 2, 3, 4]));\n t.false(equal([1, 2, 3, 4], [1, 2, 3]));\n t.false(equal([1, 3, 3], [1, 2, 3]));\n t.true(\n equal(\n [\n [1, 2],\n [3, 4]\n ],\n [\n [1, 2],\n [3, 4]\n ],\n equal\n )\n );\n t.false(\n equal(\n [\n [1, 2],\n [3, 4]\n ],\n [\n [1, 2],\n [3, 4]\n ]\n )\n );\n});\n\ntest(\"prefixMatch\", t => {\n t.true(prefixMatch([], []));\n t.true(prefixMatch([1, 2, 3], []));\n t.true(prefixMatch([1, 2, 3, 4], [1, 2]));\n t.false(prefixMatch([1, 3, 4], [1, 2]));\n t.false(prefixMatch([], [1]));\n});\n\ntest(\"map\", t => {\n t.deepEqual(\n map([1, 2, 3], e => e + 1),\n [2, 3, 4]\n );\n t.deepEqual(\n map([1, 2, 3], (e, i) => (i === 1 ? e * 10 : e)),\n [1, 20, 3]\n );\n});\n\ntest(\"filter\", t => {\n t.deepEqual(\n filter([1, 2, 3], e => e % 2 === 1),\n [1, 3]\n );\n t.deepEqual(\n filter([1, 3, 2, 4, 5], (_, i) => i % 2 === 0),\n [1, 2, 5]\n );\n});\n\ntest(\"exclude\", t => {\n t.deepEqual(\n exclude([1, 2, 3, 4, 3, 2, 1], n => n < 3),\n [3, 4, 3]\n );\n});\n\ntest(\"excludeNull\", t => {\n t.deepEqual(excludeNull([\"a\", null, \"b\"]), [\"a\", \"b\"]);\n});\n\ntest(\"excludeFirst\", t => {\n t.deepEqual(\n excludeFirst([1, 2, 3, 4, 3, 2, 1], n => n > 2),\n [1, 2, 4, 3, 2, 1]\n );\n});\n\ntest(\"remove\", t => {\n t.deepEqual(remove([1, 2, 3, 4, 3, 2, 1], 3), [1, 2, 4, 2, 1]);\n});\n\ntest(\"removeFirst\", t => {\n t.deepEqual(removeFirst([1, 2, 3, 4, 3, 2, 1], 3), [1, 2, 4, 3, 2, 1]);\n});\n\ntest(\"fold\", t => {\n t.is(\n fold([1, 2, 3], (a, e, i) => a + e * i, 0),\n 8\n );\n});\n\ntest(\"fold1\", t => {\n t.is(\n fold1([1, 2, 3], (a, e, i) => a + e * i),\n 9\n );\n});\n\ntest(\"foldMap\", t => {\n t.is(\n foldMap([\"2\", \"3\", \"4\"], (a, b) => a + b, parseFloat, 2),\n 11\n );\n t.is(\n foldMap(\n [true, false, false],\n (a, b) => a.substr(0, a.length - 1) + b.substr(1),\n String,\n \"jam\"\n ),\n \"jarualsalse\"\n );\n t.is(\n foldMap([\"2\"], (a, b) => a + b, parseFloat, 0),\n 2\n );\n});\n\ntest(\"contains\", t => {\n t.true(contains([1, 2, 3], 1));\n t.false(contains([1, 2, 3], 0));\n});\n\ntest(\"lastIndexOf\", t => {\n t.is(lastIndexOf([1, 2, 3, 4, 3, 2, 1], 3), 4);\n});\n\ntest(\"findIndex\", t => {\n t.is(\n findIndex([1, 2, 3, 4, 3, 2, 1], n => n >= 3),\n 2\n );\n});\n\ntest(\"findLastIndex\", t => {\n t.is(\n findLastIndex([1, 2, 3, 4, 3, 2, 1], n => n >= 3),\n 4\n );\n});\n\ntest(\"find\", t => {\n t.is(\n find([1, 2, 3, 4, 3, 2, 1], n => n >= 3),\n 3\n );\n});\n\ntest(\"findLast\", t => {\n t.is(\n findLast([1, 2, 3, 4, 5, 2, 1], n => n >= 3),\n 5\n );\n});\n\ntest(\"maximum\", t => {\n t.is(maximum([1, 2, 3]), 3);\n t.is(maximum([1, 2, 3, 4, 3, 2, 1]), 4);\n t.is(maximum([]), null);\n});\n\ntest(\"minimum\", t => {\n t.is(minimum([1, 2, 3]), 1);\n t.is(minimum([2, 3, 4, 1, 2, 3]), 1);\n t.is(minimum([]), null);\n});\n\ntest(\"sum\", t => {\n t.is(sum([1, 2, 3]), 6);\n t.is(sum([]), 0);\n});\n\ntest(\"product\", t => {\n t.is(product([1, 2, 3]), 6);\n t.is(product([]), 1);\n});\n\ntest(\"and\", t => {\n t.true(and([true, true, true]));\n t.false(and([true, false, true]));\n t.true(and([]));\n});\n\ntest(\"or\", t => {\n t.true(or([true, false, true]));\n t.false(or([false, false, false]));\n t.false(or([]));\n});\n\ntest(\"any\", t => {\n t.true(any([1, 2, 3], e => e > 2));\n t.false(any([1, 2, 3], e => e > 4));\n});\n\ntest(\"all\", t => {\n t.true(all([1, 2, 3], e => e < 4));\n t.false(all([1, 2, 3], e => e > 2));\n\n const mixed1: Array<string | number> = [1, 2, \"hello\", 3, \"goodbye\"];\n const mixed2: Array<string | number> = [1, 2, 3];\n\n const acceptNumbers = (array: readonly number[]): boolean => true;\n const isNumber = (v: unknown): v is number => typeof v === \"number\";\n\n t.false(all(mixed1, isNumber));\n t.true(all(mixed2, isNumber));\n\n t.false(all(mixed1, isNumber) ? acceptNumbers(mixed1) : false);\n t.true(all(mixed2, isNumber) ? acceptNumbers(mixed2) : false);\n});\n\ntest(\"concat\", t => {\n t.deepEqual(concat([[1, 2], [], [3], [4, 5]]), [1, 2, 3, 4, 5]);\n t.deepEqual(concat([[], []]), []);\n});\n\ntest(\"prepend\", t => {\n t.deepEqual(prepend([1, 2, 3])([4, 5, 6]), [1, 2, 3, 4, 5, 6]);\n t.deepEqual(prepend<number>([])([4, 5, 6]), [4, 5, 6]);\n t.deepEqual(prepend([1, 2, 3])([]), [1, 2, 3]);\n});\n\ntest(\"append\", t => {\n t.deepEqual(append([4, 5, 6])([1, 2, 3]), [1, 2, 3, 4, 5, 6]);\n t.deepEqual(append<number>([])([1, 2, 3]), [1, 2, 3]);\n t.deepEqual(append([4, 5, 6])([]), [4, 5, 6]);\n});\n\ntest(\"concatMap\", t => {\n t.deepEqual(\n concatMap([\"1,2,3\", \"4,5,6\"], s => s.split(\",\")),\n [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"]\n );\n});\n\ntest(\"scan\", t => {\n t.deepEqual(\n scan([1, 2, 3], (a, e, i) => a + e * i, 0),\n [0, 2, 8]\n );\n t.deepEqual(\n scan([\"a\", \"b\", \"c\"], (a, e, i) => `${a} ${i} ${e}`, \"_\"),\n [\"_ 0 a\", \"_ 0 a 1 b\", \"_ 0 a 1 b 2 c\"]\n );\n});\n\ntest(\"scan1\", t => {\n t.deepEqual(\n scan1([1, 2, 3], (a, e, i) => a + e * i),\n [1, 3, 9]\n );\n});\n\ntest(\"scanRight\", t => {\n t.deepEqual(\n scanRight([\"a\", \"b\", \"c\"], (a, e, i) => `${a} ${i} ${e}`, \"_\"),\n [\"_ 2 c 1 b 0 a\", \"_ 2 c 1 b\", \"_ 2 c\"]\n );\n});\n\ntest(\"scanRight1\", t => {\n t.deepEqual(\n scanRight1([\"a\", \"b\", \"c\"], (a, e, i) => `${a} ${i} ${e}`),\n [\"c 1 b 0 a\", \"c 1 b\", \"c\"]\n );\n});\n\ntest(\"split\", t => {\n t.deepEqual(split([2, 1, 3, 4, 5, 6], 2), [\n [2, 1],\n [3, 4, 5, 6]\n ]);\n t.deepEqual(split([2, 1, 3, 4, 5, 6], 0), [[], [2, 1, 3, 4, 5, 6]]);\n t.deepEqual(split([2, 1, 3, 4, 5, 6], 10), [[2, 1, 3, 4, 5, 6], []]);\n});\n\ntype Result<T> = Success<T> | Error;\n\ninterface Success<T> {\n type: \"success\";\n value: T;\n}\n\ninterface Error {\n type: \"error\";\n}\n\nfunction isSuccess<T>(result: Result<T>): result is Success<T> {\n return result.type === \"success\";\n}\n\ntest(\"partition\", t => {\n t.deepEqual(\n partition([2, 1, 3, 4, 5, 6], e => e % 2 === 1),\n [\n [1, 3, 5],\n [2, 4, 6]\n ]\n );\n\n t.deepEqual(\n partition([\"abc\", \"def\", \"ghi\"], (_: string, i: number) => i % 2 === 0),\n [[\"abc\", \"ghi\"], [\"def\"]]\n );\n\n const results: Array<Result<string>> = [\n {type: \"success\", value: \"hello\"},\n {type: \"error\"},\n {type: \"success\", value: \"goodbye\"}\n ];\n\n const partitionedResults: [Array<Success<string>>, Error[]] = partition(results, isSuccess);\n\n t.deepEqual(partitionedResults, [\n [\n {type: \"success\", value: \"hello\"},\n {type: \"success\", value: \"goodbye\"}\n ],\n [{type: \"error\"}]\n ]);\n});\n\ntest(\"partitionWhile\", t => {\n t.deepEqual(\n partitionWhile([1, 3, 2, 4, 5, 6], e => e % 2 === 1),\n [\n [1, 3],\n [2, 4, 5, 6]\n ]\n );\n\n t.deepEqual(\n partitionWhile([\"abc\", \"def\", \"ghi\"], (_: string, i: number) => i % 2 === 0),\n [[\"abc\"], [\"def\", \"ghi\"]]\n );\n\n const results: Array<Result<string>> = [\n {type: \"success\", value: \"hello\"},\n {type: \"error\"},\n {type: \"success\", value: \"goodbye\"}\n ];\n\n const partitionedResults: [Array<Success<string>>, Array<Result<string>>] = partitionWhile(\n results,\n isSuccess\n );\n\n t.deepEqual(partitionedResults, [\n [{type: \"success\", value: \"hello\"}],\n [{type: \"error\"}, {type: \"success\", value: \"goodbye\"}]\n ]);\n});\n\ntest(\"zip\", t => {\n t.deepEqual(zip([1, 2, 3], [6, 5, 4, 3, 2, 1]), [\n [1, 6],\n [2, 5],\n [3, 4]\n ]);\n});\n\ntest(\"keyBy\", t => {\n const map = keyBy([1, 3, 4, 2, 5, 6], e => (e % 2 === 0 ? \"even\" : \"odd\"));\n t.deepEqual(map.get(\"even\"), [4, 2, 6]);\n t.deepEqual(map.get(\"odd\"), [1, 3, 5]);\n t.deepEqual(Array.from(map.keys()), [\"odd\", \"even\"]);\n});\n\ntest(\"keyFirstBy\", t => {\n const map = keyFirstBy([1, 3, 4, 2, 5, 6], e => (e % 2 === 0 ? \"even\" : \"odd\"));\n t.is(map.get(\"even\"), 4);\n t.is(map.get(\"odd\"), 1);\n t.deepEqual(Array.from(map.keys()), [\"odd\", \"even\"]);\n});\n\ntest(\"keyLastBy\", t => {\n const map = keyLastBy([1, 3, 4, 2, 5, 6], e => (e % 2 === 0 ? \"even\" : \"odd\"));\n t.is(map.get(\"even\"), 6);\n t.is(map.get(\"odd\"), 5);\n t.deepEqual(Array.from(map.keys()), [\"odd\", \"even\"]);\n});\n\ntest(\"mapKeyBy\", t => {\n const map = mapKeyBy([1, 3, 4, 2, 5, 6], e => [e % 2 === 0 ? \"even\" : \"odd\", String(e)]);\n t.deepEqual(map.get(\"even\"), [\"4\", \"2\", \"6\"]);\n t.deepEqual(map.get(\"odd\"), [\"1\", \"3\", \"5\"]);\n t.deepEqual(Array.from(map.keys()), [\"odd\", \"even\"]);\n});\n\ntest(\"mapKeyFirstBy\", t => {\n const map = mapKeyFirstBy([1, 3, 4, 2, 5, 6], e => [e % 2 === 0 ? \"even\" : \"odd\", String(e)]);\n t.is(map.get(\"even\"), \"4\");\n t.is(map.get(\"odd\"), \"1\");\n t.deepEqual(Array.from(map.keys()), [\"odd\", \"even\"]);\n});\n\ntest(\"mapKeyLastBy\", t => {\n const map = mapKeyLastBy([1, 3, 4, 2, 5, 6], e => [e % 2 === 0 ? \"even\" : \"odd\", String(e)]);\n t.deepEqual(Array.from(map.entries()), [\n [\"odd\", \"5\"],\n [\"even\", \"6\"]\n ]);\n});\n\ntest(\"groupByIdentity\", t => {\n t.deepEqual(\n groupByIdentity([\"abc\", \"adef\", \"bghi\"], a => a.substr(0, 1)),\n [[\"abc\", \"adef\"], [\"bghi\"]]\n );\n});\n\ntest(\"sort\", t => {\n t.deepEqual(sort([2, 4, 3, 1]), [1, 2, 3, 4]);\n t.deepEqual(sort([\"hello\", \"goodbye\"]), [\"goodbye\", \"hello\"]);\n t.deepEqual(\n sort([-2, 4, -3, 1], (a, b) => Math.abs(a) - Math.abs(b)),\n [1, -2, -3, 4]\n );\n});\n\ntest(\"sortBy\", t => {\n t.deepEqual(\n sortBy(\n [\n {x: \"a\", y: 2},\n {x: \"b\", y: 4},\n {x: \"c\", y: 3},\n {x: \"d\", y: 1}\n ],\n ({y}) => y\n ),\n [\n {x: \"d\", y: 1},\n {x: \"a\", y: 2},\n {x: \"c\", y: 3},\n {x: \"b\", y: 4}\n ]\n );\n t.deepEqual(\n sortBy([-2, 4, -3, 1], e => Math.abs(e)),\n [1, -2, -3, 4]\n );\n});\n\ntest(\"forEach\", t => {\n const a = [\"a\", \"b\", \"c\"];\n let s = \"\";\n const b = forEach(a, c => (s += c));\n t.is(b, a);\n t.is(s, \"abc\");\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softwareventures/array",
3
- "version": "7.0.0",
3
+ "version": "8.0.0",
4
4
  "description": "Pure functional array manipulation and traversal",
5
5
  "keywords": [
6
6
  "array",
@@ -14,16 +14,16 @@
14
14
  "repository": "github:softwareventures/array",
15
15
  "license": "ISC",
16
16
  "scripts": {
17
+ "commit": "cz",
17
18
  "fix": "tsc --noEmit && eslint . --fix && prettier --write .",
19
+ "_postinstall": "husky",
18
20
  "lint": "tsc --noEmit && eslint . && prettier --check .",
19
- "pre-commit": "precise-commits",
20
- "prepare": "husky install && tsc",
21
- "semantic-release": "semantic-release",
21
+ "prepack": "tsc",
22
22
  "test": "ava"
23
23
  },
24
24
  "sideEffects": false,
25
25
  "engines": {
26
- "node": "^18 || >=20"
26
+ "node": "^20 || ^22 || ^24 || >=25"
27
27
  },
28
28
  "dependencies": {
29
29
  "@softwareventures/nullable": "^1.0.0 || ^2.0.0 || ^3.0.0",
@@ -31,36 +31,35 @@
31
31
  "tslib": "^2.0.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@softwareventures/eslint-config": "7.1.4",
35
- "@softwareventures/precise-commits": "3.0.30",
34
+ "@commitlint/cli": "19.8.1",
35
+ "@commitlint/config-conventional": "19.8.1",
36
+ "@commitlint/cz-commitlint": "19.8.1",
37
+ "@eslint/js": "9.39.4",
38
+ "@softwareventures/eslint-config": "10.0.0-alpha.2",
39
+ "@softwareventures/precise-commits": "4.0.23",
36
40
  "@softwareventures/prettier-config": "4.0.0",
37
- "@softwareventures/semantic-release-config": "4.0.0",
38
- "@softwareventures/tsconfig": "7.1.0",
39
- "@typescript-eslint/eslint-plugin": "6.13.2",
40
- "@typescript-eslint/parser": "6.13.2",
41
- "ava": "5.3.1",
42
- "conventional-changelog-conventionalcommits": "7.0.2",
43
- "cz-conventional-changelog": "3.3.0",
44
- "eslint": "8.55.0",
45
- "eslint-config-prettier": "9.1.0",
46
- "eslint-plugin-import": "2.29.0",
47
- "eslint-plugin-jsdoc": "46.9.0",
41
+ "@softwareventures/tsconfig": "8.1.1",
42
+ "@types/node": "18.19.130",
43
+ "@typescript-eslint/eslint-plugin": "8.56.1",
44
+ "@typescript-eslint/parser": "8.56.1",
45
+ "ava": "6.4.0",
46
+ "commitizen": "4.3.1",
47
+ "eslint": "9.39.4",
48
+ "eslint-config-prettier": "10.1.8",
49
+ "eslint-plugin-import": "2.32.0",
50
+ "eslint-plugin-jsdoc": "62.7.1",
48
51
  "eslint-plugin-prefer-arrow": "1.2.3",
49
- "eslint-plugin-sonarjs": "0.23.0",
50
- "husky": "8.0.3",
51
- "prettier": "2.8.8",
52
- "semantic-release": "22.0.10",
53
- "ts-node": "10.9.1",
54
- "typescript": "5.2.2"
55
- },
56
- "eslintConfig": {
57
- "root": true,
58
- "extends": "@softwareventures"
52
+ "eslint-plugin-sonarjs": "4.0.1",
53
+ "husky": "9.1.7",
54
+ "inquirer": "9.3.8",
55
+ "prettier": "3.8.1",
56
+ "ts-node": "10.9.2",
57
+ "typescript": "5.9.3"
59
58
  },
60
59
  "prettier": "@softwareventures/prettier-config",
61
60
  "config": {
62
61
  "commitizen": {
63
- "path": "./node_modules/cz-conventional-changelog"
62
+ "path": "@commitlint/cz-commitlint"
64
63
  }
65
64
  },
66
65
  "ava": {
@@ -73,5 +72,6 @@
73
72
  },
74
73
  "release": {
75
74
  "extends": "@softwareventures/semantic-release-config"
76
- }
75
+ },
76
+ "packageManager": "yarn@4.12.0"
77
77
  }
package/.husky/common.sh DELETED
@@ -1,8 +0,0 @@
1
- command_exists () {
2
- command -v "$1" >/dev/null 2>&1
3
- }
4
-
5
- # Workaround for Windows 10, Git Bash and Yarn, https://typicode.github.io/husky/#/?id=yarn-on-windows
6
- if command_exists winpty && test -t 1; then
7
- exec < /dev/tty
8
- fi
package/.husky/pre-commit DELETED
@@ -1,5 +0,0 @@
1
- #!/bin/sh
2
- . "$(dirname "$0")/_/husky.sh"
3
- . "$(dirname "$0")/common.sh"
4
-
5
- yarn pre-commit
package/.prettierignore DELETED
@@ -1,6 +0,0 @@
1
- .idea
2
- node_modules
3
- *.js
4
- *.d.ts
5
- *.js.map
6
- !/types/*.d.ts