UNPKG

@prismicio/mock

Version:

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

45 lines (44 loc) 1.84 kB
import { snakeCase } from "../lib/changeCase.js"; import { createFaker } from "../lib/createFaker.js"; import { generateTags } from "../lib/generateTags.js"; import { buildAlternativeLanguage } from "../lib/buildAlternativeLanguage.js"; import { valueForModelMap } from "../lib/valueForModelMap.js"; import { customType as customType$1 } from "../model/customType.js"; import { timestamp } from "./timestamp.js"; import * as prismic from "@prismicio/client"; //#region src/value/customType.ts const customType = (config) => { const faker = config.faker || createFaker(config.seed); const model = config.model || customType$1({ faker }); const fieldModelsMap = Object.assign({}, ...Object.values(model.json)); const dataFieldModelsMap = {}; for (const key in fieldModelsMap) { const fieldModel = fieldModelsMap[key]; if (fieldModel.type !== prismic.CustomTypeModelFieldType.UID) dataFieldModelsMap[key] = fieldModel; } const hasUID = Object.values(fieldModelsMap).some((fieldModel) => fieldModel.type === prismic.CustomTypeModelFieldType.UID); const withURL = config.withURL ?? true; const alternateLanguages = (config.alternateLanguages || []).map((alternateLanguageDocument) => buildAlternativeLanguage({ document: alternateLanguageDocument })); return { type: model.id, id: faker.hash(7), uid: hasUID ? snakeCase(faker.words(faker.range(1, 3))) : null, url: withURL ? faker.url() : null, href: faker.url(), lang: faker.word(), tags: generateTags({ faker }), slugs: [], linked_documents: [], alternate_languages: alternateLanguages, first_publication_date: timestamp({ faker }), last_publication_date: timestamp({ faker }), data: valueForModelMap({ faker, map: dataFieldModelsMap, configs: config.configs }) }; }; //#endregion export { customType }; //# sourceMappingURL=customType.js.map