@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
51 lines (50 loc) • 2.71 kB
JavaScript
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
const require_createFaker = require("./createFaker.cjs");
const require_valueForModel = require("./valueForModel.cjs");
let _prismicio_client = require("@prismicio/client");
_prismicio_client = require_runtime.__toESM(_prismicio_client);
//#region src/lib/valueForModelMap.ts
const getValueConfigType = (model) => {
switch (model.type) {
case _prismicio_client.CustomTypeModelFieldType.Boolean: return "boolean";
case _prismicio_client.CustomTypeModelFieldType.Color: return "color";
case _prismicio_client.CustomTypeModelFieldType.Date: return "date";
case _prismicio_client.CustomTypeModelFieldType.Embed: return "embed";
case _prismicio_client.CustomTypeModelFieldType.GeoPoint: return "geoPoint";
case _prismicio_client.CustomTypeModelFieldType.Group: return "group";
case _prismicio_client.CustomTypeModelFieldType.Image: return "image";
case _prismicio_client.CustomTypeModelFieldType.Link: switch (model.config?.select) {
case _prismicio_client.CustomTypeModelLinkSelectType.Document: return "contentRelationship";
case _prismicio_client.CustomTypeModelLinkSelectType.Media: return "linkToMedia";
default: return "link";
}
case _prismicio_client.CustomTypeModelFieldType.Number: return "number";
case _prismicio_client.CustomTypeModelFieldType.Select: return "select";
case _prismicio_client.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 _prismicio_client.CustomTypeModelFieldType.Text: return "keyText";
case _prismicio_client.CustomTypeModelFieldType.Timestamp: return "timestamp";
case _prismicio_client.CustomTypeModelFieldType.UID: return "uid";
case _prismicio_client.CustomTypeModelFieldType.Integration: return "integration";
case _prismicio_client.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 || require_createFaker.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] = require_valueForModel.valueForModel({
faker,
model: fieldModel,
config: fieldConfig
});
}
return result;
};
//#endregion
exports.valueForModelMap = valueForModelMap;
//# sourceMappingURL=valueForModelMap.cjs.map