UNPKG

@prismicio/mock

Version:

Generate mock Prismic documents, fields, Slices, and models for development and testing environments

39 lines (33 loc) 1.23 kB
import type * as prismic from "@prismicio/client" import { createFaker } from "../lib/createFaker" import type { MockValueConfig, MockValueStateConfig } from "../types" import { heading, type MockRichTextHeadingValueConfig } from "./richText/heading" export type MockTitleValueConfig< Model extends prismic.CustomTypeModelTitleField = prismic.CustomTypeModelTitleField, State extends prismic.FieldState = prismic.FieldState, > = { pattern?: MockRichTextHeadingValueConfig["pattern"] } & MockValueConfig<Model> & MockValueStateConfig<State> export type MockTitleValue<State extends prismic.FieldState = prismic.FieldState> = prismic.TitleField<State> export const title = < Model extends prismic.CustomTypeModelTitleField = prismic.CustomTypeModelTitleField, State extends prismic.FieldState = "filled", >( config: MockTitleValueConfig<Model, State>, ): MockTitleValue<State> => { const faker = config.faker || createFaker(config.seed) if (config.state === "empty") { return [] as MockTitleValue<State> } else { return [ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion heading({ faker, model: config.model, pattern: config.pattern, })!, ] as MockTitleValue<State> } }