UNPKG

@prismicio/mock

Version:

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

94 lines (93 loc) 3.44 kB
"use strict"; 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