Skip to content

Commit e59e45a

Browse files
committed
fix: update to comply with @softwareventures/eslint-config v5.1.0
1 parent a3aec48 commit e59e45a

File tree

3 files changed

+63
-48
lines changed

3 files changed

+63
-48
lines changed

index.ts

Lines changed: 58 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {isNotNull, isNull} from "@softwareventures/nullable";
2-
import {Comparator, compare as defaultCompare, Comparison} from "@softwareventures/ordered";
2+
import type {Comparator} from "@softwareventures/ordered";
3+
import {compare as defaultCompare, Comparison} from "@softwareventures/ordered";
34

45
// eslint-disable-next-line @typescript-eslint/unbound-method
56
const nativeSlice = Array.prototype.slice;
@@ -41,7 +42,7 @@ export function isArray<T = unknown>(value: readonly T[] | unknown): value is re
4142
/** @internal This implementation is for internal use only, the exported declaration is above */
4243
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
4344
// @ts-ignore duplicate identifier: This is the actual implementation, the exported declaration is above.
44-
export const isArray: (value: any) => value is any[] = Array.isArray;
45+
export const isArray: (value: unknown) => value is unknown[] = Array.isArray;
4546

4647
export function isArrayLike<T>(value: ArrayLike<T> | unknown): value is ArrayLike<T> {
4748
return (
@@ -53,7 +54,7 @@ export function isArrayLike<T>(value: ArrayLike<T> | unknown): value is ArrayLik
5354
}
5455

5556
export function coerce<T>(array: ArrayLike<T>): readonly T[] {
56-
return isArray(array) ? array : copy(array);
57+
return isArray(array) ? (array as readonly T[]) : copy(array);
5758
}
5859

5960
export function first<T>(array: ArrayLike<T>): T | null {
@@ -71,7 +72,7 @@ export function head<T>(array: ArrayLike<T>): T | null;
7172
export const head = first;
7273

7374
export function tail<T>(array: ArrayLike<T>): T[] {
74-
return nativeSlice.call(array, 1);
75+
return nativeSlice.call(array, 1) as T[];
7576
}
7677

7778
export function push<T>(array: ArrayLike<T>, value: T): T[] {
@@ -91,7 +92,7 @@ export function unshiftFn<T>(value: T): (array: ArrayLike<T>) => T[] {
9192
}
9293

9394
export function initial<T>(array: ArrayLike<T>): T[] {
94-
return array.length === 0 ? [] : nativeSlice.call(array, 0, array.length - 1);
95+
return array.length === 0 ? [] : (nativeSlice.call(array, 0, array.length - 1) as T[]);
9596
}
9697

9798
export function last<T>(array: ArrayLike<T>): T | null {
@@ -113,31 +114,31 @@ export function notEmpty<T>(array: ArrayLike<T>): boolean {
113114
}
114115

115116
export function reverse<T>(array: ArrayLike<T>): T[] {
116-
return nativeReverse.call(copy(array));
117+
return nativeReverse.call(copy(array)) as T[];
117118
}
118119

119120
export function slice<T>(array: ArrayLike<T>, start?: number, end?: number): T[] {
120-
return nativeSlice.call(array, start, end);
121+
return nativeSlice.call(array, start, end) as T[];
121122
}
122123

123124
export function sliceFn<T>(start?: number, end?: number): (array: ArrayLike<T>) => T[] {
124-
return array => nativeSlice.call(array, start, end);
125+
return array => nativeSlice.call(array, start, end) as T[];
125126
}
126127

127128
export function take<T>(array: ArrayLike<T>, count: number): T[] {
128-
return nativeSlice.call(array, 0, count);
129+
return nativeSlice.call(array, 0, count) as T[];
129130
}
130131

131132
export function takeFn<T>(count: number): (array: ArrayLike<T>) => T[] {
132-
return array => nativeSlice.call(array, 0, count);
133+
return array => nativeSlice.call(array, 0, count) as T[];
133134
}
134135

135136
export function drop<T>(array: ArrayLike<T>, count: number): T[] {
136-
return nativeSlice.call(array, count);
137+
return nativeSlice.call(array, count) as T[];
137138
}
138139

139140
export function dropFn<T>(count: number): (array: ArrayLike<T>) => T[] {
140-
return array => nativeSlice.call(array, count);
141+
return array => nativeSlice.call(array, count) as T[];
141142
}
142143

143144
export function takeWhile<T, U extends T>(
@@ -309,7 +310,7 @@ export function filter<T>(
309310
array: ArrayLike<T>,
310311
predicate: (element: T, index: number) => boolean
311312
): T[] {
312-
return nativeFilter.call(array, predicate);
313+
return nativeFilter.call(array, predicate) as T[];
313314
}
314315

315316
export function filterFn<T, U extends T>(
@@ -321,7 +322,7 @@ export function filterFn<T>(
321322
export function filterFn<T>(
322323
predicate: (element: T, index: number) => boolean
323324
): (array: ArrayLike<T>) => T[] {
324-
return array => nativeFilter.call(array, predicate);
325+
return array => nativeFilter.call(array, predicate) as T[];
325326
}
326327

327328
export function filterFirst<T>(
@@ -415,21 +416,29 @@ export function fold<T, U>(
415416
f: (accumulator: U, element: T, index: number) => U,
416417
initial: U
417418
): U {
418-
return (nativeReduce as (...args: any[]) => any).call(array, f, initial);
419+
return (
420+
nativeReduce as (f: (accumulator: U, element: T, index: number) => U, initial: U) => U
421+
).call(array, f, initial);
419422
}
420423

421424
export function foldFn<T, U>(
422425
f: (accumulator: U, element: T, index: number) => U,
423426
initial: U
424427
): (array: ArrayLike<T>) => U {
425-
return array => (nativeReduce as (...args: any[]) => any).call(array, f, initial);
428+
return array =>
429+
(
430+
nativeReduce as (f: (accumulator: U, element: T, index: number) => U, initial: U) => U
431+
).call(array, f, initial);
426432
}
427433

428434
export function fold1<T>(
429435
array: ArrayLike<T>,
430436
f: (accumulator: T, element: T, index: number) => T
431437
): T {
432-
return (nativeReduce as (...args: any[]) => any).call(array, f);
438+
return (nativeReduce as (f: (accumulator: T, element: T, index: number) => T) => T).call(
439+
array,
440+
f
441+
);
433442
}
434443

435444
export function fold1Fn<T>(
@@ -443,21 +452,32 @@ export function foldRight<T, U>(
443452
f: (accumulator: U, element: T, index: number) => U,
444453
initial: U
445454
): U {
446-
return (nativeReduceRight as (...args: any[]) => any).call(array, f, initial);
455+
return (
456+
nativeReduceRight as (f: (accumulator: U, element: T, index: number) => U, initial: U) => U
457+
).call(array, f, initial);
447458
}
448459

449460
export function foldRightFn<T, U>(
450461
f: (accumulator: U, element: T, index: number) => U,
451462
initial: U
452463
): (array: ArrayLike<T>) => U {
453-
return array => (nativeReduceRight as (...args: any[]) => any).call(array, f, initial);
464+
return array =>
465+
(
466+
nativeReduceRight as (
467+
f: (accumulator: U, element: T, index: number) => U,
468+
initial: U
469+
) => U
470+
).call(array, f, initial);
454471
}
455472

456473
export function foldRight1<T>(
457474
array: ArrayLike<T>,
458475
f: (accumulator: T, element: T, index: number) => T
459476
): T {
460-
return (nativeReduceRight as (...args: any[]) => any).call(array, f);
477+
return (nativeReduceRight as (f: (accumulator: T, element: T, index: number) => T) => T).call(
478+
array,
479+
f
480+
);
461481
}
462482

463483
export function foldRight1Fn<T>(
@@ -572,19 +592,14 @@ export function findFn<T>(
572592

573593
export function maximum<T extends string | number | boolean>(array: ArrayLike<T>): T | null;
574594
export function maximum<T>(array: ArrayLike<T>, compare: Comparator<T>): T | null;
575-
export function maximum<T>(
576-
array: ArrayLike<T>,
577-
compare: Comparator<any> = defaultCompare
578-
): T | null {
579-
return internalMaximum(array, compare);
595+
export function maximum<T>(array: ArrayLike<T>, compare?: Comparator<T>): T | null {
596+
return internalMaximum(array, compare ?? (defaultCompare as unknown as Comparator<T>));
580597
}
581598

582599
export function maximumFn<T extends string | number | boolean>(): (array: ArrayLike<T>) => T | null;
583600
export function maximumFn<T>(compare: Comparator<T>): (array: ArrayLike<T>) => T | null;
584-
export function maximumFn<T>(
585-
compare: Comparator<any> = defaultCompare
586-
): (array: ArrayLike<T>) => T | null {
587-
return array => internalMaximum(array, compare);
601+
export function maximumFn<T>(compare?: Comparator<T>): (array: ArrayLike<T>) => T | null {
602+
return array => internalMaximum(array, compare ?? (defaultCompare as unknown as Comparator<T>));
588603
}
589604

590605
function internalMaximum<T>(array: ArrayLike<T>, compare: Comparator<T>): T | null {
@@ -605,19 +620,14 @@ function internalMaximum<T>(array: ArrayLike<T>, compare: Comparator<T>): T | nu
605620

606621
export function minimum<T extends string | number | boolean>(array: ArrayLike<T>): T | null;
607622
export function minimum<T>(array: ArrayLike<T>, compare: Comparator<T>): T | null;
608-
export function minimum<T>(
609-
array: ArrayLike<T>,
610-
compare: Comparator<any> = defaultCompare
611-
): T | null {
612-
return internalMinimum(array, compare);
623+
export function minimum<T>(array: ArrayLike<T>, compare?: Comparator<T>): T | null {
624+
return internalMinimum(array, compare ?? (defaultCompare as unknown as Comparator<T>));
613625
}
614626

615627
export function minimumFn<T extends string | number | boolean>(): (array: ArrayLike<T>) => T | null;
616628
export function minimumFn<T>(compare: Comparator<T>): (array: ArrayLike<T>) => T | null;
617-
export function minimumFn<T>(
618-
compare: Comparator<any> = defaultCompare
619-
): (array: ArrayLike<T>) => T | null {
620-
return array => internalMinimum(array, compare);
629+
export function minimumFn<T>(compare?: Comparator<T>): (array: ArrayLike<T>) => T | null {
630+
return array => internalMinimum(array, compare ?? (defaultCompare as unknown as Comparator<T>));
621631
}
622632

623633
function internalMinimum<T>(array: ArrayLike<T>, compare: Comparator<T>): T | null {
@@ -649,7 +659,7 @@ export function and(array: ArrayLike<boolean>): boolean {
649659
}
650660

651661
export function or(array: ArrayLike<boolean>): boolean {
652-
return findIndex(array, element => !!element) != null;
662+
return findIndex(array, element => Boolean(element)) != null;
653663
}
654664

655665
export function any<T>(
@@ -679,7 +689,7 @@ export function allFn<T>(
679689
}
680690

681691
export function concat<T>(arrays: ArrayLike<ArrayLike<T>>): T[] {
682-
return nativeConcat.apply([], map(arrays, coerce));
692+
return nativeConcat.apply([], map(arrays, coerce)) as T[];
683693
}
684694

685695
export function prepend<T>(a: ArrayLike<T>): (b: ArrayLike<T>) => T[] {
@@ -1583,23 +1593,28 @@ export function sort(array: ArrayLike<number>): number[];
15831593
export function sort(array: ArrayLike<string>): string[];
15841594
export function sort<T>(array: ArrayLike<T>, comparator: Comparator<T>): T[];
15851595
export function sort<T>(array: ArrayLike<T>, comparator?: Comparator<T>): T[] {
1586-
return copy(array).sort(comparator ?? (defaultCompare as any));
1596+
return copy(array).sort(comparator ?? (defaultCompare as unknown as Comparator<T>));
15871597
}
15881598

15891599
export function sortFn<T>(comparator: Comparator<T>): (array: ArrayLike<T>) => T[] {
15901600
return array => sort(array, comparator);
15911601
}
15921602

15931603
export function sortBy<T>(array: ArrayLike<T>, select: SortSelect<T>): T[] {
1594-
return sort(array, (a, b) => defaultCompare(select(a) as any, select(b) as any));
1604+
return sort(array, (a, b) =>
1605+
(defaultCompare as Comparator<string | number | boolean>)(select(a), select(b))
1606+
);
15951607
}
15961608

15971609
export function sortByFn<T>(select: SortSelect<T>): (array: ArrayLike<T>) => T[] {
15981610
return array => sortBy(array, select);
15991611
}
16001612

16011613
export function sortByDescending<T>(array: ArrayLike<T>, select: SortSelect<T>): T[] {
1602-
return sort(array, (a, b) => -defaultCompare(select(a) as any, select(b) as any));
1614+
return sort(
1615+
array,
1616+
(a, b) => -(defaultCompare as Comparator<string | number | boolean>)(select(a), select(b))
1617+
);
16031618
}
16041619

16051620
export function sortByDescendingFn<T>(select: SortSelect<T>): (array: ArrayLike<T>) => T[] {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"tslib": "^2.0.0"
3131
},
3232
"devDependencies": {
33-
"@softwareventures/eslint-config": "5.0.1",
33+
"@softwareventures/eslint-config": "5.1.0",
3434
"@softwareventures/prettier-config": "3.0.0",
3535
"@softwareventures/semantic-release-config": "2.0.0",
3636
"@softwareventures/tsconfig": "5.1.1",

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -480,10 +480,10 @@
480480
lodash "^4.17.4"
481481
read-pkg-up "^7.0.0"
482482

483-
"@softwareventures/eslint-config@5.0.1":
484-
version "5.0.1"
485-
resolved "https://registry.yarnpkg.com/@softwareventures/eslint-config/-/eslint-config-5.0.1.tgz#b981a60ef6a3f5718d30e3c3c2e80122dd262057"
486-
integrity sha512-aMaCmi8MkbvtXAMXS/crLtVtypDO7NCfiMheRwrGc9RscGsFpuLpLXjzwGK7XrJuZnFQVmZNOSGLBNAAciLSQQ==
483+
"@softwareventures/eslint-config@5.1.0":
484+
version "5.1.0"
485+
resolved "https://registry.yarnpkg.com/@softwareventures/eslint-config/-/eslint-config-5.1.0.tgz#048e7651c0a25b6b8757eca65b84ef42cf72738e"
486+
integrity sha512-82Z4Zc5yoYYA3cpIBlY2Wz9ImpilMfYF5d8HrrrYfxsiYj+KzZtjRKrYzC3KrKjxMA/vDPz62YOMZ4+WDQZlSQ==
487487
dependencies:
488488
"@typescript-eslint/eslint-plugin" "^5.3.0 || ^5.0.0"
489489
"@typescript-eslint/parser" "^5.3.0 || ^5.0.0"

0 commit comments

Comments
 (0)