@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 8.23 kB
Source Map (JSON)
{"version":3,"file":"valueForModel.cjs","sources":["../../../src/lib/valueForModel.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { MockValueConfigForModel, ModelValue, Seed } from \"../types\";\nimport * as value from \"../value\";\n\nimport { createFaker, 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\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.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(\n\t\t\t\t`The \"${model.type}\" field type is not supported in @prismicio/mock.`,\n\t\t\t);\n\t\t}\n\t}\n};\n"],"names":["createFaker","prismic","value.boolean","value.color","value.contentRelationship","value.linkToMedia","value.link","value.date","value.embed","value.geoPoint","value.image","value.keyText","value.number","value.select","value.timestamp","value.title","value.richText","value.integration","value.uid","value.group","value.sliceZone"],"mappings":"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"}