@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
49 lines (48 loc) • 2.31 kB
JavaScript
import { createFaker } from "./createFaker.js";
import { valueForModel } from "./valueForModel.js";
import * as prismic from "@prismicio/client";
//#region src/lib/valueForModelMap.ts
const getValueConfigType = (model) => {
switch (model.type) {
case prismic.CustomTypeModelFieldType.Boolean: return "boolean";
case prismic.CustomTypeModelFieldType.Color: return "color";
case prismic.CustomTypeModelFieldType.Date: return "date";
case prismic.CustomTypeModelFieldType.Embed: return "embed";
case prismic.CustomTypeModelFieldType.GeoPoint: return "geoPoint";
case prismic.CustomTypeModelFieldType.Group: return "group";
case prismic.CustomTypeModelFieldType.Image: return "image";
case prismic.CustomTypeModelFieldType.Link: switch (model.config?.select) {
case prismic.CustomTypeModelLinkSelectType.Document: return "contentRelationship";
case prismic.CustomTypeModelLinkSelectType.Media: return "linkToMedia";
default: return "link";
}
case prismic.CustomTypeModelFieldType.Number: return "number";
case prismic.CustomTypeModelFieldType.Select: return "select";
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";
else return "richText";
case prismic.CustomTypeModelFieldType.Text: return "keyText";
case prismic.CustomTypeModelFieldType.Timestamp: return "timestamp";
case prismic.CustomTypeModelFieldType.UID: return "uid";
case prismic.CustomTypeModelFieldType.Integration: return "integration";
case prismic.CustomTypeModelFieldType.Slices: return "sliceZone";
default: throw new Error(`The "${model.type}" field type is not supported in /mock.`);
}
};
const valueForModelMap = (config) => {
const faker = config.faker || createFaker(config.seed);
const result = {};
for (const fieldId in config.map) {
const fieldModel = config.map[fieldId];
const fieldConfigType = getValueConfigType(fieldModel);
const fieldConfig = config.configs?.[fieldConfigType];
result[fieldId] = valueForModel({
faker,
model: fieldModel,
config: fieldConfig
});
}
return result;
};
//#endregion
export { valueForModelMap };
//# sourceMappingURL=valueForModelMap.js.map