@prismicio/types-internal
Version:
Prismic types for Custom Types and Prismic Data
20 lines (17 loc) • 435 B
text/typescript
import { chain } from "fp-ts/Either"
import { pipe } from "fp-ts/function"
import * as t from "io-ts"
import { String } from "."
export default new t.Type<Date, string, unknown>(
"dateFromString",
(u): u is Date => u instanceof Date,
(u, c) =>
pipe(
String.validate(u, c),
chain((s) => {
const d = new Date(s)
return isNaN(d.getTime()) ? t.failure(u, c) : t.success(d)
}),
),
(date) => date.toISOString(),
)