1
export const isValidDate = (value: Date) => !Number.isNaN(value.getTime());
3
export const toDate = (value: Date | string) => {
4
const parsedValue = typeof value === 'string' ? new Date(value) : value;
5
if (isValidDate(parsedValue)) {
12
export const tryParseInt = (
13
value: number | string | null | undefined,
17
if (Number.isNaN(value) || value === null || value === undefined) {
21
if (typeof value === 'number') {
25
const parsedValue = parseInt(value, radix);
26
if (Number.isNaN(parsedValue)) {
33
export const customCompareIf = <V, N>(
35
needle: N | undefined,
36
comparator: (value: V, needle: N) => boolean,
38
if (needle === undefined) {
42
return comparator(value, needle);
45
export const compareIf = <T>(value: T, needle: T | undefined) => {
46
return customCompareIf(value, needle, (value, needle) => value === needle);
49
export const clamp = (min: number, max: number, value: number) =>
50
Math.max(min, Math.min(max, value));
52
export const excludeKey = <T, K extends keyof T>(entry: T, key: K) => {
54
const { [key]: _, ...data } = entry;