UNPKG

@prismicio/mock

Version:

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

1 lines 4.02 kB
{"version":3,"file":"customType.cjs","sources":["../../../src/value/customType.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { snakeCase } from \"../lib/changeCase\";\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateTags } from \"../lib/generateTags\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { timestamp } from \"./timestamp\";\nimport { buildAlternativeLanguage } from \"../lib/buildAlternativeLanguage\";\n\nexport type MockCustomTypeValueConfig<\n\tModel extends prismic.CustomTypeModel = prismic.CustomTypeModel,\n> = {\n\twithURL?: boolean;\n\talternateLanguages?: prismic.PrismicDocument[];\n\tconfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const customType = <\n\tModel extends prismic.CustomTypeModel = prismic.CustomTypeModel,\n>(\n\tconfig: MockCustomTypeValueConfig<Model>,\n): ModelValue<Model> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.customType({ faker });\n\n\tconst fieldModelsMap = Object.assign(\n\t\t{},\n\t\t...Object.values(model.json),\n\t) as prismic.CustomTypeModelTab;\n\n\tconst dataFieldModelsMap: prismic.CustomTypeModelTab = {};\n\tfor (const key in fieldModelsMap) {\n\t\tconst fieldModel = fieldModelsMap[key];\n\n\t\t// UID fields must be filtered out since they are not represented in\n\t\t// the document's `data` field.\n\t\tif (fieldModel.type !== prismic.CustomTypeModelFieldType.UID) {\n\t\t\tdataFieldModelsMap[key] = fieldModel;\n\t\t}\n\t}\n\n\tconst hasUID = Object.values(fieldModelsMap).some(\n\t\t(fieldModel) => fieldModel.type === prismic.CustomTypeModelFieldType.UID,\n\t);\n\n\tconst withURL = config.withURL ?? true;\n\n\tconst alternateLanguages = (config.alternateLanguages || []).map(\n\t\t(alternateLanguageDocument) =>\n\t\t\tbuildAlternativeLanguage({\n\t\t\t\tdocument: alternateLanguageDocument,\n\t\t\t}),\n\t);\n\n\treturn {\n\t\ttype: model.id,\n\t\tid: faker.hash(7),\n\t\tuid: hasUID ? snakeCase(faker.words(faker.range(1, 3))) : null,\n\t\turl: withURL ? faker.url() : null,\n\t\thref: faker.url(),\n\t\tlang: faker.word(),\n\t\ttags: generateTags({ faker }),\n\t\tslugs: [] as prismic.PrismicDocument[\"slugs\"],\n\t\tlinked_documents: [] as prismic.PrismicDocument[\"linked_documents\"],\n\t\talternate_languages: alternateLanguages,\n\t\tfirst_publication_date: timestamp({ faker }),\n\t\tlast_publication_date: timestamp({ faker }),\n\t\tdata: valueForModelMap({\n\t\t\tfaker,\n\t\t\tmap: dataFieldModelsMap,\n\t\t\tconfigs: config.configs,\n\t\t}),\n\t} as ModelValue<Model>;\n};\n"],"names":["createFaker","modelGen.customType","prismic","buildAlternativeLanguage","snakeCase","generateTags","timestamp","valueForModelMap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBa,MAAA,aAAa,CAGzB,WACsB;AACtB,QAAM,QAAQ,OAAO,SAASA,YAAAA,YAAY,OAAO,IAAI;AAErD,QAAM,QAAQ,OAAO,SAASC,aAAAA,WAAoB,EAAE,OAAO;AAErD,QAAA,iBAAiB,OAAO,OAC7B,IACA,GAAG,OAAO,OAAO,MAAM,IAAI,CAAC;AAG7B,QAAM,qBAAiD,CAAA;AACvD,aAAW,OAAO,gBAAgB;AAC3B,UAAA,aAAa,eAAe,GAAG;AAIrC,QAAI,WAAW,SAASC,mBAAQ,yBAAyB,KAAK;AAC7D,yBAAmB,GAAG,IAAI;AAAA,IAC3B;AAAA,EACD;AAEA,QAAM,SAAS,OAAO,OAAO,cAAc,EAAE,KAC5C,CAAC,eAAe,WAAW,SAASA,mBAAQ,yBAAyB,GAAG;AAGnE,QAAA,UAAU,OAAO,WAAW;AAE5B,QAAA,sBAAsB,OAAO,sBAAsB,IAAI,IAC5D,CAAC,8BACAC,kDAAyB;AAAA,IACxB,UAAU;AAAA,EACV,CAAA,CAAC;AAGG,SAAA;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,IAAI,MAAM,KAAK,CAAC;AAAA,IAChB,KAAK,SAASC,qBAAU,MAAM,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI;AAAA,IAC1D,KAAK,UAAU,MAAM,IAAQ,IAAA;AAAA,IAC7B,MAAM,MAAM,IAAK;AAAA,IACjB,MAAM,MAAM,KAAM;AAAA,IAClB,MAAMC,aAAAA,aAAa,EAAE,OAAO;AAAA,IAC5B,OAAO,CAAsC;AAAA,IAC7C,kBAAkB,CAAiD;AAAA,IACnE,qBAAqB;AAAA,IACrB,wBAAwBC,UAAAA,UAAU,EAAE,OAAO;AAAA,IAC3C,uBAAuBA,UAAAA,UAAU,EAAE,OAAO;AAAA,IAC1C,MAAMC,iBAAAA,iBAAiB;AAAA,MACtB;AAAA,MACA,KAAK;AAAA,MACL,SAAS,OAAO;AAAA,IAAA,CAChB;AAAA,EAAA;AAEH;;"}