@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 7.05 kB
Source Map (JSON)
{"version":3,"file":"valueForModel.cjs","names":["createFaker","prismic"],"sources":["../../src/lib/valueForModel.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\"\n\nimport type { MockValueConfigForModel, ModelValue, Seed } from \"../types\"\nimport * as value from \"../value\"\nimport { createFaker, type Faker } from \"./createFaker\"\n\ntype ValueForModelConfig<Model extends prismic.CustomTypeModelField> = {\n\tmodel: Model\n\tconfig?: Omit<MockValueConfigForModel<Model>, \"faker\" | \"seed\" | \"model\">\n} & (\n\t| {\n\t\t\tseed: Seed\n\t\t\tfaker?: never\n\t }\n\t| {\n\t\t\tfaker: Faker\n\t\t\tseed?: never\n\t }\n)\n\nexport const valueForModel = <Model extends prismic.CustomTypeModelField>(\n\tconfig: ValueForModelConfig<Model>,\n): ModelValue<Model> => {\n\tconst faker = config.faker || createFaker(config.seed)\n\n\tconst model = config.model\n\n\tswitch (model.type) {\n\t\tcase prismic.CustomTypeModelFieldType.Boolean: {\n\t\t\treturn value.boolean({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Color: {\n\t\t\treturn value.color({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Link: {\n\t\t\tswitch (model.config?.select) {\n\t\t\t\tcase prismic.CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn value.contentRelationship({\n\t\t\t\t\t\tfaker,\n\t\t\t\t\t\tmodel: model as prismic.CustomTypeModelContentRelationshipField,\n\t\t\t\t\t\t...config.config,\n\t\t\t\t\t}) as ModelValue<Model>\n\t\t\t\t}\n\n\t\t\t\tcase prismic.CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn value.linkToMedia({\n\t\t\t\t\t\tfaker,\n\t\t\t\t\t\tmodel: model as prismic.CustomTypeModelLinkToMediaField,\n\t\t\t\t\t\t...config.config,\n\t\t\t\t\t}) as ModelValue<Model>\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn value.link({\n\t\t\t\t\t\tfaker,\n\t\t\t\t\t\tmodel: model as prismic.CustomTypeModelLinkField,\n\t\t\t\t\t\t...config.config,\n\t\t\t\t\t}) as ModelValue<Model>\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Date: {\n\t\t\treturn value.date({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Embed: {\n\t\t\treturn value.embed({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.GeoPoint: {\n\t\t\treturn value.geoPoint({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Image: {\n\t\t\treturn value.image({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Text: {\n\t\t\treturn value.keyText({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Number: {\n\t\t\treturn value.number({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Select: {\n\t\t\treturn value.select({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Timestamp: {\n\t\t\treturn value.timestamp({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.StructuredText: {\n\t\t\tif (\n\t\t\t\tmodel.config &&\n\t\t\t\t\"single\" in model.config &&\n\t\t\t\tmodel.config.single &&\n\t\t\t\tmodel.config.single.split(\",\").every((element) => /heading[1-6]/.test(element.trim()))\n\t\t\t) {\n\t\t\t\treturn value.title({\n\t\t\t\t\tfaker,\n\t\t\t\t\tmodel: model as prismic.CustomTypeModelTitleField,\n\t\t\t\t\t...config.config,\n\t\t\t\t}) as ModelValue<Model>\n\t\t\t} else {\n\t\t\t\treturn value.richText({\n\t\t\t\t\tfaker,\n\t\t\t\t\tmodel,\n\t\t\t\t\t...config.config,\n\t\t\t\t}) as ModelValue<Model>\n\t\t\t}\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Integration: {\n\t\t\treturn value.integration({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.UID: {\n\t\t\treturn value.uid({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Group: {\n\t\t\treturn value.group({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.LegacySlices:\n\t\tcase prismic.CustomTypeModelFieldType.Slices: {\n\t\t\treturn value.sliceZone({\n\t\t\t\tfaker,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>\n\t\t}\n\n\t\tdefault: {\n\t\t\tthrow new Error(`The \"${model.type}\" field type is not supported in @prismicio/mock.`)\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAa,iBACZ,WACuB;CACvB,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;CAEtD,MAAM,QAAQ,OAAO;AAErB,SAAQ,MAAM,MAAd;EACC,KAAKC,kBAAQ,yBAAyB,QACrC,QAAA,gBAAA,QAAqB;GACpB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,MACrC,QAAA,cAAA,MAAmB;GAClB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,KACrC,SAAQ,MAAM,QAAQ,QAAtB;GACC,KAAKA,kBAAQ,8BAA8B,SAC1C,QAAA,4BAAA,oBAAiC;IAChC;IACO;IACP,GAAG,OAAO;IACV,CAAC;GAGH,KAAKA,kBAAQ,8BAA8B,MAC1C,QAAA,oBAAA,YAAyB;IACxB;IACO;IACP,GAAG,OAAO;IACV,CAAC;GAGH,QACC,QAAA,aAAA,KAAkB;IACjB;IACO;IACP,GAAG,OAAO;IACV,CAAC;;EAKL,KAAKA,kBAAQ,yBAAyB,KACrC,QAAA,aAAA,KAAkB;GACjB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,MACrC,QAAA,cAAA,MAAmB;GAClB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,SACrC,QAAA,iBAAA,SAAsB;GACrB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,MACrC,QAAA,cAAA,MAAmB;GAClB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,KACrC,QAAA,gBAAA,QAAqB;GACpB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,OACrC,QAAA,eAAA,OAAoB;GACnB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,OACrC,QAAA,eAAA,OAAoB;GACnB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,UACrC,QAAA,kBAAA,UAAuB;GACtB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,eACrC,KACC,MAAM,UACN,YAAY,MAAM,UAClB,MAAM,OAAO,UACb,MAAM,OAAO,OAAO,MAAM,IAAI,CAAC,OAAO,YAAY,eAAe,KAAK,QAAQ,MAAM,CAAC,CAAC,CAEtF,QAAA,cAAA,MAAmB;GAClB;GACO;GACP,GAAG,OAAO;GACV,CAAC;MAEF,QAAA,cAAA,SAAsB;GACrB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAIJ,KAAKA,kBAAQ,yBAAyB,YACrC,QAAA,oBAAA,YAAyB;GACxB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,IACrC,QAAA,YAAA,IAAiB;GAChB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB,MACrC,QAAA,cAAA,MAAmB;GAClB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,KAAKA,kBAAQ,yBAAyB;EACtC,KAAKA,kBAAQ,yBAAyB,OACrC,QAAA,kBAAA,UAAuB;GACtB;GACA;GACA,GAAG,OAAO;GACV,CAAC;EAGH,QACC,OAAM,IAAI,MAAM,QAAQ,MAAM,KAAK,mDAAmD"}