@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 6.34 kB
Source Map (JSON)
{"version":3,"file":"valueForModelMap.cjs","sources":["../../../src/lib/valueForModelMap.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { ModelValue, ModelValueMap, Seed } from \"../types\";\nimport {\n\tMockBooleanValueConfig,\n\tMockColorValueConfig,\n\tMockContentRelationshipValueConfig,\n\tMockDateValueConfig,\n\tMockEmbedValueConfig,\n\tMockGeoPointValueConfig,\n\tMockGroupValueConfig,\n\tMockImageValueConfig,\n\tMockIntegrationFieldValueConfig,\n\tMockKeyTextValueConfig,\n\tMockLinkToMediaValueConfig,\n\tMockLinkValueConfig,\n\tMockNumberValueConfig,\n\tMockRichTextValueConfig,\n\tMockSelectValueConfig,\n\tMockSliceZoneValueConfig,\n\tMockTimestampValueConfig,\n\tMockTitleValueConfig,\n\tMockUIDValueConfig,\n} from \"../value\";\n\nimport { valueForModel } from \"./valueForModel\";\nimport { createFaker, Faker } from \"./createFaker\";\n\nconst getValueConfigType = <Model extends prismic.CustomTypeModelField>(\n\tmodel: Model,\n): keyof ValueForModelMapConfigs => {\n\tswitch (model.type) {\n\t\tcase prismic.CustomTypeModelFieldType.Boolean:\n\t\t\treturn \"boolean\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Color:\n\t\t\treturn \"color\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Date:\n\t\t\treturn \"date\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Embed:\n\t\t\treturn \"embed\";\n\n\t\tcase prismic.CustomTypeModelFieldType.GeoPoint:\n\t\t\treturn \"geoPoint\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Group:\n\t\t\treturn \"group\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Image:\n\t\t\treturn \"image\";\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 \"contentRelationship\";\n\t\t\t\tcase prismic.CustomTypeModelLinkSelectType.Media:\n\t\t\t\t\treturn \"linkToMedia\";\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"link\";\n\t\t\t}\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Number:\n\t\t\treturn \"number\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Select:\n\t\t\treturn \"select\";\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 \"title\";\n\t\t\t} else {\n\t\t\t\treturn \"richText\";\n\t\t\t}\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Text:\n\t\t\treturn \"keyText\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Timestamp:\n\t\t\treturn \"timestamp\";\n\n\t\tcase prismic.CustomTypeModelFieldType.UID:\n\t\t\treturn \"uid\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Integration:\n\t\t\treturn \"integration\";\n\n\t\tcase prismic.CustomTypeModelFieldType.Slices:\n\t\t\treturn \"sliceZone\";\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\nexport type ValueForModelMapConfigs = {\n\tboolean?: MockBooleanValueConfig;\n\tcolor?: MockColorValueConfig;\n\tcontentRelationship?: MockContentRelationshipValueConfig;\n\tdate?: MockDateValueConfig;\n\tembed?: MockEmbedValueConfig;\n\tgeoPoint?: MockGeoPointValueConfig;\n\tgroup?: MockGroupValueConfig;\n\timage?: MockImageValueConfig;\n\tintegration?: MockIntegrationFieldValueConfig;\n\tkeyText?: MockKeyTextValueConfig;\n\tlink?: MockLinkValueConfig;\n\tlinkToMedia?: MockLinkToMediaValueConfig;\n\tnumber?: MockNumberValueConfig;\n\trichText?: MockRichTextValueConfig;\n\tselect?: MockSelectValueConfig;\n\tsliceZone?: MockSliceZoneValueConfig;\n\ttimestamp?: MockTimestampValueConfig;\n\ttitle?: MockTitleValueConfig;\n\tuid?: MockUIDValueConfig;\n};\n\ntype ValueForModelMapConfig<\n\tModelMap extends Record<string, prismic.CustomTypeModelField>,\n> = {\n\tmap: ModelMap;\n\tconfigs?: ValueForModelMapConfigs;\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 valueForModelMap = <\n\tModelMap extends Record<string, prismic.CustomTypeModelField>,\n>(\n\tconfig: ValueForModelMapConfig<ModelMap>,\n): ModelValueMap<ModelMap> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst result = {} as ModelValueMap<ModelMap>;\n\n\tfor (const fieldId in config.map) {\n\t\tconst fieldModel = config.map[fieldId];\n\t\tconst fieldConfigType = getValueConfigType(fieldModel);\n\t\tconst fieldConfig = config.configs?.[fieldConfigType];\n\n\t\tresult[fieldId] = valueForModel({\n\t\t\tfaker,\n\t\t\tmodel: fieldModel as prismic.CustomTypeModelField,\n\t\t\tconfig: fieldConfig,\n\t\t}) as ModelValue<typeof fieldModel>;\n\t}\n\n\treturn result;\n};\n"],"names":["prismic","createFaker","valueForModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,qBAAqB,CAC1B,UACkC;;AAClC,UAAQ,MAAM,MAAM;AAAA,IACnB,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB,MAAM;AACnC,eAAA,WAAM,WAAN,mBAAc,QAAQ;AAAA,QAC7B,KAAKA,mBAAQ,8BAA8B;AACnC,iBAAA;AAAA,QACR,KAAKA,mBAAQ,8BAA8B;AACnC,iBAAA;AAAA,QACR;AACQ,iBAAA;AAAA,MACT;AAAA,IACD;AAAA,IAEA,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB,gBAAgB;AAEpD,UAAA,MAAM,UACN,YAAY,MAAM,UAClB,MAAM,OAAO,UACb,MAAM,OAAO,OACX,MAAM,GAAG,EACT,MAAM,CAAC,YAAY,eAAe,KAAK,QAAQ,KAAM,CAAA,CAAC,GACvD;AACM,eAAA;AAAA,MAAA,OACD;AACC,eAAA;AAAA,MACR;AAAA,IACD;AAAA,IAEA,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,KAAKA,mBAAQ,yBAAyB;AAC9B,aAAA;AAAA,IAER,SAAS;AACR,YAAM,IAAI,MACT,QAAQ,MAAM,IAAI,mDAAmD;AAAA,IAEvE;AAAA,EACD;AACD;AAwCa,MAAA,mBAAmB,CAG/B,WAC4B;;AAC5B,QAAM,QAAQ,OAAO,SAASC,YAAAA,YAAY,OAAO,IAAI;AAErD,QAAM,SAAS,CAAA;AAEJ,aAAA,WAAW,OAAO,KAAK;AAC3B,UAAA,aAAa,OAAO,IAAI,OAAO;AAC/B,UAAA,kBAAkB,mBAAmB,UAAU;AAC/C,UAAA,eAAc,YAAO,YAAP,mBAAiB;AAE9B,WAAA,OAAO,IAAIC,4BAAc;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAEO,SAAA;AACR;;"}