Skip to content

Commit 173f8db

Browse files
committed
fix: add type constraint for advancedSort
1 parent 61b9311 commit 173f8db

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

src/advanced-filtering/src/services/logProcessing.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
import {LogEntry, SimpleLogFilterCriteria, SortCriteria} from "../types";
1+
import { LogEntry, SimpleLogFilterCriteria, SortCriteria } from '../types';
22

3-
export function advancedSort<ItemType>(
3+
export function advancedSort<ItemType extends object>(
44
arr: ItemType[],
55
criteria: SortCriteria<ItemType>
66
): ItemType[] {
77
return [...arr].sort((a, b) => {
88
for (const key in criteria) {
9-
const {direction, customCompare} = criteria[key] || {};
9+
const { direction, customCompare } = criteria[key] || {};
1010
if (a[key] !== b[key]) {
1111
let comparison: number;
1212
if (customCompare) {
1313
comparison = customCompare(a[key], b[key]);
1414
} else {
1515
comparison = a[key] < b[key] ? -1 : 1;
1616
}
17-
return direction === "desc" ? -comparison : comparison;
17+
return direction === 'desc' ? -comparison : comparison;
1818
}
1919
}
2020
return 0;
@@ -35,7 +35,7 @@ export function simpleLogFilter(
3535
return true;
3636
}
3737
const value = log[key];
38-
if (typeof condition === "function") {
38+
if (typeof condition === 'function') {
3939
return (condition as (value: any) => boolean)(value);
4040
}
4141
return value === condition;
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
export type LogLevel = "INFO" | "WARNING" | "ERROR";
1+
export type LogLevel = 'INFO' | 'WARNING' | 'ERROR';
22
export type LogSource =
3-
| "user-service"
4-
| "auth-service"
5-
| "payment-service"
6-
| "notification-service"
7-
| "api-gateway";
3+
| 'user-service'
4+
| 'auth-service'
5+
| 'payment-service'
6+
| 'notification-service'
7+
| 'api-gateway';
88

99
export interface LogEntry {
1010
timestamp: Date;
@@ -19,9 +19,9 @@ export type CompareFunction<ItemTypeValue> = (
1919
b: ItemTypeValue
2020
) => number;
2121

22-
export type SortCriteria<ItemType> = {
22+
export type SortCriteria<ItemType extends object> = {
2323
[Key in keyof ItemType]?: {
24-
direction: "asc" | "desc";
24+
direction: 'asc' | 'desc';
2525
customCompare?: CompareFunction<ItemType[Key]>;
2626
};
2727
};
@@ -31,11 +31,11 @@ export type SimpleLogFilterCriteria = {
3131
source?: LogSource | ((value: LogSource) => boolean);
3232
};
3333

34-
export type SimpleLogFilterKey = "level" | "source";
34+
export type SimpleLogFilterKey = 'level' | 'source';
3535

3636
export type SimpleFilterableLogValue = LogLevel | LogSource;
3737

3838
export type UpdateLogFilterFunction = (
3939
key: SimpleLogFilterKey,
40-
value: SimpleFilterableLogValue | ""
40+
value: SimpleFilterableLogValue | ''
4141
) => void;

0 commit comments

Comments
 (0)