@vtaits/form-schema
Version:
Serialization and parsing form values by schema
81 lines (77 loc) • 1.97 kB
JavaScript
// 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