UNPKG

@prismicio/mock

Version:

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

131 lines (130 loc) 3.73 kB
import { createFaker } from "./createFaker.js"; import { boolean } from "../value/boolean.js"; import { timestamp } from "../value/timestamp.js"; import { color } from "../value/color.js"; import { contentRelationship } from "../value/contentRelationship.js"; import { date } from "../value/date.js"; import { embed } from "../value/embed.js"; import { geoPoint } from "../value/geoPoint.js"; import { group } from "../value/group.js"; import { image } from "../value/image.js"; import { integration } from "../value/integration.js"; import { keyText } from "../value/keyText.js"; import { linkToMedia } from "../value/linkToMedia.js"; import { link } from "../value/link.js"; import { number } from "../value/number.js"; import { richText } from "../value/richText/index.js"; import { select } from "../value/select.js"; import { sliceZone } from "../value/sliceZone.js"; import { title } from "../value/title.js"; import { uid } from "../value/uid.js"; import * as prismic from "@prismicio/client"; //#region src/lib/valueForModel.ts const valueForModel = (config) => { const faker = config.faker || createFaker(config.seed); const model = config.model; switch (model.type) { case prismic.CustomTypeModelFieldType.Boolean: return boolean({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Color: return color({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Link: switch (model.config?.select) { case prismic.CustomTypeModelLinkSelectType.Document: return contentRelationship({ faker, model, ...config.config }); case prismic.CustomTypeModelLinkSelectType.Media: return linkToMedia({ faker, model, ...config.config }); default: return link({ faker, model, ...config.config }); } case prismic.CustomTypeModelFieldType.Date: return date({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Embed: return embed({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.GeoPoint: return geoPoint({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Image: return image({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Text: return keyText({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Number: return number({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Select: return select({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Timestamp: return timestamp({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.StructuredText: if (model.config && "single" in model.config && model.config.single && model.config.single.split(",").every((element) => /heading[1-6]/.test(element.trim()))) return title({ faker, model, ...config.config }); else return richText({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Integration: return integration({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.UID: return uid({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.Group: return group({ faker, model, ...config.config }); case prismic.CustomTypeModelFieldType.LegacySlices: case prismic.CustomTypeModelFieldType.Slices: return sliceZone({ faker, model, ...config.config }); default: throw new Error(`The "${model.type}" field type is not supported in @prismicio/mock.`); } }; //#endregion export { valueForModel }; //# sourceMappingURL=valueForModel.js.map