@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
94 lines (93 loc) • 3.44 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const prismic = require("@prismicio/client");
const valueForModel = require("./valueForModel.cjs");
const createFaker = require("./createFaker.cjs");
function _interopNamespaceDefault(e) {
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
if (e) {
for (const k in e) {
if (k !== "default") {
const d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: () => e[k]
});
}
}
}
n.default = e;
return Object.freeze(n);
}
const prismic__namespace = /* @__PURE__ */ _interopNamespaceDefault(prismic);
const getValueConfigType = (model) => {
var _a;
switch (model.type) {
case prismic__namespace.CustomTypeModelFieldType.Boolean:
return "boolean";
case prismic__namespace.CustomTypeModelFieldType.Color:
return "color";
case prismic__namespace.CustomTypeModelFieldType.Date:
return "date";
case prismic__namespace.CustomTypeModelFieldType.Embed:
return "embed";
case prismic__namespace.CustomTypeModelFieldType.GeoPoint:
return "geoPoint";
case prismic__namespace.CustomTypeModelFieldType.Group:
return "group";
case prismic__namespace.CustomTypeModelFieldType.Image:
return "image";
case prismic__namespace.CustomTypeModelFieldType.Link: {
switch ((_a = model.config) == null ? void 0 : _a.select) {
case prismic__namespace.CustomTypeModelLinkSelectType.Document:
return "contentRelationship";
case prismic__namespace.CustomTypeModelLinkSelectType.Media:
return "linkToMedia";
default:
return "link";
}
}
case prismic__namespace.CustomTypeModelFieldType.Number:
return "number";
case prismic__namespace.CustomTypeModelFieldType.Select:
return "select";
case prismic__namespace.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__namespace.CustomTypeModelFieldType.Text:
return "keyText";
case prismic__namespace.CustomTypeModelFieldType.Timestamp:
return "timestamp";
case prismic__namespace.CustomTypeModelFieldType.UID:
return "uid";
case prismic__namespace.CustomTypeModelFieldType.Integration:
return "integration";
case prismic__namespace.CustomTypeModelFieldType.Slices:
return "sliceZone";
default: {
throw new Error(`The "${model.type}" field type is not supported in @prismicio/mock.`);
}
}
};
const valueForModelMap = (config) => {
var _a;
const faker = config.faker || createFaker.createFaker(config.seed);
const result = {};
for (const fieldId in config.map) {
const fieldModel = config.map[fieldId];
const fieldConfigType = getValueConfigType(fieldModel);
const fieldConfig = (_a = config.configs) == null ? void 0 : _a[fieldConfigType];
result[fieldId] = valueForModel.valueForModel({
faker,
model: fieldModel,
config: fieldConfig
});
}
return result;
};
exports.valueForModelMap = valueForModelMap;
//# sourceMappingURL=valueForModelMap.cjs.map