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