@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
45 lines (44 loc) • 1.84 kB
JavaScript
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