Add .validDate() (#203)

This commit is contained in:
Martin Eneqvist 2024-02-29 08:23:30 +01:00 committed by GitHub
parent 0e687a23a8
commit e9418fe1b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 56 additions and 0 deletions

View file

@ -128,6 +128,7 @@ const assertionTypeDescriptions = [
'in range',
'predicate returns truthy for any value',
'predicate returns truthy for all values',
'valid Date',
'valid length',
'whitespace string',
...objectTypeNames,
@ -311,6 +312,7 @@ const is = Object.assign(
urlInstance: isUrlInstance,
urlSearchParams: isUrlSearchParams,
urlString: isUrlString,
validDate: isValidDate,
validLength: isValidLength,
weakMap: isWeakMap,
weakRef: isWeakRef,
@ -760,6 +762,10 @@ export function isUrlString(value: unknown): value is string {
}
}
export function isValidDate(value: unknown): value is Date {
return isDate(value) && !isNan(Number(value));
}
export function isValidLength(value: unknown): value is number {
return isSafeInteger(value) && value >= 0;
}
@ -917,6 +923,7 @@ type Assert = {
propertyKey: (value: unknown) => asserts value is PropertyKey;
formData: (value: unknown) => asserts value is FormData;
urlSearchParams: (value: unknown) => asserts value is URLSearchParams;
validDate: (value: unknown) => asserts value is Date;
validLength: (value: unknown) => asserts value is number;
whitespaceString: (value: unknown) => asserts value is string;
@ -1022,6 +1029,7 @@ export const assert: Assert = {
urlInstance: assertUrlInstance,
urlSearchParams: assertUrlSearchParams,
urlString: assertUrlString,
validDate: assertValidDate,
validLength: assertValidLength,
weakMap: assertWeakMap,
weakRef: assertWeakRef,
@ -1114,6 +1122,7 @@ const methodTypeMap = {
isUrlInstance: 'URL',
isUrlSearchParams: 'URLSearchParams',
isUrlString: 'string with a URL',
isValidDate: 'valid Date',
isValidLength: 'valid length',
isWeakMap: 'WeakMap',
isWeakRef: 'WeakRef',
@ -1651,6 +1660,12 @@ export function assertUrlString(value: unknown): asserts value is string {
}
}
export function assertValidDate(value: unknown): asserts value is Date {
if (!isValidDate(value)) {
throw new TypeError(typeErrorMessage('valid Date', value));
}
}
export function assertValidLength(value: unknown): asserts value is number {
if (!isValidLength(value)) {
throw new TypeError(typeErrorMessage('valid length', value));