UNPKG

@prismicio/mock

Version:

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

175 lines (174 loc) 4.53 kB
import * as prismic from "@prismicio/client"; import { createFaker } from "./createFaker.js"; import { sliceZone } from "../value/sliceZone.js"; import { group } from "../value/group.js"; import { uid } from "../value/uid.js"; import { integration } from "../value/integration.js"; import { title } from "../value/title.js"; import { richText } from "../value/richText/index.js"; import { timestamp } from "../value/timestamp.js"; import { select } from "../value/select.js"; import { number } from "../value/number.js"; import { keyText } from "../value/keyText.js"; import { image } from "../value/image.js"; import { geoPoint } from "../value/geoPoint.js"; import { embed } from "../value/embed.js"; import { date } from "../value/date.js"; import { link } from "../value/link.js"; import { linkToMedia } from "../value/linkToMedia.js"; import { contentRelationship } from "../value/contentRelationship.js"; import { color } from "../value/color.js"; import { boolean } from "../value/boolean.js"; const valueForModel = (config) => { var _a; 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 ((_a = model.config) == null ? void 0 : _a.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.`); } } }; export { valueForModel }; //# sourceMappingURL=valueForModel.js.map