src/audit-date-filter.tsTypeScript
@@ -0,0 +1,35 @@
1+
export interface AuditRecord {2+
id: string;3+
createdAt: Date;4+
}5+
6+
function parseDate(value: string | undefined): Date | undefined {7+
if (value === undefined) {8+
return undefined;9+
}10+
11+
const parsed = new Date(value);12+
if (Number.isNaN(parsed.getTime())) {13+
throw new RangeError("Invalid date");14+
}15+
return parsed;16+
}17+
18+
export function filterAuditRecords(19+
records: readonly AuditRecord[],20+
from: string | undefined,21+
to: string | undefined,22+
): AuditRecord[] {23+
const start = parseDate(from);24+
const end = parseDate(to);25+
26+
return records.filter((record) => {27+
if (start !== undefined && record.createdAt <= start) {28+
return false;29+
}30+
if (end !== undefined && record.createdAt >= end) {31+
return false;32+
}33+
return true;34+
});35+
}