UNPKG

@prismicio/mock

Version:

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

36 lines (30 loc) 1.14 kB
import type * as prismic from "@prismicio/client" import { createFaker } from "../lib/createFaker" import * as modelGen from "../model" import type { MockValueConfig, ModelValue } from "../types" import { sharedSliceVariation, type MockSharedSliceVariationValueConfig, } from "./sharedSliceVariation" export type MockSharedSliceValueConfig< Model extends prismic.SharedSliceModel = prismic.SharedSliceModel, > = Pick< MockSharedSliceVariationValueConfig, "itemsCount" | "primaryFieldConfigs" | "itemsFieldConfigs" > & MockValueConfig<Model> export const sharedSlice = <Model extends prismic.SharedSliceModel = prismic.SharedSliceModel>( config: MockSharedSliceValueConfig<Model>, ): ModelValue<Model> => { const faker = config.faker || createFaker(config.seed) const model = config.model || modelGen.sharedSlice({ faker }) const variationModel = faker.randomElement(model.variations) return sharedSliceVariation({ faker, model: variationModel, itemsCount: config.itemsCount, type: model.id, primaryFieldConfigs: config.primaryFieldConfigs, itemsFieldConfigs: config.itemsFieldConfigs, }) as ModelValue<Model> }