import type * as prismic from "@prismicio/client" import { createFaker } from "../lib/createFaker" import type { MockValueStateConfig, MockValueConfig } from "../types" import { timestamp, type MockTimestampValueConfig } from "./timestamp" export type MockDateValueConfig< Model extends prismic.CustomTypeModelDateField = prismic.CustomTypeModelDateField, State extends prismic.FieldState = prismic.FieldState, > = Pick & MockValueConfig & MockValueStateConfig export type MockDateValue = prismic.DateField export const date = < Model extends prismic.CustomTypeModelDateField = prismic.CustomTypeModelDateField, State extends prismic.FieldState = "filled", >( config: MockDateValueConfig, ): MockDateValue => { const faker = config.faker || createFaker(config.seed) return ( config.state === "empty" ? null : timestamp({ faker, after: config.after, before: config.before, state: "filled", }).split("T")[0] ) as MockDateValue }