@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
66 lines (65 loc) • 2.6 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const prismic = require("@prismicio/client");
const changeCase = require("../lib/changeCase.cjs");
const createFaker = require("../lib/createFaker.cjs");
const generateTags = require("../lib/generateTags.cjs");
const valueForModelMap = require("../lib/valueForModelMap.cjs");
const timestamp = require("./timestamp.cjs");
const buildAlternativeLanguage = require("../lib/buildAlternativeLanguage.cjs");
const customType$1 = require("../model/customType.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 customType = (config) => {
const faker = config.faker || createFaker.createFaker(config.seed);
const model = config.model || customType$1.customType({ faker });
const fieldModelsMap = Object.assign({}, ...Object.values(model.json));
const dataFieldModelsMap = {};
for (const key in fieldModelsMap) {
const fieldModel = fieldModelsMap[key];
if (fieldModel.type !== prismic__namespace.CustomTypeModelFieldType.UID) {
dataFieldModelsMap[key] = fieldModel;
}
}
const hasUID = Object.values(fieldModelsMap).some((fieldModel) => fieldModel.type === prismic__namespace.CustomTypeModelFieldType.UID);
const withURL = config.withURL ?? true;
const alternateLanguages = (config.alternateLanguages || []).map((alternateLanguageDocument) => buildAlternativeLanguage.buildAlternativeLanguage({
document: alternateLanguageDocument
}));
return {
type: model.id,
id: faker.hash(7),
uid: hasUID ? changeCase.snakeCase(faker.words(faker.range(1, 3))) : null,
url: withURL ? faker.url() : null,
href: faker.url(),
lang: faker.word(),
tags: generateTags.generateTags({ faker }),
slugs: [],
linked_documents: [],
alternate_languages: alternateLanguages,
first_publication_date: timestamp.timestamp({ faker }),
last_publication_date: timestamp.timestamp({ faker }),
data: valueForModelMap.valueForModelMap({
faker,
map: dataFieldModelsMap,
configs: config.configs
})
};
};
exports.customType = customType;
//# sourceMappingURL=customType.cjs.map