UNPKG

@vtaits/form-schema

Version:

Serialization and parsing form values by schema

81 lines (77 loc) 1.97 kB
// src/fields/date-base/constants.ts var DATE_FORMAT_DATE = "@DATE"; var DATE_FORMAT_TS = "@TS_JS"; var DATE_FORMAT_UNIX = "@TS_UNIX"; var DATE_FORMAT_ISO = "@DATE_FORMAT_ISO"; // src/fields/date-base/parseValue.ts import { parse } from "date-fns/parse"; import { parseISO } from "date-fns/parseISO"; function parseValue(rawValue, dateFormat) { if (!rawValue) { return null; } if (rawValue instanceof Date) { return rawValue; } if (dateFormat === DATE_FORMAT_DATE) { return null; } if (typeof rawValue === "number") { switch (dateFormat) { case DATE_FORMAT_TS: return new Date(rawValue); case DATE_FORMAT_UNIX: return new Date(rawValue * 1e3); default: return null; } } if (typeof rawValue === "string") { switch (dateFormat) { case DATE_FORMAT_ISO: return parseISO(rawValue); default: return parse(rawValue, dateFormat, /* @__PURE__ */ new Date()); } } return null; } // src/fields/date-base/parseValueAndValidate.ts import { isValid } from "date-fns/isValid"; function parseValueAndValidate(rawValue, dateFormat) { const parsed = parseValue(rawValue, dateFormat); if (!parsed) { return null; } if (isValid(parsed)) { return parsed; } return null; } // src/fields/date-base/serializeDate.ts import { format } from "date-fns/format"; import { formatISO } from "date-fns/formatISO"; function serializeDate(date, dateFormat) { switch (dateFormat) { case DATE_FORMAT_DATE: return date; case DATE_FORMAT_TS: return date.getTime(); case DATE_FORMAT_UNIX: return Math.round(date.getTime() / 1e3); case DATE_FORMAT_ISO: return formatISO(date); default: return format(date, dateFormat); } } export { DATE_FORMAT_DATE, DATE_FORMAT_TS, DATE_FORMAT_UNIX, DATE_FORMAT_ISO, parseValue, parseValueAndValidate, serializeDate }; //# sourceMappingURL=chunk-4VOZ33ZJ.js.map