ts-cast
Version:
Runtime typechecking
12 lines (11 loc) • 911 B
JavaScript
import { createCaster } from '../engine';
const parseDate = (typeName, value, context, reportError) => {
const date = new Date(value);
if (Number.isNaN(date.getTime())) {
return reportError(`${typeName} is expected${context ? ` in ${context}` : ''} but "${value}" received.`, context);
}
return date;
};
export const isoDate = createCaster('ISODate', (value) => typeof value === 'string' && value !== '', (value, context, reportError) => parseDate('ISODate', value, context, reportError));
export const unixDateTimeStamp = createCaster('UnixDateTimeStamp', value => typeof value === 'number', (value, context, reportError) => parseDate('UnixDateTimeStamp', value * 1000, context, reportError));
export const jsDateTimeStamp = createCaster('JSDateTimeStamp', value => typeof value === 'number', (value, context, reportError) => parseDate('JSDateTimeStamp', value, context, reportError));